diff --git a/bin/python-experimental-petstore.sh b/bin/python-experimental-petstore.sh
new file mode 100755
index 0000000000..ab01d44cc5
--- /dev/null
+++ b/bin/python-experimental-petstore.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+SCRIPT="$0"
+echo "# START SCRIPT: $SCRIPT"
+
+while [ -h "$SCRIPT" ] ; do
+ ls=`ls -ld "$SCRIPT"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ SCRIPT="$link"
+ else
+ SCRIPT=`dirname "$SCRIPT"`/"$link"
+ fi
+done
+
+if [ ! -d "${APP_DIR}" ]; then
+ APP_DIR=`dirname "$SCRIPT"`/..
+ APP_DIR=`cd "${APP_DIR}"; pwd`
+fi
+
+executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar"
+
+if [ ! -f "$executable" ]
+then
+ mvn -B clean package $@
+fi
+
+# if you've executed sbt assembly previously it will use that instead.
+export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
+ags="generate -t modules/openapi-generator/src/main/resources/python -i modules/openapi-generator/src/test/resources/2_0/python-client-experimental/petstore-with-fake-endpoints-models-for-testing.yaml -g python-experimental -o samples/client/petstore/python-experimental -DpackageName=petstore_api $@"
+
+java $JAVA_OPTS -jar $executable $ags
diff --git a/docs/generators.md b/docs/generators.md
index 9736648c7e..ecb4edfd40 100644
--- a/docs/generators.md
+++ b/docs/generators.md
@@ -43,6 +43,7 @@ The following generators are available:
- [php](generators/php.md)
- [powershell](generators/powershell.md)
- [python](generators/python.md)
+ - [python-experimental](generators/python-experimental.md)
- [r](generators/r.md)
- [ruby](generators/ruby.md)
- [rust](generators/rust.md)
diff --git a/docs/generators/python-experimental.md b/docs/generators/python-experimental.md
new file mode 100644
index 0000000000..c36f84b4a0
--- /dev/null
+++ b/docs/generators/python-experimental.md
@@ -0,0 +1,17 @@
+
+---
+id: generator-opts-client-python-experimental
+title: Config Options for python-experimental
+sidebar_label: python-experimental
+---
+
+| Option | Description | Values | Default |
+| ------ | ----------- | ------ | ------- |
+|packageName|python package name (convention: snake_case).| |openapi_client|
+|projectName|python project name in setup.py (e.g. petstore-api).| |null|
+|packageVersion|python package version.| |1.0.0|
+|packageUrl|python package URL.| |null|
+|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
+|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
+|generateSourceCodeOnly|Specifies that only a library source code is to be generated.| |false|
+|library|library template (sub-template) to use: asyncio, tornado, urllib3| |urllib3|
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java
new file mode 100644
index 0000000000..ba468d47de
--- /dev/null
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientExperimentalCodegen.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openapitools.codegen.languages;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PythonClientExperimentalCodegen extends PythonClientCodegen {
+ private static final Logger LOGGER = LoggerFactory.getLogger(PythonClientExperimentalCodegen.class);
+
+ public PythonClientExperimentalCodegen() {
+ super();
+ }
+
+ /**
+ * Configures a friendly name for the generator. This will be used by the
+ * generator to select the library with the -g flag.
+ *
+ * @return the friendly name for the generator
+ */
+ @Override
+ public String getName() {
+ return "python-experimental";
+ }
+}
diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig
index efbcccf249..ac693c68c8 100644
--- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig
+++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig
@@ -74,6 +74,7 @@ org.openapitools.codegen.languages.PhpSymfonyServerCodegen
org.openapitools.codegen.languages.PhpZendExpressivePathHandlerServerCodegen
org.openapitools.codegen.languages.PowerShellClientCodegen
org.openapitools.codegen.languages.PythonClientCodegen
+org.openapitools.codegen.languages.PythonClientExperimentalCodegen
org.openapitools.codegen.languages.PythonFlaskConnexionServerCodegen
org.openapitools.codegen.languages.PythonAiohttpConnexionServerCodegen
org.openapitools.codegen.languages.PythonBluePlanetServerCodegen
diff --git a/modules/openapi-generator/src/test/resources/2_0/python-client-experimental/petstore-with-fake-endpoints-models-for-testing.yaml b/modules/openapi-generator/src/test/resources/2_0/python-client-experimental/petstore-with-fake-endpoints-models-for-testing.yaml
new file mode 100644
index 0000000000..ed907f2785
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/2_0/python-client-experimental/petstore-with-fake-endpoints-models-for-testing.yaml
@@ -0,0 +1,1942 @@
+swagger: '2.0'
+info:
+ description: "This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\"
+ version: 1.0.0
+ title: OpenAPI Petstore
+ license:
+ name: Apache-2.0
+ url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
+host: petstore.swagger.io:80
+basePath: /v2
+tags:
+ - name: pet
+ description: Everything about your Pets
+ - name: store
+ description: Access to Petstore orders
+ - name: user
+ description: Operations about user
+schemes:
+ - http
+paths:
+ /pet:
+ post:
+ tags:
+ - pet
+ summary: Add a new pet to the store
+ description: ''
+ operationId: addPet
+ consumes:
+ - application/json
+ - application/xml
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: Pet object that needs to be added to the store
+ required: true
+ schema:
+ $ref: '#/definitions/Pet'
+ responses:
+ '200':
+ description: successful operation
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ put:
+ tags:
+ - pet
+ summary: Update an existing pet
+ description: ''
+ operationId: updatePet
+ consumes:
+ - application/json
+ - application/xml
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: Pet object that needs to be added to the store
+ required: true
+ schema:
+ $ref: '#/definitions/Pet'
+ responses:
+ '200':
+ description: successful operation
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ '405':
+ description: Validation exception
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ /pet/findByStatus:
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by status
+ description: Multiple status values can be provided with comma separated strings
+ operationId: findPetsByStatus
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: status
+ in: query
+ description: Status values that need to be considered for filter
+ required: true
+ type: array
+ items:
+ type: string
+ enum:
+ - available
+ - pending
+ - sold
+ default: available
+ collectionFormat: csv
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/Pet'
+ '400':
+ description: Invalid status value
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ /pet/findByTags:
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by tags
+ description: 'Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.'
+ operationId: findPetsByTags
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: tags
+ in: query
+ description: Tags to filter by
+ required: true
+ type: array
+ items:
+ type: string
+ collectionFormat: csv
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/Pet'
+ '400':
+ description: Invalid tag value
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ deprecated: true
+ '/pet/{petId}':
+ get:
+ tags:
+ - pet
+ summary: Find pet by ID
+ description: Returns a single pet
+ operationId: getPetById
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to return
+ required: true
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/Pet'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ security:
+ - api_key: []
+ post:
+ tags:
+ - pet
+ summary: Updates a pet in the store with form data
+ description: ''
+ operationId: updatePetWithForm
+ consumes:
+ - application/x-www-form-urlencoded
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet that needs to be updated
+ required: true
+ type: integer
+ format: int64
+ - name: name
+ in: formData
+ description: Updated name of the pet
+ required: false
+ type: string
+ - name: status
+ in: formData
+ description: Updated status of the pet
+ required: false
+ type: string
+ responses:
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ delete:
+ tags:
+ - pet
+ summary: Deletes a pet
+ description: ''
+ operationId: deletePet
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: api_key
+ in: header
+ required: false
+ type: string
+ - name: petId
+ in: path
+ description: Pet id to delete
+ required: true
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ '400':
+ description: Invalid pet value
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ '/pet/{petId}/uploadImage':
+ post:
+ tags:
+ - pet
+ summary: uploads an image
+ description: ''
+ operationId: uploadFile
+ consumes:
+ - multipart/form-data
+ produces:
+ - application/json
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to update
+ required: true
+ type: integer
+ format: int64
+ - name: additionalMetadata
+ in: formData
+ description: Additional data to pass to server
+ required: false
+ type: string
+ - name: file
+ in: formData
+ description: file to upload
+ required: false
+ type: file
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/ApiResponse'
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ /store/inventory:
+ get:
+ tags:
+ - store
+ summary: Returns pet inventories by status
+ description: Returns a map of status codes to quantities
+ operationId: getInventory
+ produces:
+ - application/json
+ parameters: []
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ type: object
+ additionalProperties:
+ type: integer
+ format: int32
+ security:
+ - api_key: []
+ /store/order:
+ post:
+ tags:
+ - store
+ summary: Place an order for a pet
+ description: ''
+ operationId: placeOrder
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: order placed for purchasing the pet
+ required: true
+ schema:
+ $ref: '#/definitions/Order'
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/Order'
+ '400':
+ description: Invalid Order
+ '/store/order/{order_id}':
+ get:
+ tags:
+ - store
+ summary: Find purchase order by ID
+ description: 'For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions'
+ operationId: getOrderById
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: order_id
+ in: path
+ description: ID of pet that needs to be fetched
+ required: true
+ type: integer
+ maximum: 5
+ minimum: 1
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/Order'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ delete:
+ tags:
+ - store
+ summary: Delete purchase order by ID
+ description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+ operationId: deleteOrder
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: order_id
+ in: path
+ description: ID of the order that needs to be deleted
+ required: true
+ type: string
+ responses:
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ /user:
+ post:
+ tags:
+ - user
+ summary: Create user
+ description: This can only be done by the logged in user.
+ operationId: createUser
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: Created user object
+ required: true
+ schema:
+ $ref: '#/definitions/User'
+ responses:
+ default:
+ description: successful operation
+ /user/createWithArray:
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: ''
+ operationId: createUsersWithArrayInput
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: List of user object
+ required: true
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/User'
+ responses:
+ default:
+ description: successful operation
+ /user/createWithList:
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: ''
+ operationId: createUsersWithListInput
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: List of user object
+ required: true
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/User'
+ responses:
+ default:
+ description: successful operation
+ /user/login:
+ get:
+ tags:
+ - user
+ summary: Logs user into the system
+ description: ''
+ operationId: loginUser
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: username
+ in: query
+ description: The user name for login
+ required: true
+ type: string
+ - name: password
+ in: query
+ description: The password for login in clear text
+ required: true
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ type: string
+ headers:
+ X-Rate-Limit:
+ type: integer
+ format: int32
+ description: calls per hour allowed by the user
+ X-Expires-After:
+ type: string
+ format: date-time
+ description: date in UTC when token expires
+ '400':
+ description: Invalid username/password supplied
+ /user/logout:
+ get:
+ tags:
+ - user
+ summary: Logs out current logged in user session
+ description: ''
+ operationId: logoutUser
+ produces:
+ - application/xml
+ - application/json
+ parameters: []
+ responses:
+ default:
+ description: successful operation
+ '/user/{username}':
+ get:
+ tags:
+ - user
+ summary: Get user by user name
+ description: ''
+ operationId: getUserByName
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: username
+ in: path
+ description: 'The name that needs to be fetched. Use user1 for testing.'
+ required: true
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/User'
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+ put:
+ tags:
+ - user
+ summary: Updated user
+ description: This can only be done by the logged in user.
+ operationId: updateUser
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: username
+ in: path
+ description: name that need to be deleted
+ required: true
+ type: string
+ - in: body
+ name: body
+ description: Updated user object
+ required: true
+ schema:
+ $ref: '#/definitions/User'
+ responses:
+ '400':
+ description: Invalid user supplied
+ '404':
+ description: User not found
+ delete:
+ tags:
+ - user
+ summary: Delete user
+ description: This can only be done by the logged in user.
+ operationId: deleteUser
+ produces:
+ - application/xml
+ - application/json
+ parameters:
+ - name: username
+ in: path
+ description: The name that needs to be deleted
+ required: true
+ type: string
+ responses:
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+
+ /fake_classname_test:
+ patch:
+ tags:
+ - "fake_classname_tags 123#$%^"
+ summary: To test class name in snake case
+ description: To test class name in snake case
+ operationId: testClassname
+ consumes:
+ - application/json
+ produces:
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: client model
+ required: true
+ schema:
+ $ref: '#/definitions/Client'
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/Client'
+ security:
+ - api_key_query: []
+ /fake:
+ patch:
+ tags:
+ - fake
+ summary: To test "client" model
+ description: To test "client" model
+ operationId: testClientModel
+ consumes:
+ - application/json
+ produces:
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: client model
+ required: true
+ schema:
+ $ref: '#/definitions/Client'
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/Client'
+ get:
+ tags:
+ - fake
+ summary: To test enum parameters
+ description: To test enum parameters
+ operationId: testEnumParameters
+ consumes:
+ - "application/x-www-form-urlencoded"
+ parameters:
+ - name: enum_form_string_array
+ type: array
+ items:
+ type: string
+ default: '$'
+ enum:
+ - '>'
+ - '$'
+ in: formData
+ description: Form parameter enum test (string array)
+ - name: enum_form_string
+ type: string
+ default: '-efg'
+ enum:
+ - _abc
+ - '-efg'
+ - (xyz)
+ in: formData
+ description: Form parameter enum test (string)
+ - name: enum_header_string_array
+ type: array
+ items:
+ type: string
+ default: '$'
+ enum:
+ - '>'
+ - '$'
+ in: header
+ description: Header parameter enum test (string array)
+ - name: enum_header_string
+ type: string
+ default: '-efg'
+ enum:
+ - _abc
+ - '-efg'
+ - (xyz)
+ in: header
+ description: Header parameter enum test (string)
+ - name: enum_query_string_array
+ type: array
+ items:
+ type: string
+ default: '$'
+ enum:
+ - '>'
+ - '$'
+ in: query
+ description: Query parameter enum test (string array)
+ - name: enum_query_string
+ type: string
+ default: '-efg'
+ enum:
+ - _abc
+ - '-efg'
+ - (xyz)
+ in: query
+ description: Query parameter enum test (string)
+ - name: enum_query_integer
+ type: integer
+ format: int32
+ enum:
+ - 1
+ - -2
+ in: query
+ description: Query parameter enum test (double)
+ - name: enum_query_double
+ type: number
+ format: double
+ enum:
+ - 1.1
+ - -1.2
+ in: query
+ description: Query parameter enum test (double)
+ responses:
+ '400':
+ description: Invalid request
+ '404':
+ description: Not found
+ post:
+ tags:
+ - fake
+ summary: |
+ Fake endpoint for testing various parameters
+ 假端點
+ 偽のエンドポイント
+ 가짜 엔드 포인트
+ description: |
+ Fake endpoint for testing various parameters
+ 假端點
+ 偽のエンドポイント
+ 가짜 엔드 포인트
+ operationId: testEndpointParameters
+ consumes:
+ - application/x-www-form-urlencoded
+ parameters:
+ - name: integer
+ type: integer
+ maximum: 100
+ minimum: 10
+ in: formData
+ description: None
+ - name: int32
+ type: integer
+ format: int32
+ maximum: 200
+ minimum: 20
+ in: formData
+ description: None
+ - name: int64
+ type: integer
+ format: int64
+ in: formData
+ description: None
+ - name: number
+ type: number
+ maximum: 543.2
+ minimum: 32.1
+ in: formData
+ description: None
+ required: true
+ - name: float
+ type: number
+ format: float
+ maximum: 987.6
+ in: formData
+ description: None
+ - name: double
+ type: number
+ in: formData
+ format: double
+ maximum: 123.4
+ minimum: 67.8
+ required: true
+ description: None
+ - name: string
+ type: string
+ pattern: /[a-z]/i
+ in: formData
+ description: None
+ - name: pattern_without_delimiter
+ type: string
+ pattern: "^[A-Z].*"
+ in: formData
+ description: None
+ required: true
+ - name: byte
+ type: string
+ format: byte
+ in: formData
+ description: None
+ required: true
+ - name: binary
+ type: string
+ format: binary
+ in: formData
+ description: None
+ - name: date
+ type: string
+ format: date
+ in: formData
+ description: None
+ - name: dateTime
+ type: string
+ format: date-time
+ in: formData
+ description: None
+ - name: password
+ type: string
+ format: password
+ maxLength: 64
+ minLength: 10
+ in: formData
+ description: None
+ - name: callback
+ type: string
+ in: formData
+ description: None
+ responses:
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+ security:
+ - http_basic_test: []
+ delete:
+ tags:
+ - fake
+ summary: Fake endpoint to test group parameters (optional)
+ description: Fake endpoint to test group parameters (optional)
+ operationId: testGroupParameters
+ x-group-parameters: true
+ parameters:
+ - name: required_string_group
+ type: integer
+ in: query
+ description: Required String in group parameters
+ required: true
+ - name: required_boolean_group
+ type: boolean
+ in: header
+ description: Required Boolean in group parameters
+ required: true
+ - name: required_int64_group
+ type: integer
+ format: int64
+ in: query
+ description: Required Integer in group parameters
+ required: true
+ - name: string_group
+ type: integer
+ in: query
+ description: String in group parameters
+ - name: boolean_group
+ type: boolean
+ in: header
+ description: Boolean in group parameters
+ - name: int64_group
+ type: integer
+ format: int64
+ in: query
+ description: Integer in group parameters
+ responses:
+ '400':
+ description: Someting wrong
+ /fake/outer/number:
+ post:
+ tags:
+ - fake
+ description: Test serialization of outer number types
+ operationId: fakeOuterNumberSerialize
+ parameters:
+ - name: body
+ in: body
+ description: Input number as post body
+ schema:
+ $ref: '#/definitions/OuterNumber'
+ responses:
+ '200':
+ description: Output number
+ schema:
+ $ref: '#/definitions/OuterNumber'
+ /fake/outer/string:
+ post:
+ tags:
+ - fake
+ description: Test serialization of outer string types
+ operationId: fakeOuterStringSerialize
+ parameters:
+ - name: body
+ in: body
+ description: Input string as post body
+ schema:
+ $ref: '#/definitions/OuterString'
+ responses:
+ '200':
+ description: Output string
+ schema:
+ $ref: '#/definitions/OuterString'
+ /fake/outer/boolean:
+ post:
+ tags:
+ - fake
+ description: Test serialization of outer boolean types
+ operationId: fakeOuterBooleanSerialize
+ parameters:
+ - name: body
+ in: body
+ description: Input boolean as post body
+ schema:
+ $ref: '#/definitions/OuterBoolean'
+ responses:
+ '200':
+ description: Output boolean
+ schema:
+ $ref: '#/definitions/OuterBoolean'
+ /fake/outer/composite:
+ post:
+ tags:
+ - fake
+ description: Test serialization of object with outer number type
+ operationId: fakeOuterCompositeSerialize
+ parameters:
+ - name: body
+ in: body
+ description: Input composite as post body
+ schema:
+ $ref: '#/definitions/OuterComposite'
+ responses:
+ '200':
+ description: Output composite
+ schema:
+ $ref: '#/definitions/OuterComposite'
+ /fake/jsonFormData:
+ get:
+ tags:
+ - fake
+ summary: test json serialization of form data
+ description: ''
+ operationId: testJsonFormData
+ consumes:
+ - application/x-www-form-urlencoded
+ parameters:
+ - name: param
+ in: formData
+ description: field1
+ required: true
+ type: string
+ - name: param2
+ in: formData
+ description: field2
+ required: true
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ /fake/inline-additionalProperties:
+ post:
+ tags:
+ - fake
+ summary: test inline additionalProperties
+ description: ''
+ operationId: testInlineAdditionalProperties
+ consumes:
+ - application/json
+ parameters:
+ - name: param
+ in: body
+ description: request body
+ required: true
+ schema:
+ type: object
+ additionalProperties:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ /fake/body-with-query-params:
+ put:
+ tags:
+ - fake
+ operationId: testBodyWithQueryParams
+ parameters:
+ - name: body
+ in: body
+ required: true
+ schema:
+ $ref: '#/definitions/User'
+ - name: query
+ in: query
+ required: true
+ type: string
+ consumes:
+ - application/json
+ responses:
+ '200':
+ description: Success
+ /fake/create_xml_item:
+ post:
+ tags:
+ - fake
+ operationId: createXmlItem
+ summary: creates an XmlItem
+ description: this route creates an XmlItem
+ consumes:
+ - 'application/xml'
+ - 'application/xml; charset=utf-8'
+ - 'application/xml; charset=utf-16'
+ - 'text/xml'
+ - 'text/xml; charset=utf-8'
+ - 'text/xml; charset=utf-16'
+ produces:
+ - 'application/xml'
+ - 'application/xml; charset=utf-8'
+ - 'application/xml; charset=utf-16'
+ - 'text/xml'
+ - 'text/xml; charset=utf-8'
+ - 'text/xml; charset=utf-16'
+ parameters:
+ - in: body
+ name: XmlItem
+ description: XmlItem Body
+ required: true
+ schema:
+ $ref: '#/definitions/XmlItem'
+ responses:
+ 200:
+ description: successful operation
+ /another-fake/dummy:
+ patch:
+ tags:
+ - "$another-fake?"
+ summary: To test special tags
+ description: To test special tags and operation ID starting with number
+ operationId: 123_test_@#$%_special_tags
+ consumes:
+ - application/json
+ produces:
+ - application/json
+ parameters:
+ - in: body
+ name: body
+ description: client model
+ required: true
+ schema:
+ $ref: '#/definitions/Client'
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/Client'
+ /fake/body-with-file-schema:
+ put:
+ tags:
+ - fake
+ description: 'For this test, the body for this request much reference a schema named `File`.'
+ operationId: testBodyWithFileSchema
+ parameters:
+ - name: body
+ in: body
+ required: true
+ schema:
+ $ref: '#/definitions/FileSchemaTestClass'
+ consumes:
+ - application/json
+ responses:
+ '200':
+ description: Success
+ '/fake/{petId}/uploadImageWithRequiredFile':
+ post:
+ tags:
+ - pet
+ summary: uploads an image (required)
+ description: ''
+ operationId: uploadFileWithRequiredFile
+ consumes:
+ - multipart/form-data
+ produces:
+ - application/json
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to update
+ required: true
+ type: integer
+ format: int64
+ - name: additionalMetadata
+ in: formData
+ description: Additional data to pass to server
+ required: false
+ type: string
+ - name: requiredFile
+ in: formData
+ description: file to upload
+ required: true
+ type: file
+ responses:
+ '200':
+ description: successful operation
+ schema:
+ $ref: '#/definitions/ApiResponse'
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+securityDefinitions:
+ petstore_auth:
+ type: oauth2
+ authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
+ flow: implicit
+ scopes:
+ 'write:pets': modify pets in your account
+ 'read:pets': read your pets
+ api_key:
+ type: apiKey
+ name: api_key
+ in: header
+ api_key_query:
+ type: apiKey
+ name: api_key_query
+ in: query
+ http_basic_test:
+ type: basic
+definitions:
+ Order:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ petId:
+ type: integer
+ format: int64
+ quantity:
+ type: integer
+ format: int32
+ shipDate:
+ type: string
+ format: date-time
+ status:
+ type: string
+ description: Order Status
+ enum:
+ - placed
+ - approved
+ - delivered
+ complete:
+ type: boolean
+ default: false
+ xml:
+ name: Order
+ Category:
+ type: object
+ required:
+ - name
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ default: default-name
+ xml:
+ name: Category
+ User:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ x-is-unique: true
+ username:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ email:
+ type: string
+ password:
+ type: string
+ phone:
+ type: string
+ userStatus:
+ type: integer
+ format: int32
+ description: User Status
+ xml:
+ name: User
+ Tag:
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ xml:
+ name: Tag
+ Pet:
+ type: object
+ required:
+ - name
+ - photoUrls
+ properties:
+ id:
+ type: integer
+ format: int64
+ x-is-unique: true
+ category:
+ $ref: '#/definitions/Category'
+ name:
+ type: string
+ example: doggie
+ photoUrls:
+ type: array
+ xml:
+ name: photoUrl
+ wrapped: true
+ items:
+ type: string
+ tags:
+ type: array
+ xml:
+ name: tag
+ wrapped: true
+ items:
+ $ref: '#/definitions/Tag'
+ status:
+ type: string
+ description: pet status in the store
+ enum:
+ - available
+ - pending
+ - sold
+ xml:
+ name: Pet
+ ApiResponse:
+ type: object
+ properties:
+ code:
+ type: integer
+ format: int32
+ type:
+ type: string
+ message:
+ type: string
+ '$special[model.name]':
+ properties:
+ '$special[property.name]':
+ type: integer
+ format: int64
+ xml:
+ name: '$special[model.name]'
+ Return:
+ description: Model for testing reserved words
+ properties:
+ return:
+ type: integer
+ format: int32
+ xml:
+ name: Return
+ Name:
+ description: Model for testing model name same as property name
+ required:
+ - name
+ properties:
+ name:
+ type: integer
+ format: int32
+ snake_case:
+ readOnly: true
+ type: integer
+ format: int32
+ property:
+ type: string
+ 123Number:
+ type: integer
+ readOnly: true
+ xml:
+ name: Name
+ 200_response:
+ description: Model for testing model name starting with number
+ properties:
+ name:
+ type: integer
+ format: int32
+ class:
+ type: string
+ xml:
+ name: Name
+ ClassModel:
+ description: Model for testing model with "_class" property
+ properties:
+ _class:
+ type: string
+ Dog:
+ allOf:
+ - $ref: '#/definitions/Animal'
+ - type: object
+ properties:
+ breed:
+ type: string
+ Cat:
+ allOf:
+ - $ref: '#/definitions/Animal'
+ - type: object
+ properties:
+ declawed:
+ type: boolean
+ Animal:
+ type: object
+ discriminator: className
+ required:
+ - className
+ properties:
+ className:
+ type: string
+ color:
+ type: string
+ default: 'red'
+ AnimalFarm:
+ type: array
+ items:
+ $ref: '#/definitions/Animal'
+ format_test:
+ type: object
+ required:
+ - number
+ - byte
+ - date
+ - password
+ properties:
+ integer:
+ type: integer
+ maximum: 100
+ minimum: 10
+ int32:
+ type: integer
+ format: int32
+ maximum: 200
+ minimum: 20
+ int64:
+ type: integer
+ format: int64
+ number:
+ maximum: 543.2
+ minimum: 32.1
+ type: number
+ float:
+ type: number
+ format: float
+ maximum: 987.6
+ minimum: 54.3
+ double:
+ type: number
+ format: double
+ maximum: 123.4
+ minimum: 67.8
+ string:
+ type: string
+ pattern: /[a-z]/i
+ byte:
+ type: string
+ format: byte
+ binary:
+ type: string
+ format: binary
+ date:
+ type: string
+ format: date
+ dateTime:
+ type: string
+ format: date-time
+ uuid:
+ type: string
+ format: uuid
+ example: 72f98069-206d-4f12-9f12-3d1e525a8e84
+ password:
+ type: string
+ format: password
+ maxLength: 64
+ minLength: 10
+ EnumClass:
+ type: string
+ default: '-efg'
+ enum:
+ - _abc
+ - '-efg'
+ - (xyz)
+ Enum_Test:
+ type: object
+ required:
+ - enum_string_required
+ properties:
+ enum_string:
+ type: string
+ enum:
+ - UPPER
+ - lower
+ - ''
+ enum_string_required:
+ type: string
+ enum:
+ - UPPER
+ - lower
+ - ''
+ enum_integer:
+ type: integer
+ format: int32
+ enum:
+ - 1
+ - -1
+ enum_number:
+ type: number
+ format: double
+ enum:
+ - 1.1
+ - -1.2
+ outerEnum:
+ $ref: '#/definitions/OuterEnum'
+ AdditionalPropertiesClass:
+ type: object
+ properties:
+ map_string:
+ type: object
+ additionalProperties:
+ type: string
+ map_number:
+ type: object
+ additionalProperties:
+ type: number
+ map_integer:
+ type: object
+ additionalProperties:
+ type: integer
+ map_boolean:
+ type: object
+ additionalProperties:
+ type: boolean
+ map_array_integer:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ type: integer
+ map_array_anytype:
+ type: object
+ additionalProperties:
+ type: array
+ items:
+ type: object
+ map_map_string:
+ type: object
+ additionalProperties:
+ type: object
+ additionalProperties:
+ type: string
+ map_map_anytype:
+ type: object
+ additionalProperties:
+ type: object
+ additionalProperties:
+ type: object
+ anytype_1:
+ type: object
+ anytype_2: {}
+ anytype_3:
+ type: object
+ properties: {}
+ AdditionalPropertiesString:
+ type: object
+ properties:
+ name:
+ type: string
+ additionalProperties:
+ type: string
+ AdditionalPropertiesInteger:
+ type: object
+ properties:
+ name:
+ type: string
+ additionalProperties:
+ type: integer
+ AdditionalPropertiesNumber:
+ type: object
+ properties:
+ name:
+ type: string
+ additionalProperties:
+ type: number
+ AdditionalPropertiesBoolean:
+ type: object
+ properties:
+ name:
+ type: string
+ additionalProperties:
+ type: boolean
+ AdditionalPropertiesArray:
+ type: object
+ properties:
+ name:
+ type: string
+ additionalProperties:
+ type: array
+ items:
+ type: object
+ AdditionalPropertiesObject:
+ type: object
+ properties:
+ name:
+ type: string
+ additionalProperties:
+ type: object
+ additionalProperties:
+ type: object
+ AdditionalPropertiesAnyType:
+ type: object
+ properties:
+ name:
+ type: string
+ additionalProperties:
+ type: object
+ MixedPropertiesAndAdditionalPropertiesClass:
+ type: object
+ properties:
+ uuid:
+ type: string
+ format: uuid
+ dateTime:
+ type: string
+ format: date-time
+ map:
+ type: object
+ additionalProperties:
+ $ref: '#/definitions/Animal'
+ List:
+ type: object
+ properties:
+ 123-list:
+ type: string
+ Client:
+ type: object
+ properties:
+ client:
+ type: string
+ ReadOnlyFirst:
+ type: object
+ properties:
+ bar:
+ type: string
+ readOnly: true
+ baz:
+ type: string
+ hasOnlyReadOnly:
+ type: object
+ properties:
+ bar:
+ type: string
+ readOnly: true
+ foo:
+ type: string
+ readOnly: true
+ Capitalization:
+ type: object
+ properties:
+ smallCamel:
+ type: string
+ CapitalCamel:
+ type: string
+ small_Snake:
+ type: string
+ Capital_Snake:
+ type: string
+ SCA_ETH_Flow_Points:
+ type: string
+ ATT_NAME:
+ description: >
+ Name of the pet
+ type: string
+ MapTest:
+ type: object
+ properties:
+ map_map_of_string:
+ type: object
+ additionalProperties:
+ type: object
+ additionalProperties:
+ type: string
+ # comment out the following (map of map of enum) as many language not yet support this
+ #map_map_of_enum:
+ # type: object
+ # additionalProperties:
+ # type: object
+ # additionalProperties:
+ # type: string
+ # enum:
+ # - UPPER
+ # - lower
+ map_of_enum_string:
+ type: object
+ additionalProperties:
+ type: string
+ enum:
+ - UPPER
+ - lower
+ direct_map:
+ type: object
+ additionalProperties:
+ type: boolean
+ indirect_map:
+ $ref: "#/definitions/StringBooleanMap"
+ ArrayTest:
+ type: object
+ properties:
+ array_of_string:
+ type: array
+ items:
+ type: string
+ array_array_of_integer:
+ type: array
+ items:
+ type: array
+ items:
+ type: integer
+ format: int64
+ array_array_of_model:
+ type: array
+ items:
+ type: array
+ items:
+ $ref: '#/definitions/ReadOnlyFirst'
+ # commented out the below test case for array of enum for the time being
+ # as not all language can handle it
+ #array_of_enum:
+ # type: array
+ # items:
+ # type: string
+ # enum:
+ # - UPPER
+ # - lower
+ NumberOnly:
+ type: object
+ properties:
+ JustNumber:
+ type: number
+ ArrayOfNumberOnly:
+ type: object
+ properties:
+ ArrayNumber:
+ type: array
+ items:
+ type: number
+ ArrayOfArrayOfNumberOnly:
+ type: object
+ properties:
+ ArrayArrayNumber:
+ type: array
+ items:
+ type: array
+ items:
+ type: number
+ EnumArrays:
+ type: object
+ properties:
+ just_symbol:
+ type: string
+ enum:
+ - ">="
+ - "$"
+ array_enum:
+ type: array
+ items:
+ type: string
+ enum:
+ - fish
+ - crab
+ # comment out the following as 2d array of enum is not supported at the moment
+ #array_array_enum:
+ # type: array
+ # items:
+ # type: array
+ # items:
+ # type: string
+ # enum:
+ # - Cat
+ # - Dog
+ OuterEnum:
+ type: string
+ enum:
+ - "placed"
+ - "approved"
+ - "delivered"
+ OuterComposite:
+ type: object
+ properties:
+ my_number:
+ $ref: '#/definitions/OuterNumber'
+ my_string:
+ $ref: '#/definitions/OuterString'
+ my_boolean:
+ $ref: '#/definitions/OuterBoolean'
+ OuterNumber:
+ type: number
+ OuterString:
+ type: string
+ OuterBoolean:
+ type: boolean
+ x-codegen-body-parameter-name: boolean_post_body
+ StringBooleanMap:
+ additionalProperties:
+ type: boolean
+ FileSchemaTestClass:
+ type: object
+ properties:
+ file:
+ $ref: "#/definitions/File"
+ files:
+ type: array
+ items:
+ $ref: "#/definitions/File"
+ File:
+ type: object
+ description: 'Must be named `File` for test.'
+ properties:
+ sourceURI:
+ description: 'Test capitalization'
+ type: string
+ TypeHolderDefault:
+ type: object
+ required:
+ - string_item
+ - number_item
+ - integer_item
+ - bool_item
+ - array_item
+ properties:
+ string_item:
+ type: string
+ default: what
+ number_item:
+ type: number
+ default: 1.234
+ integer_item:
+ type: integer
+ default: -2
+ bool_item:
+ type: boolean
+ default: true
+ array_item:
+ type: array
+ items:
+ type: integer
+ default:
+ - 0
+ - 1
+ - 2
+ - 3
+ TypeHolderExample:
+ type: object
+ required:
+ - string_item
+ - number_item
+ - integer_item
+ - bool_item
+ - array_item
+ properties:
+ string_item:
+ type: string
+ example: what
+ number_item:
+ type: number
+ example: 1.234
+ integer_item:
+ type: integer
+ example: -2
+ bool_item:
+ type: boolean
+ example: true
+ array_item:
+ type: array
+ items:
+ type: integer
+ example:
+ - 0
+ - 1
+ - 2
+ - 3
+ XmlItem:
+ type: object
+ xml:
+ namespace: http://a.com/schema
+ prefix: pre
+ properties:
+ attribute_string:
+ type: string
+ example: string
+ xml:
+ attribute: true
+ attribute_number:
+ type: number
+ example: 1.234
+ xml:
+ attribute: true
+ attribute_integer:
+ type: integer
+ example: -2
+ xml:
+ attribute: true
+ attribute_boolean:
+ type: boolean
+ example: true
+ xml:
+ attribute: true
+ wrapped_array:
+ type: array
+ xml:
+ wrapped: true
+ items:
+ type: integer
+ name_string:
+ type: string
+ example: string
+ xml:
+ name: xml_name_string
+ name_number:
+ type: number
+ example: 1.234
+ xml:
+ name: xml_name_number
+ name_integer:
+ type: integer
+ example: -2
+ xml:
+ name: xml_name_integer
+ name_boolean:
+ type: boolean
+ example: true
+ xml:
+ name: xml_name_boolean
+ name_array:
+ type: array
+ items:
+ type: integer
+ xml:
+ name: xml_name_array_item
+ name_wrapped_array:
+ type: array
+ xml:
+ wrapped: true
+ name: xml_name_wrapped_array
+ items:
+ type: integer
+ xml:
+ name: xml_name_wrapped_array_item
+ prefix_string:
+ type: string
+ example: string
+ xml:
+ prefix: ab
+ prefix_number:
+ type: number
+ example: 1.234
+ xml:
+ prefix: cd
+ prefix_integer:
+ type: integer
+ example: -2
+ xml:
+ prefix: ef
+ prefix_boolean:
+ type: boolean
+ example: true
+ xml:
+ prefix: gh
+ prefix_array:
+ type: array
+ items:
+ type: integer
+ xml:
+ prefix: ij
+ prefix_wrapped_array:
+ type: array
+ xml:
+ wrapped: true
+ prefix: kl
+ items:
+ type: integer
+ xml:
+ prefix: mn
+ namespace_string:
+ type: string
+ example: string
+ xml:
+ namespace: http://a.com/schema
+ namespace_number:
+ type: number
+ example: 1.234
+ xml:
+ namespace: http://b.com/schema
+ namespace_integer:
+ type: integer
+ example: -2
+ xml:
+ namespace: http://c.com/schema
+ namespace_boolean:
+ type: boolean
+ example: true
+ xml:
+ namespace: http://d.com/schema
+ namespace_array:
+ type: array
+ items:
+ type: integer
+ xml:
+ namespace: http://e.com/schema
+ namespace_wrapped_array:
+ type: array
+ xml:
+ wrapped: true
+ namespace: http://f.com/schema
+ items:
+ type: integer
+ xml:
+ namespace: http://g.com/schema
+ prefix_ns_string:
+ type: string
+ example: string
+ xml:
+ namespace: http://a.com/schema
+ prefix: a
+ prefix_ns_number:
+ type: number
+ example: 1.234
+ xml:
+ namespace: http://b.com/schema
+ prefix: b
+ prefix_ns_integer:
+ type: integer
+ example: -2
+ xml:
+ namespace: http://c.com/schema
+ prefix: c
+ prefix_ns_boolean:
+ type: boolean
+ example: true
+ xml:
+ namespace: http://d.com/schema
+ prefix: d
+ prefix_ns_array:
+ type: array
+ items:
+ type: integer
+ xml:
+ namespace: http://e.com/schema
+ prefix: e
+ prefix_ns_wrapped_array:
+ type: array
+ xml:
+ wrapped: true
+ namespace: http://f.com/schema
+ prefix: f
+ items:
+ type: integer
+ xml:
+ namespace: http://g.com/schema
+ prefix: g
diff --git a/pom.xml b/pom.xml
index a792ff26cb..7a784c2a2a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1041,6 +1041,7 @@
samples/client/petstore/javascript-promise-es6
samples/client/petstore/javascript-flowtyped
samples/client/petstore/python
+ samples/client/petstore/python-experimental
samples/client/petstore/python-asyncio
samples/client/petstore/python-tornado
samples/openapi3/client/petstore/python
diff --git a/samples/client/petstore/python-experimental/.gitignore b/samples/client/petstore/python-experimental/.gitignore
new file mode 100644
index 0000000000..a655050c26
--- /dev/null
+++ b/samples/client/petstore/python-experimental/.gitignore
@@ -0,0 +1,64 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+.hypothesis/
+venv/
+.python-version
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+#Ipython Notebook
+.ipynb_checkpoints
diff --git a/samples/client/petstore/python-experimental/.openapi-generator-ignore b/samples/client/petstore/python-experimental/.openapi-generator-ignore
new file mode 100644
index 0000000000..7484ee590a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/samples/client/petstore/python-experimental/.openapi-generator/VERSION b/samples/client/petstore/python-experimental/.openapi-generator/VERSION
new file mode 100644
index 0000000000..479c313e87
--- /dev/null
+++ b/samples/client/petstore/python-experimental/.openapi-generator/VERSION
@@ -0,0 +1 @@
+4.0.3-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/python-experimental/.travis.yml b/samples/client/petstore/python-experimental/.travis.yml
new file mode 100644
index 0000000000..86211e2d4a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/.travis.yml
@@ -0,0 +1,14 @@
+# ref: https://docs.travis-ci.com/user/languages/python
+language: python
+python:
+ - "2.7"
+ - "3.2"
+ - "3.3"
+ - "3.4"
+ - "3.5"
+ #- "3.5-dev" # 3.5 development branch
+ #- "nightly" # points to the latest development branch e.g. 3.6-dev
+# command to install dependencies
+install: "pip install -r requirements.txt"
+# command to run tests
+script: nosetests
diff --git a/samples/client/petstore/python-experimental/Makefile b/samples/client/petstore/python-experimental/Makefile
new file mode 100644
index 0000000000..a7ff5e1e24
--- /dev/null
+++ b/samples/client/petstore/python-experimental/Makefile
@@ -0,0 +1,21 @@
+ #!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=venv
+
+clean:
+ rm -rf $(REQUIREMENTS_OUT)
+ rm -rf $(SETUP_OUT)
+ rm -rf $(VENV)
+ rm -rf .tox
+ rm -rf .coverage
+ find . -name "*.py[oc]" -delete
+ find . -name "__pycache__" -delete
+
+test: clean
+ bash ./test_python2.sh
+
+test-all: clean
+ bash ./test_python2_and_3.sh
diff --git a/samples/client/petstore/python-experimental/README.md b/samples/client/petstore/python-experimental/README.md
new file mode 100644
index 0000000000..3e91b2678b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/README.md
@@ -0,0 +1,198 @@
+# petstore-api
+This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+
+This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 1.0.0
+- Package version: 1.0.0
+- Build package: org.openapitools.codegen.languages.PythonClientExperimentalCodegen
+
+## Requirements.
+
+Python 2.7 and 3.4+
+
+## Installation & Usage
+### pip install
+
+If the python package is hosted on Github, you can install directly from Github
+
+```sh
+pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git
+```
+(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`)
+
+Then import the package:
+```python
+import petstore_api
+```
+
+### Setuptools
+
+Install via [Setuptools](http://pypi.python.org/pypi/setuptools).
+
+```sh
+python setup.py install --user
+```
+(or `sudo python setup.py install` to install the package for all users)
+
+Then import the package:
+```python
+import petstore_api
+```
+
+## Getting Started
+
+Please follow the [installation procedure](#installation--usage) and then run the following:
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+
+# create an instance of the API class
+api_instance = petstore_api.AnotherFakeApi(petstore_api.ApiClient(configuration))
+body = petstore_api.Client() # Client | client model
+
+try:
+ # To test special tags
+ api_response = api_instance.call_123_test_special_tags(body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling AnotherFakeApi->call_123_test_special_tags: %s\n" % e)
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*AnotherFakeApi* | [**call_123_test_special_tags**](docs/AnotherFakeApi.md#call_123_test_special_tags) | **PATCH** /another-fake/dummy | To test special tags
+*FakeApi* | [**create_xml_item**](docs/FakeApi.md#create_xml_item) | **POST** /fake/create_xml_item | creates an XmlItem
+*FakeApi* | [**fake_outer_boolean_serialize**](docs/FakeApi.md#fake_outer_boolean_serialize) | **POST** /fake/outer/boolean |
+*FakeApi* | [**fake_outer_composite_serialize**](docs/FakeApi.md#fake_outer_composite_serialize) | **POST** /fake/outer/composite |
+*FakeApi* | [**fake_outer_number_serialize**](docs/FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number |
+*FakeApi* | [**fake_outer_string_serialize**](docs/FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string |
+*FakeApi* | [**test_body_with_file_schema**](docs/FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema |
+*FakeApi* | [**test_body_with_query_params**](docs/FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params |
+*FakeApi* | [**test_client_model**](docs/FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model
+*FakeApi* | [**test_endpoint_parameters**](docs/FakeApi.md#test_endpoint_parameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+*FakeApi* | [**test_enum_parameters**](docs/FakeApi.md#test_enum_parameters) | **GET** /fake | To test enum parameters
+*FakeApi* | [**test_group_parameters**](docs/FakeApi.md#test_group_parameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional)
+*FakeApi* | [**test_inline_additional_properties**](docs/FakeApi.md#test_inline_additional_properties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
+*FakeApi* | [**test_json_form_data**](docs/FakeApi.md#test_json_form_data) | **GET** /fake/jsonFormData | test json serialization of form data
+*FakeClassnameTags123Api* | [**test_classname**](docs/FakeClassnameTags123Api.md#test_classname) | **PATCH** /fake_classname_test | To test class name in snake case
+*PetApi* | [**add_pet**](docs/PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store
+*PetApi* | [**delete_pet**](docs/PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet
+*PetApi* | [**find_pets_by_status**](docs/PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status
+*PetApi* | [**find_pets_by_tags**](docs/PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags
+*PetApi* | [**get_pet_by_id**](docs/PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID
+*PetApi* | [**update_pet**](docs/PetApi.md#update_pet) | **PUT** /pet | Update an existing pet
+*PetApi* | [**update_pet_with_form**](docs/PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data
+*PetApi* | [**upload_file**](docs/PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image
+*PetApi* | [**upload_file_with_required_file**](docs/PetApi.md#upload_file_with_required_file) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required)
+*StoreApi* | [**delete_order**](docs/StoreApi.md#delete_order) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
+*StoreApi* | [**get_inventory**](docs/StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status
+*StoreApi* | [**get_order_by_id**](docs/StoreApi.md#get_order_by_id) | **GET** /store/order/{order_id} | Find purchase order by ID
+*StoreApi* | [**place_order**](docs/StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet
+*UserApi* | [**create_user**](docs/UserApi.md#create_user) | **POST** /user | Create user
+*UserApi* | [**create_users_with_array_input**](docs/UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array
+*UserApi* | [**create_users_with_list_input**](docs/UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array
+*UserApi* | [**delete_user**](docs/UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user
+*UserApi* | [**get_user_by_name**](docs/UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name
+*UserApi* | [**login_user**](docs/UserApi.md#login_user) | **GET** /user/login | Logs user into the system
+*UserApi* | [**logout_user**](docs/UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session
+*UserApi* | [**update_user**](docs/UserApi.md#update_user) | **PUT** /user/{username} | Updated user
+
+
+## Documentation For Models
+
+ - [AdditionalPropertiesAnyType](docs/AdditionalPropertiesAnyType.md)
+ - [AdditionalPropertiesArray](docs/AdditionalPropertiesArray.md)
+ - [AdditionalPropertiesBoolean](docs/AdditionalPropertiesBoolean.md)
+ - [AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md)
+ - [AdditionalPropertiesInteger](docs/AdditionalPropertiesInteger.md)
+ - [AdditionalPropertiesNumber](docs/AdditionalPropertiesNumber.md)
+ - [AdditionalPropertiesObject](docs/AdditionalPropertiesObject.md)
+ - [AdditionalPropertiesString](docs/AdditionalPropertiesString.md)
+ - [Animal](docs/Animal.md)
+ - [ApiResponse](docs/ApiResponse.md)
+ - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md)
+ - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md)
+ - [ArrayTest](docs/ArrayTest.md)
+ - [Capitalization](docs/Capitalization.md)
+ - [Cat](docs/Cat.md)
+ - [CatAllOf](docs/CatAllOf.md)
+ - [Category](docs/Category.md)
+ - [ClassModel](docs/ClassModel.md)
+ - [Client](docs/Client.md)
+ - [Dog](docs/Dog.md)
+ - [DogAllOf](docs/DogAllOf.md)
+ - [EnumArrays](docs/EnumArrays.md)
+ - [EnumClass](docs/EnumClass.md)
+ - [EnumTest](docs/EnumTest.md)
+ - [File](docs/File.md)
+ - [FileSchemaTestClass](docs/FileSchemaTestClass.md)
+ - [FormatTest](docs/FormatTest.md)
+ - [HasOnlyReadOnly](docs/HasOnlyReadOnly.md)
+ - [List](docs/List.md)
+ - [MapTest](docs/MapTest.md)
+ - [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
+ - [Model200Response](docs/Model200Response.md)
+ - [ModelReturn](docs/ModelReturn.md)
+ - [Name](docs/Name.md)
+ - [NumberOnly](docs/NumberOnly.md)
+ - [Order](docs/Order.md)
+ - [OuterComposite](docs/OuterComposite.md)
+ - [OuterEnum](docs/OuterEnum.md)
+ - [Pet](docs/Pet.md)
+ - [ReadOnlyFirst](docs/ReadOnlyFirst.md)
+ - [SpecialModelName](docs/SpecialModelName.md)
+ - [Tag](docs/Tag.md)
+ - [TypeHolderDefault](docs/TypeHolderDefault.md)
+ - [TypeHolderExample](docs/TypeHolderExample.md)
+ - [User](docs/User.md)
+ - [XmlItem](docs/XmlItem.md)
+
+
+## Documentation For Authorization
+
+
+## api_key
+
+- **Type**: API key
+- **API key parameter name**: api_key
+- **Location**: HTTP header
+
+
+## api_key_query
+
+- **Type**: API key
+- **API key parameter name**: api_key_query
+- **Location**: URL query string
+
+
+## http_basic_test
+
+- **Type**: HTTP basic authentication
+
+
+## petstore_auth
+
+- **Type**: OAuth
+- **Flow**: implicit
+- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog
+- **Scopes**:
+ - **write:pets**: modify pets in your account
+ - **read:pets**: read your pets
+
+
+## Author
+
+
+
+
diff --git a/samples/client/petstore/python-experimental/dev-requirements.txt b/samples/client/petstore/python-experimental/dev-requirements.txt
new file mode 100644
index 0000000000..f50c13b5c5
--- /dev/null
+++ b/samples/client/petstore/python-experimental/dev-requirements.txt
@@ -0,0 +1,5 @@
+nose
+tox
+coverage
+randomize
+flake8
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesAnyType.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesAnyType.md
new file mode 100644
index 0000000000..9843d35ab9
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesAnyType.md
@@ -0,0 +1,10 @@
+# AdditionalPropertiesAnyType
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesArray.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesArray.md
new file mode 100644
index 0000000000..cfe09d91c7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesArray.md
@@ -0,0 +1,10 @@
+# AdditionalPropertiesArray
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesBoolean.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesBoolean.md
new file mode 100644
index 0000000000..74f009554a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesBoolean.md
@@ -0,0 +1,10 @@
+# AdditionalPropertiesBoolean
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesClass.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesClass.md
new file mode 100644
index 0000000000..f1f9b29a60
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesClass.md
@@ -0,0 +1,20 @@
+# AdditionalPropertiesClass
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**map_string** | **dict(str, str)** | | [optional]
+**map_number** | **dict(str, float)** | | [optional]
+**map_integer** | **dict(str, int)** | | [optional]
+**map_boolean** | **dict(str, bool)** | | [optional]
+**map_array_integer** | **dict(str, list[int])** | | [optional]
+**map_array_anytype** | **dict(str, list[object])** | | [optional]
+**map_map_string** | **dict(str, dict(str, str))** | | [optional]
+**map_map_anytype** | **dict(str, dict(str, object))** | | [optional]
+**anytype_1** | [**object**](.md) | | [optional]
+**anytype_2** | [**object**](.md) | | [optional]
+**anytype_3** | [**object**](.md) | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesInteger.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesInteger.md
new file mode 100644
index 0000000000..a3e58fd1b0
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesInteger.md
@@ -0,0 +1,10 @@
+# AdditionalPropertiesInteger
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesNumber.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesNumber.md
new file mode 100644
index 0000000000..37eafe1ff0
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesNumber.md
@@ -0,0 +1,10 @@
+# AdditionalPropertiesNumber
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesObject.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesObject.md
new file mode 100644
index 0000000000..7f4d6713c7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesObject.md
@@ -0,0 +1,10 @@
+# AdditionalPropertiesObject
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AdditionalPropertiesString.md b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesString.md
new file mode 100644
index 0000000000..9317cfeee8
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AdditionalPropertiesString.md
@@ -0,0 +1,10 @@
+# AdditionalPropertiesString
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Animal.md b/samples/client/petstore/python-experimental/docs/Animal.md
new file mode 100644
index 0000000000..7ed4ba541f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Animal.md
@@ -0,0 +1,11 @@
+# Animal
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**class_name** | **str** | |
+**color** | **str** | | [optional] [default to 'red']
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/AnotherFakeApi.md b/samples/client/petstore/python-experimental/docs/AnotherFakeApi.md
new file mode 100644
index 0000000000..c3f84772cf
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/AnotherFakeApi.md
@@ -0,0 +1,63 @@
+# petstore_api.AnotherFakeApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**call_123_test_special_tags**](AnotherFakeApi.md#call_123_test_special_tags) | **PATCH** /another-fake/dummy | To test special tags
+
+
+# **call_123_test_special_tags**
+> Client call_123_test_special_tags(body)
+
+To test special tags
+
+To test special tags and operation ID starting with number
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.AnotherFakeApi()
+body = petstore_api.Client() # Client | client model
+
+try:
+ # To test special tags
+ api_response = api_instance.call_123_test_special_tags(body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling AnotherFakeApi->call_123_test_special_tags: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**Client**](Client.md)| client model |
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
diff --git a/samples/client/petstore/python-experimental/docs/ApiResponse.md b/samples/client/petstore/python-experimental/docs/ApiResponse.md
new file mode 100644
index 0000000000..8fc302305a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/ApiResponse.md
@@ -0,0 +1,12 @@
+# ApiResponse
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **int** | | [optional]
+**type** | **str** | | [optional]
+**message** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/python-experimental/docs/ArrayOfArrayOfNumberOnly.md
new file mode 100644
index 0000000000..aa3988ab16
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/ArrayOfArrayOfNumberOnly.md
@@ -0,0 +1,10 @@
+# ArrayOfArrayOfNumberOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**array_array_number** | **list[list[float]]** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/ArrayOfNumberOnly.md b/samples/client/petstore/python-experimental/docs/ArrayOfNumberOnly.md
new file mode 100644
index 0000000000..2c3de967ae
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/ArrayOfNumberOnly.md
@@ -0,0 +1,10 @@
+# ArrayOfNumberOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**array_number** | **list[float]** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/ArrayTest.md b/samples/client/petstore/python-experimental/docs/ArrayTest.md
new file mode 100644
index 0000000000..6ab0d13780
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/ArrayTest.md
@@ -0,0 +1,12 @@
+# ArrayTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**array_of_string** | **list[str]** | | [optional]
+**array_array_of_integer** | **list[list[int]]** | | [optional]
+**array_array_of_model** | **list[list[ReadOnlyFirst]]** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Capitalization.md b/samples/client/petstore/python-experimental/docs/Capitalization.md
new file mode 100644
index 0000000000..85d88d239e
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Capitalization.md
@@ -0,0 +1,15 @@
+# Capitalization
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**small_camel** | **str** | | [optional]
+**capital_camel** | **str** | | [optional]
+**small_snake** | **str** | | [optional]
+**capital_snake** | **str** | | [optional]
+**sca_eth_flow_points** | **str** | | [optional]
+**att_name** | **str** | Name of the pet | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Cat.md b/samples/client/petstore/python-experimental/docs/Cat.md
new file mode 100644
index 0000000000..8d30565d01
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Cat.md
@@ -0,0 +1,10 @@
+# Cat
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**declawed** | **bool** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/CatAllOf.md b/samples/client/petstore/python-experimental/docs/CatAllOf.md
new file mode 100644
index 0000000000..35434374fc
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/CatAllOf.md
@@ -0,0 +1,10 @@
+# CatAllOf
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**declawed** | **bool** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Category.md b/samples/client/petstore/python-experimental/docs/Category.md
new file mode 100644
index 0000000000..7e5c1e3164
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Category.md
@@ -0,0 +1,11 @@
+# Category
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**name** | **str** | | [default to 'default-name']
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/ClassModel.md b/samples/client/petstore/python-experimental/docs/ClassModel.md
new file mode 100644
index 0000000000..7f6f6d1721
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/ClassModel.md
@@ -0,0 +1,10 @@
+# ClassModel
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**_class** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Client.md b/samples/client/petstore/python-experimental/docs/Client.md
new file mode 100644
index 0000000000..88e99384f9
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Client.md
@@ -0,0 +1,10 @@
+# Client
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**client** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Dog.md b/samples/client/petstore/python-experimental/docs/Dog.md
new file mode 100644
index 0000000000..f727487975
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Dog.md
@@ -0,0 +1,10 @@
+# Dog
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**breed** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/DogAllOf.md b/samples/client/petstore/python-experimental/docs/DogAllOf.md
new file mode 100644
index 0000000000..36d3216f7b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/DogAllOf.md
@@ -0,0 +1,10 @@
+# DogAllOf
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**breed** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/EnumArrays.md b/samples/client/petstore/python-experimental/docs/EnumArrays.md
new file mode 100644
index 0000000000..e15a5f1fd0
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/EnumArrays.md
@@ -0,0 +1,11 @@
+# EnumArrays
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**just_symbol** | **str** | | [optional]
+**array_enum** | **list[str]** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/EnumClass.md b/samples/client/petstore/python-experimental/docs/EnumClass.md
new file mode 100644
index 0000000000..67f017becd
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/EnumClass.md
@@ -0,0 +1,9 @@
+# EnumClass
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/EnumTest.md b/samples/client/petstore/python-experimental/docs/EnumTest.md
new file mode 100644
index 0000000000..c4c1630250
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/EnumTest.md
@@ -0,0 +1,14 @@
+# EnumTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**enum_string** | **str** | | [optional]
+**enum_string_required** | **str** | |
+**enum_integer** | **int** | | [optional]
+**enum_number** | **float** | | [optional]
+**outer_enum** | [**OuterEnum**](OuterEnum.md) | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/FakeApi.md b/samples/client/petstore/python-experimental/docs/FakeApi.md
new file mode 100644
index 0000000000..946a8ce3e7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/FakeApi.md
@@ -0,0 +1,764 @@
+# petstore_api.FakeApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**create_xml_item**](FakeApi.md#create_xml_item) | **POST** /fake/create_xml_item | creates an XmlItem
+[**fake_outer_boolean_serialize**](FakeApi.md#fake_outer_boolean_serialize) | **POST** /fake/outer/boolean |
+[**fake_outer_composite_serialize**](FakeApi.md#fake_outer_composite_serialize) | **POST** /fake/outer/composite |
+[**fake_outer_number_serialize**](FakeApi.md#fake_outer_number_serialize) | **POST** /fake/outer/number |
+[**fake_outer_string_serialize**](FakeApi.md#fake_outer_string_serialize) | **POST** /fake/outer/string |
+[**test_body_with_file_schema**](FakeApi.md#test_body_with_file_schema) | **PUT** /fake/body-with-file-schema |
+[**test_body_with_query_params**](FakeApi.md#test_body_with_query_params) | **PUT** /fake/body-with-query-params |
+[**test_client_model**](FakeApi.md#test_client_model) | **PATCH** /fake | To test \"client\" model
+[**test_endpoint_parameters**](FakeApi.md#test_endpoint_parameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+[**test_enum_parameters**](FakeApi.md#test_enum_parameters) | **GET** /fake | To test enum parameters
+[**test_group_parameters**](FakeApi.md#test_group_parameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional)
+[**test_inline_additional_properties**](FakeApi.md#test_inline_additional_properties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
+[**test_json_form_data**](FakeApi.md#test_json_form_data) | **GET** /fake/jsonFormData | test json serialization of form data
+
+
+# **create_xml_item**
+> create_xml_item(xml_item)
+
+creates an XmlItem
+
+this route creates an XmlItem
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+xml_item = petstore_api.XmlItem() # XmlItem | XmlItem Body
+
+try:
+ # creates an XmlItem
+ api_instance.create_xml_item(xml_item)
+except ApiException as e:
+ print("Exception when calling FakeApi->create_xml_item: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **xml_item** | [**XmlItem**](XmlItem.md)| XmlItem Body |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/xml, application/xml; charset=utf-8, application/xml; charset=utf-16, text/xml, text/xml; charset=utf-8, text/xml; charset=utf-16
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
+# **fake_outer_boolean_serialize**
+> bool fake_outer_boolean_serialize(body=body)
+
+
+
+Test serialization of outer boolean types
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+body = True # bool | Input boolean as post body (optional)
+
+try:
+ api_response = api_instance.fake_outer_boolean_serialize(body=body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling FakeApi->fake_outer_boolean_serialize: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **bool**| Input boolean as post body | [optional]
+
+### Return type
+
+**bool**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Output boolean | - |
+
+[[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)
+
+# **fake_outer_composite_serialize**
+> OuterComposite fake_outer_composite_serialize(body=body)
+
+
+
+Test serialization of object with outer number type
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+body = petstore_api.OuterComposite() # OuterComposite | Input composite as post body (optional)
+
+try:
+ api_response = api_instance.fake_outer_composite_serialize(body=body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling FakeApi->fake_outer_composite_serialize: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional]
+
+### Return type
+
+[**OuterComposite**](OuterComposite.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Output composite | - |
+
+[[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)
+
+# **fake_outer_number_serialize**
+> float fake_outer_number_serialize(body=body)
+
+
+
+Test serialization of outer number types
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+body = 3.4 # float | Input number as post body (optional)
+
+try:
+ api_response = api_instance.fake_outer_number_serialize(body=body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling FakeApi->fake_outer_number_serialize: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **float**| Input number as post body | [optional]
+
+### Return type
+
+**float**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Output number | - |
+
+[[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)
+
+# **fake_outer_string_serialize**
+> str fake_outer_string_serialize(body=body)
+
+
+
+Test serialization of outer string types
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+body = 'body_example' # str | Input string as post body (optional)
+
+try:
+ api_response = api_instance.fake_outer_string_serialize(body=body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling FakeApi->fake_outer_string_serialize: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **str**| Input string as post body | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Output string | - |
+
+[[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)
+
+# **test_body_with_file_schema**
+> test_body_with_file_schema(body)
+
+
+
+For this test, the body for this request much reference a schema named `File`.
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+body = petstore_api.FileSchemaTestClass() # FileSchemaTestClass |
+
+try:
+ api_instance.test_body_with_file_schema(body)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_body_with_file_schema: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**FileSchemaTestClass**](FileSchemaTestClass.md)| |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Success | - |
+
+[[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)
+
+# **test_body_with_query_params**
+> test_body_with_query_params(query, body)
+
+
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+query = 'query_example' # str |
+body = petstore_api.User() # User |
+
+try:
+ api_instance.test_body_with_query_params(query, body)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_body_with_query_params: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **query** | **str**| |
+ **body** | [**User**](User.md)| |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Success | - |
+
+[[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)
+
+# **test_client_model**
+> Client test_client_model(body)
+
+To test \"client\" model
+
+To test \"client\" model
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+body = petstore_api.Client() # Client | client model
+
+try:
+ # To test \"client\" model
+ api_response = api_instance.test_client_model(body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_client_model: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**Client**](Client.md)| client model |
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
+# **test_endpoint_parameters**
+> test_endpoint_parameters(number, double, pattern_without_delimiter, byte, integer=integer, int32=int32, int64=int64, float=float, string=string, binary=binary, date=date, date_time=date_time, password=password, param_callback=param_callback)
+
+Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+
+Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+
+### Example
+
+* Basic Authentication (http_basic_test):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure HTTP basic authorization: http_basic_test
+configuration.username = 'YOUR_USERNAME'
+configuration.password = 'YOUR_PASSWORD'
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi(petstore_api.ApiClient(configuration))
+number = 3.4 # float | None
+double = 3.4 # float | None
+pattern_without_delimiter = 'pattern_without_delimiter_example' # str | None
+byte = 'byte_example' # str | None
+integer = 56 # int | None (optional)
+int32 = 56 # int | None (optional)
+int64 = 56 # int | None (optional)
+float = 3.4 # float | None (optional)
+string = 'string_example' # str | None (optional)
+binary = '/path/to/file' # file | None (optional)
+date = '2013-10-20' # date | None (optional)
+date_time = '2013-10-20T19:20:30+01:00' # datetime | None (optional)
+password = 'password_example' # str | None (optional)
+param_callback = 'param_callback_example' # str | None (optional)
+
+try:
+ # Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ api_instance.test_endpoint_parameters(number, double, pattern_without_delimiter, byte, integer=integer, int32=int32, int64=int64, float=float, string=string, binary=binary, date=date, date_time=date_time, password=password, param_callback=param_callback)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_endpoint_parameters: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **number** | **float**| None |
+ **double** | **float**| None |
+ **pattern_without_delimiter** | **str**| None |
+ **byte** | **str**| None |
+ **integer** | **int**| None | [optional]
+ **int32** | **int**| None | [optional]
+ **int64** | **int**| None | [optional]
+ **float** | **float**| None | [optional]
+ **string** | **str**| None | [optional]
+ **binary** | **file**| None | [optional]
+ **date** | **date**| None | [optional]
+ **date_time** | **datetime**| None | [optional]
+ **password** | **str**| None | [optional]
+ **param_callback** | **str**| None | [optional]
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[http_basic_test](../README.md#http_basic_test)
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**400** | Invalid username supplied | - |
+**404** | User not found | - |
+
+[[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)
+
+# **test_enum_parameters**
+> test_enum_parameters(enum_header_string_array=enum_header_string_array, enum_header_string=enum_header_string, enum_query_string_array=enum_query_string_array, enum_query_string=enum_query_string, enum_query_integer=enum_query_integer, enum_query_double=enum_query_double, enum_form_string_array=enum_form_string_array, enum_form_string=enum_form_string)
+
+To test enum parameters
+
+To test enum parameters
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+enum_header_string_array = ['enum_header_string_array_example'] # list[str] | Header parameter enum test (string array) (optional)
+enum_header_string = '-efg' # str | Header parameter enum test (string) (optional) (default to '-efg')
+enum_query_string_array = ['enum_query_string_array_example'] # list[str] | Query parameter enum test (string array) (optional)
+enum_query_string = '-efg' # str | Query parameter enum test (string) (optional) (default to '-efg')
+enum_query_integer = 56 # int | Query parameter enum test (double) (optional)
+enum_query_double = 3.4 # float | Query parameter enum test (double) (optional)
+enum_form_string_array = '$' # list[str] | Form parameter enum test (string array) (optional) (default to '$')
+enum_form_string = '-efg' # str | Form parameter enum test (string) (optional) (default to '-efg')
+
+try:
+ # To test enum parameters
+ api_instance.test_enum_parameters(enum_header_string_array=enum_header_string_array, enum_header_string=enum_header_string, enum_query_string_array=enum_query_string_array, enum_query_string=enum_query_string, enum_query_integer=enum_query_integer, enum_query_double=enum_query_double, enum_form_string_array=enum_form_string_array, enum_form_string=enum_form_string)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_enum_parameters: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **enum_header_string_array** | [**list[str]**](str.md)| Header parameter enum test (string array) | [optional]
+ **enum_header_string** | **str**| Header parameter enum test (string) | [optional] [default to '-efg']
+ **enum_query_string_array** | [**list[str]**](str.md)| Query parameter enum test (string array) | [optional]
+ **enum_query_string** | **str**| Query parameter enum test (string) | [optional] [default to '-efg']
+ **enum_query_integer** | **int**| Query parameter enum test (double) | [optional]
+ **enum_query_double** | **float**| Query parameter enum test (double) | [optional]
+ **enum_form_string_array** | [**list[str]**](str.md)| Form parameter enum test (string array) | [optional] [default to '$']
+ **enum_form_string** | **str**| Form parameter enum test (string) | [optional] [default to '-efg']
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**400** | Invalid request | - |
+**404** | Not found | - |
+
+[[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)
+
+# **test_group_parameters**
+> test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group)
+
+Fake endpoint to test group parameters (optional)
+
+Fake endpoint to test group parameters (optional)
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+required_string_group = 56 # int | Required String in group parameters
+required_boolean_group = True # bool | Required Boolean in group parameters
+required_int64_group = 56 # int | Required Integer in group parameters
+string_group = 56 # int | String in group parameters (optional)
+boolean_group = True # bool | Boolean in group parameters (optional)
+int64_group = 56 # int | Integer in group parameters (optional)
+
+try:
+ # Fake endpoint to test group parameters (optional)
+ api_instance.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_group_parameters: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **required_string_group** | **int**| Required String in group parameters |
+ **required_boolean_group** | **bool**| Required Boolean in group parameters |
+ **required_int64_group** | **int**| Required Integer in group parameters |
+ **string_group** | **int**| String in group parameters | [optional]
+ **boolean_group** | **bool**| Boolean in group parameters | [optional]
+ **int64_group** | **int**| Integer in group parameters | [optional]
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**400** | Someting wrong | - |
+
+[[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)
+
+# **test_inline_additional_properties**
+> test_inline_additional_properties(param)
+
+test inline additionalProperties
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+param = {'key': 'param_example'} # dict(str, str) | request body
+
+try:
+ # test inline additionalProperties
+ api_instance.test_inline_additional_properties(param)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_inline_additional_properties: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **param** | [**dict(str, str)**](str.md)| request body |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
+# **test_json_form_data**
+> test_json_form_data(param, param2)
+
+test json serialization of form data
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.FakeApi()
+param = 'param_example' # str | field1
+param2 = 'param2_example' # str | field2
+
+try:
+ # test json serialization of form data
+ api_instance.test_json_form_data(param, param2)
+except ApiException as e:
+ print("Exception when calling FakeApi->test_json_form_data: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **param** | **str**| field1 |
+ **param2** | **str**| field2 |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
diff --git a/samples/client/petstore/python-experimental/docs/FakeClassnameTags123Api.md b/samples/client/petstore/python-experimental/docs/FakeClassnameTags123Api.md
new file mode 100644
index 0000000000..7ffcf21122
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/FakeClassnameTags123Api.md
@@ -0,0 +1,69 @@
+# petstore_api.FakeClassnameTags123Api
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**test_classname**](FakeClassnameTags123Api.md#test_classname) | **PATCH** /fake_classname_test | To test class name in snake case
+
+
+# **test_classname**
+> Client test_classname(body)
+
+To test class name in snake case
+
+To test class name in snake case
+
+### Example
+
+* Api Key Authentication (api_key_query):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure API key authorization: api_key_query
+configuration.api_key['api_key_query'] = 'YOUR_API_KEY'
+# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
+# configuration.api_key_prefix['api_key_query'] = 'Bearer'
+
+# create an instance of the API class
+api_instance = petstore_api.FakeClassnameTags123Api(petstore_api.ApiClient(configuration))
+body = petstore_api.Client() # Client | client model
+
+try:
+ # To test class name in snake case
+ api_response = api_instance.test_classname(body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling FakeClassnameTags123Api->test_classname: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**Client**](Client.md)| client model |
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+[api_key_query](../README.md#api_key_query)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
diff --git a/samples/client/petstore/python-experimental/docs/File.md b/samples/client/petstore/python-experimental/docs/File.md
new file mode 100644
index 0000000000..6a925f0a7a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/File.md
@@ -0,0 +1,10 @@
+# File
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**source_uri** | **str** | Test capitalization | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/FileSchemaTestClass.md b/samples/client/petstore/python-experimental/docs/FileSchemaTestClass.md
new file mode 100644
index 0000000000..dc37222898
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/FileSchemaTestClass.md
@@ -0,0 +1,11 @@
+# FileSchemaTestClass
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**file** | [**File**](File.md) | | [optional]
+**files** | [**list[File]**](File.md) | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/FormatTest.md b/samples/client/petstore/python-experimental/docs/FormatTest.md
new file mode 100644
index 0000000000..31d92e2a75
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/FormatTest.md
@@ -0,0 +1,22 @@
+# FormatTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**integer** | **int** | | [optional]
+**int32** | **int** | | [optional]
+**int64** | **int** | | [optional]
+**number** | **float** | |
+**float** | **float** | | [optional]
+**double** | **float** | | [optional]
+**string** | **str** | | [optional]
+**byte** | **str** | |
+**binary** | **file** | | [optional]
+**date** | **date** | |
+**date_time** | **datetime** | | [optional]
+**uuid** | **str** | | [optional]
+**password** | **str** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/HasOnlyReadOnly.md b/samples/client/petstore/python-experimental/docs/HasOnlyReadOnly.md
new file mode 100644
index 0000000000..44ad450b52
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/HasOnlyReadOnly.md
@@ -0,0 +1,11 @@
+# HasOnlyReadOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**bar** | **str** | | [optional]
+**foo** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/List.md b/samples/client/petstore/python-experimental/docs/List.md
new file mode 100644
index 0000000000..11f4f3a05f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/List.md
@@ -0,0 +1,10 @@
+# List
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**_123_list** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/MapTest.md b/samples/client/petstore/python-experimental/docs/MapTest.md
new file mode 100644
index 0000000000..a5601691f8
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/MapTest.md
@@ -0,0 +1,13 @@
+# MapTest
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**map_map_of_string** | **dict(str, dict(str, str))** | | [optional]
+**map_of_enum_string** | **dict(str, str)** | | [optional]
+**direct_map** | **dict(str, bool)** | | [optional]
+**indirect_map** | **dict(str, bool)** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/python-experimental/docs/MixedPropertiesAndAdditionalPropertiesClass.md
new file mode 100644
index 0000000000..b9808d5275
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -0,0 +1,12 @@
+# MixedPropertiesAndAdditionalPropertiesClass
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**uuid** | **str** | | [optional]
+**date_time** | **datetime** | | [optional]
+**map** | [**dict(str, Animal)**](Animal.md) | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Model200Response.md b/samples/client/petstore/python-experimental/docs/Model200Response.md
new file mode 100644
index 0000000000..30f47cae52
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Model200Response.md
@@ -0,0 +1,11 @@
+# Model200Response
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **int** | | [optional]
+**_class** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/ModelReturn.md b/samples/client/petstore/python-experimental/docs/ModelReturn.md
new file mode 100644
index 0000000000..2b03798e30
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/ModelReturn.md
@@ -0,0 +1,10 @@
+# ModelReturn
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**_return** | **int** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Name.md b/samples/client/petstore/python-experimental/docs/Name.md
new file mode 100644
index 0000000000..542da3f047
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Name.md
@@ -0,0 +1,13 @@
+# Name
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **int** | |
+**snake_case** | **int** | | [optional]
+**_property** | **str** | | [optional]
+**_123_number** | **int** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/NumberOnly.md b/samples/client/petstore/python-experimental/docs/NumberOnly.md
new file mode 100644
index 0000000000..93a0fde7b9
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/NumberOnly.md
@@ -0,0 +1,10 @@
+# NumberOnly
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**just_number** | **float** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Order.md b/samples/client/petstore/python-experimental/docs/Order.md
new file mode 100644
index 0000000000..b5f7b22d34
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Order.md
@@ -0,0 +1,15 @@
+# Order
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**pet_id** | **int** | | [optional]
+**quantity** | **int** | | [optional]
+**ship_date** | **datetime** | | [optional]
+**status** | **str** | Order Status | [optional]
+**complete** | **bool** | | [optional] [default to False]
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/OuterComposite.md b/samples/client/petstore/python-experimental/docs/OuterComposite.md
new file mode 100644
index 0000000000..bab07ad559
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/OuterComposite.md
@@ -0,0 +1,12 @@
+# OuterComposite
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**my_number** | **float** | | [optional]
+**my_string** | **str** | | [optional]
+**my_boolean** | **bool** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/OuterEnum.md b/samples/client/petstore/python-experimental/docs/OuterEnum.md
new file mode 100644
index 0000000000..06d413b016
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/OuterEnum.md
@@ -0,0 +1,9 @@
+# OuterEnum
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/Pet.md b/samples/client/petstore/python-experimental/docs/Pet.md
new file mode 100644
index 0000000000..9e15090300
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Pet.md
@@ -0,0 +1,15 @@
+# Pet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**category** | [**Category**](Category.md) | | [optional]
+**name** | **str** | |
+**photo_urls** | **list[str]** | |
+**tags** | [**list[Tag]**](Tag.md) | | [optional]
+**status** | **str** | pet status in the store | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/PetApi.md b/samples/client/petstore/python-experimental/docs/PetApi.md
new file mode 100644
index 0000000000..3ed2551bd6
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/PetApi.md
@@ -0,0 +1,548 @@
+# petstore_api.PetApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**add_pet**](PetApi.md#add_pet) | **POST** /pet | Add a new pet to the store
+[**delete_pet**](PetApi.md#delete_pet) | **DELETE** /pet/{petId} | Deletes a pet
+[**find_pets_by_status**](PetApi.md#find_pets_by_status) | **GET** /pet/findByStatus | Finds Pets by status
+[**find_pets_by_tags**](PetApi.md#find_pets_by_tags) | **GET** /pet/findByTags | Finds Pets by tags
+[**get_pet_by_id**](PetApi.md#get_pet_by_id) | **GET** /pet/{petId} | Find pet by ID
+[**update_pet**](PetApi.md#update_pet) | **PUT** /pet | Update an existing pet
+[**update_pet_with_form**](PetApi.md#update_pet_with_form) | **POST** /pet/{petId} | Updates a pet in the store with form data
+[**upload_file**](PetApi.md#upload_file) | **POST** /pet/{petId}/uploadImage | uploads an image
+[**upload_file_with_required_file**](PetApi.md#upload_file_with_required_file) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required)
+
+
+# **add_pet**
+> add_pet(body)
+
+Add a new pet to the store
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+body = petstore_api.Pet() # Pet | Pet object that needs to be added to the store
+
+try:
+ # Add a new pet to the store
+ api_instance.add_pet(body)
+except ApiException as e:
+ print("Exception when calling PetApi->add_pet: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**405** | Invalid input | - |
+
+[[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)
+
+# **delete_pet**
+> delete_pet(pet_id, api_key=api_key)
+
+Deletes a pet
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+pet_id = 56 # int | Pet id to delete
+api_key = 'api_key_example' # str | (optional)
+
+try:
+ # Deletes a pet
+ api_instance.delete_pet(pet_id, api_key=api_key)
+except ApiException as e:
+ print("Exception when calling PetApi->delete_pet: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pet_id** | **int**| Pet id to delete |
+ **api_key** | **str**| | [optional]
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid pet value | - |
+
+[[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)
+
+# **find_pets_by_status**
+> list[Pet] find_pets_by_status(status)
+
+Finds Pets by status
+
+Multiple status values can be provided with comma separated strings
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+status = ['status_example'] # list[str] | Status values that need to be considered for filter
+
+try:
+ # Finds Pets by status
+ api_response = api_instance.find_pets_by_status(status)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling PetApi->find_pets_by_status: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **status** | [**list[str]**](str.md)| Status values that need to be considered for filter |
+
+### Return type
+
+[**list[Pet]**](Pet.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid status value | - |
+
+[[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)
+
+# **find_pets_by_tags**
+> list[Pet] find_pets_by_tags(tags)
+
+Finds Pets by tags
+
+Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+tags = ['tags_example'] # list[str] | Tags to filter by
+
+try:
+ # Finds Pets by tags
+ api_response = api_instance.find_pets_by_tags(tags)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling PetApi->find_pets_by_tags: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **tags** | [**list[str]**](str.md)| Tags to filter by |
+
+### Return type
+
+[**list[Pet]**](Pet.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid tag value | - |
+
+[[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)
+
+# **get_pet_by_id**
+> Pet get_pet_by_id(pet_id)
+
+Find pet by ID
+
+Returns a single pet
+
+### Example
+
+* Api Key Authentication (api_key):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure API key authorization: api_key
+configuration.api_key['api_key'] = 'YOUR_API_KEY'
+# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
+# configuration.api_key_prefix['api_key'] = 'Bearer'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+pet_id = 56 # int | ID of pet to return
+
+try:
+ # Find pet by ID
+ api_response = api_instance.get_pet_by_id(pet_id)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling PetApi->get_pet_by_id: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pet_id** | **int**| ID of pet to return |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+[api_key](../README.md#api_key)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid ID supplied | - |
+**404** | Pet not found | - |
+
+[[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)
+
+# **update_pet**
+> update_pet(body)
+
+Update an existing pet
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+body = petstore_api.Pet() # Pet | Pet object that needs to be added to the store
+
+try:
+ # Update an existing pet
+ api_instance.update_pet(body)
+except ApiException as e:
+ print("Exception when calling PetApi->update_pet: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid ID supplied | - |
+**404** | Pet not found | - |
+**405** | Validation exception | - |
+
+[[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)
+
+# **update_pet_with_form**
+> update_pet_with_form(pet_id, name=name, status=status)
+
+Updates a pet in the store with form data
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+pet_id = 56 # int | ID of pet that needs to be updated
+name = 'name_example' # str | Updated name of the pet (optional)
+status = 'status_example' # str | Updated status of the pet (optional)
+
+try:
+ # Updates a pet in the store with form data
+ api_instance.update_pet_with_form(pet_id, name=name, status=status)
+except ApiException as e:
+ print("Exception when calling PetApi->update_pet_with_form: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pet_id** | **int**| ID of pet that needs to be updated |
+ **name** | **str**| Updated name of the pet | [optional]
+ **status** | **str**| Updated status of the pet | [optional]
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**405** | Invalid input | - |
+
+[[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**
+> ApiResponse upload_file(pet_id, additional_metadata=additional_metadata, file=file)
+
+uploads an image
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+pet_id = 56 # int | ID of pet to update
+additional_metadata = 'additional_metadata_example' # str | Additional data to pass to server (optional)
+file = '/path/to/file' # file | file to upload (optional)
+
+try:
+ # uploads an image
+ api_response = api_instance.upload_file(pet_id, additional_metadata=additional_metadata, file=file)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling PetApi->upload_file: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pet_id** | **int**| ID of pet to update |
+ **additional_metadata** | **str**| Additional data to pass to server | [optional]
+ **file** | **file**| file to upload | [optional]
+
+### Return type
+
+[**ApiResponse**](ApiResponse.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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**
+> ApiResponse upload_file_with_required_file(pet_id, required_file, additional_metadata=additional_metadata)
+
+uploads an image (required)
+
+### Example
+
+* OAuth Authentication (petstore_auth):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure OAuth2 access token for authorization: petstore_auth
+configuration.access_token = 'YOUR_ACCESS_TOKEN'
+
+# create an instance of the API class
+api_instance = petstore_api.PetApi(petstore_api.ApiClient(configuration))
+pet_id = 56 # int | ID of pet to update
+required_file = '/path/to/file' # file | file to upload
+additional_metadata = 'additional_metadata_example' # str | Additional data to pass to server (optional)
+
+try:
+ # uploads an image (required)
+ api_response = api_instance.upload_file_with_required_file(pet_id, required_file, additional_metadata=additional_metadata)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling PetApi->upload_file_with_required_file: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pet_id** | **int**| ID of pet to update |
+ **required_file** | **file**| file to upload |
+ **additional_metadata** | **str**| Additional data to pass to server | [optional]
+
+### Return type
+
+[**ApiResponse**](ApiResponse.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
diff --git a/samples/client/petstore/python-experimental/docs/ReadOnlyFirst.md b/samples/client/petstore/python-experimental/docs/ReadOnlyFirst.md
new file mode 100644
index 0000000000..93fed253d0
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/ReadOnlyFirst.md
@@ -0,0 +1,11 @@
+# ReadOnlyFirst
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**bar** | **str** | | [optional]
+**baz** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/SpecialModelName.md b/samples/client/petstore/python-experimental/docs/SpecialModelName.md
new file mode 100644
index 0000000000..022ee19169
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/SpecialModelName.md
@@ -0,0 +1,10 @@
+# SpecialModelName
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**special_property_name** | **int** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/StoreApi.md b/samples/client/petstore/python-experimental/docs/StoreApi.md
new file mode 100644
index 0000000000..76b94f73dc
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/StoreApi.md
@@ -0,0 +1,231 @@
+# petstore_api.StoreApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**delete_order**](StoreApi.md#delete_order) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
+[**get_inventory**](StoreApi.md#get_inventory) | **GET** /store/inventory | Returns pet inventories by status
+[**get_order_by_id**](StoreApi.md#get_order_by_id) | **GET** /store/order/{order_id} | Find purchase order by ID
+[**place_order**](StoreApi.md#place_order) | **POST** /store/order | Place an order for a pet
+
+
+# **delete_order**
+> delete_order(order_id)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.StoreApi()
+order_id = 'order_id_example' # str | ID of the order that needs to be deleted
+
+try:
+ # Delete purchase order by ID
+ api_instance.delete_order(order_id)
+except ApiException as e:
+ print("Exception when calling StoreApi->delete_order: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **order_id** | **str**| ID of the order that needs to be deleted |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**400** | Invalid ID supplied | - |
+**404** | Order not found | - |
+
+[[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)
+
+# **get_inventory**
+> dict(str, int) get_inventory()
+
+Returns pet inventories by status
+
+Returns a map of status codes to quantities
+
+### Example
+
+* Api Key Authentication (api_key):
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+configuration = petstore_api.Configuration()
+# Configure API key authorization: api_key
+configuration.api_key['api_key'] = 'YOUR_API_KEY'
+# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed
+# configuration.api_key_prefix['api_key'] = 'Bearer'
+
+# create an instance of the API class
+api_instance = petstore_api.StoreApi(petstore_api.ApiClient(configuration))
+
+try:
+ # Returns pet inventories by status
+ api_response = api_instance.get_inventory()
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling StoreApi->get_inventory: %s\n" % e)
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**dict(str, int)**
+
+### Authorization
+
+[api_key](../README.md#api_key)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+
+[[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)
+
+# **get_order_by_id**
+> Order get_order_by_id(order_id)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.StoreApi()
+order_id = 56 # int | ID of pet that needs to be fetched
+
+try:
+ # Find purchase order by ID
+ api_response = api_instance.get_order_by_id(order_id)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling StoreApi->get_order_by_id: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **order_id** | **int**| ID of pet that needs to be fetched |
+
+### Return type
+
+[**Order**](Order.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid ID supplied | - |
+**404** | Order not found | - |
+
+[[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)
+
+# **place_order**
+> Order place_order(body)
+
+Place an order for a pet
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.StoreApi()
+body = petstore_api.Order() # Order | order placed for purchasing the pet
+
+try:
+ # Place an order for a pet
+ api_response = api_instance.place_order(body)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling StoreApi->place_order: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**Order**](Order.md)| order placed for purchasing the pet |
+
+### Return type
+
+[**Order**](Order.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid Order | - |
+
+[[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)
+
diff --git a/samples/client/petstore/python-experimental/docs/Tag.md b/samples/client/petstore/python-experimental/docs/Tag.md
new file mode 100644
index 0000000000..243cd98eda
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/Tag.md
@@ -0,0 +1,11 @@
+# Tag
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**name** | **str** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/TypeHolderDefault.md b/samples/client/petstore/python-experimental/docs/TypeHolderDefault.md
new file mode 100644
index 0000000000..861da02182
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/TypeHolderDefault.md
@@ -0,0 +1,14 @@
+# TypeHolderDefault
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**string_item** | **str** | | [default to 'what']
+**number_item** | **float** | |
+**integer_item** | **int** | |
+**bool_item** | **bool** | | [default to True]
+**array_item** | **list[int]** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/TypeHolderExample.md b/samples/client/petstore/python-experimental/docs/TypeHolderExample.md
new file mode 100644
index 0000000000..d59718cdcb
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/TypeHolderExample.md
@@ -0,0 +1,14 @@
+# TypeHolderExample
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**string_item** | **str** | |
+**number_item** | **float** | |
+**integer_item** | **int** | |
+**bool_item** | **bool** | |
+**array_item** | **list[int]** | |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/User.md b/samples/client/petstore/python-experimental/docs/User.md
new file mode 100644
index 0000000000..443ac123fd
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/User.md
@@ -0,0 +1,17 @@
+# User
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**username** | **str** | | [optional]
+**first_name** | **str** | | [optional]
+**last_name** | **str** | | [optional]
+**email** | **str** | | [optional]
+**password** | **str** | | [optional]
+**phone** | **str** | | [optional]
+**user_status** | **int** | User Status | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/docs/UserApi.md b/samples/client/petstore/python-experimental/docs/UserApi.md
new file mode 100644
index 0000000000..783bb991ce
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/UserApi.md
@@ -0,0 +1,437 @@
+# petstore_api.UserApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**create_user**](UserApi.md#create_user) | **POST** /user | Create user
+[**create_users_with_array_input**](UserApi.md#create_users_with_array_input) | **POST** /user/createWithArray | Creates list of users with given input array
+[**create_users_with_list_input**](UserApi.md#create_users_with_list_input) | **POST** /user/createWithList | Creates list of users with given input array
+[**delete_user**](UserApi.md#delete_user) | **DELETE** /user/{username} | Delete user
+[**get_user_by_name**](UserApi.md#get_user_by_name) | **GET** /user/{username} | Get user by user name
+[**login_user**](UserApi.md#login_user) | **GET** /user/login | Logs user into the system
+[**logout_user**](UserApi.md#logout_user) | **GET** /user/logout | Logs out current logged in user session
+[**update_user**](UserApi.md#update_user) | **PUT** /user/{username} | Updated user
+
+
+# **create_user**
+> create_user(body)
+
+Create user
+
+This can only be done by the logged in user.
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+body = petstore_api.User() # User | Created user object
+
+try:
+ # Create user
+ api_instance.create_user(body)
+except ApiException as e:
+ print("Exception when calling UserApi->create_user: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**User**](User.md)| Created user object |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**0** | successful operation | - |
+
+[[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)
+
+# **create_users_with_array_input**
+> create_users_with_array_input(body)
+
+Creates list of users with given input array
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+body = [petstore_api.User()] # list[User] | List of user object
+
+try:
+ # Creates list of users with given input array
+ api_instance.create_users_with_array_input(body)
+except ApiException as e:
+ print("Exception when calling UserApi->create_users_with_array_input: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**list[User]**](User.md)| List of user object |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**0** | successful operation | - |
+
+[[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)
+
+# **create_users_with_list_input**
+> create_users_with_list_input(body)
+
+Creates list of users with given input array
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+body = [petstore_api.User()] # list[User] | List of user object
+
+try:
+ # Creates list of users with given input array
+ api_instance.create_users_with_list_input(body)
+except ApiException as e:
+ print("Exception when calling UserApi->create_users_with_list_input: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | [**list[User]**](User.md)| List of user object |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**0** | successful operation | - |
+
+[[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)
+
+# **delete_user**
+> delete_user(username)
+
+Delete user
+
+This can only be done by the logged in user.
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+username = 'username_example' # str | The name that needs to be deleted
+
+try:
+ # Delete user
+ api_instance.delete_user(username)
+except ApiException as e:
+ print("Exception when calling UserApi->delete_user: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **str**| The name that needs to be deleted |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**400** | Invalid username supplied | - |
+**404** | User not found | - |
+
+[[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)
+
+# **get_user_by_name**
+> User get_user_by_name(username)
+
+Get user by user name
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+username = 'username_example' # str | The name that needs to be fetched. Use user1 for testing.
+
+try:
+ # Get user by user name
+ api_response = api_instance.get_user_by_name(username)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling UserApi->get_user_by_name: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **str**| The name that needs to be fetched. Use user1 for testing. |
+
+### Return type
+
+[**User**](User.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | - |
+**400** | Invalid username supplied | - |
+**404** | User not found | - |
+
+[[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)
+
+# **login_user**
+> str login_user(username, password)
+
+Logs user into the system
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+username = 'username_example' # str | The user name for login
+password = 'password_example' # str | The password for login in clear text
+
+try:
+ # Logs user into the system
+ api_response = api_instance.login_user(username, password)
+ pprint(api_response)
+except ApiException as e:
+ print("Exception when calling UserApi->login_user: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **str**| The user name for login |
+ **password** | **str**| The password for login in clear text |
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | successful operation | * X-Rate-Limit - calls per hour allowed by the user
* X-Expires-After - date in UTC when token expires
|
+**400** | Invalid username/password supplied | - |
+
+[[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)
+
+# **logout_user**
+> logout_user()
+
+Logs out current logged in user session
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+
+try:
+ # Logs out current logged in user session
+ api_instance.logout_user()
+except ApiException as e:
+ print("Exception when calling UserApi->logout_user: %s\n" % e)
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**0** | successful operation | - |
+
+[[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)
+
+# **update_user**
+> update_user(username, body)
+
+Updated user
+
+This can only be done by the logged in user.
+
+### Example
+
+```python
+from __future__ import print_function
+import time
+import petstore_api
+from petstore_api.rest import ApiException
+from pprint import pprint
+
+# create an instance of the API class
+api_instance = petstore_api.UserApi()
+username = 'username_example' # str | name that need to be deleted
+body = petstore_api.User() # User | Updated user object
+
+try:
+ # Updated user
+ api_instance.update_user(username, body)
+except ApiException as e:
+ print("Exception when calling UserApi->update_user: %s\n" % e)
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **str**| name that need to be deleted |
+ **body** | [**User**](User.md)| Updated user object |
+
+### Return type
+
+void (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**400** | Invalid user supplied | - |
+**404** | User not found | - |
+
+[[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)
+
diff --git a/samples/client/petstore/python-experimental/docs/XmlItem.md b/samples/client/petstore/python-experimental/docs/XmlItem.md
new file mode 100644
index 0000000000..3dd09833fe
--- /dev/null
+++ b/samples/client/petstore/python-experimental/docs/XmlItem.md
@@ -0,0 +1,38 @@
+# XmlItem
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**attribute_string** | **str** | | [optional]
+**attribute_number** | **float** | | [optional]
+**attribute_integer** | **int** | | [optional]
+**attribute_boolean** | **bool** | | [optional]
+**wrapped_array** | **list[int]** | | [optional]
+**name_string** | **str** | | [optional]
+**name_number** | **float** | | [optional]
+**name_integer** | **int** | | [optional]
+**name_boolean** | **bool** | | [optional]
+**name_array** | **list[int]** | | [optional]
+**name_wrapped_array** | **list[int]** | | [optional]
+**prefix_string** | **str** | | [optional]
+**prefix_number** | **float** | | [optional]
+**prefix_integer** | **int** | | [optional]
+**prefix_boolean** | **bool** | | [optional]
+**prefix_array** | **list[int]** | | [optional]
+**prefix_wrapped_array** | **list[int]** | | [optional]
+**namespace_string** | **str** | | [optional]
+**namespace_number** | **float** | | [optional]
+**namespace_integer** | **int** | | [optional]
+**namespace_boolean** | **bool** | | [optional]
+**namespace_array** | **list[int]** | | [optional]
+**namespace_wrapped_array** | **list[int]** | | [optional]
+**prefix_ns_string** | **str** | | [optional]
+**prefix_ns_number** | **float** | | [optional]
+**prefix_ns_integer** | **int** | | [optional]
+**prefix_ns_boolean** | **bool** | | [optional]
+**prefix_ns_array** | **list[int]** | | [optional]
+**prefix_ns_wrapped_array** | **list[int]** | | [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)
+
+
diff --git a/samples/client/petstore/python-experimental/git_push.sh b/samples/client/petstore/python-experimental/git_push.sh
new file mode 100644
index 0000000000..8442b80bb4
--- /dev/null
+++ b/samples/client/petstore/python-experimental/git_push.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=`git remote`
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
+
diff --git a/samples/client/petstore/python-experimental/petstore_api/__init__.py b/samples/client/petstore/python-experimental/petstore_api/__init__.py
new file mode 100644
index 0000000000..45d51fe90b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/__init__.py
@@ -0,0 +1,82 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+ 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
+"""
+
+
+from __future__ import absolute_import
+
+__version__ = "1.0.0"
+
+# import apis into sdk package
+from petstore_api.api.another_fake_api import AnotherFakeApi
+from petstore_api.api.fake_api import FakeApi
+from petstore_api.api.fake_classname_tags_123_api import FakeClassnameTags123Api
+from petstore_api.api.pet_api import PetApi
+from petstore_api.api.store_api import StoreApi
+from petstore_api.api.user_api import UserApi
+
+# import ApiClient
+from petstore_api.api_client import ApiClient
+from petstore_api.configuration import Configuration
+from petstore_api.exceptions import OpenApiException
+from petstore_api.exceptions import ApiTypeError
+from petstore_api.exceptions import ApiValueError
+from petstore_api.exceptions import ApiKeyError
+from petstore_api.exceptions import ApiException
+# import models into sdk package
+from petstore_api.models.additional_properties_any_type import AdditionalPropertiesAnyType
+from petstore_api.models.additional_properties_array import AdditionalPropertiesArray
+from petstore_api.models.additional_properties_boolean import AdditionalPropertiesBoolean
+from petstore_api.models.additional_properties_class import AdditionalPropertiesClass
+from petstore_api.models.additional_properties_integer import AdditionalPropertiesInteger
+from petstore_api.models.additional_properties_number import AdditionalPropertiesNumber
+from petstore_api.models.additional_properties_object import AdditionalPropertiesObject
+from petstore_api.models.additional_properties_string import AdditionalPropertiesString
+from petstore_api.models.animal import Animal
+from petstore_api.models.api_response import ApiResponse
+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_test import ArrayTest
+from petstore_api.models.capitalization import Capitalization
+from petstore_api.models.cat import Cat
+from petstore_api.models.cat_all_of import CatAllOf
+from petstore_api.models.category import Category
+from petstore_api.models.class_model import ClassModel
+from petstore_api.models.client import Client
+from petstore_api.models.dog import Dog
+from petstore_api.models.dog_all_of import DogAllOf
+from petstore_api.models.enum_arrays import EnumArrays
+from petstore_api.models.enum_class import EnumClass
+from petstore_api.models.enum_test import EnumTest
+from petstore_api.models.file import File
+from petstore_api.models.file_schema_test_class import FileSchemaTestClass
+from petstore_api.models.format_test import FormatTest
+from petstore_api.models.has_only_read_only import HasOnlyReadOnly
+from petstore_api.models.list import List
+from petstore_api.models.map_test import MapTest
+from petstore_api.models.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass
+from petstore_api.models.model200_response import Model200Response
+from petstore_api.models.model_return import ModelReturn
+from petstore_api.models.name import Name
+from petstore_api.models.number_only import NumberOnly
+from petstore_api.models.order import Order
+from petstore_api.models.outer_composite import OuterComposite
+from petstore_api.models.outer_enum import OuterEnum
+from petstore_api.models.pet import Pet
+from petstore_api.models.read_only_first import ReadOnlyFirst
+from petstore_api.models.special_model_name import SpecialModelName
+from petstore_api.models.tag import Tag
+from petstore_api.models.type_holder_default import TypeHolderDefault
+from petstore_api.models.type_holder_example import TypeHolderExample
+from petstore_api.models.user import User
+from petstore_api.models.xml_item import XmlItem
+
diff --git a/samples/client/petstore/python-experimental/petstore_api/api/__init__.py b/samples/client/petstore/python-experimental/petstore_api/api/__init__.py
new file mode 100644
index 0000000000..74496adb5a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api/__init__.py
@@ -0,0 +1,11 @@
+from __future__ import absolute_import
+
+# flake8: noqa
+
+# import apis into api package
+from petstore_api.api.another_fake_api import AnotherFakeApi
+from petstore_api.api.fake_api import FakeApi
+from petstore_api.api.fake_classname_tags_123_api import FakeClassnameTags123Api
+from petstore_api.api.pet_api import PetApi
+from petstore_api.api.store_api import StoreApi
+from petstore_api.api.user_api import UserApi
diff --git a/samples/client/petstore/python-experimental/petstore_api/api/another_fake_api.py b/samples/client/petstore/python-experimental/petstore_api/api/another_fake_api.py
new file mode 100644
index 0000000000..a47a8e3ea1
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api/another_fake_api.py
@@ -0,0 +1,149 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import re # noqa: F401
+
+# python 2 and python 3 compatibility library
+import six
+
+from petstore_api.api_client import ApiClient
+from petstore_api.exceptions import (
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class AnotherFakeApi(object):
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient()
+ self.api_client = api_client
+
+ def call_123_test_special_tags(self, body, **kwargs): # noqa: E501
+ """To test special tags # noqa: E501
+
+ To test special tags and operation ID starting with number # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.call_123_test_special_tags(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Client body: client model (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Client
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.call_123_test_special_tags_with_http_info(body, **kwargs) # noqa: E501
+
+ def call_123_test_special_tags_with_http_info(self, body, **kwargs): # noqa: E501
+ """To test special tags # noqa: E501
+
+ To test special tags and operation ID starting with number # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.call_123_test_special_tags_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Client body: client model (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(Client, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method call_123_test_special_tags" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `call_123_test_special_tags`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/json']) # noqa: E501
+
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/another-fake/dummy', 'PATCH',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='Client', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
diff --git a/samples/client/petstore/python-experimental/petstore_api/api/fake_api.py b/samples/client/petstore/python-experimental/petstore_api/api/fake_api.py
new file mode 100644
index 0000000000..1847804c55
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api/fake_api.py
@@ -0,0 +1,1582 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import re # noqa: F401
+
+# python 2 and python 3 compatibility library
+import six
+
+from petstore_api.api_client import ApiClient
+from petstore_api.exceptions import (
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class FakeApi(object):
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient()
+ self.api_client = api_client
+
+ def create_xml_item(self, xml_item, **kwargs): # noqa: E501
+ """creates an XmlItem # noqa: E501
+
+ this route creates an XmlItem # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_xml_item(xml_item, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param XmlItem xml_item: XmlItem Body (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.create_xml_item_with_http_info(xml_item, **kwargs) # noqa: E501
+
+ def create_xml_item_with_http_info(self, xml_item, **kwargs): # noqa: E501
+ """creates an XmlItem # noqa: E501
+
+ this route creates an XmlItem # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_xml_item_with_http_info(xml_item, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param XmlItem xml_item: XmlItem Body (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['xml_item'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method create_xml_item" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'xml_item' is set
+ if ('xml_item' not in local_var_params or
+ local_var_params['xml_item'] is None):
+ raise ApiValueError("Missing the required parameter `xml_item` when calling `create_xml_item`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'xml_item' in local_var_params:
+ body_params = local_var_params['xml_item']
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/xml', 'application/xml; charset=utf-8', 'application/xml; charset=utf-16', 'text/xml', 'text/xml; charset=utf-8', 'text/xml; charset=utf-16']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/create_xml_item', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def fake_outer_boolean_serialize(self, **kwargs): # noqa: E501
+ """fake_outer_boolean_serialize # noqa: E501
+
+ Test serialization of outer boolean types # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_boolean_serialize(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param bool body: Input boolean as post body
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: bool
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.fake_outer_boolean_serialize_with_http_info(**kwargs) # noqa: E501
+
+ def fake_outer_boolean_serialize_with_http_info(self, **kwargs): # noqa: E501
+ """fake_outer_boolean_serialize # noqa: E501
+
+ Test serialization of outer boolean types # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_boolean_serialize_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param bool body: Input boolean as post body
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(bool, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method fake_outer_boolean_serialize" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['*/*']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/outer/boolean', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='bool', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def fake_outer_composite_serialize(self, **kwargs): # noqa: E501
+ """fake_outer_composite_serialize # noqa: E501
+
+ Test serialization of object with outer number type # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_composite_serialize(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param OuterComposite body: Input composite as post body
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: OuterComposite
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.fake_outer_composite_serialize_with_http_info(**kwargs) # noqa: E501
+
+ def fake_outer_composite_serialize_with_http_info(self, **kwargs): # noqa: E501
+ """fake_outer_composite_serialize # noqa: E501
+
+ Test serialization of object with outer number type # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_composite_serialize_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param OuterComposite body: Input composite as post body
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(OuterComposite, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method fake_outer_composite_serialize" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['*/*']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/outer/composite', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='OuterComposite', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def fake_outer_number_serialize(self, **kwargs): # noqa: E501
+ """fake_outer_number_serialize # noqa: E501
+
+ Test serialization of outer number types # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_number_serialize(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param float body: Input number as post body
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: float
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.fake_outer_number_serialize_with_http_info(**kwargs) # noqa: E501
+
+ def fake_outer_number_serialize_with_http_info(self, **kwargs): # noqa: E501
+ """fake_outer_number_serialize # noqa: E501
+
+ Test serialization of outer number types # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_number_serialize_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param float body: Input number as post body
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(float, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method fake_outer_number_serialize" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['*/*']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/outer/number', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='float', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def fake_outer_string_serialize(self, **kwargs): # noqa: E501
+ """fake_outer_string_serialize # noqa: E501
+
+ Test serialization of outer string types # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_string_serialize(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str body: Input string as post body
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: str
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.fake_outer_string_serialize_with_http_info(**kwargs) # noqa: E501
+
+ def fake_outer_string_serialize_with_http_info(self, **kwargs): # noqa: E501
+ """fake_outer_string_serialize # noqa: E501
+
+ Test serialization of outer string types # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.fake_outer_string_serialize_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str body: Input string as post body
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method fake_outer_string_serialize" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['*/*']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/outer/string', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='str', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_body_with_file_schema(self, body, **kwargs): # noqa: E501
+ """test_body_with_file_schema # noqa: E501
+
+ For this test, the body for this request much reference a schema named `File`. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_body_with_file_schema(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param FileSchemaTestClass body: (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_body_with_file_schema_with_http_info(body, **kwargs) # noqa: E501
+
+ def test_body_with_file_schema_with_http_info(self, body, **kwargs): # noqa: E501
+ """test_body_with_file_schema # noqa: E501
+
+ For this test, the body for this request much reference a schema named `File`. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_body_with_file_schema_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param FileSchemaTestClass body: (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_body_with_file_schema" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `test_body_with_file_schema`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/body-with-file-schema', 'PUT',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_body_with_query_params(self, query, body, **kwargs): # noqa: E501
+ """test_body_with_query_params # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_body_with_query_params(query, body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str query: (required)
+ :param User body: (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_body_with_query_params_with_http_info(query, body, **kwargs) # noqa: E501
+
+ def test_body_with_query_params_with_http_info(self, query, body, **kwargs): # noqa: E501
+ """test_body_with_query_params # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_body_with_query_params_with_http_info(query, body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str query: (required)
+ :param User body: (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['query', 'body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_body_with_query_params" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'query' is set
+ if ('query' not in local_var_params or
+ local_var_params['query'] is None):
+ raise ApiValueError("Missing the required parameter `query` when calling `test_body_with_query_params`") # noqa: E501
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `test_body_with_query_params`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+ if 'query' in local_var_params:
+ query_params.append(('query', local_var_params['query'])) # noqa: E501
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/body-with-query-params', 'PUT',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_client_model(self, body, **kwargs): # noqa: E501
+ """To test \"client\" model # noqa: E501
+
+ To test \"client\" model # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_client_model(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Client body: client model (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Client
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_client_model_with_http_info(body, **kwargs) # noqa: E501
+
+ def test_client_model_with_http_info(self, body, **kwargs): # noqa: E501
+ """To test \"client\" model # noqa: E501
+
+ To test \"client\" model # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_client_model_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Client body: client model (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(Client, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_client_model" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `test_client_model`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/json']) # noqa: E501
+
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake', 'PATCH',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='Client', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_endpoint_parameters(self, number, double, pattern_without_delimiter, byte, **kwargs): # noqa: E501
+ """Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 # noqa: E501
+
+ Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_endpoint_parameters(number, double, pattern_without_delimiter, byte, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param float number: None (required)
+ :param float double: None (required)
+ :param str pattern_without_delimiter: None (required)
+ :param str byte: None (required)
+ :param int integer: None
+ :param int int32: None
+ :param int int64: None
+ :param float float: None
+ :param str string: None
+ :param file binary: None
+ :param date date: None
+ :param datetime date_time: None
+ :param str password: None
+ :param str param_callback: None
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_endpoint_parameters_with_http_info(number, double, pattern_without_delimiter, byte, **kwargs) # noqa: E501
+
+ def test_endpoint_parameters_with_http_info(self, number, double, pattern_without_delimiter, byte, **kwargs): # noqa: E501
+ """Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 # noqa: E501
+
+ Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_endpoint_parameters_with_http_info(number, double, pattern_without_delimiter, byte, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param float number: None (required)
+ :param float double: None (required)
+ :param str pattern_without_delimiter: None (required)
+ :param str byte: None (required)
+ :param int integer: None
+ :param int int32: None
+ :param int int64: None
+ :param float float: None
+ :param str string: None
+ :param file binary: None
+ :param date date: None
+ :param datetime date_time: None
+ :param str password: None
+ :param str param_callback: None
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['number', 'double', 'pattern_without_delimiter', 'byte', 'integer', 'int32', 'int64', 'float', 'string', 'binary', 'date', 'date_time', 'password', 'param_callback'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_endpoint_parameters" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'number' is set
+ if ('number' not in local_var_params or
+ local_var_params['number'] is None):
+ raise ApiValueError("Missing the required parameter `number` when calling `test_endpoint_parameters`") # noqa: E501
+ # verify the required parameter 'double' is set
+ if ('double' not in local_var_params or
+ local_var_params['double'] is None):
+ raise ApiValueError("Missing the required parameter `double` when calling `test_endpoint_parameters`") # noqa: E501
+ # verify the required parameter 'pattern_without_delimiter' is set
+ if ('pattern_without_delimiter' not in local_var_params or
+ local_var_params['pattern_without_delimiter'] is None):
+ raise ApiValueError("Missing the required parameter `pattern_without_delimiter` when calling `test_endpoint_parameters`") # noqa: E501
+ # verify the required parameter 'byte' is set
+ if ('byte' not in local_var_params or
+ local_var_params['byte'] is None):
+ raise ApiValueError("Missing the required parameter `byte` when calling `test_endpoint_parameters`") # noqa: E501
+
+ if 'number' in local_var_params and local_var_params['number'] > 543.2: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `number` when calling `test_endpoint_parameters`, must be a value less than or equal to `543.2`") # noqa: E501
+ if 'number' in local_var_params and local_var_params['number'] < 32.1: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `number` when calling `test_endpoint_parameters`, must be a value greater than or equal to `32.1`") # noqa: E501
+ if 'double' in local_var_params and local_var_params['double'] > 123.4: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `double` when calling `test_endpoint_parameters`, must be a value less than or equal to `123.4`") # noqa: E501
+ if 'double' in local_var_params and local_var_params['double'] < 67.8: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `double` when calling `test_endpoint_parameters`, must be a value greater than or equal to `67.8`") # noqa: E501
+ if 'pattern_without_delimiter' in local_var_params and not re.search(r'^[A-Z].*', local_var_params['pattern_without_delimiter']): # noqa: E501
+ raise ApiValueError("Invalid value for parameter `pattern_without_delimiter` when calling `test_endpoint_parameters`, must conform to the pattern `/^[A-Z].*/`") # noqa: E501
+ if 'integer' in local_var_params and local_var_params['integer'] > 100: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `integer` when calling `test_endpoint_parameters`, must be a value less than or equal to `100`") # noqa: E501
+ if 'integer' in local_var_params and local_var_params['integer'] < 10: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `integer` when calling `test_endpoint_parameters`, must be a value greater than or equal to `10`") # noqa: E501
+ if 'int32' in local_var_params and local_var_params['int32'] > 200: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `int32` when calling `test_endpoint_parameters`, must be a value less than or equal to `200`") # noqa: E501
+ if 'int32' in local_var_params and local_var_params['int32'] < 20: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `int32` when calling `test_endpoint_parameters`, must be a value greater than or equal to `20`") # noqa: E501
+ if 'float' in local_var_params and local_var_params['float'] > 987.6: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `float` when calling `test_endpoint_parameters`, must be a value less than or equal to `987.6`") # noqa: E501
+ if 'string' in local_var_params and not re.search(r'[a-z]', local_var_params['string'], flags=re.IGNORECASE): # noqa: E501
+ raise ApiValueError("Invalid value for parameter `string` when calling `test_endpoint_parameters`, must conform to the pattern `/[a-z]/i`") # noqa: E501
+ if ('password' in local_var_params and
+ len(local_var_params['password']) > 64):
+ raise ApiValueError("Invalid value for parameter `password` when calling `test_endpoint_parameters`, length must be less than or equal to `64`") # noqa: E501
+ if ('password' in local_var_params and
+ len(local_var_params['password']) < 10):
+ raise ApiValueError("Invalid value for parameter `password` when calling `test_endpoint_parameters`, length must be greater than or equal to `10`") # noqa: E501
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+ if 'integer' in local_var_params:
+ form_params.append(('integer', local_var_params['integer'])) # noqa: E501
+ if 'int32' in local_var_params:
+ form_params.append(('int32', local_var_params['int32'])) # noqa: E501
+ if 'int64' in local_var_params:
+ form_params.append(('int64', local_var_params['int64'])) # noqa: E501
+ if 'number' in local_var_params:
+ form_params.append(('number', local_var_params['number'])) # noqa: E501
+ if 'float' in local_var_params:
+ form_params.append(('float', local_var_params['float'])) # noqa: E501
+ if 'double' in local_var_params:
+ form_params.append(('double', local_var_params['double'])) # noqa: E501
+ if 'string' in local_var_params:
+ form_params.append(('string', local_var_params['string'])) # noqa: E501
+ if 'pattern_without_delimiter' in local_var_params:
+ form_params.append(('pattern_without_delimiter', local_var_params['pattern_without_delimiter'])) # noqa: E501
+ if 'byte' in local_var_params:
+ form_params.append(('byte', local_var_params['byte'])) # noqa: E501
+ if 'binary' in local_var_params:
+ local_var_files['binary'] = local_var_params['binary'] # noqa: E501
+ if 'date' in local_var_params:
+ form_params.append(('date', local_var_params['date'])) # noqa: E501
+ if 'date_time' in local_var_params:
+ form_params.append(('dateTime', local_var_params['date_time'])) # noqa: E501
+ if 'password' in local_var_params:
+ form_params.append(('password', local_var_params['password'])) # noqa: E501
+ if 'param_callback' in local_var_params:
+ form_params.append(('callback', local_var_params['param_callback'])) # noqa: E501
+
+ body_params = None
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/x-www-form-urlencoded']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['http_basic_test'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_enum_parameters(self, **kwargs): # noqa: E501
+ """To test enum parameters # noqa: E501
+
+ To test enum parameters # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_enum_parameters(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[str] enum_header_string_array: Header parameter enum test (string array)
+ :param str enum_header_string: Header parameter enum test (string)
+ :param list[str] enum_query_string_array: Query parameter enum test (string array)
+ :param str enum_query_string: Query parameter enum test (string)
+ :param int enum_query_integer: Query parameter enum test (double)
+ :param float enum_query_double: Query parameter enum test (double)
+ :param list[str] enum_form_string_array: Form parameter enum test (string array)
+ :param str enum_form_string: Form parameter enum test (string)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_enum_parameters_with_http_info(**kwargs) # noqa: E501
+
+ def test_enum_parameters_with_http_info(self, **kwargs): # noqa: E501
+ """To test enum parameters # noqa: E501
+
+ To test enum parameters # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_enum_parameters_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[str] enum_header_string_array: Header parameter enum test (string array)
+ :param str enum_header_string: Header parameter enum test (string)
+ :param list[str] enum_query_string_array: Query parameter enum test (string array)
+ :param str enum_query_string: Query parameter enum test (string)
+ :param int enum_query_integer: Query parameter enum test (double)
+ :param float enum_query_double: Query parameter enum test (double)
+ :param list[str] enum_form_string_array: Form parameter enum test (string array)
+ :param str enum_form_string: Form parameter enum test (string)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['enum_header_string_array', 'enum_header_string', 'enum_query_string_array', 'enum_query_string', 'enum_query_integer', 'enum_query_double', 'enum_form_string_array', 'enum_form_string'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_enum_parameters" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+ if 'enum_query_string_array' in local_var_params:
+ query_params.append(('enum_query_string_array', local_var_params['enum_query_string_array'])) # noqa: E501
+ collection_formats['enum_query_string_array'] = 'csv' # noqa: E501
+ if 'enum_query_string' in local_var_params:
+ query_params.append(('enum_query_string', local_var_params['enum_query_string'])) # noqa: E501
+ if 'enum_query_integer' in local_var_params:
+ query_params.append(('enum_query_integer', local_var_params['enum_query_integer'])) # noqa: E501
+ if 'enum_query_double' in local_var_params:
+ query_params.append(('enum_query_double', local_var_params['enum_query_double'])) # noqa: E501
+
+ header_params = {}
+ if 'enum_header_string_array' in local_var_params:
+ header_params['enum_header_string_array'] = local_var_params['enum_header_string_array'] # noqa: E501
+ collection_formats['enum_header_string_array'] = 'csv' # noqa: E501
+ if 'enum_header_string' in local_var_params:
+ header_params['enum_header_string'] = local_var_params['enum_header_string'] # noqa: E501
+
+ form_params = []
+ local_var_files = {}
+ if 'enum_form_string_array' in local_var_params:
+ form_params.append(('enum_form_string_array', local_var_params['enum_form_string_array'])) # noqa: E501
+ collection_formats['enum_form_string_array'] = 'csv' # noqa: E501
+ if 'enum_form_string' in local_var_params:
+ form_params.append(('enum_form_string', local_var_params['enum_form_string'])) # noqa: E501
+
+ body_params = None
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/x-www-form-urlencoded']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_group_parameters(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501
+ """Fake endpoint to test group parameters (optional) # noqa: E501
+
+ Fake endpoint to test group parameters (optional) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int required_string_group: Required String in group parameters (required)
+ :param bool required_boolean_group: Required Boolean in group parameters (required)
+ :param int required_int64_group: Required Integer in group parameters (required)
+ :param int string_group: String in group parameters
+ :param bool boolean_group: Boolean in group parameters
+ :param int int64_group: Integer in group parameters
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, **kwargs) # noqa: E501
+
+ def test_group_parameters_with_http_info(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501
+ """Fake endpoint to test group parameters (optional) # noqa: E501
+
+ Fake endpoint to test group parameters (optional) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int required_string_group: Required String in group parameters (required)
+ :param bool required_boolean_group: Required Boolean in group parameters (required)
+ :param int required_int64_group: Required Integer in group parameters (required)
+ :param int string_group: String in group parameters
+ :param bool boolean_group: Boolean in group parameters
+ :param int int64_group: Integer in group parameters
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['required_string_group', 'required_boolean_group', 'required_int64_group', 'string_group', 'boolean_group', 'int64_group'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_group_parameters" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'required_string_group' is set
+ if ('required_string_group' not in local_var_params or
+ local_var_params['required_string_group'] is None):
+ raise ApiValueError("Missing the required parameter `required_string_group` when calling `test_group_parameters`") # noqa: E501
+ # verify the required parameter 'required_boolean_group' is set
+ if ('required_boolean_group' not in local_var_params or
+ local_var_params['required_boolean_group'] is None):
+ raise ApiValueError("Missing the required parameter `required_boolean_group` when calling `test_group_parameters`") # noqa: E501
+ # verify the required parameter 'required_int64_group' is set
+ if ('required_int64_group' not in local_var_params or
+ local_var_params['required_int64_group'] is None):
+ raise ApiValueError("Missing the required parameter `required_int64_group` when calling `test_group_parameters`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+ if 'required_string_group' in local_var_params:
+ query_params.append(('required_string_group', local_var_params['required_string_group'])) # noqa: E501
+ if 'required_int64_group' in local_var_params:
+ query_params.append(('required_int64_group', local_var_params['required_int64_group'])) # noqa: E501
+ if 'string_group' in local_var_params:
+ query_params.append(('string_group', local_var_params['string_group'])) # noqa: E501
+ if 'int64_group' in local_var_params:
+ query_params.append(('int64_group', local_var_params['int64_group'])) # noqa: E501
+
+ header_params = {}
+ if 'required_boolean_group' in local_var_params:
+ header_params['required_boolean_group'] = local_var_params['required_boolean_group'] # noqa: E501
+ if 'boolean_group' in local_var_params:
+ header_params['boolean_group'] = local_var_params['boolean_group'] # noqa: E501
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake', 'DELETE',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_inline_additional_properties(self, param, **kwargs): # noqa: E501
+ """test inline additionalProperties # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_inline_additional_properties(param, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param dict(str, str) param: request body (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_inline_additional_properties_with_http_info(param, **kwargs) # noqa: E501
+
+ def test_inline_additional_properties_with_http_info(self, param, **kwargs): # noqa: E501
+ """test inline additionalProperties # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_inline_additional_properties_with_http_info(param, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param dict(str, str) param: request body (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['param'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_inline_additional_properties" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'param' is set
+ if ('param' not in local_var_params or
+ local_var_params['param'] is None):
+ raise ApiValueError("Missing the required parameter `param` when calling `test_inline_additional_properties`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'param' in local_var_params:
+ body_params = local_var_params['param']
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/inline-additionalProperties', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def test_json_form_data(self, param, param2, **kwargs): # noqa: E501
+ """test json serialization of form data # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_json_form_data(param, param2, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str param: field1 (required)
+ :param str param2: field2 (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_json_form_data_with_http_info(param, param2, **kwargs) # noqa: E501
+
+ def test_json_form_data_with_http_info(self, param, param2, **kwargs): # noqa: E501
+ """test json serialization of form data # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_json_form_data_with_http_info(param, param2, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str param: field1 (required)
+ :param str param2: field2 (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['param', 'param2'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_json_form_data" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'param' is set
+ if ('param' not in local_var_params or
+ local_var_params['param'] is None):
+ raise ApiValueError("Missing the required parameter `param` when calling `test_json_form_data`") # noqa: E501
+ # verify the required parameter 'param2' is set
+ if ('param2' not in local_var_params or
+ local_var_params['param2'] is None):
+ raise ApiValueError("Missing the required parameter `param2` when calling `test_json_form_data`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+ if 'param' in local_var_params:
+ form_params.append(('param', local_var_params['param'])) # noqa: E501
+ if 'param2' in local_var_params:
+ form_params.append(('param2', local_var_params['param2'])) # noqa: E501
+
+ body_params = None
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/x-www-form-urlencoded']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/jsonFormData', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
diff --git a/samples/client/petstore/python-experimental/petstore_api/api/fake_classname_tags_123_api.py b/samples/client/petstore/python-experimental/petstore_api/api/fake_classname_tags_123_api.py
new file mode 100644
index 0000000000..3e778e9226
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api/fake_classname_tags_123_api.py
@@ -0,0 +1,149 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import re # noqa: F401
+
+# python 2 and python 3 compatibility library
+import six
+
+from petstore_api.api_client import ApiClient
+from petstore_api.exceptions import (
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class FakeClassnameTags123Api(object):
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient()
+ self.api_client = api_client
+
+ def test_classname(self, body, **kwargs): # noqa: E501
+ """To test class name in snake case # noqa: E501
+
+ To test class name in snake case # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_classname(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Client body: client model (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Client
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.test_classname_with_http_info(body, **kwargs) # noqa: E501
+
+ def test_classname_with_http_info(self, body, **kwargs): # noqa: E501
+ """To test class name in snake case # noqa: E501
+
+ To test class name in snake case # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.test_classname_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Client body: client model (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(Client, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_classname" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `test_classname`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/json']) # noqa: E501
+
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['api_key_query'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake_classname_test', 'PATCH',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='Client', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
diff --git a/samples/client/petstore/python-experimental/petstore_api/api/pet_api.py b/samples/client/petstore/python-experimental/petstore_api/api/pet_api.py
new file mode 100644
index 0000000000..1deb664c43
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api/pet_api.py
@@ -0,0 +1,1035 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import re # noqa: F401
+
+# python 2 and python 3 compatibility library
+import six
+
+from petstore_api.api_client import ApiClient
+from petstore_api.exceptions import (
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class PetApi(object):
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient()
+ self.api_client = api_client
+
+ def add_pet(self, body, **kwargs): # noqa: E501
+ """Add a new pet to the store # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.add_pet(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Pet body: Pet object that needs to be added to the store (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.add_pet_with_http_info(body, **kwargs) # noqa: E501
+
+ def add_pet_with_http_info(self, body, **kwargs): # noqa: E501
+ """Add a new pet to the store # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.add_pet_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Pet body: Pet object that needs to be added to the store (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method add_pet" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `add_pet`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json', 'application/xml']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def delete_pet(self, pet_id, **kwargs): # noqa: E501
+ """Deletes a pet # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.delete_pet(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: Pet id to delete (required)
+ :param str api_key:
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.delete_pet_with_http_info(pet_id, **kwargs) # noqa: E501
+
+ def delete_pet_with_http_info(self, pet_id, **kwargs): # noqa: E501
+ """Deletes a pet # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.delete_pet_with_http_info(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: Pet id to delete (required)
+ :param str api_key:
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['pet_id', 'api_key'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method delete_pet" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'pet_id' is set
+ if ('pet_id' not in local_var_params or
+ local_var_params['pet_id'] is None):
+ raise ApiValueError("Missing the required parameter `pet_id` when calling `delete_pet`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'pet_id' in local_var_params:
+ path_params['petId'] = local_var_params['pet_id'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+ if 'api_key' in local_var_params:
+ header_params['api_key'] = local_var_params['api_key'] # noqa: E501
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet/{petId}', 'DELETE',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def find_pets_by_status(self, status, **kwargs): # noqa: E501
+ """Finds Pets by status # noqa: E501
+
+ Multiple status values can be provided with comma separated strings # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.find_pets_by_status(status, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[str] status: Status values that need to be considered for filter (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: list[Pet]
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.find_pets_by_status_with_http_info(status, **kwargs) # noqa: E501
+
+ def find_pets_by_status_with_http_info(self, status, **kwargs): # noqa: E501
+ """Finds Pets by status # noqa: E501
+
+ Multiple status values can be provided with comma separated strings # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.find_pets_by_status_with_http_info(status, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[str] status: Status values that need to be considered for filter (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(list[Pet], status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['status'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method find_pets_by_status" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'status' is set
+ if ('status' not in local_var_params or
+ local_var_params['status'] is None):
+ raise ApiValueError("Missing the required parameter `status` when calling `find_pets_by_status`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+ if 'status' in local_var_params:
+ query_params.append(('status', local_var_params['status'])) # noqa: E501
+ collection_formats['status'] = 'csv' # noqa: E501
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/xml', 'application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet/findByStatus', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='list[Pet]', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def find_pets_by_tags(self, tags, **kwargs): # noqa: E501
+ """Finds Pets by tags # noqa: E501
+
+ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.find_pets_by_tags(tags, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[str] tags: Tags to filter by (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: list[Pet]
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.find_pets_by_tags_with_http_info(tags, **kwargs) # noqa: E501
+
+ def find_pets_by_tags_with_http_info(self, tags, **kwargs): # noqa: E501
+ """Finds Pets by tags # noqa: E501
+
+ Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.find_pets_by_tags_with_http_info(tags, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[str] tags: Tags to filter by (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(list[Pet], status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['tags'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method find_pets_by_tags" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'tags' is set
+ if ('tags' not in local_var_params or
+ local_var_params['tags'] is None):
+ raise ApiValueError("Missing the required parameter `tags` when calling `find_pets_by_tags`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+ if 'tags' in local_var_params:
+ query_params.append(('tags', local_var_params['tags'])) # noqa: E501
+ collection_formats['tags'] = 'csv' # noqa: E501
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/xml', 'application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet/findByTags', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='list[Pet]', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def get_pet_by_id(self, pet_id, **kwargs): # noqa: E501
+ """Find pet by ID # noqa: E501
+
+ Returns a single pet # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_pet_by_id(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet to return (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Pet
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.get_pet_by_id_with_http_info(pet_id, **kwargs) # noqa: E501
+
+ def get_pet_by_id_with_http_info(self, pet_id, **kwargs): # noqa: E501
+ """Find pet by ID # noqa: E501
+
+ Returns a single pet # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_pet_by_id_with_http_info(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet to return (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(Pet, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['pet_id'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method get_pet_by_id" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'pet_id' is set
+ if ('pet_id' not in local_var_params or
+ local_var_params['pet_id'] is None):
+ raise ApiValueError("Missing the required parameter `pet_id` when calling `get_pet_by_id`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'pet_id' in local_var_params:
+ path_params['petId'] = local_var_params['pet_id'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/xml', 'application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['api_key'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet/{petId}', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='Pet', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def update_pet(self, body, **kwargs): # noqa: E501
+ """Update an existing pet # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.update_pet(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Pet body: Pet object that needs to be added to the store (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.update_pet_with_http_info(body, **kwargs) # noqa: E501
+
+ def update_pet_with_http_info(self, body, **kwargs): # noqa: E501
+ """Update an existing pet # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.update_pet_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Pet body: Pet object that needs to be added to the store (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method update_pet" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `update_pet`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/json', 'application/xml']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet', 'PUT',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def update_pet_with_form(self, pet_id, **kwargs): # noqa: E501
+ """Updates a pet in the store with form data # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.update_pet_with_form(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet that needs to be updated (required)
+ :param str name: Updated name of the pet
+ :param str status: Updated status of the pet
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.update_pet_with_form_with_http_info(pet_id, **kwargs) # noqa: E501
+
+ def update_pet_with_form_with_http_info(self, pet_id, **kwargs): # noqa: E501
+ """Updates a pet in the store with form data # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.update_pet_with_form_with_http_info(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet that needs to be updated (required)
+ :param str name: Updated name of the pet
+ :param str status: Updated status of the pet
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['pet_id', 'name', 'status'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method update_pet_with_form" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'pet_id' is set
+ if ('pet_id' not in local_var_params or
+ local_var_params['pet_id'] is None):
+ raise ApiValueError("Missing the required parameter `pet_id` when calling `update_pet_with_form`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'pet_id' in local_var_params:
+ path_params['petId'] = local_var_params['pet_id'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+ if 'name' in local_var_params:
+ form_params.append(('name', local_var_params['name'])) # noqa: E501
+ if 'status' in local_var_params:
+ form_params.append(('status', local_var_params['status'])) # noqa: E501
+
+ body_params = None
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['application/x-www-form-urlencoded']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet/{petId}', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def upload_file(self, pet_id, **kwargs): # noqa: E501
+ """uploads an image # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.upload_file(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet to update (required)
+ :param str additional_metadata: Additional data to pass to server
+ :param file file: file to upload
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: ApiResponse
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.upload_file_with_http_info(pet_id, **kwargs) # noqa: E501
+
+ def upload_file_with_http_info(self, pet_id, **kwargs): # noqa: E501
+ """uploads an image # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.upload_file_with_http_info(pet_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet to update (required)
+ :param str additional_metadata: Additional data to pass to server
+ :param file file: file to upload
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(ApiResponse, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['pet_id', 'additional_metadata', 'file'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method upload_file" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'pet_id' is set
+ if ('pet_id' not in local_var_params or
+ local_var_params['pet_id'] is None):
+ raise ApiValueError("Missing the required parameter `pet_id` when calling `upload_file`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'pet_id' in local_var_params:
+ path_params['petId'] = local_var_params['pet_id'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+ if 'additional_metadata' in local_var_params:
+ form_params.append(('additionalMetadata', local_var_params['additional_metadata'])) # noqa: E501
+ if 'file' in local_var_params:
+ local_var_files['file'] = local_var_params['file'] # noqa: E501
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/json']) # noqa: E501
+
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['multipart/form-data']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/pet/{petId}/uploadImage', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='ApiResponse', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def upload_file_with_required_file(self, pet_id, required_file, **kwargs): # noqa: E501
+ """uploads an image (required) # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.upload_file_with_required_file(pet_id, required_file, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet to update (required)
+ :param file required_file: file to upload (required)
+ :param str additional_metadata: Additional data to pass to server
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: ApiResponse
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.upload_file_with_required_file_with_http_info(pet_id, required_file, **kwargs) # noqa: E501
+
+ def upload_file_with_required_file_with_http_info(self, pet_id, required_file, **kwargs): # noqa: E501
+ """uploads an image (required) # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.upload_file_with_required_file_with_http_info(pet_id, required_file, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int pet_id: ID of pet to update (required)
+ :param file required_file: file to upload (required)
+ :param str additional_metadata: Additional data to pass to server
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(ApiResponse, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['pet_id', 'required_file', 'additional_metadata'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method upload_file_with_required_file" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'pet_id' is set
+ if ('pet_id' not in local_var_params or
+ local_var_params['pet_id'] is None):
+ raise ApiValueError("Missing the required parameter `pet_id` when calling `upload_file_with_required_file`") # noqa: E501
+ # verify the required parameter 'required_file' is set
+ if ('required_file' not in local_var_params or
+ local_var_params['required_file'] is None):
+ raise ApiValueError("Missing the required parameter `required_file` when calling `upload_file_with_required_file`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'pet_id' in local_var_params:
+ path_params['petId'] = local_var_params['pet_id'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+ if 'additional_metadata' in local_var_params:
+ form_params.append(('additionalMetadata', local_var_params['additional_metadata'])) # noqa: E501
+ if 'required_file' in local_var_params:
+ local_var_files['requiredFile'] = local_var_params['required_file'] # noqa: E501
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/json']) # noqa: E501
+
+ # HTTP header `Content-Type`
+ header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
+ ['multipart/form-data']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['petstore_auth'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/fake/{petId}/uploadImageWithRequiredFile', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='ApiResponse', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
diff --git a/samples/client/petstore/python-experimental/petstore_api/api/store_api.py b/samples/client/petstore/python-experimental/petstore_api/api/store_api.py
new file mode 100644
index 0000000000..c3aa1c4a3d
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api/store_api.py
@@ -0,0 +1,459 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import re # noqa: F401
+
+# python 2 and python 3 compatibility library
+import six
+
+from petstore_api.api_client import ApiClient
+from petstore_api.exceptions import (
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class StoreApi(object):
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient()
+ self.api_client = api_client
+
+ def delete_order(self, order_id, **kwargs): # noqa: E501
+ """Delete purchase order by ID # noqa: E501
+
+ For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.delete_order(order_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str order_id: ID of the order that needs to be deleted (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.delete_order_with_http_info(order_id, **kwargs) # noqa: E501
+
+ def delete_order_with_http_info(self, order_id, **kwargs): # noqa: E501
+ """Delete purchase order by ID # noqa: E501
+
+ For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.delete_order_with_http_info(order_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str order_id: ID of the order that needs to be deleted (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['order_id'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method delete_order" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'order_id' is set
+ if ('order_id' not in local_var_params or
+ local_var_params['order_id'] is None):
+ raise ApiValueError("Missing the required parameter `order_id` when calling `delete_order`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'order_id' in local_var_params:
+ path_params['order_id'] = local_var_params['order_id'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/store/order/{order_id}', 'DELETE',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def get_inventory(self, **kwargs): # noqa: E501
+ """Returns pet inventories by status # noqa: E501
+
+ Returns a map of status codes to quantities # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_inventory(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: dict(str, int)
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.get_inventory_with_http_info(**kwargs) # noqa: E501
+
+ def get_inventory_with_http_info(self, **kwargs): # noqa: E501
+ """Returns pet inventories by status # noqa: E501
+
+ Returns a map of status codes to quantities # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_inventory_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(dict(str, int), status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = [] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method get_inventory" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = ['api_key'] # noqa: E501
+
+ return self.api_client.call_api(
+ '/store/inventory', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='dict(str, int)', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def get_order_by_id(self, order_id, **kwargs): # noqa: E501
+ """Find purchase order by ID # noqa: E501
+
+ For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_order_by_id(order_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int order_id: ID of pet that needs to be fetched (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Order
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.get_order_by_id_with_http_info(order_id, **kwargs) # noqa: E501
+
+ def get_order_by_id_with_http_info(self, order_id, **kwargs): # noqa: E501
+ """Find purchase order by ID # noqa: E501
+
+ For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_order_by_id_with_http_info(order_id, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param int order_id: ID of pet that needs to be fetched (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(Order, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['order_id'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method get_order_by_id" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'order_id' is set
+ if ('order_id' not in local_var_params or
+ local_var_params['order_id'] is None):
+ raise ApiValueError("Missing the required parameter `order_id` when calling `get_order_by_id`") # noqa: E501
+
+ if 'order_id' in local_var_params and local_var_params['order_id'] > 5: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `order_id` when calling `get_order_by_id`, must be a value less than or equal to `5`") # noqa: E501
+ if 'order_id' in local_var_params and local_var_params['order_id'] < 1: # noqa: E501
+ raise ApiValueError("Invalid value for parameter `order_id` when calling `get_order_by_id`, must be a value greater than or equal to `1`") # noqa: E501
+ collection_formats = {}
+
+ path_params = {}
+ if 'order_id' in local_var_params:
+ path_params['order_id'] = local_var_params['order_id'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/xml', 'application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/store/order/{order_id}', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='Order', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def place_order(self, body, **kwargs): # noqa: E501
+ """Place an order for a pet # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.place_order(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Order body: order placed for purchasing the pet (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Order
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.place_order_with_http_info(body, **kwargs) # noqa: E501
+
+ def place_order_with_http_info(self, body, **kwargs): # noqa: E501
+ """Place an order for a pet # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.place_order_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param Order body: order placed for purchasing the pet (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(Order, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method place_order" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `place_order`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/xml', 'application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/store/order', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='Order', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
diff --git a/samples/client/petstore/python-experimental/petstore_api/api/user_api.py b/samples/client/petstore/python-experimental/petstore_api/api/user_api.py
new file mode 100644
index 0000000000..d3674f5ba5
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api/user_api.py
@@ -0,0 +1,875 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import re # noqa: F401
+
+# python 2 and python 3 compatibility library
+import six
+
+from petstore_api.api_client import ApiClient
+from petstore_api.exceptions import (
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class UserApi(object):
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None):
+ if api_client is None:
+ api_client = ApiClient()
+ self.api_client = api_client
+
+ def create_user(self, body, **kwargs): # noqa: E501
+ """Create user # noqa: E501
+
+ This can only be done by the logged in user. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_user(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param User body: Created user object (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.create_user_with_http_info(body, **kwargs) # noqa: E501
+
+ def create_user_with_http_info(self, body, **kwargs): # noqa: E501
+ """Create user # noqa: E501
+
+ This can only be done by the logged in user. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_user_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param User body: Created user object (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method create_user" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `create_user`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def create_users_with_array_input(self, body, **kwargs): # noqa: E501
+ """Creates list of users with given input array # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_users_with_array_input(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[User] body: List of user object (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.create_users_with_array_input_with_http_info(body, **kwargs) # noqa: E501
+
+ def create_users_with_array_input_with_http_info(self, body, **kwargs): # noqa: E501
+ """Creates list of users with given input array # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_users_with_array_input_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[User] body: List of user object (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method create_users_with_array_input" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `create_users_with_array_input`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user/createWithArray', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def create_users_with_list_input(self, body, **kwargs): # noqa: E501
+ """Creates list of users with given input array # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_users_with_list_input(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[User] body: List of user object (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.create_users_with_list_input_with_http_info(body, **kwargs) # noqa: E501
+
+ def create_users_with_list_input_with_http_info(self, body, **kwargs): # noqa: E501
+ """Creates list of users with given input array # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.create_users_with_list_input_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param list[User] body: List of user object (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method create_users_with_list_input" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `create_users_with_list_input`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user/createWithList', 'POST',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def delete_user(self, username, **kwargs): # noqa: E501
+ """Delete user # noqa: E501
+
+ This can only be done by the logged in user. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.delete_user(username, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: The name that needs to be deleted (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.delete_user_with_http_info(username, **kwargs) # noqa: E501
+
+ def delete_user_with_http_info(self, username, **kwargs): # noqa: E501
+ """Delete user # noqa: E501
+
+ This can only be done by the logged in user. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.delete_user_with_http_info(username, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: The name that needs to be deleted (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['username'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method delete_user" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'username' is set
+ if ('username' not in local_var_params or
+ local_var_params['username'] is None):
+ raise ApiValueError("Missing the required parameter `username` when calling `delete_user`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'username' in local_var_params:
+ path_params['username'] = local_var_params['username'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user/{username}', 'DELETE',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def get_user_by_name(self, username, **kwargs): # noqa: E501
+ """Get user by user name # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_user_by_name(username, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: The name that needs to be fetched. Use user1 for testing. (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: User
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.get_user_by_name_with_http_info(username, **kwargs) # noqa: E501
+
+ def get_user_by_name_with_http_info(self, username, **kwargs): # noqa: E501
+ """Get user by user name # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.get_user_by_name_with_http_info(username, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: The name that needs to be fetched. Use user1 for testing. (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(User, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['username'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method get_user_by_name" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'username' is set
+ if ('username' not in local_var_params or
+ local_var_params['username'] is None):
+ raise ApiValueError("Missing the required parameter `username` when calling `get_user_by_name`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'username' in local_var_params:
+ path_params['username'] = local_var_params['username'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/xml', 'application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user/{username}', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='User', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def login_user(self, username, password, **kwargs): # noqa: E501
+ """Logs user into the system # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.login_user(username, password, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: The user name for login (required)
+ :param str password: The password for login in clear text (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: str
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.login_user_with_http_info(username, password, **kwargs) # noqa: E501
+
+ def login_user_with_http_info(self, username, password, **kwargs): # noqa: E501
+ """Logs user into the system # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.login_user_with_http_info(username, password, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: The user name for login (required)
+ :param str password: The password for login in clear text (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['username', 'password'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method login_user" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'username' is set
+ if ('username' not in local_var_params or
+ local_var_params['username'] is None):
+ raise ApiValueError("Missing the required parameter `username` when calling `login_user`") # noqa: E501
+ # verify the required parameter 'password' is set
+ if ('password' not in local_var_params or
+ local_var_params['password'] is None):
+ raise ApiValueError("Missing the required parameter `password` when calling `login_user`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+ if 'username' in local_var_params:
+ query_params.append(('username', local_var_params['username'])) # noqa: E501
+ if 'password' in local_var_params:
+ query_params.append(('password', local_var_params['password'])) # noqa: E501
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # HTTP header `Accept`
+ header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/xml', 'application/json']) # noqa: E501
+
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user/login', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type='str', # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def logout_user(self, **kwargs): # noqa: E501
+ """Logs out current logged in user session # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.logout_user(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.logout_user_with_http_info(**kwargs) # noqa: E501
+
+ def logout_user_with_http_info(self, **kwargs): # noqa: E501
+ """Logs out current logged in user session # noqa: E501
+
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.logout_user_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = [] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method logout_user" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+
+ collection_formats = {}
+
+ path_params = {}
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user/logout', 'GET',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
+
+ def update_user(self, username, body, **kwargs): # noqa: E501
+ """Updated user # noqa: E501
+
+ This can only be done by the logged in user. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.update_user(username, body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: name that need to be deleted (required)
+ :param User body: Updated user object (required)
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+ kwargs['_return_http_data_only'] = True
+ return self.update_user_with_http_info(username, body, **kwargs) # noqa: E501
+
+ def update_user_with_http_info(self, username, body, **kwargs): # noqa: E501
+ """Updated user # noqa: E501
+
+ This can only be done by the logged in user. # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+ >>> thread = api.update_user_with_http_info(username, body, async_req=True)
+ >>> result = thread.get()
+
+ :param async_req bool: execute request asynchronously
+ :param str username: name that need to be deleted (required)
+ :param User body: Updated user object (required)
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: None
+ If the method is called asynchronously,
+ returns the request thread.
+ """
+
+ local_var_params = locals()
+
+ all_params = ['username', 'body'] # noqa: E501
+ all_params.append('async_req')
+ all_params.append('_return_http_data_only')
+ all_params.append('_preload_content')
+ all_params.append('_request_timeout')
+
+ for key, val in six.iteritems(local_var_params['kwargs']):
+ if key not in all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method update_user" % key
+ )
+ local_var_params[key] = val
+ del local_var_params['kwargs']
+ # verify the required parameter 'username' is set
+ if ('username' not in local_var_params or
+ local_var_params['username'] is None):
+ raise ApiValueError("Missing the required parameter `username` when calling `update_user`") # noqa: E501
+ # verify the required parameter 'body' is set
+ if ('body' not in local_var_params or
+ local_var_params['body'] is None):
+ raise ApiValueError("Missing the required parameter `body` when calling `update_user`") # noqa: E501
+
+ collection_formats = {}
+
+ path_params = {}
+ if 'username' in local_var_params:
+ path_params['username'] = local_var_params['username'] # noqa: E501
+
+ query_params = []
+
+ header_params = {}
+
+ form_params = []
+ local_var_files = {}
+
+ body_params = None
+ if 'body' in local_var_params:
+ body_params = local_var_params['body']
+ # Authentication setting
+ auth_settings = [] # noqa: E501
+
+ return self.api_client.call_api(
+ '/user/{username}', 'PUT',
+ path_params,
+ query_params,
+ header_params,
+ body=body_params,
+ post_params=form_params,
+ files=local_var_files,
+ response_type=None, # noqa: E501
+ auth_settings=auth_settings,
+ async_req=local_var_params.get('async_req'),
+ _return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=local_var_params.get('_preload_content', True),
+ _request_timeout=local_var_params.get('_request_timeout'),
+ collection_formats=collection_formats)
diff --git a/samples/client/petstore/python-experimental/petstore_api/api_client.py b/samples/client/petstore/python-experimental/petstore_api/api_client.py
new file mode 100644
index 0000000000..df3a9815aa
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/api_client.py
@@ -0,0 +1,640 @@
+# 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
+"""
+
+from __future__ import absolute_import
+
+import datetime
+import json
+import mimetypes
+from multiprocessing.pool import ThreadPool
+import os
+import re
+import tempfile
+
+# python 2 and python 3 compatibility library
+import six
+from six.moves.urllib.parse import quote
+
+from petstore_api.configuration import Configuration
+import petstore_api.models
+from petstore_api import rest
+from petstore_api.exceptions import ApiValueError
+
+
+class ApiClient(object):
+ """Generic API client for OpenAPI client library builds.
+
+ OpenAPI generic API client. This client handles the client-
+ server communication, and is invariant across implementations. Specifics of
+ the methods and models for each application are generated from the OpenAPI
+ templates.
+
+ NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+ Do not edit the class manually.
+
+ :param configuration: .Configuration object for this client
+ :param header_name: a header to pass when making calls to the API.
+ :param header_value: a header value to pass when making calls to
+ the API.
+ :param cookie: a cookie to include in the header when making calls
+ to the API
+ :param pool_threads: The number of threads to use for async requests
+ to the API. More threads means more concurrent API requests.
+ """
+
+ PRIMITIVE_TYPES = (float, bool, bytes, six.text_type) + six.integer_types
+ NATIVE_TYPES_MAPPING = {
+ 'int': int,
+ 'long': int if six.PY3 else long, # noqa: F821
+ 'float': float,
+ 'str': str,
+ 'bool': bool,
+ 'date': datetime.date,
+ 'datetime': datetime.datetime,
+ 'object': object,
+ }
+ _pool = None
+
+ def __init__(self, configuration=None, header_name=None, header_value=None,
+ cookie=None, pool_threads=1):
+ if configuration is None:
+ configuration = Configuration()
+ self.configuration = configuration
+ self.pool_threads = pool_threads
+
+ self.rest_client = rest.RESTClientObject(configuration)
+ self.default_headers = {}
+ if header_name is not None:
+ self.default_headers[header_name] = header_value
+ self.cookie = cookie
+ # Set default User-Agent.
+ self.user_agent = 'OpenAPI-Generator/1.0.0/python'
+
+ def __del__(self):
+ if self._pool:
+ self._pool.close()
+ self._pool.join()
+ self._pool = None
+
+ @property
+ def pool(self):
+ """Create thread pool on first request
+ avoids instantiating unused threadpool for blocking clients.
+ """
+ if self._pool is None:
+ self._pool = ThreadPool(self.pool_threads)
+ return self._pool
+
+ @property
+ def user_agent(self):
+ """User agent for this API client"""
+ return self.default_headers['User-Agent']
+
+ @user_agent.setter
+ def user_agent(self, value):
+ self.default_headers['User-Agent'] = value
+
+ def set_default_header(self, header_name, header_value):
+ self.default_headers[header_name] = header_value
+
+ def __call_api(
+ self, resource_path, method, path_params=None,
+ query_params=None, header_params=None, body=None, post_params=None,
+ files=None, response_type=None, auth_settings=None,
+ _return_http_data_only=None, collection_formats=None,
+ _preload_content=True, _request_timeout=None, _host=None):
+
+ config = self.configuration
+
+ # header parameters
+ header_params = header_params or {}
+ header_params.update(self.default_headers)
+ if self.cookie:
+ header_params['Cookie'] = self.cookie
+ if header_params:
+ header_params = self.sanitize_for_serialization(header_params)
+ header_params = dict(self.parameters_to_tuples(header_params,
+ collection_formats))
+
+ # path parameters
+ if path_params:
+ path_params = self.sanitize_for_serialization(path_params)
+ path_params = self.parameters_to_tuples(path_params,
+ collection_formats)
+ for k, v in path_params:
+ # specified safe chars, encode everything
+ resource_path = resource_path.replace(
+ '{%s}' % k,
+ quote(str(v), safe=config.safe_chars_for_path_param)
+ )
+
+ # query parameters
+ if query_params:
+ query_params = self.sanitize_for_serialization(query_params)
+ query_params = self.parameters_to_tuples(query_params,
+ collection_formats)
+
+ # post parameters
+ if post_params or files:
+ post_params = post_params if post_params else []
+ post_params = self.sanitize_for_serialization(post_params)
+ post_params = self.parameters_to_tuples(post_params,
+ collection_formats)
+ post_params.extend(self.files_parameters(files))
+
+ # auth setting
+ self.update_params_for_auth(header_params, query_params, auth_settings)
+
+ # body
+ if body:
+ body = self.sanitize_for_serialization(body)
+
+ # request url
+ if _host is None:
+ url = self.configuration.host + resource_path
+ else:
+ # use server/host defined in path or operation instead
+ url = _host + resource_path
+
+ # perform request and return response
+ response_data = self.request(
+ method, url, query_params=query_params, headers=header_params,
+ post_params=post_params, body=body,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout)
+
+ self.last_response = response_data
+
+ return_data = response_data
+ if _preload_content:
+ # deserialize response data
+ if response_type:
+ return_data = self.deserialize(response_data, response_type)
+ else:
+ return_data = None
+
+ if _return_http_data_only:
+ return (return_data)
+ else:
+ return (return_data, response_data.status,
+ response_data.getheaders())
+
+ def sanitize_for_serialization(self, obj):
+ """Builds a JSON POST object.
+
+ If obj is None, return None.
+ If obj is str, int, long, float, bool, return directly.
+ If obj is datetime.datetime, datetime.date
+ convert to string in iso8601 format.
+ If obj is list, sanitize each element in the list.
+ If obj is dict, return the dict.
+ If obj is OpenAPI model, return the properties dict.
+
+ :param obj: The data to serialize.
+ :return: The serialized form of data.
+ """
+ if obj is None:
+ return None
+ elif isinstance(obj, self.PRIMITIVE_TYPES):
+ return obj
+ elif isinstance(obj, list):
+ return [self.sanitize_for_serialization(sub_obj)
+ for sub_obj in obj]
+ elif isinstance(obj, tuple):
+ return tuple(self.sanitize_for_serialization(sub_obj)
+ for sub_obj in obj)
+ elif isinstance(obj, (datetime.datetime, datetime.date)):
+ return obj.isoformat()
+
+ if isinstance(obj, dict):
+ obj_dict = obj
+ else:
+ # Convert model obj to dict except
+ # attributes `openapi_types`, `attribute_map`
+ # and attributes which value is not None.
+ # Convert attribute name to json key in
+ # model definition for request.
+ obj_dict = {obj.attribute_map[attr]: getattr(obj, attr)
+ for attr, _ in six.iteritems(obj.openapi_types)
+ if getattr(obj, attr) is not None}
+
+ return {key: self.sanitize_for_serialization(val)
+ for key, val in six.iteritems(obj_dict)}
+
+ def deserialize(self, response, response_type):
+ """Deserializes response into an object.
+
+ :param response: RESTResponse object to be deserialized.
+ :param response_type: class literal for
+ deserialized object, or string of class name.
+
+ :return: deserialized object.
+ """
+ # handle file downloading
+ # save response body into a tmp file and return the instance
+ if response_type == "file":
+ return self.__deserialize_file(response)
+
+ # fetch data from response object
+ try:
+ data = json.loads(response.data)
+ except ValueError:
+ data = response.data
+
+ return self.__deserialize(data, response_type)
+
+ def __deserialize(self, data, klass):
+ """Deserializes dict, list, str into an object.
+
+ :param data: dict, list or str.
+ :param klass: class literal, or string of class name.
+
+ :return: object.
+ """
+ if data is None:
+ return None
+
+ if type(klass) == str:
+ if klass.startswith('list['):
+ sub_kls = re.match(r'list\[(.*)\]', klass).group(1)
+ return [self.__deserialize(sub_data, sub_kls)
+ for sub_data in data]
+
+ if klass.startswith('dict('):
+ sub_kls = re.match(r'dict\(([^,]*), (.*)\)', klass).group(2)
+ return {k: self.__deserialize(v, sub_kls)
+ for k, v in six.iteritems(data)}
+
+ # convert str to class
+ if klass in self.NATIVE_TYPES_MAPPING:
+ klass = self.NATIVE_TYPES_MAPPING[klass]
+ else:
+ klass = getattr(petstore_api.models, klass)
+
+ if klass in self.PRIMITIVE_TYPES:
+ return self.__deserialize_primitive(data, klass)
+ elif klass == object:
+ return self.__deserialize_object(data)
+ elif klass == datetime.date:
+ return self.__deserialize_date(data)
+ elif klass == datetime.datetime:
+ return self.__deserialize_datatime(data)
+ else:
+ return self.__deserialize_model(data, klass)
+
+ def call_api(self, resource_path, method,
+ path_params=None, query_params=None, header_params=None,
+ body=None, post_params=None, files=None,
+ response_type=None, auth_settings=None, async_req=None,
+ _return_http_data_only=None, collection_formats=None,
+ _preload_content=True, _request_timeout=None, _host=None):
+ """Makes the HTTP request (synchronous) and returns deserialized data.
+
+ To make an async_req request, set the async_req parameter.
+
+ :param resource_path: Path to method endpoint.
+ :param method: Method to call.
+ :param path_params: Path parameters in the url.
+ :param query_params: Query parameters in the url.
+ :param header_params: Header parameters to be
+ placed in the request header.
+ :param body: Request body.
+ :param post_params dict: Request post form parameters,
+ for `application/x-www-form-urlencoded`, `multipart/form-data`.
+ :param auth_settings list: Auth Settings names for the request.
+ :param response: Response data type.
+ :param files dict: key -> filename, value -> filepath,
+ for `multipart/form-data`.
+ :param async_req bool: execute request asynchronously
+ :param _return_http_data_only: response data without head status code
+ and headers
+ :param collection_formats: dict of collection formats for path, query,
+ header, and post parameters.
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return:
+ If async_req parameter is True,
+ the request will be called asynchronously.
+ The method will return the request thread.
+ If parameter async_req is False or missing,
+ then the method will return the response directly.
+ """
+ if not async_req:
+ return self.__call_api(resource_path, method,
+ path_params, query_params, header_params,
+ body, post_params, files,
+ response_type, auth_settings,
+ _return_http_data_only, collection_formats,
+ _preload_content, _request_timeout, _host)
+ else:
+ thread = self.pool.apply_async(self.__call_api, (resource_path,
+ method, path_params, query_params,
+ header_params, body,
+ post_params, files,
+ response_type, auth_settings,
+ _return_http_data_only,
+ collection_formats,
+ _preload_content,
+ _request_timeout,
+ _host))
+ return thread
+
+ def request(self, method, url, query_params=None, headers=None,
+ post_params=None, body=None, _preload_content=True,
+ _request_timeout=None):
+ """Makes the HTTP request using RESTClient."""
+ if method == "GET":
+ return self.rest_client.GET(url,
+ query_params=query_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ headers=headers)
+ elif method == "HEAD":
+ return self.rest_client.HEAD(url,
+ query_params=query_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ headers=headers)
+ elif method == "OPTIONS":
+ return self.rest_client.OPTIONS(url,
+ query_params=query_params,
+ headers=headers,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ elif method == "POST":
+ return self.rest_client.POST(url,
+ query_params=query_params,
+ headers=headers,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ elif method == "PUT":
+ return self.rest_client.PUT(url,
+ query_params=query_params,
+ headers=headers,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ elif method == "PATCH":
+ return self.rest_client.PATCH(url,
+ query_params=query_params,
+ headers=headers,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ elif method == "DELETE":
+ return self.rest_client.DELETE(url,
+ query_params=query_params,
+ headers=headers,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ else:
+ raise ApiValueError(
+ "http method must be `GET`, `HEAD`, `OPTIONS`,"
+ " `POST`, `PATCH`, `PUT` or `DELETE`."
+ )
+
+ def parameters_to_tuples(self, params, collection_formats):
+ """Get parameters as list of tuples, formatting collections.
+
+ :param params: Parameters as dict or list of two-tuples
+ :param dict collection_formats: Parameter collection formats
+ :return: Parameters as list of tuples, collections formatted
+ """
+ new_params = []
+ if collection_formats is None:
+ collection_formats = {}
+ for k, v in six.iteritems(params) if isinstance(params, dict) else params: # noqa: E501
+ if k in collection_formats:
+ collection_format = collection_formats[k]
+ if collection_format == 'multi':
+ new_params.extend((k, value) for value in v)
+ else:
+ if collection_format == 'ssv':
+ delimiter = ' '
+ elif collection_format == 'tsv':
+ delimiter = '\t'
+ elif collection_format == 'pipes':
+ delimiter = '|'
+ else: # csv is the default
+ delimiter = ','
+ new_params.append(
+ (k, delimiter.join(str(value) for value in v)))
+ else:
+ new_params.append((k, v))
+ return new_params
+
+ def files_parameters(self, files=None):
+ """Builds form parameters.
+
+ :param files: File parameters.
+ :return: Form parameters with files.
+ """
+ params = []
+
+ if files:
+ for k, v in six.iteritems(files):
+ if not v:
+ continue
+ file_names = v if type(v) is list else [v]
+ for n in file_names:
+ with open(n, 'rb') as f:
+ filename = os.path.basename(f.name)
+ filedata = f.read()
+ mimetype = (mimetypes.guess_type(filename)[0] or
+ 'application/octet-stream')
+ params.append(
+ tuple([k, tuple([filename, filedata, mimetype])]))
+
+ return params
+
+ def select_header_accept(self, accepts):
+ """Returns `Accept` based on an array of accepts provided.
+
+ :param accepts: List of headers.
+ :return: Accept (e.g. application/json).
+ """
+ if not accepts:
+ return
+
+ accepts = [x.lower() for x in accepts]
+
+ if 'application/json' in accepts:
+ return 'application/json'
+ else:
+ return ', '.join(accepts)
+
+ def select_header_content_type(self, content_types):
+ """Returns `Content-Type` based on an array of content_types provided.
+
+ :param content_types: List of content-types.
+ :return: Content-Type (e.g. application/json).
+ """
+ if not content_types:
+ return 'application/json'
+
+ content_types = [x.lower() for x in content_types]
+
+ if 'application/json' in content_types or '*/*' in content_types:
+ return 'application/json'
+ else:
+ return content_types[0]
+
+ def update_params_for_auth(self, headers, querys, auth_settings):
+ """Updates header and query params based on authentication setting.
+
+ :param headers: Header parameters dict to be updated.
+ :param querys: Query parameters tuple list to be updated.
+ :param auth_settings: Authentication setting identifiers list.
+ """
+ if not auth_settings:
+ return
+
+ for auth in auth_settings:
+ auth_setting = self.configuration.auth_settings().get(auth)
+ if auth_setting:
+ if not auth_setting['value']:
+ continue
+ elif auth_setting['in'] == 'cookie':
+ headers['Cookie'] = auth_setting['value']
+ elif auth_setting['in'] == 'header':
+ headers[auth_setting['key']] = auth_setting['value']
+ elif auth_setting['in'] == 'query':
+ querys.append((auth_setting['key'], auth_setting['value']))
+ else:
+ raise ApiValueError(
+ 'Authentication token must be in `query` or `header`'
+ )
+
+ def __deserialize_file(self, response):
+ """Deserializes body to file
+
+ Saves response body into a file in a temporary folder,
+ using the filename from the `Content-Disposition` header if provided.
+
+ :param response: RESTResponse.
+ :return: file path.
+ """
+ fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
+ os.close(fd)
+ os.remove(path)
+
+ content_disposition = response.getheader("Content-Disposition")
+ if content_disposition:
+ filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?',
+ content_disposition).group(1)
+ path = os.path.join(os.path.dirname(path), filename)
+
+ with open(path, "wb") as f:
+ f.write(response.data)
+
+ return path
+
+ def __deserialize_primitive(self, data, klass):
+ """Deserializes string to primitive type.
+
+ :param data: str.
+ :param klass: class literal.
+
+ :return: int, long, float, str, bool.
+ """
+ try:
+ return klass(data)
+ except UnicodeEncodeError:
+ return six.text_type(data)
+ except TypeError:
+ return data
+
+ def __deserialize_object(self, value):
+ """Return an original value.
+
+ :return: object.
+ """
+ return value
+
+ def __deserialize_date(self, string):
+ """Deserializes string to date.
+
+ :param string: str.
+ :return: date.
+ """
+ try:
+ from dateutil.parser import parse
+ return parse(string).date()
+ except ImportError:
+ return string
+ except ValueError:
+ raise rest.ApiException(
+ status=0,
+ reason="Failed to parse `{0}` as date object".format(string)
+ )
+
+ def __deserialize_datatime(self, string):
+ """Deserializes string to datetime.
+
+ The string should be in iso8601 datetime format.
+
+ :param string: str.
+ :return: datetime.
+ """
+ try:
+ from dateutil.parser import parse
+ return parse(string)
+ except ImportError:
+ return string
+ except ValueError:
+ raise rest.ApiException(
+ status=0,
+ reason=(
+ "Failed to parse `{0}` as datetime object"
+ .format(string)
+ )
+ )
+
+ def __deserialize_model(self, data, klass):
+ """Deserializes list or dict to model.
+
+ :param data: dict, list.
+ :param klass: class literal.
+ :return: model object.
+ """
+
+ if not klass.openapi_types and not hasattr(klass,
+ 'get_real_child_model'):
+ return data
+
+ kwargs = {}
+ if klass.openapi_types is not None:
+ for attr, attr_type in six.iteritems(klass.openapi_types):
+ if (data is not None and
+ klass.attribute_map[attr] in data and
+ isinstance(data, (list, dict))):
+ value = data[klass.attribute_map[attr]]
+ kwargs[attr] = self.__deserialize(value, attr_type)
+
+ instance = klass(**kwargs)
+
+ if hasattr(instance, 'get_real_child_model'):
+ klass_name = instance.get_real_child_model(data)
+ if klass_name:
+ instance = self.__deserialize(data, klass_name)
+ return instance
diff --git a/samples/client/petstore/python-experimental/petstore_api/configuration.py b/samples/client/petstore/python-experimental/petstore_api/configuration.py
new file mode 100644
index 0000000000..fa0c3f4d32
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/configuration.py
@@ -0,0 +1,342 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import copy
+import logging
+import multiprocessing
+import sys
+import urllib3
+
+import six
+from six.moves import http_client as httplib
+
+
+class TypeWithDefault(type):
+ def __init__(cls, name, bases, dct):
+ super(TypeWithDefault, cls).__init__(name, bases, dct)
+ cls._default = None
+
+ def __call__(cls, **kwargs):
+ if cls._default is None:
+ cls._default = type.__call__(cls, **kwargs)
+ return copy.copy(cls._default)
+
+ def set_default(cls, default):
+ cls._default = copy.copy(default)
+
+
+class Configuration(six.with_metaclass(TypeWithDefault, object)):
+ """NOTE: This class is auto generated by OpenAPI Generator
+
+ Ref: https://openapi-generator.tech
+ Do not edit the class manually.
+
+ :param host: Base url
+ :param api_key: Dict to store API key(s)
+ :param api_key_prefix: Dict to store API prefix (e.g. Bearer)
+ :param username: Username for HTTP basic authentication
+ :param password: Password for HTTP basic authentication
+ """
+
+ def __init__(self, host="http://petstore.swagger.io:80/v2",
+ api_key={}, api_key_prefix={},
+ username="", password=""):
+ """Constructor
+ """
+ self.host = host
+ """Default Base url
+ """
+ self.temp_folder_path = None
+ """Temp file folder for downloading files
+ """
+ # Authentication Settings
+ self.api_key = api_key
+ """dict to store API key(s)
+ """
+ self.api_key_prefix = api_key_prefix
+ """dict to store API prefix (e.g. Bearer)
+ """
+ self.username = username
+ """Username for HTTP basic authentication
+ """
+ self.password = password
+ """Password for HTTP basic authentication
+ """
+ self.access_token = ""
+ """access token for OAuth/Bearer
+ """
+ self.logger = {}
+ """Logging Settings
+ """
+ self.logger["package_logger"] = logging.getLogger("petstore_api")
+ self.logger["urllib3_logger"] = logging.getLogger("urllib3")
+ self.logger_format = '%(asctime)s %(levelname)s %(message)s'
+ """Log format
+ """
+ self.logger_stream_handler = None
+ """Log stream handler
+ """
+ self.logger_file_handler = None
+ """Log file handler
+ """
+ self.logger_file = None
+ """Debug file location
+ """
+ self.debug = False
+ """Debug switch
+ """
+
+ self.verify_ssl = True
+ """SSL/TLS verification
+ Set this to false to skip verifying SSL certificate when calling API
+ from https server.
+ """
+ self.ssl_ca_cert = None
+ """Set this to customize the certificate file to verify the peer.
+ """
+ self.cert_file = None
+ """client certificate file
+ """
+ self.key_file = None
+ """client key file
+ """
+ self.assert_hostname = None
+ """Set this to True/False to enable/disable SSL hostname verification.
+ """
+
+ self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
+ """urllib3 connection pool's maximum number of connections saved
+ per pool. urllib3 uses 1 connection as default value, but this is
+ not the best value when you are making a lot of possibly parallel
+ requests to the same host, which is often the case here.
+ cpu_count * 5 is used as default value to increase performance.
+ """
+
+ self.proxy = None
+ """Proxy URL
+ """
+ self.proxy_headers = None
+ """Proxy headers
+ """
+ self.safe_chars_for_path_param = ''
+ """Safe chars for path_param
+ """
+ self.retries = None
+ """Adding retries to override urllib3 default value 3
+ """
+
+ @property
+ def logger_file(self):
+ """The logger file.
+
+ If the logger_file is None, then add stream handler and remove file
+ handler. Otherwise, add file handler and remove stream handler.
+
+ :param value: The logger_file path.
+ :type: str
+ """
+ return self.__logger_file
+
+ @logger_file.setter
+ def logger_file(self, value):
+ """The logger file.
+
+ If the logger_file is None, then add stream handler and remove file
+ handler. Otherwise, add file handler and remove stream handler.
+
+ :param value: The logger_file path.
+ :type: str
+ """
+ self.__logger_file = value
+ if self.__logger_file:
+ # If set logging file,
+ # then add file handler and remove stream handler.
+ self.logger_file_handler = logging.FileHandler(self.__logger_file)
+ self.logger_file_handler.setFormatter(self.logger_formatter)
+ for _, logger in six.iteritems(self.logger):
+ logger.addHandler(self.logger_file_handler)
+
+ @property
+ def debug(self):
+ """Debug status
+
+ :param value: The debug status, True or False.
+ :type: bool
+ """
+ return self.__debug
+
+ @debug.setter
+ def debug(self, value):
+ """Debug status
+
+ :param value: The debug status, True or False.
+ :type: bool
+ """
+ self.__debug = value
+ if self.__debug:
+ # if debug status is True, turn on debug logging
+ for _, logger in six.iteritems(self.logger):
+ logger.setLevel(logging.DEBUG)
+ # turn on httplib debug
+ httplib.HTTPConnection.debuglevel = 1
+ else:
+ # if debug status is False, turn off debug logging,
+ # setting log level to default `logging.WARNING`
+ for _, logger in six.iteritems(self.logger):
+ logger.setLevel(logging.WARNING)
+ # turn off httplib debug
+ httplib.HTTPConnection.debuglevel = 0
+
+ @property
+ def logger_format(self):
+ """The logger format.
+
+ The logger_formatter will be updated when sets logger_format.
+
+ :param value: The format string.
+ :type: str
+ """
+ return self.__logger_format
+
+ @logger_format.setter
+ def logger_format(self, value):
+ """The logger format.
+
+ The logger_formatter will be updated when sets logger_format.
+
+ :param value: The format string.
+ :type: str
+ """
+ self.__logger_format = value
+ self.logger_formatter = logging.Formatter(self.__logger_format)
+
+ def get_api_key_with_prefix(self, identifier):
+ """Gets API key (with prefix if set).
+
+ :param identifier: The identifier of apiKey.
+ :return: The token for api key authentication.
+ """
+ if (self.api_key.get(identifier) and
+ self.api_key_prefix.get(identifier)):
+ return self.api_key_prefix[identifier] + ' ' + self.api_key[identifier] # noqa: E501
+ elif self.api_key.get(identifier):
+ return self.api_key[identifier]
+
+ def get_basic_auth_token(self):
+ """Gets HTTP basic authentication header (string).
+
+ :return: The token for basic HTTP authentication.
+ """
+ return urllib3.util.make_headers(
+ basic_auth=self.username + ':' + self.password
+ ).get('authorization')
+
+ def auth_settings(self):
+ """Gets Auth Settings dict for api client.
+
+ :return: The Auth Settings information dict.
+ """
+ return {
+ 'api_key':
+ {
+ 'type': 'api_key',
+ 'in': 'header',
+ 'key': 'api_key',
+ 'value': self.get_api_key_with_prefix('api_key')
+ },
+ 'api_key_query':
+ {
+ 'type': 'api_key',
+ 'in': 'query',
+ 'key': 'api_key_query',
+ 'value': self.get_api_key_with_prefix('api_key_query')
+ },
+ 'http_basic_test':
+ {
+ 'type': 'basic',
+ 'in': 'header',
+ 'key': 'Authorization',
+ 'value': self.get_basic_auth_token()
+ },
+ 'petstore_auth':
+ {
+ 'type': 'oauth2',
+ 'in': 'header',
+ 'key': 'Authorization',
+ 'value': 'Bearer ' + self.access_token
+ },
+ }
+
+ def to_debug_report(self):
+ """Gets the essential information for debugging.
+
+ :return: The report for debugging.
+ """
+ return "Python SDK Debug Report:\n"\
+ "OS: {env}\n"\
+ "Python Version: {pyversion}\n"\
+ "Version of the API: 1.0.0\n"\
+ "SDK Package Version: 1.0.0".\
+ format(env=sys.platform, pyversion=sys.version)
+
+ def get_host_settings(self):
+ """Gets an array of host settings
+
+ :return: An array of host settings
+ """
+ return [
+ {
+ 'url': "http://petstore.swagger.io:80/v2",
+ 'description': "No description provided",
+ }
+ ]
+
+ def get_host_from_settings(self, index, variables={}):
+ """Gets host URL based on the index and variables
+ :param index: array index of the host settings
+ :param variables: hash of variable and the corresponding value
+ :return: URL based on host settings
+ """
+
+ servers = self.get_host_settings()
+
+ # check array index out of bound
+ if index < 0 or index >= len(servers):
+ raise ValueError(
+ "Invalid index {} when selecting the host settings. Must be less than {}" # noqa: E501
+ .format(index, len(servers)))
+
+ server = servers[index]
+ url = server['url']
+
+ # go through variable and assign a value
+ for variable_name in server['variables']:
+ if variable_name in variables:
+ if variables[variable_name] in server['variables'][
+ variable_name]['enum_values']:
+ url = url.replace("{" + variable_name + "}",
+ variables[variable_name])
+ else:
+ raise ValueError(
+ "The variable `{}` in the host URL has invalid value {}. Must be {}." # noqa: E501
+ .format(
+ variable_name, variables[variable_name],
+ server['variables'][variable_name]['enum_values']))
+ else:
+ # use default value
+ url = url.replace(
+ "{" + variable_name + "}",
+ server['variables'][variable_name]['default_value'])
+
+ return url
diff --git a/samples/client/petstore/python-experimental/petstore_api/exceptions.py b/samples/client/petstore/python-experimental/petstore_api/exceptions.py
new file mode 100644
index 0000000000..100be3e054
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/exceptions.py
@@ -0,0 +1,120 @@
+# 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 six
+
+
+class OpenApiException(Exception):
+ """The base exception class for all OpenAPIExceptions"""
+
+
+class ApiTypeError(OpenApiException, TypeError):
+ def __init__(self, msg, path_to_item=None, valid_classes=None,
+ key_type=None):
+ """ Raises an exception for TypeErrors
+
+ Args:
+ msg (str): the exception message
+
+ Keyword Args:
+ path_to_item (list): a list of keys an indices to get to the
+ current_item
+ None if unset
+ valid_classes (tuple): the primitive classes that current item
+ should be an instance of
+ None if unset
+ key_type (bool): False if our value is a value in a dict
+ True if it is a key in a dict
+ False if our item is an item in a list
+ None if unset
+ """
+ self.path_to_item = path_to_item
+ self.valid_classes = valid_classes
+ self.key_type = key_type
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiTypeError, self).__init__(full_msg)
+
+
+class ApiValueError(OpenApiException, ValueError):
+ def __init__(self, msg, path_to_item=None):
+ """
+ Args:
+ msg (str): the exception message
+
+ Keyword Args:
+ path_to_item (list) the path to the exception in the
+ received_data dict. None if unset
+ """
+
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiValueError, self).__init__(full_msg)
+
+
+class ApiKeyError(OpenApiException, KeyError):
+ def __init__(self, msg, path_to_item=None):
+ """
+ Args:
+ msg (str): the exception message
+
+ Keyword Args:
+ path_to_item (None/list) the path to the exception in the
+ received_data dict
+ """
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiKeyError, self).__init__(full_msg)
+
+
+class ApiException(OpenApiException):
+
+ def __init__(self, status=None, reason=None, http_resp=None):
+ if http_resp:
+ self.status = http_resp.status
+ self.reason = http_resp.reason
+ self.body = http_resp.data
+ self.headers = http_resp.getheaders()
+ else:
+ self.status = status
+ self.reason = reason
+ self.body = None
+ self.headers = None
+
+ def __str__(self):
+ """Custom error messages for exception"""
+ error_message = "({0})\n"\
+ "Reason: {1}\n".format(self.status, self.reason)
+ if self.headers:
+ error_message += "HTTP response headers: {0}\n".format(
+ self.headers)
+
+ if self.body:
+ error_message += "HTTP response body: {0}\n".format(self.body)
+
+ return error_message
+
+
+def render_path(path_to_item):
+ """Returns a string representation of a path"""
+ result = ""
+ for pth in path_to_item:
+ if isinstance(pth, six.integer_types):
+ result += "[{0}]".format(pth)
+ else:
+ result += "['{0}']".format(pth)
+ return result
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/__init__.py b/samples/client/petstore/python-experimental/petstore_api/models/__init__.py
new file mode 100644
index 0000000000..96fd17471f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/__init__.py
@@ -0,0 +1,62 @@
+# coding: utf-8
+
+# flake8: noqa
+"""
+ 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
+"""
+
+
+from __future__ import absolute_import
+
+# import models into model package
+from petstore_api.models.additional_properties_any_type import AdditionalPropertiesAnyType
+from petstore_api.models.additional_properties_array import AdditionalPropertiesArray
+from petstore_api.models.additional_properties_boolean import AdditionalPropertiesBoolean
+from petstore_api.models.additional_properties_class import AdditionalPropertiesClass
+from petstore_api.models.additional_properties_integer import AdditionalPropertiesInteger
+from petstore_api.models.additional_properties_number import AdditionalPropertiesNumber
+from petstore_api.models.additional_properties_object import AdditionalPropertiesObject
+from petstore_api.models.additional_properties_string import AdditionalPropertiesString
+from petstore_api.models.animal import Animal
+from petstore_api.models.api_response import ApiResponse
+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_test import ArrayTest
+from petstore_api.models.capitalization import Capitalization
+from petstore_api.models.cat import Cat
+from petstore_api.models.cat_all_of import CatAllOf
+from petstore_api.models.category import Category
+from petstore_api.models.class_model import ClassModel
+from petstore_api.models.client import Client
+from petstore_api.models.dog import Dog
+from petstore_api.models.dog_all_of import DogAllOf
+from petstore_api.models.enum_arrays import EnumArrays
+from petstore_api.models.enum_class import EnumClass
+from petstore_api.models.enum_test import EnumTest
+from petstore_api.models.file import File
+from petstore_api.models.file_schema_test_class import FileSchemaTestClass
+from petstore_api.models.format_test import FormatTest
+from petstore_api.models.has_only_read_only import HasOnlyReadOnly
+from petstore_api.models.list import List
+from petstore_api.models.map_test import MapTest
+from petstore_api.models.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass
+from petstore_api.models.model200_response import Model200Response
+from petstore_api.models.model_return import ModelReturn
+from petstore_api.models.name import Name
+from petstore_api.models.number_only import NumberOnly
+from petstore_api.models.order import Order
+from petstore_api.models.outer_composite import OuterComposite
+from petstore_api.models.outer_enum import OuterEnum
+from petstore_api.models.pet import Pet
+from petstore_api.models.read_only_first import ReadOnlyFirst
+from petstore_api.models.special_model_name import SpecialModelName
+from petstore_api.models.tag import Tag
+from petstore_api.models.type_holder_default import TypeHolderDefault
+from petstore_api.models.type_holder_example import TypeHolderExample
+from petstore_api.models.user import User
+from petstore_api.models.xml_item import XmlItem
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_any_type.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_any_type.py
new file mode 100644
index 0000000000..ed4f40068b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_any_type.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesAnyType(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name'
+ }
+
+ def __init__(self, name=None): # noqa: E501
+ """AdditionalPropertiesAnyType - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+
+ @property
+ def name(self):
+ """Gets the name of this AdditionalPropertiesAnyType. # noqa: E501
+
+
+ :return: The name of this AdditionalPropertiesAnyType. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this AdditionalPropertiesAnyType.
+
+
+ :param name: The name of this AdditionalPropertiesAnyType. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesAnyType):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_array.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_array.py
new file mode 100644
index 0000000000..22b4133f36
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_array.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesArray(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name'
+ }
+
+ def __init__(self, name=None): # noqa: E501
+ """AdditionalPropertiesArray - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+
+ @property
+ def name(self):
+ """Gets the name of this AdditionalPropertiesArray. # noqa: E501
+
+
+ :return: The name of this AdditionalPropertiesArray. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this AdditionalPropertiesArray.
+
+
+ :param name: The name of this AdditionalPropertiesArray. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesArray):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_boolean.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_boolean.py
new file mode 100644
index 0000000000..24e2fc178a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_boolean.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesBoolean(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name'
+ }
+
+ def __init__(self, name=None): # noqa: E501
+ """AdditionalPropertiesBoolean - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+
+ @property
+ def name(self):
+ """Gets the name of this AdditionalPropertiesBoolean. # noqa: E501
+
+
+ :return: The name of this AdditionalPropertiesBoolean. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this AdditionalPropertiesBoolean.
+
+
+ :param name: The name of this AdditionalPropertiesBoolean. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesBoolean):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_class.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_class.py
new file mode 100644
index 0000000000..e9e9307d1b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_class.py
@@ -0,0 +1,372 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesClass(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'map_string': 'dict(str, str)',
+ 'map_number': 'dict(str, float)',
+ 'map_integer': 'dict(str, int)',
+ 'map_boolean': 'dict(str, bool)',
+ 'map_array_integer': 'dict(str, list[int])',
+ 'map_array_anytype': 'dict(str, list[object])',
+ 'map_map_string': 'dict(str, dict(str, str))',
+ 'map_map_anytype': 'dict(str, dict(str, object))',
+ 'anytype_1': 'object',
+ 'anytype_2': 'object',
+ 'anytype_3': 'object'
+ }
+
+ attribute_map = {
+ 'map_string': 'map_string',
+ 'map_number': 'map_number',
+ 'map_integer': 'map_integer',
+ 'map_boolean': 'map_boolean',
+ 'map_array_integer': 'map_array_integer',
+ 'map_array_anytype': 'map_array_anytype',
+ 'map_map_string': 'map_map_string',
+ 'map_map_anytype': 'map_map_anytype',
+ 'anytype_1': 'anytype_1',
+ 'anytype_2': 'anytype_2',
+ 'anytype_3': 'anytype_3'
+ }
+
+ def __init__(self, map_string=None, map_number=None, map_integer=None, map_boolean=None, map_array_integer=None, map_array_anytype=None, map_map_string=None, map_map_anytype=None, anytype_1=None, anytype_2=None, anytype_3=None): # noqa: E501
+ """AdditionalPropertiesClass - a model defined in OpenAPI""" # noqa: E501
+
+ self._map_string = None
+ self._map_number = None
+ self._map_integer = None
+ self._map_boolean = None
+ self._map_array_integer = None
+ self._map_array_anytype = None
+ self._map_map_string = None
+ self._map_map_anytype = None
+ self._anytype_1 = None
+ self._anytype_2 = None
+ self._anytype_3 = None
+ self.discriminator = None
+
+ if map_string is not None:
+ self.map_string = map_string
+ if map_number is not None:
+ self.map_number = map_number
+ if map_integer is not None:
+ self.map_integer = map_integer
+ if map_boolean is not None:
+ self.map_boolean = map_boolean
+ if map_array_integer is not None:
+ self.map_array_integer = map_array_integer
+ if map_array_anytype is not None:
+ self.map_array_anytype = map_array_anytype
+ if map_map_string is not None:
+ self.map_map_string = map_map_string
+ if map_map_anytype is not None:
+ self.map_map_anytype = map_map_anytype
+ if anytype_1 is not None:
+ self.anytype_1 = anytype_1
+ if anytype_2 is not None:
+ self.anytype_2 = anytype_2
+ if anytype_3 is not None:
+ self.anytype_3 = anytype_3
+
+ @property
+ def map_string(self):
+ """Gets the map_string of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_string of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, str)
+ """
+ return self._map_string
+
+ @map_string.setter
+ def map_string(self, map_string):
+ """Sets the map_string of this AdditionalPropertiesClass.
+
+
+ :param map_string: The map_string of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, str)
+ """
+
+ self._map_string = map_string
+
+ @property
+ def map_number(self):
+ """Gets the map_number of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_number of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, float)
+ """
+ return self._map_number
+
+ @map_number.setter
+ def map_number(self, map_number):
+ """Sets the map_number of this AdditionalPropertiesClass.
+
+
+ :param map_number: The map_number of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, float)
+ """
+
+ self._map_number = map_number
+
+ @property
+ def map_integer(self):
+ """Gets the map_integer of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_integer of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, int)
+ """
+ return self._map_integer
+
+ @map_integer.setter
+ def map_integer(self, map_integer):
+ """Sets the map_integer of this AdditionalPropertiesClass.
+
+
+ :param map_integer: The map_integer of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, int)
+ """
+
+ self._map_integer = map_integer
+
+ @property
+ def map_boolean(self):
+ """Gets the map_boolean of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_boolean of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, bool)
+ """
+ return self._map_boolean
+
+ @map_boolean.setter
+ def map_boolean(self, map_boolean):
+ """Sets the map_boolean of this AdditionalPropertiesClass.
+
+
+ :param map_boolean: The map_boolean of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, bool)
+ """
+
+ self._map_boolean = map_boolean
+
+ @property
+ def map_array_integer(self):
+ """Gets the map_array_integer of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_array_integer of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, list[int])
+ """
+ return self._map_array_integer
+
+ @map_array_integer.setter
+ def map_array_integer(self, map_array_integer):
+ """Sets the map_array_integer of this AdditionalPropertiesClass.
+
+
+ :param map_array_integer: The map_array_integer of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, list[int])
+ """
+
+ self._map_array_integer = map_array_integer
+
+ @property
+ def map_array_anytype(self):
+ """Gets the map_array_anytype of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_array_anytype of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, list[object])
+ """
+ return self._map_array_anytype
+
+ @map_array_anytype.setter
+ def map_array_anytype(self, map_array_anytype):
+ """Sets the map_array_anytype of this AdditionalPropertiesClass.
+
+
+ :param map_array_anytype: The map_array_anytype of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, list[object])
+ """
+
+ self._map_array_anytype = map_array_anytype
+
+ @property
+ def map_map_string(self):
+ """Gets the map_map_string of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_map_string of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, dict(str, str))
+ """
+ return self._map_map_string
+
+ @map_map_string.setter
+ def map_map_string(self, map_map_string):
+ """Sets the map_map_string of this AdditionalPropertiesClass.
+
+
+ :param map_map_string: The map_map_string of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, dict(str, str))
+ """
+
+ self._map_map_string = map_map_string
+
+ @property
+ def map_map_anytype(self):
+ """Gets the map_map_anytype of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map_map_anytype of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, dict(str, object))
+ """
+ return self._map_map_anytype
+
+ @map_map_anytype.setter
+ def map_map_anytype(self, map_map_anytype):
+ """Sets the map_map_anytype of this AdditionalPropertiesClass.
+
+
+ :param map_map_anytype: The map_map_anytype of this AdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, dict(str, object))
+ """
+
+ self._map_map_anytype = map_map_anytype
+
+ @property
+ def anytype_1(self):
+ """Gets the anytype_1 of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The anytype_1 of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: object
+ """
+ return self._anytype_1
+
+ @anytype_1.setter
+ def anytype_1(self, anytype_1):
+ """Sets the anytype_1 of this AdditionalPropertiesClass.
+
+
+ :param anytype_1: The anytype_1 of this AdditionalPropertiesClass. # noqa: E501
+ :type: object
+ """
+
+ self._anytype_1 = anytype_1
+
+ @property
+ def anytype_2(self):
+ """Gets the anytype_2 of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The anytype_2 of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: object
+ """
+ return self._anytype_2
+
+ @anytype_2.setter
+ def anytype_2(self, anytype_2):
+ """Sets the anytype_2 of this AdditionalPropertiesClass.
+
+
+ :param anytype_2: The anytype_2 of this AdditionalPropertiesClass. # noqa: E501
+ :type: object
+ """
+
+ self._anytype_2 = anytype_2
+
+ @property
+ def anytype_3(self):
+ """Gets the anytype_3 of this AdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The anytype_3 of this AdditionalPropertiesClass. # noqa: E501
+ :rtype: object
+ """
+ return self._anytype_3
+
+ @anytype_3.setter
+ def anytype_3(self, anytype_3):
+ """Sets the anytype_3 of this AdditionalPropertiesClass.
+
+
+ :param anytype_3: The anytype_3 of this AdditionalPropertiesClass. # noqa: E501
+ :type: object
+ """
+
+ self._anytype_3 = anytype_3
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesClass):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_integer.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_integer.py
new file mode 100644
index 0000000000..43bcf425a7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_integer.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesInteger(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name'
+ }
+
+ def __init__(self, name=None): # noqa: E501
+ """AdditionalPropertiesInteger - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+
+ @property
+ def name(self):
+ """Gets the name of this AdditionalPropertiesInteger. # noqa: E501
+
+
+ :return: The name of this AdditionalPropertiesInteger. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this AdditionalPropertiesInteger.
+
+
+ :param name: The name of this AdditionalPropertiesInteger. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesInteger):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_number.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_number.py
new file mode 100644
index 0000000000..b3e034035a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_number.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesNumber(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name'
+ }
+
+ def __init__(self, name=None): # noqa: E501
+ """AdditionalPropertiesNumber - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+
+ @property
+ def name(self):
+ """Gets the name of this AdditionalPropertiesNumber. # noqa: E501
+
+
+ :return: The name of this AdditionalPropertiesNumber. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this AdditionalPropertiesNumber.
+
+
+ :param name: The name of this AdditionalPropertiesNumber. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesNumber):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_object.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_object.py
new file mode 100644
index 0000000000..9ab56a4e55
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_object.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesObject(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name'
+ }
+
+ def __init__(self, name=None): # noqa: E501
+ """AdditionalPropertiesObject - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+
+ @property
+ def name(self):
+ """Gets the name of this AdditionalPropertiesObject. # noqa: E501
+
+
+ :return: The name of this AdditionalPropertiesObject. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this AdditionalPropertiesObject.
+
+
+ :param name: The name of this AdditionalPropertiesObject. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesObject):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_string.py b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_string.py
new file mode 100644
index 0000000000..4667186bdc
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/additional_properties_string.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class AdditionalPropertiesString(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name'
+ }
+
+ def __init__(self, name=None): # noqa: E501
+ """AdditionalPropertiesString - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+
+ @property
+ def name(self):
+ """Gets the name of this AdditionalPropertiesString. # noqa: E501
+
+
+ :return: The name of this AdditionalPropertiesString. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this AdditionalPropertiesString.
+
+
+ :param name: The name of this AdditionalPropertiesString. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, AdditionalPropertiesString):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/animal.py b/samples/client/petstore/python-experimental/petstore_api/models/animal.py
new file mode 100644
index 0000000000..552ef0e832
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/animal.py
@@ -0,0 +1,150 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Animal(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'class_name': 'str',
+ 'color': 'str'
+ }
+
+ attribute_map = {
+ 'class_name': 'className',
+ 'color': 'color'
+ }
+
+ discriminator_value_class_map = {
+ 'Dog': 'Dog',
+ 'Cat': 'Cat'
+ }
+
+ def __init__(self, class_name=None, color='red'): # noqa: E501
+ """Animal - a model defined in OpenAPI""" # noqa: E501
+
+ self._class_name = None
+ self._color = None
+ self.discriminator = 'class_name'
+
+ self.class_name = class_name
+ if color is not None:
+ self.color = color
+
+ @property
+ def class_name(self):
+ """Gets the class_name of this Animal. # noqa: E501
+
+
+ :return: The class_name of this Animal. # noqa: E501
+ :rtype: str
+ """
+ return self._class_name
+
+ @class_name.setter
+ def class_name(self, class_name):
+ """Sets the class_name of this Animal.
+
+
+ :param class_name: The class_name of this Animal. # noqa: E501
+ :type: str
+ """
+ if class_name is None:
+ raise ValueError("Invalid value for `class_name`, must not be `None`") # noqa: E501
+
+ self._class_name = class_name
+
+ @property
+ def color(self):
+ """Gets the color of this Animal. # noqa: E501
+
+
+ :return: The color of this Animal. # noqa: E501
+ :rtype: str
+ """
+ return self._color
+
+ @color.setter
+ def color(self, color):
+ """Sets the color of this Animal.
+
+
+ :param color: The color of this Animal. # noqa: E501
+ :type: str
+ """
+
+ self._color = color
+
+ def get_real_child_model(self, data):
+ """Returns the real base class specified by the discriminator"""
+ discriminator_key = self.attribute_map[self.discriminator]
+ discriminator_value = data[discriminator_key]
+ return self.discriminator_value_class_map.get(discriminator_value)
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Animal):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/api_response.py b/samples/client/petstore/python-experimental/petstore_api/models/api_response.py
new file mode 100644
index 0000000000..190c3df345
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/api_response.py
@@ -0,0 +1,164 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class ApiResponse(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'code': 'int',
+ 'type': 'str',
+ 'message': 'str'
+ }
+
+ attribute_map = {
+ 'code': 'code',
+ 'type': 'type',
+ 'message': 'message'
+ }
+
+ def __init__(self, code=None, type=None, message=None): # noqa: E501
+ """ApiResponse - a model defined in OpenAPI""" # noqa: E501
+
+ self._code = None
+ self._type = None
+ self._message = None
+ self.discriminator = None
+
+ if code is not None:
+ self.code = code
+ if type is not None:
+ self.type = type
+ if message is not None:
+ self.message = message
+
+ @property
+ def code(self):
+ """Gets the code of this ApiResponse. # noqa: E501
+
+
+ :return: The code of this ApiResponse. # noqa: E501
+ :rtype: int
+ """
+ return self._code
+
+ @code.setter
+ def code(self, code):
+ """Sets the code of this ApiResponse.
+
+
+ :param code: The code of this ApiResponse. # noqa: E501
+ :type: int
+ """
+
+ self._code = code
+
+ @property
+ def type(self):
+ """Gets the type of this ApiResponse. # noqa: E501
+
+
+ :return: The type of this ApiResponse. # noqa: E501
+ :rtype: str
+ """
+ return self._type
+
+ @type.setter
+ def type(self, type):
+ """Sets the type of this ApiResponse.
+
+
+ :param type: The type of this ApiResponse. # noqa: E501
+ :type: str
+ """
+
+ self._type = type
+
+ @property
+ def message(self):
+ """Gets the message of this ApiResponse. # noqa: E501
+
+
+ :return: The message of this ApiResponse. # noqa: E501
+ :rtype: str
+ """
+ return self._message
+
+ @message.setter
+ def message(self, message):
+ """Sets the message of this ApiResponse.
+
+
+ :param message: The message of this ApiResponse. # noqa: E501
+ :type: str
+ """
+
+ self._message = message
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, ApiResponse):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/array_of_array_of_number_only.py b/samples/client/petstore/python-experimental/petstore_api/models/array_of_array_of_number_only.py
new file mode 100644
index 0000000000..ebf9642980
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/array_of_array_of_number_only.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class ArrayOfArrayOfNumberOnly(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'array_array_number': 'list[list[float]]'
+ }
+
+ attribute_map = {
+ 'array_array_number': 'ArrayArrayNumber'
+ }
+
+ def __init__(self, array_array_number=None): # noqa: E501
+ """ArrayOfArrayOfNumberOnly - a model defined in OpenAPI""" # noqa: E501
+
+ self._array_array_number = None
+ self.discriminator = None
+
+ if array_array_number is not None:
+ self.array_array_number = array_array_number
+
+ @property
+ def array_array_number(self):
+ """Gets the array_array_number of this ArrayOfArrayOfNumberOnly. # noqa: E501
+
+
+ :return: The array_array_number of this ArrayOfArrayOfNumberOnly. # noqa: E501
+ :rtype: list[list[float]]
+ """
+ return self._array_array_number
+
+ @array_array_number.setter
+ def array_array_number(self, array_array_number):
+ """Sets the array_array_number of this ArrayOfArrayOfNumberOnly.
+
+
+ :param array_array_number: The array_array_number of this ArrayOfArrayOfNumberOnly. # noqa: E501
+ :type: list[list[float]]
+ """
+
+ self._array_array_number = array_array_number
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, ArrayOfArrayOfNumberOnly):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/array_of_number_only.py b/samples/client/petstore/python-experimental/petstore_api/models/array_of_number_only.py
new file mode 100644
index 0000000000..8e1837c46b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/array_of_number_only.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class ArrayOfNumberOnly(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'array_number': 'list[float]'
+ }
+
+ attribute_map = {
+ 'array_number': 'ArrayNumber'
+ }
+
+ def __init__(self, array_number=None): # noqa: E501
+ """ArrayOfNumberOnly - a model defined in OpenAPI""" # noqa: E501
+
+ self._array_number = None
+ self.discriminator = None
+
+ if array_number is not None:
+ self.array_number = array_number
+
+ @property
+ def array_number(self):
+ """Gets the array_number of this ArrayOfNumberOnly. # noqa: E501
+
+
+ :return: The array_number of this ArrayOfNumberOnly. # noqa: E501
+ :rtype: list[float]
+ """
+ return self._array_number
+
+ @array_number.setter
+ def array_number(self, array_number):
+ """Sets the array_number of this ArrayOfNumberOnly.
+
+
+ :param array_number: The array_number of this ArrayOfNumberOnly. # noqa: E501
+ :type: list[float]
+ """
+
+ self._array_number = array_number
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, ArrayOfNumberOnly):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/array_test.py b/samples/client/petstore/python-experimental/petstore_api/models/array_test.py
new file mode 100644
index 0000000000..f548fef3ee
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/array_test.py
@@ -0,0 +1,164 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class ArrayTest(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'array_of_string': 'list[str]',
+ 'array_array_of_integer': 'list[list[int]]',
+ 'array_array_of_model': 'list[list[ReadOnlyFirst]]'
+ }
+
+ attribute_map = {
+ 'array_of_string': 'array_of_string',
+ 'array_array_of_integer': 'array_array_of_integer',
+ 'array_array_of_model': 'array_array_of_model'
+ }
+
+ def __init__(self, array_of_string=None, array_array_of_integer=None, array_array_of_model=None): # noqa: E501
+ """ArrayTest - a model defined in OpenAPI""" # noqa: E501
+
+ self._array_of_string = None
+ self._array_array_of_integer = None
+ self._array_array_of_model = None
+ self.discriminator = None
+
+ if array_of_string is not None:
+ self.array_of_string = array_of_string
+ if array_array_of_integer is not None:
+ self.array_array_of_integer = array_array_of_integer
+ if array_array_of_model is not None:
+ self.array_array_of_model = array_array_of_model
+
+ @property
+ def array_of_string(self):
+ """Gets the array_of_string of this ArrayTest. # noqa: E501
+
+
+ :return: The array_of_string of this ArrayTest. # noqa: E501
+ :rtype: list[str]
+ """
+ return self._array_of_string
+
+ @array_of_string.setter
+ def array_of_string(self, array_of_string):
+ """Sets the array_of_string of this ArrayTest.
+
+
+ :param array_of_string: The array_of_string of this ArrayTest. # noqa: E501
+ :type: list[str]
+ """
+
+ self._array_of_string = array_of_string
+
+ @property
+ def array_array_of_integer(self):
+ """Gets the array_array_of_integer of this ArrayTest. # noqa: E501
+
+
+ :return: The array_array_of_integer of this ArrayTest. # noqa: E501
+ :rtype: list[list[int]]
+ """
+ return self._array_array_of_integer
+
+ @array_array_of_integer.setter
+ def array_array_of_integer(self, array_array_of_integer):
+ """Sets the array_array_of_integer of this ArrayTest.
+
+
+ :param array_array_of_integer: The array_array_of_integer of this ArrayTest. # noqa: E501
+ :type: list[list[int]]
+ """
+
+ self._array_array_of_integer = array_array_of_integer
+
+ @property
+ def array_array_of_model(self):
+ """Gets the array_array_of_model of this ArrayTest. # noqa: E501
+
+
+ :return: The array_array_of_model of this ArrayTest. # noqa: E501
+ :rtype: list[list[ReadOnlyFirst]]
+ """
+ return self._array_array_of_model
+
+ @array_array_of_model.setter
+ def array_array_of_model(self, array_array_of_model):
+ """Sets the array_array_of_model of this ArrayTest.
+
+
+ :param array_array_of_model: The array_array_of_model of this ArrayTest. # noqa: E501
+ :type: list[list[ReadOnlyFirst]]
+ """
+
+ self._array_array_of_model = array_array_of_model
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, ArrayTest):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/capitalization.py b/samples/client/petstore/python-experimental/petstore_api/models/capitalization.py
new file mode 100644
index 0000000000..0da6b77e84
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/capitalization.py
@@ -0,0 +1,244 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Capitalization(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'small_camel': 'str',
+ 'capital_camel': 'str',
+ 'small_snake': 'str',
+ 'capital_snake': 'str',
+ 'sca_eth_flow_points': 'str',
+ 'att_name': 'str'
+ }
+
+ attribute_map = {
+ 'small_camel': 'smallCamel',
+ 'capital_camel': 'CapitalCamel',
+ 'small_snake': 'small_Snake',
+ 'capital_snake': 'Capital_Snake',
+ 'sca_eth_flow_points': 'SCA_ETH_Flow_Points',
+ 'att_name': 'ATT_NAME'
+ }
+
+ def __init__(self, small_camel=None, capital_camel=None, small_snake=None, capital_snake=None, sca_eth_flow_points=None, att_name=None): # noqa: E501
+ """Capitalization - a model defined in OpenAPI""" # noqa: E501
+
+ self._small_camel = None
+ self._capital_camel = None
+ self._small_snake = None
+ self._capital_snake = None
+ self._sca_eth_flow_points = None
+ self._att_name = None
+ self.discriminator = None
+
+ if small_camel is not None:
+ self.small_camel = small_camel
+ if capital_camel is not None:
+ self.capital_camel = capital_camel
+ if small_snake is not None:
+ self.small_snake = small_snake
+ if capital_snake is not None:
+ self.capital_snake = capital_snake
+ if sca_eth_flow_points is not None:
+ self.sca_eth_flow_points = sca_eth_flow_points
+ if att_name is not None:
+ self.att_name = att_name
+
+ @property
+ def small_camel(self):
+ """Gets the small_camel of this Capitalization. # noqa: E501
+
+
+ :return: The small_camel of this Capitalization. # noqa: E501
+ :rtype: str
+ """
+ return self._small_camel
+
+ @small_camel.setter
+ def small_camel(self, small_camel):
+ """Sets the small_camel of this Capitalization.
+
+
+ :param small_camel: The small_camel of this Capitalization. # noqa: E501
+ :type: str
+ """
+
+ self._small_camel = small_camel
+
+ @property
+ def capital_camel(self):
+ """Gets the capital_camel of this Capitalization. # noqa: E501
+
+
+ :return: The capital_camel of this Capitalization. # noqa: E501
+ :rtype: str
+ """
+ return self._capital_camel
+
+ @capital_camel.setter
+ def capital_camel(self, capital_camel):
+ """Sets the capital_camel of this Capitalization.
+
+
+ :param capital_camel: The capital_camel of this Capitalization. # noqa: E501
+ :type: str
+ """
+
+ self._capital_camel = capital_camel
+
+ @property
+ def small_snake(self):
+ """Gets the small_snake of this Capitalization. # noqa: E501
+
+
+ :return: The small_snake of this Capitalization. # noqa: E501
+ :rtype: str
+ """
+ return self._small_snake
+
+ @small_snake.setter
+ def small_snake(self, small_snake):
+ """Sets the small_snake of this Capitalization.
+
+
+ :param small_snake: The small_snake of this Capitalization. # noqa: E501
+ :type: str
+ """
+
+ self._small_snake = small_snake
+
+ @property
+ def capital_snake(self):
+ """Gets the capital_snake of this Capitalization. # noqa: E501
+
+
+ :return: The capital_snake of this Capitalization. # noqa: E501
+ :rtype: str
+ """
+ return self._capital_snake
+
+ @capital_snake.setter
+ def capital_snake(self, capital_snake):
+ """Sets the capital_snake of this Capitalization.
+
+
+ :param capital_snake: The capital_snake of this Capitalization. # noqa: E501
+ :type: str
+ """
+
+ self._capital_snake = capital_snake
+
+ @property
+ def sca_eth_flow_points(self):
+ """Gets the sca_eth_flow_points of this Capitalization. # noqa: E501
+
+
+ :return: The sca_eth_flow_points of this Capitalization. # noqa: E501
+ :rtype: str
+ """
+ return self._sca_eth_flow_points
+
+ @sca_eth_flow_points.setter
+ def sca_eth_flow_points(self, sca_eth_flow_points):
+ """Sets the sca_eth_flow_points of this Capitalization.
+
+
+ :param sca_eth_flow_points: The sca_eth_flow_points of this Capitalization. # noqa: E501
+ :type: str
+ """
+
+ self._sca_eth_flow_points = sca_eth_flow_points
+
+ @property
+ def att_name(self):
+ """Gets the att_name of this Capitalization. # noqa: E501
+
+ Name of the pet # noqa: E501
+
+ :return: The att_name of this Capitalization. # noqa: E501
+ :rtype: str
+ """
+ return self._att_name
+
+ @att_name.setter
+ def att_name(self, att_name):
+ """Sets the att_name of this Capitalization.
+
+ Name of the pet # noqa: E501
+
+ :param att_name: The att_name of this Capitalization. # noqa: E501
+ :type: str
+ """
+
+ self._att_name = att_name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Capitalization):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/cat.py b/samples/client/petstore/python-experimental/petstore_api/models/cat.py
new file mode 100644
index 0000000000..216e512353
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/cat.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Cat(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'declawed': 'bool'
+ }
+
+ attribute_map = {
+ 'declawed': 'declawed'
+ }
+
+ def __init__(self, declawed=None): # noqa: E501
+ """Cat - a model defined in OpenAPI""" # noqa: E501
+
+ self._declawed = None
+ self.discriminator = None
+
+ if declawed is not None:
+ self.declawed = declawed
+
+ @property
+ def declawed(self):
+ """Gets the declawed of this Cat. # noqa: E501
+
+
+ :return: The declawed of this Cat. # noqa: E501
+ :rtype: bool
+ """
+ return self._declawed
+
+ @declawed.setter
+ def declawed(self, declawed):
+ """Sets the declawed of this Cat.
+
+
+ :param declawed: The declawed of this Cat. # noqa: E501
+ :type: bool
+ """
+
+ self._declawed = declawed
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Cat):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/cat_all_of.py b/samples/client/petstore/python-experimental/petstore_api/models/cat_all_of.py
new file mode 100644
index 0000000000..3c90df84ec
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/cat_all_of.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class CatAllOf(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'declawed': 'bool'
+ }
+
+ attribute_map = {
+ 'declawed': 'declawed'
+ }
+
+ def __init__(self, declawed=None): # noqa: E501
+ """CatAllOf - a model defined in OpenAPI""" # noqa: E501
+
+ self._declawed = None
+ self.discriminator = None
+
+ if declawed is not None:
+ self.declawed = declawed
+
+ @property
+ def declawed(self):
+ """Gets the declawed of this CatAllOf. # noqa: E501
+
+
+ :return: The declawed of this CatAllOf. # noqa: E501
+ :rtype: bool
+ """
+ return self._declawed
+
+ @declawed.setter
+ def declawed(self, declawed):
+ """Sets the declawed of this CatAllOf.
+
+
+ :param declawed: The declawed of this CatAllOf. # noqa: E501
+ :type: bool
+ """
+
+ self._declawed = declawed
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, CatAllOf):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/category.py b/samples/client/petstore/python-experimental/petstore_api/models/category.py
new file mode 100644
index 0000000000..0e23c409e5
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/category.py
@@ -0,0 +1,139 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Category(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'id': 'int',
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'id': 'id',
+ 'name': 'name'
+ }
+
+ def __init__(self, id=None, name='default-name'): # noqa: E501
+ """Category - a model defined in OpenAPI""" # noqa: E501
+
+ self._id = None
+ self._name = None
+ self.discriminator = None
+
+ if id is not None:
+ self.id = id
+ self.name = name
+
+ @property
+ def id(self):
+ """Gets the id of this Category. # noqa: E501
+
+
+ :return: The id of this Category. # noqa: E501
+ :rtype: int
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """Sets the id of this Category.
+
+
+ :param id: The id of this Category. # noqa: E501
+ :type: int
+ """
+
+ self._id = id
+
+ @property
+ def name(self):
+ """Gets the name of this Category. # noqa: E501
+
+
+ :return: The name of this Category. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this Category.
+
+
+ :param name: The name of this Category. # noqa: E501
+ :type: str
+ """
+ if name is None:
+ raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Category):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/class_model.py b/samples/client/petstore/python-experimental/petstore_api/models/class_model.py
new file mode 100644
index 0000000000..88562beff8
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/class_model.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class ClassModel(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ '_class': 'str'
+ }
+
+ attribute_map = {
+ '_class': '_class'
+ }
+
+ def __init__(self, _class=None): # noqa: E501
+ """ClassModel - a model defined in OpenAPI""" # noqa: E501
+
+ self.__class = None
+ self.discriminator = None
+
+ if _class is not None:
+ self._class = _class
+
+ @property
+ def _class(self):
+ """Gets the _class of this ClassModel. # noqa: E501
+
+
+ :return: The _class of this ClassModel. # noqa: E501
+ :rtype: str
+ """
+ return self.__class
+
+ @_class.setter
+ def _class(self, _class):
+ """Sets the _class of this ClassModel.
+
+
+ :param _class: The _class of this ClassModel. # noqa: E501
+ :type: str
+ """
+
+ self.__class = _class
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, ClassModel):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/client.py b/samples/client/petstore/python-experimental/petstore_api/models/client.py
new file mode 100644
index 0000000000..b7083fd9bd
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/client.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Client(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'client': 'str'
+ }
+
+ attribute_map = {
+ 'client': 'client'
+ }
+
+ def __init__(self, client=None): # noqa: E501
+ """Client - a model defined in OpenAPI""" # noqa: E501
+
+ self._client = None
+ self.discriminator = None
+
+ if client is not None:
+ self.client = client
+
+ @property
+ def client(self):
+ """Gets the client of this Client. # noqa: E501
+
+
+ :return: The client of this Client. # noqa: E501
+ :rtype: str
+ """
+ return self._client
+
+ @client.setter
+ def client(self, client):
+ """Sets the client of this Client.
+
+
+ :param client: The client of this Client. # noqa: E501
+ :type: str
+ """
+
+ self._client = client
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Client):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/dog.py b/samples/client/petstore/python-experimental/petstore_api/models/dog.py
new file mode 100644
index 0000000000..c325cb252c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/dog.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Dog(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'breed': 'str'
+ }
+
+ attribute_map = {
+ 'breed': 'breed'
+ }
+
+ def __init__(self, breed=None): # noqa: E501
+ """Dog - a model defined in OpenAPI""" # noqa: E501
+
+ self._breed = None
+ self.discriminator = None
+
+ if breed is not None:
+ self.breed = breed
+
+ @property
+ def breed(self):
+ """Gets the breed of this Dog. # noqa: E501
+
+
+ :return: The breed of this Dog. # noqa: E501
+ :rtype: str
+ """
+ return self._breed
+
+ @breed.setter
+ def breed(self, breed):
+ """Sets the breed of this Dog.
+
+
+ :param breed: The breed of this Dog. # noqa: E501
+ :type: str
+ """
+
+ self._breed = breed
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Dog):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/dog_all_of.py b/samples/client/petstore/python-experimental/petstore_api/models/dog_all_of.py
new file mode 100644
index 0000000000..b6328b0558
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/dog_all_of.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class DogAllOf(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'breed': 'str'
+ }
+
+ attribute_map = {
+ 'breed': 'breed'
+ }
+
+ def __init__(self, breed=None): # noqa: E501
+ """DogAllOf - a model defined in OpenAPI""" # noqa: E501
+
+ self._breed = None
+ self.discriminator = None
+
+ if breed is not None:
+ self.breed = breed
+
+ @property
+ def breed(self):
+ """Gets the breed of this DogAllOf. # noqa: E501
+
+
+ :return: The breed of this DogAllOf. # noqa: E501
+ :rtype: str
+ """
+ return self._breed
+
+ @breed.setter
+ def breed(self, breed):
+ """Sets the breed of this DogAllOf.
+
+
+ :param breed: The breed of this DogAllOf. # noqa: E501
+ :type: str
+ """
+
+ self._breed = breed
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, DogAllOf):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/enum_arrays.py b/samples/client/petstore/python-experimental/petstore_api/models/enum_arrays.py
new file mode 100644
index 0000000000..00aa21d04d
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/enum_arrays.py
@@ -0,0 +1,151 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class EnumArrays(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'just_symbol': 'str',
+ 'array_enum': 'list[str]'
+ }
+
+ attribute_map = {
+ 'just_symbol': 'just_symbol',
+ 'array_enum': 'array_enum'
+ }
+
+ def __init__(self, just_symbol=None, array_enum=None): # noqa: E501
+ """EnumArrays - a model defined in OpenAPI""" # noqa: E501
+
+ self._just_symbol = None
+ self._array_enum = None
+ self.discriminator = None
+
+ if just_symbol is not None:
+ self.just_symbol = just_symbol
+ if array_enum is not None:
+ self.array_enum = array_enum
+
+ @property
+ def just_symbol(self):
+ """Gets the just_symbol of this EnumArrays. # noqa: E501
+
+
+ :return: The just_symbol of this EnumArrays. # noqa: E501
+ :rtype: str
+ """
+ return self._just_symbol
+
+ @just_symbol.setter
+ def just_symbol(self, just_symbol):
+ """Sets the just_symbol of this EnumArrays.
+
+
+ :param just_symbol: The just_symbol of this EnumArrays. # noqa: E501
+ :type: str
+ """
+ allowed_values = [">=", "$"] # noqa: E501
+ if just_symbol not in allowed_values:
+ raise ValueError(
+ "Invalid value for `just_symbol` ({0}), must be one of {1}" # noqa: E501
+ .format(just_symbol, allowed_values)
+ )
+
+ self._just_symbol = just_symbol
+
+ @property
+ def array_enum(self):
+ """Gets the array_enum of this EnumArrays. # noqa: E501
+
+
+ :return: The array_enum of this EnumArrays. # noqa: E501
+ :rtype: list[str]
+ """
+ return self._array_enum
+
+ @array_enum.setter
+ def array_enum(self, array_enum):
+ """Sets the array_enum of this EnumArrays.
+
+
+ :param array_enum: The array_enum of this EnumArrays. # noqa: E501
+ :type: list[str]
+ """
+ allowed_values = ["fish", "crab"] # noqa: E501
+ if not set(array_enum).issubset(set(allowed_values)):
+ raise ValueError(
+ "Invalid values for `array_enum` [{0}], must be a subset of [{1}]" # noqa: E501
+ .format(", ".join(map(str, set(array_enum) - set(allowed_values))), # noqa: E501
+ ", ".join(map(str, allowed_values)))
+ )
+
+ self._array_enum = array_enum
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, EnumArrays):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/enum_class.py b/samples/client/petstore/python-experimental/petstore_api/models/enum_class.py
new file mode 100644
index 0000000000..3c1aa27975
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/enum_class.py
@@ -0,0 +1,91 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class EnumClass(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ allowed enum values
+ """
+ _ABC = "_abc"
+ _EFG = "-efg"
+ _XYZ_ = "(xyz)"
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ }
+
+ attribute_map = {
+ }
+
+ def __init__(self): # noqa: E501
+ """EnumClass - a model defined in OpenAPI""" # noqa: E501
+ self.discriminator = None
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, EnumClass):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/enum_test.py b/samples/client/petstore/python-experimental/petstore_api/models/enum_test.py
new file mode 100644
index 0000000000..11e5020363
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/enum_test.py
@@ -0,0 +1,241 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class EnumTest(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'enum_string': 'str',
+ 'enum_string_required': 'str',
+ 'enum_integer': 'int',
+ 'enum_number': 'float',
+ 'outer_enum': 'OuterEnum'
+ }
+
+ attribute_map = {
+ 'enum_string': 'enum_string',
+ 'enum_string_required': 'enum_string_required',
+ 'enum_integer': 'enum_integer',
+ 'enum_number': 'enum_number',
+ 'outer_enum': 'outerEnum'
+ }
+
+ def __init__(self, enum_string=None, enum_string_required=None, enum_integer=None, enum_number=None, outer_enum=None): # noqa: E501
+ """EnumTest - a model defined in OpenAPI""" # noqa: E501
+
+ self._enum_string = None
+ self._enum_string_required = None
+ self._enum_integer = None
+ self._enum_number = None
+ self._outer_enum = None
+ self.discriminator = None
+
+ if enum_string is not None:
+ self.enum_string = enum_string
+ self.enum_string_required = enum_string_required
+ if enum_integer is not None:
+ self.enum_integer = enum_integer
+ if enum_number is not None:
+ self.enum_number = enum_number
+ if outer_enum is not None:
+ self.outer_enum = outer_enum
+
+ @property
+ def enum_string(self):
+ """Gets the enum_string of this EnumTest. # noqa: E501
+
+
+ :return: The enum_string of this EnumTest. # noqa: E501
+ :rtype: str
+ """
+ return self._enum_string
+
+ @enum_string.setter
+ def enum_string(self, enum_string):
+ """Sets the enum_string of this EnumTest.
+
+
+ :param enum_string: The enum_string of this EnumTest. # noqa: E501
+ :type: str
+ """
+ allowed_values = ["UPPER", "lower", ""] # noqa: E501
+ if enum_string not in allowed_values:
+ raise ValueError(
+ "Invalid value for `enum_string` ({0}), must be one of {1}" # noqa: E501
+ .format(enum_string, allowed_values)
+ )
+
+ self._enum_string = enum_string
+
+ @property
+ def enum_string_required(self):
+ """Gets the enum_string_required of this EnumTest. # noqa: E501
+
+
+ :return: The enum_string_required of this EnumTest. # noqa: E501
+ :rtype: str
+ """
+ return self._enum_string_required
+
+ @enum_string_required.setter
+ def enum_string_required(self, enum_string_required):
+ """Sets the enum_string_required of this EnumTest.
+
+
+ :param enum_string_required: The enum_string_required of this EnumTest. # noqa: E501
+ :type: str
+ """
+ if enum_string_required is None:
+ raise ValueError("Invalid value for `enum_string_required`, must not be `None`") # noqa: E501
+ allowed_values = ["UPPER", "lower", ""] # noqa: E501
+ if enum_string_required not in allowed_values:
+ raise ValueError(
+ "Invalid value for `enum_string_required` ({0}), must be one of {1}" # noqa: E501
+ .format(enum_string_required, allowed_values)
+ )
+
+ self._enum_string_required = enum_string_required
+
+ @property
+ def enum_integer(self):
+ """Gets the enum_integer of this EnumTest. # noqa: E501
+
+
+ :return: The enum_integer of this EnumTest. # noqa: E501
+ :rtype: int
+ """
+ return self._enum_integer
+
+ @enum_integer.setter
+ def enum_integer(self, enum_integer):
+ """Sets the enum_integer of this EnumTest.
+
+
+ :param enum_integer: The enum_integer of this EnumTest. # noqa: E501
+ :type: int
+ """
+ allowed_values = [1, -1] # noqa: E501
+ if enum_integer not in allowed_values:
+ raise ValueError(
+ "Invalid value for `enum_integer` ({0}), must be one of {1}" # noqa: E501
+ .format(enum_integer, allowed_values)
+ )
+
+ self._enum_integer = enum_integer
+
+ @property
+ def enum_number(self):
+ """Gets the enum_number of this EnumTest. # noqa: E501
+
+
+ :return: The enum_number of this EnumTest. # noqa: E501
+ :rtype: float
+ """
+ return self._enum_number
+
+ @enum_number.setter
+ def enum_number(self, enum_number):
+ """Sets the enum_number of this EnumTest.
+
+
+ :param enum_number: The enum_number of this EnumTest. # noqa: E501
+ :type: float
+ """
+ allowed_values = [1.1, -1.2] # noqa: E501
+ if enum_number not in allowed_values:
+ raise ValueError(
+ "Invalid value for `enum_number` ({0}), must be one of {1}" # noqa: E501
+ .format(enum_number, allowed_values)
+ )
+
+ self._enum_number = enum_number
+
+ @property
+ def outer_enum(self):
+ """Gets the outer_enum of this EnumTest. # noqa: E501
+
+
+ :return: The outer_enum of this EnumTest. # noqa: E501
+ :rtype: OuterEnum
+ """
+ return self._outer_enum
+
+ @outer_enum.setter
+ def outer_enum(self, outer_enum):
+ """Sets the outer_enum of this EnumTest.
+
+
+ :param outer_enum: The outer_enum of this EnumTest. # noqa: E501
+ :type: OuterEnum
+ """
+
+ self._outer_enum = outer_enum
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, EnumTest):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/file.py b/samples/client/petstore/python-experimental/petstore_api/models/file.py
new file mode 100644
index 0000000000..475f86b799
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/file.py
@@ -0,0 +1,114 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class File(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'source_uri': 'str'
+ }
+
+ attribute_map = {
+ 'source_uri': 'sourceURI'
+ }
+
+ def __init__(self, source_uri=None): # noqa: E501
+ """File - a model defined in OpenAPI""" # noqa: E501
+
+ self._source_uri = None
+ self.discriminator = None
+
+ if source_uri is not None:
+ self.source_uri = source_uri
+
+ @property
+ def source_uri(self):
+ """Gets the source_uri of this File. # noqa: E501
+
+ Test capitalization # noqa: E501
+
+ :return: The source_uri of this File. # noqa: E501
+ :rtype: str
+ """
+ return self._source_uri
+
+ @source_uri.setter
+ def source_uri(self, source_uri):
+ """Sets the source_uri of this File.
+
+ Test capitalization # noqa: E501
+
+ :param source_uri: The source_uri of this File. # noqa: E501
+ :type: str
+ """
+
+ self._source_uri = source_uri
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, File):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/file_schema_test_class.py b/samples/client/petstore/python-experimental/petstore_api/models/file_schema_test_class.py
new file mode 100644
index 0000000000..9f3b5bdc17
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/file_schema_test_class.py
@@ -0,0 +1,138 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class FileSchemaTestClass(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'file': 'File',
+ 'files': 'list[File]'
+ }
+
+ attribute_map = {
+ 'file': 'file',
+ 'files': 'files'
+ }
+
+ def __init__(self, file=None, files=None): # noqa: E501
+ """FileSchemaTestClass - a model defined in OpenAPI""" # noqa: E501
+
+ self._file = None
+ self._files = None
+ self.discriminator = None
+
+ if file is not None:
+ self.file = file
+ if files is not None:
+ self.files = files
+
+ @property
+ def file(self):
+ """Gets the file of this FileSchemaTestClass. # noqa: E501
+
+
+ :return: The file of this FileSchemaTestClass. # noqa: E501
+ :rtype: File
+ """
+ return self._file
+
+ @file.setter
+ def file(self, file):
+ """Sets the file of this FileSchemaTestClass.
+
+
+ :param file: The file of this FileSchemaTestClass. # noqa: E501
+ :type: File
+ """
+
+ self._file = file
+
+ @property
+ def files(self):
+ """Gets the files of this FileSchemaTestClass. # noqa: E501
+
+
+ :return: The files of this FileSchemaTestClass. # noqa: E501
+ :rtype: list[File]
+ """
+ return self._files
+
+ @files.setter
+ def files(self, files):
+ """Sets the files of this FileSchemaTestClass.
+
+
+ :param files: The files of this FileSchemaTestClass. # noqa: E501
+ :type: list[File]
+ """
+
+ self._files = files
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, FileSchemaTestClass):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/format_test.py b/samples/client/petstore/python-experimental/petstore_api/models/format_test.py
new file mode 100644
index 0000000000..c27d6394db
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/format_test.py
@@ -0,0 +1,456 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class FormatTest(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'integer': 'int',
+ 'int32': 'int',
+ 'int64': 'int',
+ 'number': 'float',
+ 'float': 'float',
+ 'double': 'float',
+ 'string': 'str',
+ 'byte': 'str',
+ 'binary': 'file',
+ 'date': 'date',
+ 'date_time': 'datetime',
+ 'uuid': 'str',
+ 'password': 'str'
+ }
+
+ attribute_map = {
+ 'integer': 'integer',
+ 'int32': 'int32',
+ 'int64': 'int64',
+ 'number': 'number',
+ 'float': 'float',
+ 'double': 'double',
+ 'string': 'string',
+ 'byte': 'byte',
+ 'binary': 'binary',
+ 'date': 'date',
+ 'date_time': 'dateTime',
+ 'uuid': 'uuid',
+ 'password': 'password'
+ }
+
+ def __init__(self, integer=None, int32=None, int64=None, number=None, float=None, double=None, string=None, byte=None, binary=None, date=None, date_time=None, uuid=None, password=None): # noqa: E501
+ """FormatTest - a model defined in OpenAPI""" # noqa: E501
+
+ self._integer = None
+ self._int32 = None
+ self._int64 = None
+ self._number = None
+ self._float = None
+ self._double = None
+ self._string = None
+ self._byte = None
+ self._binary = None
+ self._date = None
+ self._date_time = None
+ self._uuid = None
+ self._password = None
+ self.discriminator = None
+
+ if integer is not None:
+ self.integer = integer
+ if int32 is not None:
+ self.int32 = int32
+ if int64 is not None:
+ self.int64 = int64
+ self.number = number
+ if float is not None:
+ self.float = float
+ if double is not None:
+ self.double = double
+ if string is not None:
+ self.string = string
+ self.byte = byte
+ if binary is not None:
+ self.binary = binary
+ self.date = date
+ if date_time is not None:
+ self.date_time = date_time
+ if uuid is not None:
+ self.uuid = uuid
+ self.password = password
+
+ @property
+ def integer(self):
+ """Gets the integer of this FormatTest. # noqa: E501
+
+
+ :return: The integer of this FormatTest. # noqa: E501
+ :rtype: int
+ """
+ return self._integer
+
+ @integer.setter
+ def integer(self, integer):
+ """Sets the integer of this FormatTest.
+
+
+ :param integer: The integer of this FormatTest. # noqa: E501
+ :type: int
+ """
+ if integer is not None and integer > 100: # noqa: E501
+ raise ValueError("Invalid value for `integer`, must be a value less than or equal to `100`") # noqa: E501
+ if integer is not None and integer < 10: # noqa: E501
+ raise ValueError("Invalid value for `integer`, must be a value greater than or equal to `10`") # noqa: E501
+
+ self._integer = integer
+
+ @property
+ def int32(self):
+ """Gets the int32 of this FormatTest. # noqa: E501
+
+
+ :return: The int32 of this FormatTest. # noqa: E501
+ :rtype: int
+ """
+ return self._int32
+
+ @int32.setter
+ def int32(self, int32):
+ """Sets the int32 of this FormatTest.
+
+
+ :param int32: The int32 of this FormatTest. # noqa: E501
+ :type: int
+ """
+ if int32 is not None and int32 > 200: # noqa: E501
+ raise ValueError("Invalid value for `int32`, must be a value less than or equal to `200`") # noqa: E501
+ if int32 is not None and int32 < 20: # noqa: E501
+ raise ValueError("Invalid value for `int32`, must be a value greater than or equal to `20`") # noqa: E501
+
+ self._int32 = int32
+
+ @property
+ def int64(self):
+ """Gets the int64 of this FormatTest. # noqa: E501
+
+
+ :return: The int64 of this FormatTest. # noqa: E501
+ :rtype: int
+ """
+ return self._int64
+
+ @int64.setter
+ def int64(self, int64):
+ """Sets the int64 of this FormatTest.
+
+
+ :param int64: The int64 of this FormatTest. # noqa: E501
+ :type: int
+ """
+
+ self._int64 = int64
+
+ @property
+ def number(self):
+ """Gets the number of this FormatTest. # noqa: E501
+
+
+ :return: The number of this FormatTest. # noqa: E501
+ :rtype: float
+ """
+ return self._number
+
+ @number.setter
+ def number(self, number):
+ """Sets the number of this FormatTest.
+
+
+ :param number: The number of this FormatTest. # noqa: E501
+ :type: float
+ """
+ if number is None:
+ raise ValueError("Invalid value for `number`, must not be `None`") # noqa: E501
+ if number is not None and number > 543.2: # noqa: E501
+ raise ValueError("Invalid value for `number`, must be a value less than or equal to `543.2`") # noqa: E501
+ if number is not None and number < 32.1: # noqa: E501
+ raise ValueError("Invalid value for `number`, must be a value greater than or equal to `32.1`") # noqa: E501
+
+ self._number = number
+
+ @property
+ def float(self):
+ """Gets the float of this FormatTest. # noqa: E501
+
+
+ :return: The float of this FormatTest. # noqa: E501
+ :rtype: float
+ """
+ return self._float
+
+ @float.setter
+ def float(self, float):
+ """Sets the float of this FormatTest.
+
+
+ :param float: The float of this FormatTest. # noqa: E501
+ :type: float
+ """
+ if float is not None and float > 987.6: # noqa: E501
+ raise ValueError("Invalid value for `float`, must be a value less than or equal to `987.6`") # noqa: E501
+ if float is not None and float < 54.3: # noqa: E501
+ raise ValueError("Invalid value for `float`, must be a value greater than or equal to `54.3`") # noqa: E501
+
+ self._float = float
+
+ @property
+ def double(self):
+ """Gets the double of this FormatTest. # noqa: E501
+
+
+ :return: The double of this FormatTest. # noqa: E501
+ :rtype: float
+ """
+ return self._double
+
+ @double.setter
+ def double(self, double):
+ """Sets the double of this FormatTest.
+
+
+ :param double: The double of this FormatTest. # noqa: E501
+ :type: float
+ """
+ if double is not None and double > 123.4: # noqa: E501
+ raise ValueError("Invalid value for `double`, must be a value less than or equal to `123.4`") # noqa: E501
+ if double is not None and double < 67.8: # noqa: E501
+ raise ValueError("Invalid value for `double`, must be a value greater than or equal to `67.8`") # noqa: E501
+
+ self._double = double
+
+ @property
+ def string(self):
+ """Gets the string of this FormatTest. # noqa: E501
+
+
+ :return: The string of this FormatTest. # noqa: E501
+ :rtype: str
+ """
+ return self._string
+
+ @string.setter
+ def string(self, string):
+ """Sets the string of this FormatTest.
+
+
+ :param string: The string of this FormatTest. # noqa: E501
+ :type: str
+ """
+ if string is not None and not re.search(r'[a-z]', string, flags=re.IGNORECASE): # noqa: E501
+ raise ValueError(r"Invalid value for `string`, must be a follow pattern or equal to `/[a-z]/i`") # noqa: E501
+
+ self._string = string
+
+ @property
+ def byte(self):
+ """Gets the byte of this FormatTest. # noqa: E501
+
+
+ :return: The byte of this FormatTest. # noqa: E501
+ :rtype: str
+ """
+ return self._byte
+
+ @byte.setter
+ def byte(self, byte):
+ """Sets the byte of this FormatTest.
+
+
+ :param byte: The byte of this FormatTest. # noqa: E501
+ :type: str
+ """
+ if byte is None:
+ raise ValueError("Invalid value for `byte`, must not be `None`") # noqa: E501
+ if byte is not None and not re.search(r'^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$', byte): # noqa: E501
+ raise ValueError(r"Invalid value for `byte`, must be a follow pattern or equal to `/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/`") # noqa: E501
+
+ self._byte = byte
+
+ @property
+ def binary(self):
+ """Gets the binary of this FormatTest. # noqa: E501
+
+
+ :return: The binary of this FormatTest. # noqa: E501
+ :rtype: file
+ """
+ return self._binary
+
+ @binary.setter
+ def binary(self, binary):
+ """Sets the binary of this FormatTest.
+
+
+ :param binary: The binary of this FormatTest. # noqa: E501
+ :type: file
+ """
+
+ self._binary = binary
+
+ @property
+ def date(self):
+ """Gets the date of this FormatTest. # noqa: E501
+
+
+ :return: The date of this FormatTest. # noqa: E501
+ :rtype: date
+ """
+ return self._date
+
+ @date.setter
+ def date(self, date):
+ """Sets the date of this FormatTest.
+
+
+ :param date: The date of this FormatTest. # noqa: E501
+ :type: date
+ """
+ if date is None:
+ raise ValueError("Invalid value for `date`, must not be `None`") # noqa: E501
+
+ self._date = date
+
+ @property
+ def date_time(self):
+ """Gets the date_time of this FormatTest. # noqa: E501
+
+
+ :return: The date_time of this FormatTest. # noqa: E501
+ :rtype: datetime
+ """
+ return self._date_time
+
+ @date_time.setter
+ def date_time(self, date_time):
+ """Sets the date_time of this FormatTest.
+
+
+ :param date_time: The date_time of this FormatTest. # noqa: E501
+ :type: datetime
+ """
+
+ self._date_time = date_time
+
+ @property
+ def uuid(self):
+ """Gets the uuid of this FormatTest. # noqa: E501
+
+
+ :return: The uuid of this FormatTest. # noqa: E501
+ :rtype: str
+ """
+ return self._uuid
+
+ @uuid.setter
+ def uuid(self, uuid):
+ """Sets the uuid of this FormatTest.
+
+
+ :param uuid: The uuid of this FormatTest. # noqa: E501
+ :type: str
+ """
+
+ self._uuid = uuid
+
+ @property
+ def password(self):
+ """Gets the password of this FormatTest. # noqa: E501
+
+
+ :return: The password of this FormatTest. # noqa: E501
+ :rtype: str
+ """
+ return self._password
+
+ @password.setter
+ def password(self, password):
+ """Sets the password of this FormatTest.
+
+
+ :param password: The password of this FormatTest. # noqa: E501
+ :type: str
+ """
+ if password is None:
+ raise ValueError("Invalid value for `password`, must not be `None`") # noqa: E501
+ if password is not None and len(password) > 64:
+ raise ValueError("Invalid value for `password`, length must be less than or equal to `64`") # noqa: E501
+ if password is not None and len(password) < 10:
+ raise ValueError("Invalid value for `password`, length must be greater than or equal to `10`") # noqa: E501
+
+ self._password = password
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, FormatTest):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/has_only_read_only.py b/samples/client/petstore/python-experimental/petstore_api/models/has_only_read_only.py
new file mode 100644
index 0000000000..7c8d921a2d
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/has_only_read_only.py
@@ -0,0 +1,138 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class HasOnlyReadOnly(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'bar': 'str',
+ 'foo': 'str'
+ }
+
+ attribute_map = {
+ 'bar': 'bar',
+ 'foo': 'foo'
+ }
+
+ def __init__(self, bar=None, foo=None): # noqa: E501
+ """HasOnlyReadOnly - a model defined in OpenAPI""" # noqa: E501
+
+ self._bar = None
+ self._foo = None
+ self.discriminator = None
+
+ if bar is not None:
+ self.bar = bar
+ if foo is not None:
+ self.foo = foo
+
+ @property
+ def bar(self):
+ """Gets the bar of this HasOnlyReadOnly. # noqa: E501
+
+
+ :return: The bar of this HasOnlyReadOnly. # noqa: E501
+ :rtype: str
+ """
+ return self._bar
+
+ @bar.setter
+ def bar(self, bar):
+ """Sets the bar of this HasOnlyReadOnly.
+
+
+ :param bar: The bar of this HasOnlyReadOnly. # noqa: E501
+ :type: str
+ """
+
+ self._bar = bar
+
+ @property
+ def foo(self):
+ """Gets the foo of this HasOnlyReadOnly. # noqa: E501
+
+
+ :return: The foo of this HasOnlyReadOnly. # noqa: E501
+ :rtype: str
+ """
+ return self._foo
+
+ @foo.setter
+ def foo(self, foo):
+ """Sets the foo of this HasOnlyReadOnly.
+
+
+ :param foo: The foo of this HasOnlyReadOnly. # noqa: E501
+ :type: str
+ """
+
+ self._foo = foo
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, HasOnlyReadOnly):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/list.py b/samples/client/petstore/python-experimental/petstore_api/models/list.py
new file mode 100644
index 0000000000..74fc3719aa
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/list.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class List(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ '_123_list': 'str'
+ }
+
+ attribute_map = {
+ '_123_list': '123-list'
+ }
+
+ def __init__(self, _123_list=None): # noqa: E501
+ """List - a model defined in OpenAPI""" # noqa: E501
+
+ self.__123_list = None
+ self.discriminator = None
+
+ if _123_list is not None:
+ self._123_list = _123_list
+
+ @property
+ def _123_list(self):
+ """Gets the _123_list of this List. # noqa: E501
+
+
+ :return: The _123_list of this List. # noqa: E501
+ :rtype: str
+ """
+ return self.__123_list
+
+ @_123_list.setter
+ def _123_list(self, _123_list):
+ """Sets the _123_list of this List.
+
+
+ :param _123_list: The _123_list of this List. # noqa: E501
+ :type: str
+ """
+
+ self.__123_list = _123_list
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, List):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/map_test.py b/samples/client/petstore/python-experimental/petstore_api/models/map_test.py
new file mode 100644
index 0000000000..cdfb936529
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/map_test.py
@@ -0,0 +1,197 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class MapTest(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'map_map_of_string': 'dict(str, dict(str, str))',
+ 'map_of_enum_string': 'dict(str, str)',
+ 'direct_map': 'dict(str, bool)',
+ 'indirect_map': 'dict(str, bool)'
+ }
+
+ attribute_map = {
+ 'map_map_of_string': 'map_map_of_string',
+ 'map_of_enum_string': 'map_of_enum_string',
+ 'direct_map': 'direct_map',
+ 'indirect_map': 'indirect_map'
+ }
+
+ def __init__(self, map_map_of_string=None, map_of_enum_string=None, direct_map=None, indirect_map=None): # noqa: E501
+ """MapTest - a model defined in OpenAPI""" # noqa: E501
+
+ self._map_map_of_string = None
+ self._map_of_enum_string = None
+ self._direct_map = None
+ self._indirect_map = None
+ self.discriminator = None
+
+ if map_map_of_string is not None:
+ self.map_map_of_string = map_map_of_string
+ if map_of_enum_string is not None:
+ self.map_of_enum_string = map_of_enum_string
+ if direct_map is not None:
+ self.direct_map = direct_map
+ if indirect_map is not None:
+ self.indirect_map = indirect_map
+
+ @property
+ def map_map_of_string(self):
+ """Gets the map_map_of_string of this MapTest. # noqa: E501
+
+
+ :return: The map_map_of_string of this MapTest. # noqa: E501
+ :rtype: dict(str, dict(str, str))
+ """
+ return self._map_map_of_string
+
+ @map_map_of_string.setter
+ def map_map_of_string(self, map_map_of_string):
+ """Sets the map_map_of_string of this MapTest.
+
+
+ :param map_map_of_string: The map_map_of_string of this MapTest. # noqa: E501
+ :type: dict(str, dict(str, str))
+ """
+
+ self._map_map_of_string = map_map_of_string
+
+ @property
+ def map_of_enum_string(self):
+ """Gets the map_of_enum_string of this MapTest. # noqa: E501
+
+
+ :return: The map_of_enum_string of this MapTest. # noqa: E501
+ :rtype: dict(str, str)
+ """
+ return self._map_of_enum_string
+
+ @map_of_enum_string.setter
+ def map_of_enum_string(self, map_of_enum_string):
+ """Sets the map_of_enum_string of this MapTest.
+
+
+ :param map_of_enum_string: The map_of_enum_string of this MapTest. # noqa: E501
+ :type: dict(str, str)
+ """
+ allowed_values = ["UPPER", "lower"] # noqa: E501
+ if not set(map_of_enum_string.keys()).issubset(set(allowed_values)):
+ raise ValueError(
+ "Invalid keys in `map_of_enum_string` [{0}], must be a subset of [{1}]" # noqa: E501
+ .format(", ".join(map(str, set(map_of_enum_string.keys()) - set(allowed_values))), # noqa: E501
+ ", ".join(map(str, allowed_values)))
+ )
+
+ self._map_of_enum_string = map_of_enum_string
+
+ @property
+ def direct_map(self):
+ """Gets the direct_map of this MapTest. # noqa: E501
+
+
+ :return: The direct_map of this MapTest. # noqa: E501
+ :rtype: dict(str, bool)
+ """
+ return self._direct_map
+
+ @direct_map.setter
+ def direct_map(self, direct_map):
+ """Sets the direct_map of this MapTest.
+
+
+ :param direct_map: The direct_map of this MapTest. # noqa: E501
+ :type: dict(str, bool)
+ """
+
+ self._direct_map = direct_map
+
+ @property
+ def indirect_map(self):
+ """Gets the indirect_map of this MapTest. # noqa: E501
+
+
+ :return: The indirect_map of this MapTest. # noqa: E501
+ :rtype: dict(str, bool)
+ """
+ return self._indirect_map
+
+ @indirect_map.setter
+ def indirect_map(self, indirect_map):
+ """Sets the indirect_map of this MapTest.
+
+
+ :param indirect_map: The indirect_map of this MapTest. # noqa: E501
+ :type: dict(str, bool)
+ """
+
+ self._indirect_map = indirect_map
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, MapTest):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/mixed_properties_and_additional_properties_class.py b/samples/client/petstore/python-experimental/petstore_api/models/mixed_properties_and_additional_properties_class.py
new file mode 100644
index 0000000000..41a916eac1
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/mixed_properties_and_additional_properties_class.py
@@ -0,0 +1,164 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class MixedPropertiesAndAdditionalPropertiesClass(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'uuid': 'str',
+ 'date_time': 'datetime',
+ 'map': 'dict(str, Animal)'
+ }
+
+ attribute_map = {
+ 'uuid': 'uuid',
+ 'date_time': 'dateTime',
+ 'map': 'map'
+ }
+
+ def __init__(self, uuid=None, date_time=None, map=None): # noqa: E501
+ """MixedPropertiesAndAdditionalPropertiesClass - a model defined in OpenAPI""" # noqa: E501
+
+ self._uuid = None
+ self._date_time = None
+ self._map = None
+ self.discriminator = None
+
+ if uuid is not None:
+ self.uuid = uuid
+ if date_time is not None:
+ self.date_time = date_time
+ if map is not None:
+ self.map = map
+
+ @property
+ def uuid(self):
+ """Gets the uuid of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The uuid of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+ :rtype: str
+ """
+ return self._uuid
+
+ @uuid.setter
+ def uuid(self, uuid):
+ """Sets the uuid of this MixedPropertiesAndAdditionalPropertiesClass.
+
+
+ :param uuid: The uuid of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+ :type: str
+ """
+
+ self._uuid = uuid
+
+ @property
+ def date_time(self):
+ """Gets the date_time of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The date_time of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+ :rtype: datetime
+ """
+ return self._date_time
+
+ @date_time.setter
+ def date_time(self, date_time):
+ """Sets the date_time of this MixedPropertiesAndAdditionalPropertiesClass.
+
+
+ :param date_time: The date_time of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+ :type: datetime
+ """
+
+ self._date_time = date_time
+
+ @property
+ def map(self):
+ """Gets the map of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+
+
+ :return: The map of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+ :rtype: dict(str, Animal)
+ """
+ return self._map
+
+ @map.setter
+ def map(self, map):
+ """Sets the map of this MixedPropertiesAndAdditionalPropertiesClass.
+
+
+ :param map: The map of this MixedPropertiesAndAdditionalPropertiesClass. # noqa: E501
+ :type: dict(str, Animal)
+ """
+
+ self._map = map
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, MixedPropertiesAndAdditionalPropertiesClass):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/model200_response.py b/samples/client/petstore/python-experimental/petstore_api/models/model200_response.py
new file mode 100644
index 0000000000..563b82b593
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/model200_response.py
@@ -0,0 +1,138 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Model200Response(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'int',
+ '_class': 'str'
+ }
+
+ attribute_map = {
+ 'name': 'name',
+ '_class': 'class'
+ }
+
+ def __init__(self, name=None, _class=None): # noqa: E501
+ """Model200Response - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self.__class = None
+ self.discriminator = None
+
+ if name is not None:
+ self.name = name
+ if _class is not None:
+ self._class = _class
+
+ @property
+ def name(self):
+ """Gets the name of this Model200Response. # noqa: E501
+
+
+ :return: The name of this Model200Response. # noqa: E501
+ :rtype: int
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this Model200Response.
+
+
+ :param name: The name of this Model200Response. # noqa: E501
+ :type: int
+ """
+
+ self._name = name
+
+ @property
+ def _class(self):
+ """Gets the _class of this Model200Response. # noqa: E501
+
+
+ :return: The _class of this Model200Response. # noqa: E501
+ :rtype: str
+ """
+ return self.__class
+
+ @_class.setter
+ def _class(self, _class):
+ """Sets the _class of this Model200Response.
+
+
+ :param _class: The _class of this Model200Response. # noqa: E501
+ :type: str
+ """
+
+ self.__class = _class
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Model200Response):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/model_return.py b/samples/client/petstore/python-experimental/petstore_api/models/model_return.py
new file mode 100644
index 0000000000..0980120159
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/model_return.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class ModelReturn(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ '_return': 'int'
+ }
+
+ attribute_map = {
+ '_return': 'return'
+ }
+
+ def __init__(self, _return=None): # noqa: E501
+ """ModelReturn - a model defined in OpenAPI""" # noqa: E501
+
+ self.__return = None
+ self.discriminator = None
+
+ if _return is not None:
+ self._return = _return
+
+ @property
+ def _return(self):
+ """Gets the _return of this ModelReturn. # noqa: E501
+
+
+ :return: The _return of this ModelReturn. # noqa: E501
+ :rtype: int
+ """
+ return self.__return
+
+ @_return.setter
+ def _return(self, _return):
+ """Sets the _return of this ModelReturn.
+
+
+ :param _return: The _return of this ModelReturn. # noqa: E501
+ :type: int
+ """
+
+ self.__return = _return
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, ModelReturn):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/name.py b/samples/client/petstore/python-experimental/petstore_api/models/name.py
new file mode 100644
index 0000000000..43014d0fb6
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/name.py
@@ -0,0 +1,191 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Name(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'name': 'int',
+ 'snake_case': 'int',
+ '_property': 'str',
+ '_123_number': 'int'
+ }
+
+ attribute_map = {
+ 'name': 'name',
+ 'snake_case': 'snake_case',
+ '_property': 'property',
+ '_123_number': '123Number'
+ }
+
+ def __init__(self, name=None, snake_case=None, _property=None, _123_number=None): # noqa: E501
+ """Name - a model defined in OpenAPI""" # noqa: E501
+
+ self._name = None
+ self._snake_case = None
+ self.__property = None
+ self.__123_number = None
+ self.discriminator = None
+
+ self.name = name
+ if snake_case is not None:
+ self.snake_case = snake_case
+ if _property is not None:
+ self._property = _property
+ if _123_number is not None:
+ self._123_number = _123_number
+
+ @property
+ def name(self):
+ """Gets the name of this Name. # noqa: E501
+
+
+ :return: The name of this Name. # noqa: E501
+ :rtype: int
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this Name.
+
+
+ :param name: The name of this Name. # noqa: E501
+ :type: int
+ """
+ if name is None:
+ raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501
+
+ self._name = name
+
+ @property
+ def snake_case(self):
+ """Gets the snake_case of this Name. # noqa: E501
+
+
+ :return: The snake_case of this Name. # noqa: E501
+ :rtype: int
+ """
+ return self._snake_case
+
+ @snake_case.setter
+ def snake_case(self, snake_case):
+ """Sets the snake_case of this Name.
+
+
+ :param snake_case: The snake_case of this Name. # noqa: E501
+ :type: int
+ """
+
+ self._snake_case = snake_case
+
+ @property
+ def _property(self):
+ """Gets the _property of this Name. # noqa: E501
+
+
+ :return: The _property of this Name. # noqa: E501
+ :rtype: str
+ """
+ return self.__property
+
+ @_property.setter
+ def _property(self, _property):
+ """Sets the _property of this Name.
+
+
+ :param _property: The _property of this Name. # noqa: E501
+ :type: str
+ """
+
+ self.__property = _property
+
+ @property
+ def _123_number(self):
+ """Gets the _123_number of this Name. # noqa: E501
+
+
+ :return: The _123_number of this Name. # noqa: E501
+ :rtype: int
+ """
+ return self.__123_number
+
+ @_123_number.setter
+ def _123_number(self, _123_number):
+ """Sets the _123_number of this Name.
+
+
+ :param _123_number: The _123_number of this Name. # noqa: E501
+ :type: int
+ """
+
+ self.__123_number = _123_number
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Name):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/number_only.py b/samples/client/petstore/python-experimental/petstore_api/models/number_only.py
new file mode 100644
index 0000000000..b6f3d1c1b6
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/number_only.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class NumberOnly(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'just_number': 'float'
+ }
+
+ attribute_map = {
+ 'just_number': 'JustNumber'
+ }
+
+ def __init__(self, just_number=None): # noqa: E501
+ """NumberOnly - a model defined in OpenAPI""" # noqa: E501
+
+ self._just_number = None
+ self.discriminator = None
+
+ if just_number is not None:
+ self.just_number = just_number
+
+ @property
+ def just_number(self):
+ """Gets the just_number of this NumberOnly. # noqa: E501
+
+
+ :return: The just_number of this NumberOnly. # noqa: E501
+ :rtype: float
+ """
+ return self._just_number
+
+ @just_number.setter
+ def just_number(self, just_number):
+ """Sets the just_number of this NumberOnly.
+
+
+ :param just_number: The just_number of this NumberOnly. # noqa: E501
+ :type: float
+ """
+
+ self._just_number = just_number
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, NumberOnly):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/order.py b/samples/client/petstore/python-experimental/petstore_api/models/order.py
new file mode 100644
index 0000000000..8b64e3a358
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/order.py
@@ -0,0 +1,250 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Order(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'id': 'int',
+ 'pet_id': 'int',
+ 'quantity': 'int',
+ 'ship_date': 'datetime',
+ 'status': 'str',
+ 'complete': 'bool'
+ }
+
+ attribute_map = {
+ 'id': 'id',
+ 'pet_id': 'petId',
+ 'quantity': 'quantity',
+ 'ship_date': 'shipDate',
+ 'status': 'status',
+ 'complete': 'complete'
+ }
+
+ def __init__(self, id=None, pet_id=None, quantity=None, ship_date=None, status=None, complete=False): # noqa: E501
+ """Order - a model defined in OpenAPI""" # noqa: E501
+
+ self._id = None
+ self._pet_id = None
+ self._quantity = None
+ self._ship_date = None
+ self._status = None
+ self._complete = None
+ self.discriminator = None
+
+ if id is not None:
+ self.id = id
+ if pet_id is not None:
+ self.pet_id = pet_id
+ if quantity is not None:
+ self.quantity = quantity
+ if ship_date is not None:
+ self.ship_date = ship_date
+ if status is not None:
+ self.status = status
+ if complete is not None:
+ self.complete = complete
+
+ @property
+ def id(self):
+ """Gets the id of this Order. # noqa: E501
+
+
+ :return: The id of this Order. # noqa: E501
+ :rtype: int
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """Sets the id of this Order.
+
+
+ :param id: The id of this Order. # noqa: E501
+ :type: int
+ """
+
+ self._id = id
+
+ @property
+ def pet_id(self):
+ """Gets the pet_id of this Order. # noqa: E501
+
+
+ :return: The pet_id of this Order. # noqa: E501
+ :rtype: int
+ """
+ return self._pet_id
+
+ @pet_id.setter
+ def pet_id(self, pet_id):
+ """Sets the pet_id of this Order.
+
+
+ :param pet_id: The pet_id of this Order. # noqa: E501
+ :type: int
+ """
+
+ self._pet_id = pet_id
+
+ @property
+ def quantity(self):
+ """Gets the quantity of this Order. # noqa: E501
+
+
+ :return: The quantity of this Order. # noqa: E501
+ :rtype: int
+ """
+ return self._quantity
+
+ @quantity.setter
+ def quantity(self, quantity):
+ """Sets the quantity of this Order.
+
+
+ :param quantity: The quantity of this Order. # noqa: E501
+ :type: int
+ """
+
+ self._quantity = quantity
+
+ @property
+ def ship_date(self):
+ """Gets the ship_date of this Order. # noqa: E501
+
+
+ :return: The ship_date of this Order. # noqa: E501
+ :rtype: datetime
+ """
+ return self._ship_date
+
+ @ship_date.setter
+ def ship_date(self, ship_date):
+ """Sets the ship_date of this Order.
+
+
+ :param ship_date: The ship_date of this Order. # noqa: E501
+ :type: datetime
+ """
+
+ self._ship_date = ship_date
+
+ @property
+ def status(self):
+ """Gets the status of this Order. # noqa: E501
+
+ Order Status # noqa: E501
+
+ :return: The status of this Order. # noqa: E501
+ :rtype: str
+ """
+ return self._status
+
+ @status.setter
+ def status(self, status):
+ """Sets the status of this Order.
+
+ Order Status # noqa: E501
+
+ :param status: The status of this Order. # noqa: E501
+ :type: str
+ """
+ allowed_values = ["placed", "approved", "delivered"] # noqa: E501
+ if status not in allowed_values:
+ raise ValueError(
+ "Invalid value for `status` ({0}), must be one of {1}" # noqa: E501
+ .format(status, allowed_values)
+ )
+
+ self._status = status
+
+ @property
+ def complete(self):
+ """Gets the complete of this Order. # noqa: E501
+
+
+ :return: The complete of this Order. # noqa: E501
+ :rtype: bool
+ """
+ return self._complete
+
+ @complete.setter
+ def complete(self, complete):
+ """Sets the complete of this Order.
+
+
+ :param complete: The complete of this Order. # noqa: E501
+ :type: bool
+ """
+
+ self._complete = complete
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Order):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/outer_composite.py b/samples/client/petstore/python-experimental/petstore_api/models/outer_composite.py
new file mode 100644
index 0000000000..dccd67055b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/outer_composite.py
@@ -0,0 +1,164 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class OuterComposite(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'my_number': 'float',
+ 'my_string': 'str',
+ 'my_boolean': 'bool'
+ }
+
+ attribute_map = {
+ 'my_number': 'my_number',
+ 'my_string': 'my_string',
+ 'my_boolean': 'my_boolean'
+ }
+
+ def __init__(self, my_number=None, my_string=None, my_boolean=None): # noqa: E501
+ """OuterComposite - a model defined in OpenAPI""" # noqa: E501
+
+ self._my_number = None
+ self._my_string = None
+ self._my_boolean = None
+ self.discriminator = None
+
+ if my_number is not None:
+ self.my_number = my_number
+ if my_string is not None:
+ self.my_string = my_string
+ if my_boolean is not None:
+ self.my_boolean = my_boolean
+
+ @property
+ def my_number(self):
+ """Gets the my_number of this OuterComposite. # noqa: E501
+
+
+ :return: The my_number of this OuterComposite. # noqa: E501
+ :rtype: float
+ """
+ return self._my_number
+
+ @my_number.setter
+ def my_number(self, my_number):
+ """Sets the my_number of this OuterComposite.
+
+
+ :param my_number: The my_number of this OuterComposite. # noqa: E501
+ :type: float
+ """
+
+ self._my_number = my_number
+
+ @property
+ def my_string(self):
+ """Gets the my_string of this OuterComposite. # noqa: E501
+
+
+ :return: The my_string of this OuterComposite. # noqa: E501
+ :rtype: str
+ """
+ return self._my_string
+
+ @my_string.setter
+ def my_string(self, my_string):
+ """Sets the my_string of this OuterComposite.
+
+
+ :param my_string: The my_string of this OuterComposite. # noqa: E501
+ :type: str
+ """
+
+ self._my_string = my_string
+
+ @property
+ def my_boolean(self):
+ """Gets the my_boolean of this OuterComposite. # noqa: E501
+
+
+ :return: The my_boolean of this OuterComposite. # noqa: E501
+ :rtype: bool
+ """
+ return self._my_boolean
+
+ @my_boolean.setter
+ def my_boolean(self, my_boolean):
+ """Sets the my_boolean of this OuterComposite.
+
+
+ :param my_boolean: The my_boolean of this OuterComposite. # noqa: E501
+ :type: bool
+ """
+
+ self._my_boolean = my_boolean
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, OuterComposite):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/outer_enum.py b/samples/client/petstore/python-experimental/petstore_api/models/outer_enum.py
new file mode 100644
index 0000000000..a6697a0b15
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/outer_enum.py
@@ -0,0 +1,91 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class OuterEnum(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ allowed enum values
+ """
+ PLACED = "placed"
+ APPROVED = "approved"
+ DELIVERED = "delivered"
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ }
+
+ attribute_map = {
+ }
+
+ def __init__(self): # noqa: E501
+ """OuterEnum - a model defined in OpenAPI""" # noqa: E501
+ self.discriminator = None
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, OuterEnum):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/pet.py b/samples/client/petstore/python-experimental/petstore_api/models/pet.py
new file mode 100644
index 0000000000..870608e17a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/pet.py
@@ -0,0 +1,252 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Pet(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'id': 'int',
+ 'category': 'Category',
+ 'name': 'str',
+ 'photo_urls': 'list[str]',
+ 'tags': 'list[Tag]',
+ 'status': 'str'
+ }
+
+ attribute_map = {
+ 'id': 'id',
+ 'category': 'category',
+ 'name': 'name',
+ 'photo_urls': 'photoUrls',
+ 'tags': 'tags',
+ 'status': 'status'
+ }
+
+ def __init__(self, id=None, category=None, name=None, photo_urls=None, tags=None, status=None): # noqa: E501
+ """Pet - a model defined in OpenAPI""" # noqa: E501
+
+ self._id = None
+ self._category = None
+ self._name = None
+ self._photo_urls = None
+ self._tags = None
+ self._status = None
+ self.discriminator = None
+
+ if id is not None:
+ self.id = id
+ if category is not None:
+ self.category = category
+ self.name = name
+ self.photo_urls = photo_urls
+ if tags is not None:
+ self.tags = tags
+ if status is not None:
+ self.status = status
+
+ @property
+ def id(self):
+ """Gets the id of this Pet. # noqa: E501
+
+
+ :return: The id of this Pet. # noqa: E501
+ :rtype: int
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """Sets the id of this Pet.
+
+
+ :param id: The id of this Pet. # noqa: E501
+ :type: int
+ """
+
+ self._id = id
+
+ @property
+ def category(self):
+ """Gets the category of this Pet. # noqa: E501
+
+
+ :return: The category of this Pet. # noqa: E501
+ :rtype: Category
+ """
+ return self._category
+
+ @category.setter
+ def category(self, category):
+ """Sets the category of this Pet.
+
+
+ :param category: The category of this Pet. # noqa: E501
+ :type: Category
+ """
+
+ self._category = category
+
+ @property
+ def name(self):
+ """Gets the name of this Pet. # noqa: E501
+
+
+ :return: The name of this Pet. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this Pet.
+
+
+ :param name: The name of this Pet. # noqa: E501
+ :type: str
+ """
+ if name is None:
+ raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501
+
+ self._name = name
+
+ @property
+ def photo_urls(self):
+ """Gets the photo_urls of this Pet. # noqa: E501
+
+
+ :return: The photo_urls of this Pet. # noqa: E501
+ :rtype: list[str]
+ """
+ return self._photo_urls
+
+ @photo_urls.setter
+ def photo_urls(self, photo_urls):
+ """Sets the photo_urls of this Pet.
+
+
+ :param photo_urls: The photo_urls of this Pet. # noqa: E501
+ :type: list[str]
+ """
+ if photo_urls is None:
+ raise ValueError("Invalid value for `photo_urls`, must not be `None`") # noqa: E501
+
+ self._photo_urls = photo_urls
+
+ @property
+ def tags(self):
+ """Gets the tags of this Pet. # noqa: E501
+
+
+ :return: The tags of this Pet. # noqa: E501
+ :rtype: list[Tag]
+ """
+ return self._tags
+
+ @tags.setter
+ def tags(self, tags):
+ """Sets the tags of this Pet.
+
+
+ :param tags: The tags of this Pet. # noqa: E501
+ :type: list[Tag]
+ """
+
+ self._tags = tags
+
+ @property
+ def status(self):
+ """Gets the status of this Pet. # noqa: E501
+
+ pet status in the store # noqa: E501
+
+ :return: The status of this Pet. # noqa: E501
+ :rtype: str
+ """
+ return self._status
+
+ @status.setter
+ def status(self, status):
+ """Sets the status of this Pet.
+
+ pet status in the store # noqa: E501
+
+ :param status: The status of this Pet. # noqa: E501
+ :type: str
+ """
+ allowed_values = ["available", "pending", "sold"] # noqa: E501
+ if status not in allowed_values:
+ raise ValueError(
+ "Invalid value for `status` ({0}), must be one of {1}" # noqa: E501
+ .format(status, allowed_values)
+ )
+
+ self._status = status
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Pet):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/read_only_first.py b/samples/client/petstore/python-experimental/petstore_api/models/read_only_first.py
new file mode 100644
index 0000000000..3dfb7c7f62
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/read_only_first.py
@@ -0,0 +1,138 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class ReadOnlyFirst(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'bar': 'str',
+ 'baz': 'str'
+ }
+
+ attribute_map = {
+ 'bar': 'bar',
+ 'baz': 'baz'
+ }
+
+ def __init__(self, bar=None, baz=None): # noqa: E501
+ """ReadOnlyFirst - a model defined in OpenAPI""" # noqa: E501
+
+ self._bar = None
+ self._baz = None
+ self.discriminator = None
+
+ if bar is not None:
+ self.bar = bar
+ if baz is not None:
+ self.baz = baz
+
+ @property
+ def bar(self):
+ """Gets the bar of this ReadOnlyFirst. # noqa: E501
+
+
+ :return: The bar of this ReadOnlyFirst. # noqa: E501
+ :rtype: str
+ """
+ return self._bar
+
+ @bar.setter
+ def bar(self, bar):
+ """Sets the bar of this ReadOnlyFirst.
+
+
+ :param bar: The bar of this ReadOnlyFirst. # noqa: E501
+ :type: str
+ """
+
+ self._bar = bar
+
+ @property
+ def baz(self):
+ """Gets the baz of this ReadOnlyFirst. # noqa: E501
+
+
+ :return: The baz of this ReadOnlyFirst. # noqa: E501
+ :rtype: str
+ """
+ return self._baz
+
+ @baz.setter
+ def baz(self, baz):
+ """Sets the baz of this ReadOnlyFirst.
+
+
+ :param baz: The baz of this ReadOnlyFirst. # noqa: E501
+ :type: str
+ """
+
+ self._baz = baz
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, ReadOnlyFirst):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/special_model_name.py b/samples/client/petstore/python-experimental/petstore_api/models/special_model_name.py
new file mode 100644
index 0000000000..2fd6378fcd
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/special_model_name.py
@@ -0,0 +1,112 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class SpecialModelName(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'special_property_name': 'int'
+ }
+
+ attribute_map = {
+ 'special_property_name': '$special[property.name]'
+ }
+
+ def __init__(self, special_property_name=None): # noqa: E501
+ """SpecialModelName - a model defined in OpenAPI""" # noqa: E501
+
+ self._special_property_name = None
+ self.discriminator = None
+
+ if special_property_name is not None:
+ self.special_property_name = special_property_name
+
+ @property
+ def special_property_name(self):
+ """Gets the special_property_name of this SpecialModelName. # noqa: E501
+
+
+ :return: The special_property_name of this SpecialModelName. # noqa: E501
+ :rtype: int
+ """
+ return self._special_property_name
+
+ @special_property_name.setter
+ def special_property_name(self, special_property_name):
+ """Sets the special_property_name of this SpecialModelName.
+
+
+ :param special_property_name: The special_property_name of this SpecialModelName. # noqa: E501
+ :type: int
+ """
+
+ self._special_property_name = special_property_name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, SpecialModelName):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/tag.py b/samples/client/petstore/python-experimental/petstore_api/models/tag.py
new file mode 100644
index 0000000000..cb9c22d9f5
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/tag.py
@@ -0,0 +1,138 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class Tag(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'id': 'int',
+ 'name': 'str'
+ }
+
+ attribute_map = {
+ 'id': 'id',
+ 'name': 'name'
+ }
+
+ def __init__(self, id=None, name=None): # noqa: E501
+ """Tag - a model defined in OpenAPI""" # noqa: E501
+
+ self._id = None
+ self._name = None
+ self.discriminator = None
+
+ if id is not None:
+ self.id = id
+ if name is not None:
+ self.name = name
+
+ @property
+ def id(self):
+ """Gets the id of this Tag. # noqa: E501
+
+
+ :return: The id of this Tag. # noqa: E501
+ :rtype: int
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """Sets the id of this Tag.
+
+
+ :param id: The id of this Tag. # noqa: E501
+ :type: int
+ """
+
+ self._id = id
+
+ @property
+ def name(self):
+ """Gets the name of this Tag. # noqa: E501
+
+
+ :return: The name of this Tag. # noqa: E501
+ :rtype: str
+ """
+ return self._name
+
+ @name.setter
+ def name(self, name):
+ """Sets the name of this Tag.
+
+
+ :param name: The name of this Tag. # noqa: E501
+ :type: str
+ """
+
+ self._name = name
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, Tag):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/type_holder_default.py b/samples/client/petstore/python-experimental/petstore_api/models/type_holder_default.py
new file mode 100644
index 0000000000..d7c207cb5f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/type_holder_default.py
@@ -0,0 +1,221 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class TypeHolderDefault(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'string_item': 'str',
+ 'number_item': 'float',
+ 'integer_item': 'int',
+ 'bool_item': 'bool',
+ 'array_item': 'list[int]'
+ }
+
+ attribute_map = {
+ 'string_item': 'string_item',
+ 'number_item': 'number_item',
+ 'integer_item': 'integer_item',
+ 'bool_item': 'bool_item',
+ 'array_item': 'array_item'
+ }
+
+ def __init__(self, string_item='what', number_item=None, integer_item=None, bool_item=True, array_item=None): # noqa: E501
+ """TypeHolderDefault - a model defined in OpenAPI""" # noqa: E501
+
+ self._string_item = None
+ self._number_item = None
+ self._integer_item = None
+ self._bool_item = None
+ self._array_item = None
+ self.discriminator = None
+
+ self.string_item = string_item
+ self.number_item = number_item
+ self.integer_item = integer_item
+ self.bool_item = bool_item
+ self.array_item = array_item
+
+ @property
+ def string_item(self):
+ """Gets the string_item of this TypeHolderDefault. # noqa: E501
+
+
+ :return: The string_item of this TypeHolderDefault. # noqa: E501
+ :rtype: str
+ """
+ return self._string_item
+
+ @string_item.setter
+ def string_item(self, string_item):
+ """Sets the string_item of this TypeHolderDefault.
+
+
+ :param string_item: The string_item of this TypeHolderDefault. # noqa: E501
+ :type: str
+ """
+ if string_item is None:
+ raise ValueError("Invalid value for `string_item`, must not be `None`") # noqa: E501
+
+ self._string_item = string_item
+
+ @property
+ def number_item(self):
+ """Gets the number_item of this TypeHolderDefault. # noqa: E501
+
+
+ :return: The number_item of this TypeHolderDefault. # noqa: E501
+ :rtype: float
+ """
+ return self._number_item
+
+ @number_item.setter
+ def number_item(self, number_item):
+ """Sets the number_item of this TypeHolderDefault.
+
+
+ :param number_item: The number_item of this TypeHolderDefault. # noqa: E501
+ :type: float
+ """
+ if number_item is None:
+ raise ValueError("Invalid value for `number_item`, must not be `None`") # noqa: E501
+
+ self._number_item = number_item
+
+ @property
+ def integer_item(self):
+ """Gets the integer_item of this TypeHolderDefault. # noqa: E501
+
+
+ :return: The integer_item of this TypeHolderDefault. # noqa: E501
+ :rtype: int
+ """
+ return self._integer_item
+
+ @integer_item.setter
+ def integer_item(self, integer_item):
+ """Sets the integer_item of this TypeHolderDefault.
+
+
+ :param integer_item: The integer_item of this TypeHolderDefault. # noqa: E501
+ :type: int
+ """
+ if integer_item is None:
+ raise ValueError("Invalid value for `integer_item`, must not be `None`") # noqa: E501
+
+ self._integer_item = integer_item
+
+ @property
+ def bool_item(self):
+ """Gets the bool_item of this TypeHolderDefault. # noqa: E501
+
+
+ :return: The bool_item of this TypeHolderDefault. # noqa: E501
+ :rtype: bool
+ """
+ return self._bool_item
+
+ @bool_item.setter
+ def bool_item(self, bool_item):
+ """Sets the bool_item of this TypeHolderDefault.
+
+
+ :param bool_item: The bool_item of this TypeHolderDefault. # noqa: E501
+ :type: bool
+ """
+ if bool_item is None:
+ raise ValueError("Invalid value for `bool_item`, must not be `None`") # noqa: E501
+
+ self._bool_item = bool_item
+
+ @property
+ def array_item(self):
+ """Gets the array_item of this TypeHolderDefault. # noqa: E501
+
+
+ :return: The array_item of this TypeHolderDefault. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._array_item
+
+ @array_item.setter
+ def array_item(self, array_item):
+ """Sets the array_item of this TypeHolderDefault.
+
+
+ :param array_item: The array_item of this TypeHolderDefault. # noqa: E501
+ :type: list[int]
+ """
+ if array_item is None:
+ raise ValueError("Invalid value for `array_item`, must not be `None`") # noqa: E501
+
+ self._array_item = array_item
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, TypeHolderDefault):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/type_holder_example.py b/samples/client/petstore/python-experimental/petstore_api/models/type_holder_example.py
new file mode 100644
index 0000000000..8f2b5d6b7d
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/type_holder_example.py
@@ -0,0 +1,221 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class TypeHolderExample(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'string_item': 'str',
+ 'number_item': 'float',
+ 'integer_item': 'int',
+ 'bool_item': 'bool',
+ 'array_item': 'list[int]'
+ }
+
+ attribute_map = {
+ 'string_item': 'string_item',
+ 'number_item': 'number_item',
+ 'integer_item': 'integer_item',
+ 'bool_item': 'bool_item',
+ 'array_item': 'array_item'
+ }
+
+ def __init__(self, string_item=None, number_item=None, integer_item=None, bool_item=None, array_item=None): # noqa: E501
+ """TypeHolderExample - a model defined in OpenAPI""" # noqa: E501
+
+ self._string_item = None
+ self._number_item = None
+ self._integer_item = None
+ self._bool_item = None
+ self._array_item = None
+ self.discriminator = None
+
+ self.string_item = string_item
+ self.number_item = number_item
+ self.integer_item = integer_item
+ self.bool_item = bool_item
+ self.array_item = array_item
+
+ @property
+ def string_item(self):
+ """Gets the string_item of this TypeHolderExample. # noqa: E501
+
+
+ :return: The string_item of this TypeHolderExample. # noqa: E501
+ :rtype: str
+ """
+ return self._string_item
+
+ @string_item.setter
+ def string_item(self, string_item):
+ """Sets the string_item of this TypeHolderExample.
+
+
+ :param string_item: The string_item of this TypeHolderExample. # noqa: E501
+ :type: str
+ """
+ if string_item is None:
+ raise ValueError("Invalid value for `string_item`, must not be `None`") # noqa: E501
+
+ self._string_item = string_item
+
+ @property
+ def number_item(self):
+ """Gets the number_item of this TypeHolderExample. # noqa: E501
+
+
+ :return: The number_item of this TypeHolderExample. # noqa: E501
+ :rtype: float
+ """
+ return self._number_item
+
+ @number_item.setter
+ def number_item(self, number_item):
+ """Sets the number_item of this TypeHolderExample.
+
+
+ :param number_item: The number_item of this TypeHolderExample. # noqa: E501
+ :type: float
+ """
+ if number_item is None:
+ raise ValueError("Invalid value for `number_item`, must not be `None`") # noqa: E501
+
+ self._number_item = number_item
+
+ @property
+ def integer_item(self):
+ """Gets the integer_item of this TypeHolderExample. # noqa: E501
+
+
+ :return: The integer_item of this TypeHolderExample. # noqa: E501
+ :rtype: int
+ """
+ return self._integer_item
+
+ @integer_item.setter
+ def integer_item(self, integer_item):
+ """Sets the integer_item of this TypeHolderExample.
+
+
+ :param integer_item: The integer_item of this TypeHolderExample. # noqa: E501
+ :type: int
+ """
+ if integer_item is None:
+ raise ValueError("Invalid value for `integer_item`, must not be `None`") # noqa: E501
+
+ self._integer_item = integer_item
+
+ @property
+ def bool_item(self):
+ """Gets the bool_item of this TypeHolderExample. # noqa: E501
+
+
+ :return: The bool_item of this TypeHolderExample. # noqa: E501
+ :rtype: bool
+ """
+ return self._bool_item
+
+ @bool_item.setter
+ def bool_item(self, bool_item):
+ """Sets the bool_item of this TypeHolderExample.
+
+
+ :param bool_item: The bool_item of this TypeHolderExample. # noqa: E501
+ :type: bool
+ """
+ if bool_item is None:
+ raise ValueError("Invalid value for `bool_item`, must not be `None`") # noqa: E501
+
+ self._bool_item = bool_item
+
+ @property
+ def array_item(self):
+ """Gets the array_item of this TypeHolderExample. # noqa: E501
+
+
+ :return: The array_item of this TypeHolderExample. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._array_item
+
+ @array_item.setter
+ def array_item(self, array_item):
+ """Sets the array_item of this TypeHolderExample.
+
+
+ :param array_item: The array_item of this TypeHolderExample. # noqa: E501
+ :type: list[int]
+ """
+ if array_item is None:
+ raise ValueError("Invalid value for `array_item`, must not be `None`") # noqa: E501
+
+ self._array_item = array_item
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, TypeHolderExample):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/user.py b/samples/client/petstore/python-experimental/petstore_api/models/user.py
new file mode 100644
index 0000000000..f46f5165df
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/user.py
@@ -0,0 +1,296 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class User(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'id': 'int',
+ 'username': 'str',
+ 'first_name': 'str',
+ 'last_name': 'str',
+ 'email': 'str',
+ 'password': 'str',
+ 'phone': 'str',
+ 'user_status': 'int'
+ }
+
+ attribute_map = {
+ 'id': 'id',
+ 'username': 'username',
+ 'first_name': 'firstName',
+ 'last_name': 'lastName',
+ 'email': 'email',
+ 'password': 'password',
+ 'phone': 'phone',
+ 'user_status': 'userStatus'
+ }
+
+ def __init__(self, id=None, username=None, first_name=None, last_name=None, email=None, password=None, phone=None, user_status=None): # noqa: E501
+ """User - a model defined in OpenAPI""" # noqa: E501
+
+ self._id = None
+ self._username = None
+ self._first_name = None
+ self._last_name = None
+ self._email = None
+ self._password = None
+ self._phone = None
+ self._user_status = None
+ self.discriminator = None
+
+ if id is not None:
+ self.id = id
+ if username is not None:
+ self.username = username
+ if first_name is not None:
+ self.first_name = first_name
+ if last_name is not None:
+ self.last_name = last_name
+ if email is not None:
+ self.email = email
+ if password is not None:
+ self.password = password
+ if phone is not None:
+ self.phone = phone
+ if user_status is not None:
+ self.user_status = user_status
+
+ @property
+ def id(self):
+ """Gets the id of this User. # noqa: E501
+
+
+ :return: The id of this User. # noqa: E501
+ :rtype: int
+ """
+ return self._id
+
+ @id.setter
+ def id(self, id):
+ """Sets the id of this User.
+
+
+ :param id: The id of this User. # noqa: E501
+ :type: int
+ """
+
+ self._id = id
+
+ @property
+ def username(self):
+ """Gets the username of this User. # noqa: E501
+
+
+ :return: The username of this User. # noqa: E501
+ :rtype: str
+ """
+ return self._username
+
+ @username.setter
+ def username(self, username):
+ """Sets the username of this User.
+
+
+ :param username: The username of this User. # noqa: E501
+ :type: str
+ """
+
+ self._username = username
+
+ @property
+ def first_name(self):
+ """Gets the first_name of this User. # noqa: E501
+
+
+ :return: The first_name of this User. # noqa: E501
+ :rtype: str
+ """
+ return self._first_name
+
+ @first_name.setter
+ def first_name(self, first_name):
+ """Sets the first_name of this User.
+
+
+ :param first_name: The first_name of this User. # noqa: E501
+ :type: str
+ """
+
+ self._first_name = first_name
+
+ @property
+ def last_name(self):
+ """Gets the last_name of this User. # noqa: E501
+
+
+ :return: The last_name of this User. # noqa: E501
+ :rtype: str
+ """
+ return self._last_name
+
+ @last_name.setter
+ def last_name(self, last_name):
+ """Sets the last_name of this User.
+
+
+ :param last_name: The last_name of this User. # noqa: E501
+ :type: str
+ """
+
+ self._last_name = last_name
+
+ @property
+ def email(self):
+ """Gets the email of this User. # noqa: E501
+
+
+ :return: The email of this User. # noqa: E501
+ :rtype: str
+ """
+ return self._email
+
+ @email.setter
+ def email(self, email):
+ """Sets the email of this User.
+
+
+ :param email: The email of this User. # noqa: E501
+ :type: str
+ """
+
+ self._email = email
+
+ @property
+ def password(self):
+ """Gets the password of this User. # noqa: E501
+
+
+ :return: The password of this User. # noqa: E501
+ :rtype: str
+ """
+ return self._password
+
+ @password.setter
+ def password(self, password):
+ """Sets the password of this User.
+
+
+ :param password: The password of this User. # noqa: E501
+ :type: str
+ """
+
+ self._password = password
+
+ @property
+ def phone(self):
+ """Gets the phone of this User. # noqa: E501
+
+
+ :return: The phone of this User. # noqa: E501
+ :rtype: str
+ """
+ return self._phone
+
+ @phone.setter
+ def phone(self, phone):
+ """Sets the phone of this User.
+
+
+ :param phone: The phone of this User. # noqa: E501
+ :type: str
+ """
+
+ self._phone = phone
+
+ @property
+ def user_status(self):
+ """Gets the user_status of this User. # noqa: E501
+
+ User Status # noqa: E501
+
+ :return: The user_status of this User. # noqa: E501
+ :rtype: int
+ """
+ return self._user_status
+
+ @user_status.setter
+ def user_status(self, user_status):
+ """Sets the user_status of this User.
+
+ User Status # noqa: E501
+
+ :param user_status: The user_status of this User. # noqa: E501
+ :type: int
+ """
+
+ self._user_status = user_status
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, User):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/models/xml_item.py b/samples/client/petstore/python-experimental/petstore_api/models/xml_item.py
new file mode 100644
index 0000000000..eaceeb5ef4
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/models/xml_item.py
@@ -0,0 +1,840 @@
+# 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 pprint
+import re # noqa: F401
+
+import six
+
+
+class XmlItem(object):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ """
+ Attributes:
+ openapi_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.
+ """
+ openapi_types = {
+ 'attribute_string': 'str',
+ 'attribute_number': 'float',
+ 'attribute_integer': 'int',
+ 'attribute_boolean': 'bool',
+ 'wrapped_array': 'list[int]',
+ 'name_string': 'str',
+ 'name_number': 'float',
+ 'name_integer': 'int',
+ 'name_boolean': 'bool',
+ 'name_array': 'list[int]',
+ 'name_wrapped_array': 'list[int]',
+ 'prefix_string': 'str',
+ 'prefix_number': 'float',
+ 'prefix_integer': 'int',
+ 'prefix_boolean': 'bool',
+ 'prefix_array': 'list[int]',
+ 'prefix_wrapped_array': 'list[int]',
+ 'namespace_string': 'str',
+ 'namespace_number': 'float',
+ 'namespace_integer': 'int',
+ 'namespace_boolean': 'bool',
+ 'namespace_array': 'list[int]',
+ 'namespace_wrapped_array': 'list[int]',
+ 'prefix_ns_string': 'str',
+ 'prefix_ns_number': 'float',
+ 'prefix_ns_integer': 'int',
+ 'prefix_ns_boolean': 'bool',
+ 'prefix_ns_array': 'list[int]',
+ 'prefix_ns_wrapped_array': 'list[int]'
+ }
+
+ attribute_map = {
+ 'attribute_string': 'attribute_string',
+ 'attribute_number': 'attribute_number',
+ 'attribute_integer': 'attribute_integer',
+ 'attribute_boolean': 'attribute_boolean',
+ 'wrapped_array': 'wrapped_array',
+ 'name_string': 'name_string',
+ 'name_number': 'name_number',
+ 'name_integer': 'name_integer',
+ 'name_boolean': 'name_boolean',
+ 'name_array': 'name_array',
+ 'name_wrapped_array': 'name_wrapped_array',
+ 'prefix_string': 'prefix_string',
+ 'prefix_number': 'prefix_number',
+ 'prefix_integer': 'prefix_integer',
+ 'prefix_boolean': 'prefix_boolean',
+ 'prefix_array': 'prefix_array',
+ 'prefix_wrapped_array': 'prefix_wrapped_array',
+ 'namespace_string': 'namespace_string',
+ 'namespace_number': 'namespace_number',
+ 'namespace_integer': 'namespace_integer',
+ 'namespace_boolean': 'namespace_boolean',
+ 'namespace_array': 'namespace_array',
+ 'namespace_wrapped_array': 'namespace_wrapped_array',
+ 'prefix_ns_string': 'prefix_ns_string',
+ 'prefix_ns_number': 'prefix_ns_number',
+ 'prefix_ns_integer': 'prefix_ns_integer',
+ 'prefix_ns_boolean': 'prefix_ns_boolean',
+ 'prefix_ns_array': 'prefix_ns_array',
+ 'prefix_ns_wrapped_array': 'prefix_ns_wrapped_array'
+ }
+
+ def __init__(self, attribute_string=None, attribute_number=None, attribute_integer=None, attribute_boolean=None, wrapped_array=None, name_string=None, name_number=None, name_integer=None, name_boolean=None, name_array=None, name_wrapped_array=None, prefix_string=None, prefix_number=None, prefix_integer=None, prefix_boolean=None, prefix_array=None, prefix_wrapped_array=None, namespace_string=None, namespace_number=None, namespace_integer=None, namespace_boolean=None, namespace_array=None, namespace_wrapped_array=None, prefix_ns_string=None, prefix_ns_number=None, prefix_ns_integer=None, prefix_ns_boolean=None, prefix_ns_array=None, prefix_ns_wrapped_array=None): # noqa: E501
+ """XmlItem - a model defined in OpenAPI""" # noqa: E501
+
+ self._attribute_string = None
+ self._attribute_number = None
+ self._attribute_integer = None
+ self._attribute_boolean = None
+ self._wrapped_array = None
+ self._name_string = None
+ self._name_number = None
+ self._name_integer = None
+ self._name_boolean = None
+ self._name_array = None
+ self._name_wrapped_array = None
+ self._prefix_string = None
+ self._prefix_number = None
+ self._prefix_integer = None
+ self._prefix_boolean = None
+ self._prefix_array = None
+ self._prefix_wrapped_array = None
+ self._namespace_string = None
+ self._namespace_number = None
+ self._namespace_integer = None
+ self._namespace_boolean = None
+ self._namespace_array = None
+ self._namespace_wrapped_array = None
+ self._prefix_ns_string = None
+ self._prefix_ns_number = None
+ self._prefix_ns_integer = None
+ self._prefix_ns_boolean = None
+ self._prefix_ns_array = None
+ self._prefix_ns_wrapped_array = None
+ self.discriminator = None
+
+ if attribute_string is not None:
+ self.attribute_string = attribute_string
+ if attribute_number is not None:
+ self.attribute_number = attribute_number
+ if attribute_integer is not None:
+ self.attribute_integer = attribute_integer
+ if attribute_boolean is not None:
+ self.attribute_boolean = attribute_boolean
+ if wrapped_array is not None:
+ self.wrapped_array = wrapped_array
+ if name_string is not None:
+ self.name_string = name_string
+ if name_number is not None:
+ self.name_number = name_number
+ if name_integer is not None:
+ self.name_integer = name_integer
+ if name_boolean is not None:
+ self.name_boolean = name_boolean
+ if name_array is not None:
+ self.name_array = name_array
+ if name_wrapped_array is not None:
+ self.name_wrapped_array = name_wrapped_array
+ if prefix_string is not None:
+ self.prefix_string = prefix_string
+ if prefix_number is not None:
+ self.prefix_number = prefix_number
+ if prefix_integer is not None:
+ self.prefix_integer = prefix_integer
+ if prefix_boolean is not None:
+ self.prefix_boolean = prefix_boolean
+ if prefix_array is not None:
+ self.prefix_array = prefix_array
+ if prefix_wrapped_array is not None:
+ self.prefix_wrapped_array = prefix_wrapped_array
+ if namespace_string is not None:
+ self.namespace_string = namespace_string
+ if namespace_number is not None:
+ self.namespace_number = namespace_number
+ if namespace_integer is not None:
+ self.namespace_integer = namespace_integer
+ if namespace_boolean is not None:
+ self.namespace_boolean = namespace_boolean
+ if namespace_array is not None:
+ self.namespace_array = namespace_array
+ if namespace_wrapped_array is not None:
+ self.namespace_wrapped_array = namespace_wrapped_array
+ if prefix_ns_string is not None:
+ self.prefix_ns_string = prefix_ns_string
+ if prefix_ns_number is not None:
+ self.prefix_ns_number = prefix_ns_number
+ if prefix_ns_integer is not None:
+ self.prefix_ns_integer = prefix_ns_integer
+ if prefix_ns_boolean is not None:
+ self.prefix_ns_boolean = prefix_ns_boolean
+ if prefix_ns_array is not None:
+ self.prefix_ns_array = prefix_ns_array
+ if prefix_ns_wrapped_array is not None:
+ self.prefix_ns_wrapped_array = prefix_ns_wrapped_array
+
+ @property
+ def attribute_string(self):
+ """Gets the attribute_string of this XmlItem. # noqa: E501
+
+
+ :return: The attribute_string of this XmlItem. # noqa: E501
+ :rtype: str
+ """
+ return self._attribute_string
+
+ @attribute_string.setter
+ def attribute_string(self, attribute_string):
+ """Sets the attribute_string of this XmlItem.
+
+
+ :param attribute_string: The attribute_string of this XmlItem. # noqa: E501
+ :type: str
+ """
+
+ self._attribute_string = attribute_string
+
+ @property
+ def attribute_number(self):
+ """Gets the attribute_number of this XmlItem. # noqa: E501
+
+
+ :return: The attribute_number of this XmlItem. # noqa: E501
+ :rtype: float
+ """
+ return self._attribute_number
+
+ @attribute_number.setter
+ def attribute_number(self, attribute_number):
+ """Sets the attribute_number of this XmlItem.
+
+
+ :param attribute_number: The attribute_number of this XmlItem. # noqa: E501
+ :type: float
+ """
+
+ self._attribute_number = attribute_number
+
+ @property
+ def attribute_integer(self):
+ """Gets the attribute_integer of this XmlItem. # noqa: E501
+
+
+ :return: The attribute_integer of this XmlItem. # noqa: E501
+ :rtype: int
+ """
+ return self._attribute_integer
+
+ @attribute_integer.setter
+ def attribute_integer(self, attribute_integer):
+ """Sets the attribute_integer of this XmlItem.
+
+
+ :param attribute_integer: The attribute_integer of this XmlItem. # noqa: E501
+ :type: int
+ """
+
+ self._attribute_integer = attribute_integer
+
+ @property
+ def attribute_boolean(self):
+ """Gets the attribute_boolean of this XmlItem. # noqa: E501
+
+
+ :return: The attribute_boolean of this XmlItem. # noqa: E501
+ :rtype: bool
+ """
+ return self._attribute_boolean
+
+ @attribute_boolean.setter
+ def attribute_boolean(self, attribute_boolean):
+ """Sets the attribute_boolean of this XmlItem.
+
+
+ :param attribute_boolean: The attribute_boolean of this XmlItem. # noqa: E501
+ :type: bool
+ """
+
+ self._attribute_boolean = attribute_boolean
+
+ @property
+ def wrapped_array(self):
+ """Gets the wrapped_array of this XmlItem. # noqa: E501
+
+
+ :return: The wrapped_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._wrapped_array
+
+ @wrapped_array.setter
+ def wrapped_array(self, wrapped_array):
+ """Sets the wrapped_array of this XmlItem.
+
+
+ :param wrapped_array: The wrapped_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._wrapped_array = wrapped_array
+
+ @property
+ def name_string(self):
+ """Gets the name_string of this XmlItem. # noqa: E501
+
+
+ :return: The name_string of this XmlItem. # noqa: E501
+ :rtype: str
+ """
+ return self._name_string
+
+ @name_string.setter
+ def name_string(self, name_string):
+ """Sets the name_string of this XmlItem.
+
+
+ :param name_string: The name_string of this XmlItem. # noqa: E501
+ :type: str
+ """
+
+ self._name_string = name_string
+
+ @property
+ def name_number(self):
+ """Gets the name_number of this XmlItem. # noqa: E501
+
+
+ :return: The name_number of this XmlItem. # noqa: E501
+ :rtype: float
+ """
+ return self._name_number
+
+ @name_number.setter
+ def name_number(self, name_number):
+ """Sets the name_number of this XmlItem.
+
+
+ :param name_number: The name_number of this XmlItem. # noqa: E501
+ :type: float
+ """
+
+ self._name_number = name_number
+
+ @property
+ def name_integer(self):
+ """Gets the name_integer of this XmlItem. # noqa: E501
+
+
+ :return: The name_integer of this XmlItem. # noqa: E501
+ :rtype: int
+ """
+ return self._name_integer
+
+ @name_integer.setter
+ def name_integer(self, name_integer):
+ """Sets the name_integer of this XmlItem.
+
+
+ :param name_integer: The name_integer of this XmlItem. # noqa: E501
+ :type: int
+ """
+
+ self._name_integer = name_integer
+
+ @property
+ def name_boolean(self):
+ """Gets the name_boolean of this XmlItem. # noqa: E501
+
+
+ :return: The name_boolean of this XmlItem. # noqa: E501
+ :rtype: bool
+ """
+ return self._name_boolean
+
+ @name_boolean.setter
+ def name_boolean(self, name_boolean):
+ """Sets the name_boolean of this XmlItem.
+
+
+ :param name_boolean: The name_boolean of this XmlItem. # noqa: E501
+ :type: bool
+ """
+
+ self._name_boolean = name_boolean
+
+ @property
+ def name_array(self):
+ """Gets the name_array of this XmlItem. # noqa: E501
+
+
+ :return: The name_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._name_array
+
+ @name_array.setter
+ def name_array(self, name_array):
+ """Sets the name_array of this XmlItem.
+
+
+ :param name_array: The name_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._name_array = name_array
+
+ @property
+ def name_wrapped_array(self):
+ """Gets the name_wrapped_array of this XmlItem. # noqa: E501
+
+
+ :return: The name_wrapped_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._name_wrapped_array
+
+ @name_wrapped_array.setter
+ def name_wrapped_array(self, name_wrapped_array):
+ """Sets the name_wrapped_array of this XmlItem.
+
+
+ :param name_wrapped_array: The name_wrapped_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._name_wrapped_array = name_wrapped_array
+
+ @property
+ def prefix_string(self):
+ """Gets the prefix_string of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_string of this XmlItem. # noqa: E501
+ :rtype: str
+ """
+ return self._prefix_string
+
+ @prefix_string.setter
+ def prefix_string(self, prefix_string):
+ """Sets the prefix_string of this XmlItem.
+
+
+ :param prefix_string: The prefix_string of this XmlItem. # noqa: E501
+ :type: str
+ """
+
+ self._prefix_string = prefix_string
+
+ @property
+ def prefix_number(self):
+ """Gets the prefix_number of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_number of this XmlItem. # noqa: E501
+ :rtype: float
+ """
+ return self._prefix_number
+
+ @prefix_number.setter
+ def prefix_number(self, prefix_number):
+ """Sets the prefix_number of this XmlItem.
+
+
+ :param prefix_number: The prefix_number of this XmlItem. # noqa: E501
+ :type: float
+ """
+
+ self._prefix_number = prefix_number
+
+ @property
+ def prefix_integer(self):
+ """Gets the prefix_integer of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_integer of this XmlItem. # noqa: E501
+ :rtype: int
+ """
+ return self._prefix_integer
+
+ @prefix_integer.setter
+ def prefix_integer(self, prefix_integer):
+ """Sets the prefix_integer of this XmlItem.
+
+
+ :param prefix_integer: The prefix_integer of this XmlItem. # noqa: E501
+ :type: int
+ """
+
+ self._prefix_integer = prefix_integer
+
+ @property
+ def prefix_boolean(self):
+ """Gets the prefix_boolean of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_boolean of this XmlItem. # noqa: E501
+ :rtype: bool
+ """
+ return self._prefix_boolean
+
+ @prefix_boolean.setter
+ def prefix_boolean(self, prefix_boolean):
+ """Sets the prefix_boolean of this XmlItem.
+
+
+ :param prefix_boolean: The prefix_boolean of this XmlItem. # noqa: E501
+ :type: bool
+ """
+
+ self._prefix_boolean = prefix_boolean
+
+ @property
+ def prefix_array(self):
+ """Gets the prefix_array of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._prefix_array
+
+ @prefix_array.setter
+ def prefix_array(self, prefix_array):
+ """Sets the prefix_array of this XmlItem.
+
+
+ :param prefix_array: The prefix_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._prefix_array = prefix_array
+
+ @property
+ def prefix_wrapped_array(self):
+ """Gets the prefix_wrapped_array of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_wrapped_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._prefix_wrapped_array
+
+ @prefix_wrapped_array.setter
+ def prefix_wrapped_array(self, prefix_wrapped_array):
+ """Sets the prefix_wrapped_array of this XmlItem.
+
+
+ :param prefix_wrapped_array: The prefix_wrapped_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._prefix_wrapped_array = prefix_wrapped_array
+
+ @property
+ def namespace_string(self):
+ """Gets the namespace_string of this XmlItem. # noqa: E501
+
+
+ :return: The namespace_string of this XmlItem. # noqa: E501
+ :rtype: str
+ """
+ return self._namespace_string
+
+ @namespace_string.setter
+ def namespace_string(self, namespace_string):
+ """Sets the namespace_string of this XmlItem.
+
+
+ :param namespace_string: The namespace_string of this XmlItem. # noqa: E501
+ :type: str
+ """
+
+ self._namespace_string = namespace_string
+
+ @property
+ def namespace_number(self):
+ """Gets the namespace_number of this XmlItem. # noqa: E501
+
+
+ :return: The namespace_number of this XmlItem. # noqa: E501
+ :rtype: float
+ """
+ return self._namespace_number
+
+ @namespace_number.setter
+ def namespace_number(self, namespace_number):
+ """Sets the namespace_number of this XmlItem.
+
+
+ :param namespace_number: The namespace_number of this XmlItem. # noqa: E501
+ :type: float
+ """
+
+ self._namespace_number = namespace_number
+
+ @property
+ def namespace_integer(self):
+ """Gets the namespace_integer of this XmlItem. # noqa: E501
+
+
+ :return: The namespace_integer of this XmlItem. # noqa: E501
+ :rtype: int
+ """
+ return self._namespace_integer
+
+ @namespace_integer.setter
+ def namespace_integer(self, namespace_integer):
+ """Sets the namespace_integer of this XmlItem.
+
+
+ :param namespace_integer: The namespace_integer of this XmlItem. # noqa: E501
+ :type: int
+ """
+
+ self._namespace_integer = namespace_integer
+
+ @property
+ def namespace_boolean(self):
+ """Gets the namespace_boolean of this XmlItem. # noqa: E501
+
+
+ :return: The namespace_boolean of this XmlItem. # noqa: E501
+ :rtype: bool
+ """
+ return self._namespace_boolean
+
+ @namespace_boolean.setter
+ def namespace_boolean(self, namespace_boolean):
+ """Sets the namespace_boolean of this XmlItem.
+
+
+ :param namespace_boolean: The namespace_boolean of this XmlItem. # noqa: E501
+ :type: bool
+ """
+
+ self._namespace_boolean = namespace_boolean
+
+ @property
+ def namespace_array(self):
+ """Gets the namespace_array of this XmlItem. # noqa: E501
+
+
+ :return: The namespace_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._namespace_array
+
+ @namespace_array.setter
+ def namespace_array(self, namespace_array):
+ """Sets the namespace_array of this XmlItem.
+
+
+ :param namespace_array: The namespace_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._namespace_array = namespace_array
+
+ @property
+ def namespace_wrapped_array(self):
+ """Gets the namespace_wrapped_array of this XmlItem. # noqa: E501
+
+
+ :return: The namespace_wrapped_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._namespace_wrapped_array
+
+ @namespace_wrapped_array.setter
+ def namespace_wrapped_array(self, namespace_wrapped_array):
+ """Sets the namespace_wrapped_array of this XmlItem.
+
+
+ :param namespace_wrapped_array: The namespace_wrapped_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._namespace_wrapped_array = namespace_wrapped_array
+
+ @property
+ def prefix_ns_string(self):
+ """Gets the prefix_ns_string of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_ns_string of this XmlItem. # noqa: E501
+ :rtype: str
+ """
+ return self._prefix_ns_string
+
+ @prefix_ns_string.setter
+ def prefix_ns_string(self, prefix_ns_string):
+ """Sets the prefix_ns_string of this XmlItem.
+
+
+ :param prefix_ns_string: The prefix_ns_string of this XmlItem. # noqa: E501
+ :type: str
+ """
+
+ self._prefix_ns_string = prefix_ns_string
+
+ @property
+ def prefix_ns_number(self):
+ """Gets the prefix_ns_number of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_ns_number of this XmlItem. # noqa: E501
+ :rtype: float
+ """
+ return self._prefix_ns_number
+
+ @prefix_ns_number.setter
+ def prefix_ns_number(self, prefix_ns_number):
+ """Sets the prefix_ns_number of this XmlItem.
+
+
+ :param prefix_ns_number: The prefix_ns_number of this XmlItem. # noqa: E501
+ :type: float
+ """
+
+ self._prefix_ns_number = prefix_ns_number
+
+ @property
+ def prefix_ns_integer(self):
+ """Gets the prefix_ns_integer of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_ns_integer of this XmlItem. # noqa: E501
+ :rtype: int
+ """
+ return self._prefix_ns_integer
+
+ @prefix_ns_integer.setter
+ def prefix_ns_integer(self, prefix_ns_integer):
+ """Sets the prefix_ns_integer of this XmlItem.
+
+
+ :param prefix_ns_integer: The prefix_ns_integer of this XmlItem. # noqa: E501
+ :type: int
+ """
+
+ self._prefix_ns_integer = prefix_ns_integer
+
+ @property
+ def prefix_ns_boolean(self):
+ """Gets the prefix_ns_boolean of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_ns_boolean of this XmlItem. # noqa: E501
+ :rtype: bool
+ """
+ return self._prefix_ns_boolean
+
+ @prefix_ns_boolean.setter
+ def prefix_ns_boolean(self, prefix_ns_boolean):
+ """Sets the prefix_ns_boolean of this XmlItem.
+
+
+ :param prefix_ns_boolean: The prefix_ns_boolean of this XmlItem. # noqa: E501
+ :type: bool
+ """
+
+ self._prefix_ns_boolean = prefix_ns_boolean
+
+ @property
+ def prefix_ns_array(self):
+ """Gets the prefix_ns_array of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_ns_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._prefix_ns_array
+
+ @prefix_ns_array.setter
+ def prefix_ns_array(self, prefix_ns_array):
+ """Sets the prefix_ns_array of this XmlItem.
+
+
+ :param prefix_ns_array: The prefix_ns_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._prefix_ns_array = prefix_ns_array
+
+ @property
+ def prefix_ns_wrapped_array(self):
+ """Gets the prefix_ns_wrapped_array of this XmlItem. # noqa: E501
+
+
+ :return: The prefix_ns_wrapped_array of this XmlItem. # noqa: E501
+ :rtype: list[int]
+ """
+ return self._prefix_ns_wrapped_array
+
+ @prefix_ns_wrapped_array.setter
+ def prefix_ns_wrapped_array(self, prefix_ns_wrapped_array):
+ """Sets the prefix_ns_wrapped_array of this XmlItem.
+
+
+ :param prefix_ns_wrapped_array: The prefix_ns_wrapped_array of this XmlItem. # noqa: E501
+ :type: list[int]
+ """
+
+ self._prefix_ns_wrapped_array = prefix_ns_wrapped_array
+
+ def to_dict(self):
+ """Returns the model properties as a dict"""
+ result = {}
+
+ for attr, _ in six.iteritems(self.openapi_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, XmlItem):
+ return False
+
+ return self.__dict__ == other.__dict__
+
+ def __ne__(self, other):
+ """Returns true if both objects are not equal"""
+ return not self == other
diff --git a/samples/client/petstore/python-experimental/petstore_api/rest.py b/samples/client/petstore/python-experimental/petstore_api/rest.py
new file mode 100644
index 0000000000..7ed815b8a1
--- /dev/null
+++ b/samples/client/petstore/python-experimental/petstore_api/rest.py
@@ -0,0 +1,296 @@
+# 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
+"""
+
+
+from __future__ import absolute_import
+
+import io
+import json
+import logging
+import re
+import ssl
+
+import certifi
+# python 2 and python 3 compatibility library
+import six
+from six.moves.urllib.parse import urlencode
+import urllib3
+
+from petstore_api.exceptions import ApiException, ApiValueError
+
+
+logger = logging.getLogger(__name__)
+
+
+class RESTResponse(io.IOBase):
+
+ def __init__(self, resp):
+ self.urllib3_response = resp
+ self.status = resp.status
+ self.reason = resp.reason
+ self.data = resp.data
+
+ def getheaders(self):
+ """Returns a dictionary of the response headers."""
+ return self.urllib3_response.getheaders()
+
+ def getheader(self, name, default=None):
+ """Returns a given response header."""
+ return self.urllib3_response.getheader(name, default)
+
+
+class RESTClientObject(object):
+
+ def __init__(self, configuration, pools_size=4, maxsize=None):
+ # urllib3.PoolManager will pass all kw parameters to connectionpool
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
+ # maxsize is the number of requests to host that are allowed in parallel # noqa: E501
+ # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
+
+ # cert_reqs
+ if configuration.verify_ssl:
+ cert_reqs = ssl.CERT_REQUIRED
+ else:
+ cert_reqs = ssl.CERT_NONE
+
+ # ca_certs
+ if configuration.ssl_ca_cert:
+ ca_certs = configuration.ssl_ca_cert
+ else:
+ # if not set certificate file, use Mozilla's root certificates.
+ ca_certs = certifi.where()
+
+ addition_pool_args = {}
+ if configuration.assert_hostname is not None:
+ addition_pool_args['assert_hostname'] = configuration.assert_hostname # noqa: E501
+
+ if configuration.retries is not None:
+ addition_pool_args['retries'] = configuration.retries
+
+ if maxsize is None:
+ if configuration.connection_pool_maxsize is not None:
+ maxsize = configuration.connection_pool_maxsize
+ else:
+ maxsize = 4
+
+ # https pool manager
+ if configuration.proxy:
+ self.pool_manager = urllib3.ProxyManager(
+ num_pools=pools_size,
+ maxsize=maxsize,
+ cert_reqs=cert_reqs,
+ ca_certs=ca_certs,
+ cert_file=configuration.cert_file,
+ key_file=configuration.key_file,
+ proxy_url=configuration.proxy,
+ proxy_headers=configuration.proxy_headers,
+ **addition_pool_args
+ )
+ else:
+ self.pool_manager = urllib3.PoolManager(
+ num_pools=pools_size,
+ maxsize=maxsize,
+ cert_reqs=cert_reqs,
+ ca_certs=ca_certs,
+ cert_file=configuration.cert_file,
+ key_file=configuration.key_file,
+ **addition_pool_args
+ )
+
+ def request(self, method, url, query_params=None, headers=None,
+ body=None, post_params=None, _preload_content=True,
+ _request_timeout=None):
+ """Perform requests.
+
+ :param method: http request method
+ :param url: http request url
+ :param query_params: query parameters in the url
+ :param headers: http request headers
+ :param body: request json body, for `application/json`
+ :param post_params: request post parameters,
+ `application/x-www-form-urlencoded`
+ and `multipart/form-data`
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ """
+ method = method.upper()
+ assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
+ 'PATCH', 'OPTIONS']
+
+ if post_params and body:
+ raise ApiValueError(
+ "body parameter cannot be used with post_params parameter."
+ )
+
+ post_params = post_params or {}
+ headers = headers or {}
+
+ timeout = None
+ if _request_timeout:
+ if isinstance(_request_timeout, (int, ) if six.PY3 else (int, long)): # noqa: E501,F821
+ timeout = urllib3.Timeout(total=_request_timeout)
+ elif (isinstance(_request_timeout, tuple) and
+ len(_request_timeout) == 2):
+ timeout = urllib3.Timeout(
+ connect=_request_timeout[0], read=_request_timeout[1])
+
+ if 'Content-Type' not in headers:
+ headers['Content-Type'] = 'application/json'
+
+ try:
+ # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
+ if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
+ if query_params:
+ url += '?' + urlencode(query_params)
+ if re.search('json', headers['Content-Type'], re.IGNORECASE):
+ request_body = None
+ if body is not None:
+ request_body = json.dumps(body)
+ r = self.pool_manager.request(
+ method, url,
+ body=request_body,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
+ r = self.pool_manager.request(
+ method, url,
+ fields=post_params,
+ encode_multipart=False,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ elif headers['Content-Type'] == 'multipart/form-data':
+ # must del headers['Content-Type'], or the correct
+ # Content-Type which generated by urllib3 will be
+ # overwritten.
+ del headers['Content-Type']
+ r = self.pool_manager.request(
+ method, url,
+ fields=post_params,
+ encode_multipart=True,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ # Pass a `string` parameter directly in the body to support
+ # other content types than Json when `body` argument is
+ # provided in serialized form
+ elif isinstance(body, str) or isinstance(body, bytes):
+ request_body = body
+ r = self.pool_manager.request(
+ method, url,
+ body=request_body,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ else:
+ # Cannot generate the request from given parameters
+ msg = """Cannot prepare a request message for provided
+ arguments. Please check that your arguments match
+ declared content type."""
+ raise ApiException(status=0, reason=msg)
+ # For `GET`, `HEAD`
+ else:
+ r = self.pool_manager.request(method, url,
+ fields=query_params,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ except urllib3.exceptions.SSLError as e:
+ msg = "{0}\n{1}".format(type(e).__name__, str(e))
+ raise ApiException(status=0, reason=msg)
+
+ if _preload_content:
+ r = RESTResponse(r)
+
+ # In the python 3, the response.data is bytes.
+ # we need to decode it to string.
+ if six.PY3:
+ r.data = r.data.decode('utf8')
+
+ # log response body
+ logger.debug("response body: %s", r.data)
+
+ if not 200 <= r.status <= 299:
+ raise ApiException(http_resp=r)
+
+ return r
+
+ def GET(self, url, headers=None, query_params=None, _preload_content=True,
+ _request_timeout=None):
+ return self.request("GET", url,
+ headers=headers,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ query_params=query_params)
+
+ def HEAD(self, url, headers=None, query_params=None, _preload_content=True,
+ _request_timeout=None):
+ return self.request("HEAD", url,
+ headers=headers,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ query_params=query_params)
+
+ def OPTIONS(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("OPTIONS", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def DELETE(self, url, headers=None, query_params=None, body=None,
+ _preload_content=True, _request_timeout=None):
+ return self.request("DELETE", url,
+ headers=headers,
+ query_params=query_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def POST(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("POST", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def PUT(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("PUT", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def PATCH(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("PATCH", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
diff --git a/samples/client/petstore/python-experimental/pom.xml b/samples/client/petstore/python-experimental/pom.xml
new file mode 100644
index 0000000000..3c94633318
--- /dev/null
+++ b/samples/client/petstore/python-experimental/pom.xml
@@ -0,0 +1,46 @@
+
+ 4.0.0
+ org.openapitools
+ PythonExperimentalPetstoreClientTests
+ pom
+ 1.0-SNAPSHOT
+ Python Experimental OpenAPI Petstore Client
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}
+
+
+
+
+
+ org.codehaus.mojo
+ exec-maven-plugin
+ 1.2.1
+
+
+ nose-test
+ integration-test
+
+ exec
+
+
+ make
+
+ test-all
+
+
+
+
+
+
+
+
diff --git a/samples/client/petstore/python-experimental/requirements.txt b/samples/client/petstore/python-experimental/requirements.txt
new file mode 100644
index 0000000000..bafdc07532
--- /dev/null
+++ b/samples/client/petstore/python-experimental/requirements.txt
@@ -0,0 +1,5 @@
+certifi >= 14.05.14
+six >= 1.10
+python_dateutil >= 2.5.3
+setuptools >= 21.0.0
+urllib3 >= 1.15.1
diff --git a/samples/client/petstore/python-experimental/setup.cfg b/samples/client/petstore/python-experimental/setup.cfg
new file mode 100644
index 0000000000..26b7a359d5
--- /dev/null
+++ b/samples/client/petstore/python-experimental/setup.cfg
@@ -0,0 +1,11 @@
+[nosetests]
+logging-clear-handlers=true
+verbosity=2
+randomize=true
+exe=true
+with-coverage=true
+cover-package=petstore_api
+cover-erase=true
+
+[flake8]
+max-line-length=99
diff --git a/samples/client/petstore/python-experimental/setup.py b/samples/client/petstore/python-experimental/setup.py
new file mode 100644
index 0000000000..86988b6d42
--- /dev/null
+++ b/samples/client/petstore/python-experimental/setup.py
@@ -0,0 +1,39 @@
+# 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
+"""
+
+
+from setuptools import setup, find_packages # noqa: H301
+
+NAME = "petstore-api"
+VERSION = "1.0.0"
+# To install the library, run the following
+#
+# python setup.py install
+#
+# prerequisite: setuptools
+# http://pypi.python.org/pypi/setuptools
+
+REQUIRES = ["urllib3 >= 1.15", "six >= 1.10", "certifi", "python-dateutil"]
+
+setup(
+ name=NAME,
+ version=VERSION,
+ description="OpenAPI Petstore",
+ author_email="",
+ url="",
+ keywords=["OpenAPI", "OpenAPI-Generator", "OpenAPI Petstore"],
+ install_requires=REQUIRES,
+ packages=find_packages(),
+ include_package_data=True,
+ long_description="""\
+ 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
+ """
+)
diff --git a/samples/client/petstore/python-experimental/test-requirements.txt b/samples/client/petstore/python-experimental/test-requirements.txt
new file mode 100644
index 0000000000..2702246c0e
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test-requirements.txt
@@ -0,0 +1,5 @@
+coverage>=4.0.3
+nose>=1.3.7
+pluggy>=0.3.1
+py>=1.4.31
+randomize>=0.13
diff --git a/samples/client/petstore/python-experimental/test/__init__.py b/samples/client/petstore/python-experimental/test/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_any_type.py b/samples/client/petstore/python-experimental/test/test_additional_properties_any_type.py
new file mode 100644
index 0000000000..4b6739a1fa
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_any_type.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_any_type import AdditionalPropertiesAnyType # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesAnyType(unittest.TestCase):
+ """AdditionalPropertiesAnyType unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesAnyType(self):
+ """Test AdditionalPropertiesAnyType"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_any_type.AdditionalPropertiesAnyType() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_array.py b/samples/client/petstore/python-experimental/test/test_additional_properties_array.py
new file mode 100644
index 0000000000..c4cf43499c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_array.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_array import AdditionalPropertiesArray # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesArray(unittest.TestCase):
+ """AdditionalPropertiesArray unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesArray(self):
+ """Test AdditionalPropertiesArray"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_array.AdditionalPropertiesArray() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_boolean.py b/samples/client/petstore/python-experimental/test/test_additional_properties_boolean.py
new file mode 100644
index 0000000000..cc3cecc852
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_boolean.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_boolean import AdditionalPropertiesBoolean # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesBoolean(unittest.TestCase):
+ """AdditionalPropertiesBoolean unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesBoolean(self):
+ """Test AdditionalPropertiesBoolean"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_boolean.AdditionalPropertiesBoolean() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_class.py b/samples/client/petstore/python-experimental/test/test_additional_properties_class.py
new file mode 100644
index 0000000000..fc9df3bbb5
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_class.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_class import AdditionalPropertiesClass # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesClass(unittest.TestCase):
+ """AdditionalPropertiesClass unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesClass(self):
+ """Test AdditionalPropertiesClass"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_class.AdditionalPropertiesClass() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_integer.py b/samples/client/petstore/python-experimental/test/test_additional_properties_integer.py
new file mode 100644
index 0000000000..774c367b21
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_integer.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_integer import AdditionalPropertiesInteger # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesInteger(unittest.TestCase):
+ """AdditionalPropertiesInteger unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesInteger(self):
+ """Test AdditionalPropertiesInteger"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_integer.AdditionalPropertiesInteger() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_number.py b/samples/client/petstore/python-experimental/test/test_additional_properties_number.py
new file mode 100644
index 0000000000..0d370e781b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_number.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_number import AdditionalPropertiesNumber # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesNumber(unittest.TestCase):
+ """AdditionalPropertiesNumber unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesNumber(self):
+ """Test AdditionalPropertiesNumber"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_number.AdditionalPropertiesNumber() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_object.py b/samples/client/petstore/python-experimental/test/test_additional_properties_object.py
new file mode 100644
index 0000000000..6e718b28cd
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_object.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_object import AdditionalPropertiesObject # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesObject(unittest.TestCase):
+ """AdditionalPropertiesObject unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesObject(self):
+ """Test AdditionalPropertiesObject"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_object.AdditionalPropertiesObject() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_additional_properties_string.py b/samples/client/petstore/python-experimental/test/test_additional_properties_string.py
new file mode 100644
index 0000000000..a46cb3e256
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_additional_properties_string.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.additional_properties_string import AdditionalPropertiesString # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAdditionalPropertiesString(unittest.TestCase):
+ """AdditionalPropertiesString unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAdditionalPropertiesString(self):
+ """Test AdditionalPropertiesString"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.additional_properties_string.AdditionalPropertiesString() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_animal.py b/samples/client/petstore/python-experimental/test/test_animal.py
new file mode 100644
index 0000000000..179f1fbd0e
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_animal.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.animal import Animal # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAnimal(unittest.TestCase):
+ """Animal unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testAnimal(self):
+ """Test Animal"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.animal.Animal() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_another_fake_api.py b/samples/client/petstore/python-experimental/test/test_another_fake_api.py
new file mode 100644
index 0000000000..4b80dc4eda
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_another_fake_api.py
@@ -0,0 +1,40 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.api.another_fake_api import AnotherFakeApi # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestAnotherFakeApi(unittest.TestCase):
+ """AnotherFakeApi unit test stubs"""
+
+ def setUp(self):
+ self.api = petstore_api.api.another_fake_api.AnotherFakeApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_test_special_tags(self):
+ """Test case for test_special_tags
+
+ To test special tags # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_api_response.py b/samples/client/petstore/python-experimental/test/test_api_response.py
new file mode 100644
index 0000000000..5031b458a0
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_api_response.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.api_response import ApiResponse # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestApiResponse(unittest.TestCase):
+ """ApiResponse unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testApiResponse(self):
+ """Test ApiResponse"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.api_response.ApiResponse() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_array_of_array_of_number_only.py b/samples/client/petstore/python-experimental/test/test_array_of_array_of_number_only.py
new file mode 100644
index 0000000000..a022330454
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_array_of_array_of_number_only.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestArrayOfArrayOfNumberOnly(unittest.TestCase):
+ """ArrayOfArrayOfNumberOnly unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testArrayOfArrayOfNumberOnly(self):
+ """Test ArrayOfArrayOfNumberOnly"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.array_of_array_of_number_only.ArrayOfArrayOfNumberOnly() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_array_of_number_only.py b/samples/client/petstore/python-experimental/test/test_array_of_number_only.py
new file mode 100644
index 0000000000..1a928bf7d2
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_array_of_number_only.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.array_of_number_only import ArrayOfNumberOnly # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestArrayOfNumberOnly(unittest.TestCase):
+ """ArrayOfNumberOnly unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testArrayOfNumberOnly(self):
+ """Test ArrayOfNumberOnly"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.array_of_number_only.ArrayOfNumberOnly() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_array_test.py b/samples/client/petstore/python-experimental/test/test_array_test.py
new file mode 100644
index 0000000000..c56b77b77e
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_array_test.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.array_test import ArrayTest # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestArrayTest(unittest.TestCase):
+ """ArrayTest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testArrayTest(self):
+ """Test ArrayTest"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.array_test.ArrayTest() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_capitalization.py b/samples/client/petstore/python-experimental/test/test_capitalization.py
new file mode 100644
index 0000000000..2ae7725b3f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_capitalization.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.capitalization import Capitalization # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestCapitalization(unittest.TestCase):
+ """Capitalization unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testCapitalization(self):
+ """Test Capitalization"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.capitalization.Capitalization() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_cat.py b/samples/client/petstore/python-experimental/test/test_cat.py
new file mode 100644
index 0000000000..5ebd7908d2
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_cat.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.cat import Cat # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestCat(unittest.TestCase):
+ """Cat unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testCat(self):
+ """Test Cat"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.cat.Cat() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_cat_all_of.py b/samples/client/petstore/python-experimental/test/test_cat_all_of.py
new file mode 100644
index 0000000000..531443380c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_cat_all_of.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.cat_all_of import CatAllOf # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestCatAllOf(unittest.TestCase):
+ """CatAllOf unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testCatAllOf(self):
+ """Test CatAllOf"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.cat_all_of.CatAllOf() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_category.py b/samples/client/petstore/python-experimental/test/test_category.py
new file mode 100644
index 0000000000..6a59252128
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_category.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.category import Category # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestCategory(unittest.TestCase):
+ """Category unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testCategory(self):
+ """Test Category"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.category.Category() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_class_model.py b/samples/client/petstore/python-experimental/test/test_class_model.py
new file mode 100644
index 0000000000..12b7fb9940
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_class_model.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.class_model import ClassModel # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestClassModel(unittest.TestCase):
+ """ClassModel unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testClassModel(self):
+ """Test ClassModel"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.class_model.ClassModel() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_client.py b/samples/client/petstore/python-experimental/test/test_client.py
new file mode 100644
index 0000000000..9e18c4310d
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_client.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.client import Client # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestClient(unittest.TestCase):
+ """Client unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testClient(self):
+ """Test Client"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.client.Client() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_dog.py b/samples/client/petstore/python-experimental/test/test_dog.py
new file mode 100644
index 0000000000..dc151f998d
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_dog.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.dog import Dog # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestDog(unittest.TestCase):
+ """Dog unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testDog(self):
+ """Test Dog"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.dog.Dog() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_dog_all_of.py b/samples/client/petstore/python-experimental/test/test_dog_all_of.py
new file mode 100644
index 0000000000..3d79f2888c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_dog_all_of.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.dog_all_of import DogAllOf # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestDogAllOf(unittest.TestCase):
+ """DogAllOf unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testDogAllOf(self):
+ """Test DogAllOf"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.dog_all_of.DogAllOf() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_enum_arrays.py b/samples/client/petstore/python-experimental/test/test_enum_arrays.py
new file mode 100644
index 0000000000..be572508ef
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_enum_arrays.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.enum_arrays import EnumArrays # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestEnumArrays(unittest.TestCase):
+ """EnumArrays unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testEnumArrays(self):
+ """Test EnumArrays"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.enum_arrays.EnumArrays() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_enum_class.py b/samples/client/petstore/python-experimental/test/test_enum_class.py
new file mode 100644
index 0000000000..57eb14558a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_enum_class.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.enum_class import EnumClass # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestEnumClass(unittest.TestCase):
+ """EnumClass unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testEnumClass(self):
+ """Test EnumClass"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.enum_class.EnumClass() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_enum_test.py b/samples/client/petstore/python-experimental/test/test_enum_test.py
new file mode 100644
index 0000000000..ecd43afc70
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_enum_test.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.enum_test import EnumTest # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestEnumTest(unittest.TestCase):
+ """EnumTest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testEnumTest(self):
+ """Test EnumTest"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.enum_test.EnumTest() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_fake_api.py b/samples/client/petstore/python-experimental/test/test_fake_api.py
new file mode 100644
index 0000000000..fc2cbef35f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_fake_api.py
@@ -0,0 +1,98 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.api.fake_api import FakeApi # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestFakeApi(unittest.TestCase):
+ """FakeApi unit test stubs"""
+
+ def setUp(self):
+ self.api = petstore_api.api.fake_api.FakeApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_fake_outer_boolean_serialize(self):
+ """Test case for fake_outer_boolean_serialize
+
+ """
+ pass
+
+ def test_fake_outer_composite_serialize(self):
+ """Test case for fake_outer_composite_serialize
+
+ """
+ pass
+
+ def test_fake_outer_number_serialize(self):
+ """Test case for fake_outer_number_serialize
+
+ """
+ pass
+
+ def test_fake_outer_string_serialize(self):
+ """Test case for fake_outer_string_serialize
+
+ """
+ pass
+
+ def test_test_body_with_query_params(self):
+ """Test case for test_body_with_query_params
+
+ """
+ pass
+
+ def test_test_client_model(self):
+ """Test case for test_client_model
+
+ To test \"client\" model # noqa: E501
+ """
+ pass
+
+ def test_test_endpoint_parameters(self):
+ """Test case for test_endpoint_parameters
+
+ Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 # noqa: E501
+ """
+ pass
+
+ def test_test_enum_parameters(self):
+ """Test case for test_enum_parameters
+
+ To test enum parameters # noqa: E501
+ """
+ pass
+
+ def test_test_inline_additional_properties(self):
+ """Test case for test_inline_additional_properties
+
+ test inline additionalProperties # noqa: E501
+ """
+ pass
+
+ def test_test_json_form_data(self):
+ """Test case for test_json_form_data
+
+ test json serialization of form data # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_fake_classname_tags_123_api.py b/samples/client/petstore/python-experimental/test/test_fake_classname_tags_123_api.py
new file mode 100644
index 0000000000..87cac0b9ef
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_fake_classname_tags_123_api.py
@@ -0,0 +1,40 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.api.fake_classname_tags_123_api import FakeClassnameTags123Api # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestFakeClassnameTags123Api(unittest.TestCase):
+ """FakeClassnameTags123Api unit test stubs"""
+
+ def setUp(self):
+ self.api = petstore_api.api.fake_classname_tags_123_api.FakeClassnameTags123Api() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_test_classname(self):
+ """Test case for test_classname
+
+ To test class name in snake case # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_file.py b/samples/client/petstore/python-experimental/test/test_file.py
new file mode 100644
index 0000000000..cc32edb7b5
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_file.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.file import File # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestFile(unittest.TestCase):
+ """File unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testFile(self):
+ """Test File"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.file.File() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_file_schema_test_class.py b/samples/client/petstore/python-experimental/test/test_file_schema_test_class.py
new file mode 100644
index 0000000000..91e1b6a1c7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_file_schema_test_class.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.file_schema_test_class import FileSchemaTestClass # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestFileSchemaTestClass(unittest.TestCase):
+ """FileSchemaTestClass unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testFileSchemaTestClass(self):
+ """Test FileSchemaTestClass"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.file_schema_test_class.FileSchemaTestClass() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_format_test.py b/samples/client/petstore/python-experimental/test/test_format_test.py
new file mode 100644
index 0000000000..46707c77b7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_format_test.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.format_test import FormatTest # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestFormatTest(unittest.TestCase):
+ """FormatTest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testFormatTest(self):
+ """Test FormatTest"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.format_test.FormatTest() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_has_only_read_only.py b/samples/client/petstore/python-experimental/test/test_has_only_read_only.py
new file mode 100644
index 0000000000..2dc052a328
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_has_only_read_only.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.has_only_read_only import HasOnlyReadOnly # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestHasOnlyReadOnly(unittest.TestCase):
+ """HasOnlyReadOnly unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testHasOnlyReadOnly(self):
+ """Test HasOnlyReadOnly"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.has_only_read_only.HasOnlyReadOnly() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_list.py b/samples/client/petstore/python-experimental/test/test_list.py
new file mode 100644
index 0000000000..a538a6b1ad
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_list.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.list import List # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestList(unittest.TestCase):
+ """List unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testList(self):
+ """Test List"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.list.List() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_map_test.py b/samples/client/petstore/python-experimental/test/test_map_test.py
new file mode 100644
index 0000000000..0ba6481903
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_map_test.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.map_test import MapTest # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestMapTest(unittest.TestCase):
+ """MapTest unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testMapTest(self):
+ """Test MapTest"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.map_test.MapTest() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_mixed_properties_and_additional_properties_class.py b/samples/client/petstore/python-experimental/test/test_mixed_properties_and_additional_properties_class.py
new file mode 100644
index 0000000000..8893bdaf44
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_mixed_properties_and_additional_properties_class.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.mixed_properties_and_additional_properties_class import MixedPropertiesAndAdditionalPropertiesClass # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestMixedPropertiesAndAdditionalPropertiesClass(unittest.TestCase):
+ """MixedPropertiesAndAdditionalPropertiesClass unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testMixedPropertiesAndAdditionalPropertiesClass(self):
+ """Test MixedPropertiesAndAdditionalPropertiesClass"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.mixed_properties_and_additional_properties_class.MixedPropertiesAndAdditionalPropertiesClass() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_model200_response.py b/samples/client/petstore/python-experimental/test/test_model200_response.py
new file mode 100644
index 0000000000..fab761f4ed
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_model200_response.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.model200_response import Model200Response # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestModel200Response(unittest.TestCase):
+ """Model200Response unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testModel200Response(self):
+ """Test Model200Response"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.model200_response.Model200Response() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_model_return.py b/samples/client/petstore/python-experimental/test/test_model_return.py
new file mode 100644
index 0000000000..ae3f15ee6b
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_model_return.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.model_return import ModelReturn # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestModelReturn(unittest.TestCase):
+ """ModelReturn unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testModelReturn(self):
+ """Test ModelReturn"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.model_return.ModelReturn() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_name.py b/samples/client/petstore/python-experimental/test/test_name.py
new file mode 100644
index 0000000000..d6c7256399
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_name.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.name import Name # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestName(unittest.TestCase):
+ """Name unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testName(self):
+ """Test Name"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.name.Name() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_number_only.py b/samples/client/petstore/python-experimental/test/test_number_only.py
new file mode 100644
index 0000000000..7f6df65c80
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_number_only.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.number_only import NumberOnly # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestNumberOnly(unittest.TestCase):
+ """NumberOnly unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testNumberOnly(self):
+ """Test NumberOnly"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.number_only.NumberOnly() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_order.py b/samples/client/petstore/python-experimental/test/test_order.py
new file mode 100644
index 0000000000..3e7d517d5c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_order.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.order import Order # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestOrder(unittest.TestCase):
+ """Order unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testOrder(self):
+ """Test Order"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.order.Order() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_outer_composite.py b/samples/client/petstore/python-experimental/test/test_outer_composite.py
new file mode 100644
index 0000000000..dcb078cd21
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_outer_composite.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.outer_composite import OuterComposite # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestOuterComposite(unittest.TestCase):
+ """OuterComposite unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testOuterComposite(self):
+ """Test OuterComposite"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.outer_composite.OuterComposite() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_outer_enum.py b/samples/client/petstore/python-experimental/test/test_outer_enum.py
new file mode 100644
index 0000000000..472e36e168
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_outer_enum.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.outer_enum import OuterEnum # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestOuterEnum(unittest.TestCase):
+ """OuterEnum unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testOuterEnum(self):
+ """Test OuterEnum"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.outer_enum.OuterEnum() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_pet.py b/samples/client/petstore/python-experimental/test/test_pet.py
new file mode 100644
index 0000000000..bc5cc30fac
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_pet.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.pet import Pet # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestPet(unittest.TestCase):
+ """Pet unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testPet(self):
+ """Test Pet"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.pet.Pet() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_pet_api.py b/samples/client/petstore/python-experimental/test/test_pet_api.py
new file mode 100644
index 0000000000..ffd3e25c4c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_pet_api.py
@@ -0,0 +1,89 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.api.pet_api import PetApi # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestPetApi(unittest.TestCase):
+ """PetApi unit test stubs"""
+
+ def setUp(self):
+ self.api = petstore_api.api.pet_api.PetApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_add_pet(self):
+ """Test case for add_pet
+
+ Add a new pet to the store # noqa: E501
+ """
+ pass
+
+ def test_delete_pet(self):
+ """Test case for delete_pet
+
+ Deletes a pet # noqa: E501
+ """
+ pass
+
+ def test_find_pets_by_status(self):
+ """Test case for find_pets_by_status
+
+ Finds Pets by status # noqa: E501
+ """
+ pass
+
+ def test_find_pets_by_tags(self):
+ """Test case for find_pets_by_tags
+
+ Finds Pets by tags # noqa: E501
+ """
+ pass
+
+ def test_get_pet_by_id(self):
+ """Test case for get_pet_by_id
+
+ Find pet by ID # noqa: E501
+ """
+ pass
+
+ def test_update_pet(self):
+ """Test case for update_pet
+
+ Update an existing pet # noqa: E501
+ """
+ pass
+
+ def test_update_pet_with_form(self):
+ """Test case for update_pet_with_form
+
+ Updates a pet in the store with form data # noqa: E501
+ """
+ pass
+
+ def test_upload_file(self):
+ """Test case for upload_file
+
+ uploads an image # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_read_only_first.py b/samples/client/petstore/python-experimental/test/test_read_only_first.py
new file mode 100644
index 0000000000..2b647b83fc
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_read_only_first.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.read_only_first import ReadOnlyFirst # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestReadOnlyFirst(unittest.TestCase):
+ """ReadOnlyFirst unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testReadOnlyFirst(self):
+ """Test ReadOnlyFirst"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.read_only_first.ReadOnlyFirst() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_special_model_name.py b/samples/client/petstore/python-experimental/test/test_special_model_name.py
new file mode 100644
index 0000000000..4edfec164f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_special_model_name.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.special_model_name import SpecialModelName # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestSpecialModelName(unittest.TestCase):
+ """SpecialModelName unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testSpecialModelName(self):
+ """Test SpecialModelName"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.special_model_name.SpecialModelName() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_store_api.py b/samples/client/petstore/python-experimental/test/test_store_api.py
new file mode 100644
index 0000000000..37bf771d13
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_store_api.py
@@ -0,0 +1,61 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.api.store_api import StoreApi # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestStoreApi(unittest.TestCase):
+ """StoreApi unit test stubs"""
+
+ def setUp(self):
+ self.api = petstore_api.api.store_api.StoreApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_delete_order(self):
+ """Test case for delete_order
+
+ Delete purchase order by ID # noqa: E501
+ """
+ pass
+
+ def test_get_inventory(self):
+ """Test case for get_inventory
+
+ Returns pet inventories by status # noqa: E501
+ """
+ pass
+
+ def test_get_order_by_id(self):
+ """Test case for get_order_by_id
+
+ Find purchase order by ID # noqa: E501
+ """
+ pass
+
+ def test_place_order(self):
+ """Test case for place_order
+
+ Place an order for a pet # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_tag.py b/samples/client/petstore/python-experimental/test/test_tag.py
new file mode 100644
index 0000000000..2c3c5157e7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_tag.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.tag import Tag # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestTag(unittest.TestCase):
+ """Tag unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testTag(self):
+ """Test Tag"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.tag.Tag() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_type_holder_default.py b/samples/client/petstore/python-experimental/test/test_type_holder_default.py
new file mode 100644
index 0000000000..e23ab2a32f
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_type_holder_default.py
@@ -0,0 +1,49 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.type_holder_default import TypeHolderDefault # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestTypeHolderDefault(unittest.TestCase):
+ """TypeHolderDefault unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testTypeHolderDefault(self):
+ """Test TypeHolderDefault"""
+ # required_vars are set to None now until swagger-parser/swagger-core fixes
+ # https://github.com/swagger-api/swagger-parser/issues/971
+ required_vars = ['number_item', 'integer_item', 'array_item']
+ sample_values = [5.67, 4, [-5, 2, -6]]
+ assigned_variables = {}
+ for index, required_var in enumerate(required_vars):
+ with self.assertRaises(ValueError):
+ model = TypeHolderDefault(**assigned_variables)
+ assigned_variables[required_var] = sample_values[index]
+ # assigned_variables is fully set, all required variables passed in
+ model = TypeHolderDefault(**assigned_variables)
+ self.assertEqual(model.string_item, 'what')
+ self.assertEqual(model.bool_item, True)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_type_holder_example.py b/samples/client/petstore/python-experimental/test/test_type_holder_example.py
new file mode 100644
index 0000000000..7a26214948
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_type_holder_example.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.type_holder_example import TypeHolderExample # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestTypeHolderExample(unittest.TestCase):
+ """TypeHolderExample unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testTypeHolderExample(self):
+ """Test TypeHolderExample"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.type_holder_example.TypeHolderExample() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_user.py b/samples/client/petstore/python-experimental/test/test_user.py
new file mode 100644
index 0000000000..ad9386b690
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_user.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.user import User # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestUser(unittest.TestCase):
+ """User unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testUser(self):
+ """Test User"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.user.User() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_user_api.py b/samples/client/petstore/python-experimental/test/test_user_api.py
new file mode 100644
index 0000000000..6e8aed4f18
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_user_api.py
@@ -0,0 +1,89 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.api.user_api import UserApi # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestUserApi(unittest.TestCase):
+ """UserApi unit test stubs"""
+
+ def setUp(self):
+ self.api = petstore_api.api.user_api.UserApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_create_user(self):
+ """Test case for create_user
+
+ Create user # noqa: E501
+ """
+ pass
+
+ def test_create_users_with_array_input(self):
+ """Test case for create_users_with_array_input
+
+ Creates list of users with given input array # noqa: E501
+ """
+ pass
+
+ def test_create_users_with_list_input(self):
+ """Test case for create_users_with_list_input
+
+ Creates list of users with given input array # noqa: E501
+ """
+ pass
+
+ def test_delete_user(self):
+ """Test case for delete_user
+
+ Delete user # noqa: E501
+ """
+ pass
+
+ def test_get_user_by_name(self):
+ """Test case for get_user_by_name
+
+ Get user by user name # noqa: E501
+ """
+ pass
+
+ def test_login_user(self):
+ """Test case for login_user
+
+ Logs user into the system # noqa: E501
+ """
+ pass
+
+ def test_logout_user(self):
+ """Test case for logout_user
+
+ Logs out current logged in user session # noqa: E501
+ """
+ pass
+
+ def test_update_user(self):
+ """Test case for update_user
+
+ Updated user # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test/test_xml_item.py b/samples/client/petstore/python-experimental/test/test_xml_item.py
new file mode 100644
index 0000000000..121f1ccb66
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test/test_xml_item.py
@@ -0,0 +1,39 @@
+# 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
+
+ OpenAPI spec version: 1.0.0
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import petstore_api
+from petstore_api.models.xml_item import XmlItem # noqa: E501
+from petstore_api.rest import ApiException
+
+
+class TestXmlItem(unittest.TestCase):
+ """XmlItem unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testXmlItem(self):
+ """Test XmlItem"""
+ # FIXME: construct object with mandatory attributes with example values
+ # model = petstore_api.models.xml_item.XmlItem() # noqa: E501
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/test_python2.sh b/samples/client/petstore/python-experimental/test_python2.sh
new file mode 100644
index 0000000000..b68d0bd20a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test_python2.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+nosetests || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
+
diff --git a/samples/client/petstore/python-experimental/test_python2_and_3.sh b/samples/client/petstore/python-experimental/test_python2_and_3.sh
new file mode 100644
index 0000000000..8511d46cd7
--- /dev/null
+++ b/samples/client/petstore/python-experimental/test_python2_and_3.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+REQUIREMENTS_FILE=dev-requirements.txt
+REQUIREMENTS_OUT=dev-requirements.txt.log
+SETUP_OUT=*.egg-info
+VENV=venv
+DEACTIVE=false
+
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+
+### set virtualenv
+if [ -z "$VIRTUAL_ENV" ]; then
+ virtualenv $VENV --no-site-packages --always-copy
+ source $VENV/bin/activate
+ DEACTIVE=true
+fi
+
+### install dependencies
+pip install -r $REQUIREMENTS_FILE | tee -a $REQUIREMENTS_OUT
+python setup.py develop
+
+### run tests
+tox || exit 1
+
+### static analysis of code
+flake8 --show-source petstore_api/
+
+### deactivate virtualenv
+#if [ $DEACTIVE == true ]; then
+# deactivate
+#fi
diff --git a/samples/client/petstore/python-experimental/testfiles/foo.png b/samples/client/petstore/python-experimental/testfiles/foo.png
new file mode 100644
index 0000000000..a9b12cf592
Binary files /dev/null and b/samples/client/petstore/python-experimental/testfiles/foo.png differ
diff --git a/samples/client/petstore/python-experimental/tests/__init__.py b/samples/client/petstore/python-experimental/tests/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/samples/client/petstore/python-experimental/tests/test_api_client.py b/samples/client/petstore/python-experimental/tests/test_api_client.py
new file mode 100644
index 0000000000..a41dbaba9c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_api_client.py
@@ -0,0 +1,172 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAPIetstore-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+from dateutil.parser import parse
+
+import petstore_api
+import petstore_api.configuration
+
+HOST = 'http://petstore.swagger.io/v2'
+
+
+class ApiClientTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+
+ def test_configuration(self):
+ config = petstore_api.Configuration()
+ config.host = 'http://localhost/'
+
+ config.api_key['api_key'] = '123456'
+ config.api_key_prefix['api_key'] = 'PREFIX'
+ config.username = 'test_username'
+ config.password = 'test_password'
+
+ header_params = {'test1': 'value1'}
+ query_params = {'test2': 'value2'}
+ auth_settings = ['api_key', 'unknown']
+
+ client = petstore_api.ApiClient(config)
+
+ # test prefix
+ self.assertEqual('PREFIX', client.configuration.api_key_prefix['api_key'])
+
+ # update parameters based on auth setting
+ client.update_params_for_auth(header_params, query_params, auth_settings)
+
+ # test api key auth
+ self.assertEqual(header_params['test1'], 'value1')
+ self.assertEqual(header_params['api_key'], 'PREFIX 123456')
+ self.assertEqual(query_params['test2'], 'value2')
+
+ # test basic auth
+ self.assertEqual('test_username', client.configuration.username)
+ self.assertEqual('test_password', client.configuration.password)
+
+ def test_select_header_accept(self):
+ accepts = ['APPLICATION/JSON', 'APPLICATION/XML']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['application/json', 'application/xml']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['application/xml', 'application/json']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'application/json')
+
+ accepts = ['text/plain', 'application/xml']
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, 'text/plain, application/xml')
+
+ accepts = []
+ accept = self.api_client.select_header_accept(accepts)
+ self.assertEqual(accept, None)
+
+ def test_select_header_content_type(self):
+ content_types = ['APPLICATION/JSON', 'APPLICATION/XML']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['application/json', 'application/xml']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['application/xml', 'application/json']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ content_types = ['text/plain', 'application/xml']
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'text/plain')
+
+ content_types = []
+ content_type = self.api_client.select_header_content_type(content_types)
+ self.assertEqual(content_type, 'application/json')
+
+ def test_sanitize_for_serialization(self):
+ # None
+ data = None
+ result = self.api_client.sanitize_for_serialization(None)
+ self.assertEqual(result, data)
+
+ # str
+ data = "test string"
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # int
+ data = 1
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # bool
+ data = True
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # date
+ data = parse("1997-07-16").date() # date
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, "1997-07-16")
+
+ # datetime
+ data = parse("1997-07-16T19:20:30.45+01:00") # datetime
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, "1997-07-16T19:20:30.450000+01:00")
+
+ # list
+ data = [1]
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # dict
+ data = {"test key": "test value"}
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, data)
+
+ # model
+ pet_dict = {"id": 1, "name": "monkey",
+ "category": {"id": 1, "name": "test category"},
+ "tags": [{"id": 1, "name": "test tag1"},
+ {"id": 2, "name": "test tag2"}],
+ "status": "available",
+ "photoUrls": ["http://foo.bar.com/3",
+ "http://foo.bar.com/4"]}
+ pet = petstore_api.Pet(name=pet_dict["name"], photo_urls=pet_dict["photoUrls"])
+ pet.id = pet_dict["id"]
+ cate = petstore_api.Category()
+ cate.id = pet_dict["category"]["id"]
+ cate.name = pet_dict["category"]["name"]
+ pet.category = cate
+ tag1 = petstore_api.Tag()
+ tag1.id = pet_dict["tags"][0]["id"]
+ tag1.name = pet_dict["tags"][0]["name"]
+ tag2 = petstore_api.Tag()
+ tag2.id = pet_dict["tags"][1]["id"]
+ tag2.name = pet_dict["tags"][1]["name"]
+ pet.tags = [tag1, tag2]
+ pet.status = pet_dict["status"]
+
+ data = pet
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, pet_dict)
+
+ # list of models
+ list_of_pet_dict = [pet_dict]
+ data = [pet]
+ result = self.api_client.sanitize_for_serialization(data)
+ self.assertEqual(result, list_of_pet_dict)
diff --git a/samples/client/petstore/python-experimental/tests/test_api_exception.py b/samples/client/petstore/python-experimental/tests/test_api_exception.py
new file mode 100644
index 0000000000..75bf81a8de
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_api_exception.py
@@ -0,0 +1,86 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import sys
+import unittest
+
+import petstore_api
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+class ApiExceptionTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "blank"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def test_404_error(self):
+ self.pet_api.add_pet(self.pet)
+ self.pet_api.delete_pet(pet_id=self.pet.id)
+
+ with self.checkRaiseRegex(ApiException, "Pet not found"):
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+
+ try:
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ except ApiException as e:
+ self.assertEqual(e.status, 404)
+ self.assertEqual(e.reason, "Not Found")
+ self.checkRegex(e.body, "Pet not found")
+
+ def test_500_error(self):
+ self.pet_api.add_pet(self.pet)
+
+ with self.checkRaiseRegex(ApiException, "Internal Server Error"):
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata="special",
+ file=None
+ )
+
+ try:
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata="special",
+ file=None
+ )
+ except ApiException as e:
+ self.assertEqual(e.status, 500)
+ self.assertEqual(e.reason, "Internal Server Error")
+ self.checkRegex(e.body, "Error 500 Internal Server Error")
+
+ def checkRaiseRegex(self, expected_exception, expected_regex):
+ if sys.version_info < (3, 0):
+ return self.assertRaisesRegexp(expected_exception, expected_regex)
+
+ return self.assertRaisesRegex(expected_exception, expected_regex)
+
+ def checkRegex(self, text, expected_regex):
+ if sys.version_info < (3, 0):
+ return self.assertRegexpMatches(text, expected_regex)
+
+ return self.assertRegex(text, expected_regex)
diff --git a/samples/client/petstore/python-experimental/tests/test_deserialization.py b/samples/client/petstore/python-experimental/tests/test_deserialization.py
new file mode 100644
index 0000000000..6c4e083d1c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_deserialization.py
@@ -0,0 +1,241 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAPIPetstore-python
+$ nosetests -v
+"""
+from collections import namedtuple
+import json
+import os
+import time
+import unittest
+import datetime
+
+import petstore_api
+
+
+MockResponse = namedtuple('MockResponse', 'data')
+
+
+class DeserializationTests(unittest.TestCase):
+
+ def setUp(self):
+ self.api_client = petstore_api.ApiClient()
+ self.deserialize = self.api_client.deserialize
+
+ def test_enum_test(self):
+ """ deserialize dict(str, Enum_Test) """
+ data = {
+ 'enum_test': {
+ "enum_string": "UPPER",
+ "enum_string_required": "lower",
+ "enum_integer": 1,
+ "enum_number": 1.1,
+ "outerEnum": "placed"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, EnumTest)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['enum_test'], petstore_api.EnumTest))
+ self.assertEqual(deserialized['enum_test'],
+ petstore_api.EnumTest(enum_string="UPPER",
+ enum_string_required="lower",
+ enum_integer=1,
+ enum_number=1.1,
+ outer_enum=petstore_api.OuterEnum.PLACED))
+
+ def test_deserialize_dict_str_pet(self):
+ """ deserialize dict(str, Pet) """
+ data = {
+ 'pet': {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, Pet)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['pet'], petstore_api.Pet))
+
+ def test_deserialize_dict_str_dog(self):
+ """ deserialize dict(str, Dog), use discriminator"""
+ data = {
+ 'dog': {
+ "id": 0,
+ "className": "Dog",
+ "color": "white",
+ "bread": "Jack Russel Terrier"
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, Animal)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['dog'], petstore_api.Dog))
+
+ def test_deserialize_dict_str_int(self):
+ """ deserialize dict(str, int) """
+ data = {
+ 'integer': 1
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, 'dict(str, int)')
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized['integer'], int))
+
+ def test_deserialize_str(self):
+ """ deserialize str """
+ data = "test str"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "str")
+ self.assertTrue(isinstance(deserialized, str))
+
+ def test_deserialize_date(self):
+ """ deserialize date """
+ data = "1997-07-16"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "date")
+ self.assertTrue(isinstance(deserialized, datetime.date))
+
+ def test_deserialize_datetime(self):
+ """ deserialize datetime """
+ data = "1997-07-16T19:20:30.45+01:00"
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "datetime")
+ self.assertTrue(isinstance(deserialized, datetime.datetime))
+
+ def test_deserialize_pet(self):
+ """ deserialize pet """
+ data = {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "Pet")
+ self.assertTrue(isinstance(deserialized, petstore_api.Pet))
+ self.assertEqual(deserialized.id, 0)
+ self.assertEqual(deserialized.name, "doggie")
+ self.assertTrue(isinstance(deserialized.category, petstore_api.Category))
+ self.assertEqual(deserialized.category.name, "string")
+ self.assertTrue(isinstance(deserialized.tags, list))
+ self.assertEqual(deserialized.tags[0].name, "string")
+
+ def test_deserialize_list_of_pet(self):
+ """ deserialize list[Pet] """
+ data = [
+ {
+ "id": 0,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie0",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ },
+ {
+ "id": 1,
+ "category": {
+ "id": 0,
+ "name": "string"
+ },
+ "name": "doggie1",
+ "photoUrls": [
+ "string"
+ ],
+ "tags": [
+ {
+ "id": 0,
+ "name": "string"
+ }
+ ],
+ "status": "available"
+ }]
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "list[Pet]")
+ self.assertTrue(isinstance(deserialized, list))
+ self.assertTrue(isinstance(deserialized[0], petstore_api.Pet))
+ self.assertEqual(deserialized[0].id, 0)
+ self.assertEqual(deserialized[1].id, 1)
+ self.assertEqual(deserialized[0].name, "doggie0")
+ self.assertEqual(deserialized[1].name, "doggie1")
+
+ def test_deserialize_nested_dict(self):
+ """ deserialize dict(str, dict(str, int)) """
+ data = {
+ "foo": {
+ "bar": 1
+ }
+ }
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "dict(str, dict(str, int))")
+ self.assertTrue(isinstance(deserialized, dict))
+ self.assertTrue(isinstance(deserialized["foo"], dict))
+ self.assertTrue(isinstance(deserialized["foo"]["bar"], int))
+
+ def test_deserialize_nested_list(self):
+ """ deserialize list[list[str]] """
+ data = [["foo"]]
+ response = MockResponse(data=json.dumps(data))
+
+ deserialized = self.deserialize(response, "list[list[str]]")
+ self.assertTrue(isinstance(deserialized, list))
+ self.assertTrue(isinstance(deserialized[0], list))
+ self.assertTrue(isinstance(deserialized[0][0], str))
+
+ def test_deserialize_none(self):
+ """ deserialize None """
+ response = MockResponse(data=json.dumps(None))
+
+ deserialized = self.deserialize(response, "datetime")
+ self.assertIsNone(deserialized)
diff --git a/samples/client/petstore/python-experimental/tests/test_enum_arrays.py b/samples/client/petstore/python-experimental/tests/test_enum_arrays.py
new file mode 100644
index 0000000000..2f7e347f9c
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_enum_arrays.py
@@ -0,0 +1,165 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class EnumArraysTests(unittest.TestCase):
+
+ def test_enumarrays_init(self):
+ #
+ # Check various combinations of valid values.
+ #
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=">=")
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="$", array_enum=["fish"])
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=">=", array_enum=["fish"])
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab = petstore_api.EnumArrays("$", ["crab"])
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+ self.assertEqual(fish_or_crab.array_enum, ["crab"])
+
+
+ #
+ # Check if setting invalid values fails
+ #
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="<=")
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol="$", array_enum=["dog"])
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ try:
+ fish_or_crab = petstore_api.EnumArrays(just_symbol=["$"], array_enum=["dog"])
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+
+ def test_enumarrays_setter(self):
+
+ #
+ # Check various combinations of valid values
+ #
+ fish_or_crab = petstore_api.EnumArrays()
+
+ fish_or_crab.just_symbol = ">="
+ self.assertEqual(fish_or_crab.just_symbol, ">=")
+
+ fish_or_crab.just_symbol = "$"
+ self.assertEqual(fish_or_crab.just_symbol, "$")
+
+ fish_or_crab.array_enum = []
+ self.assertEqual(fish_or_crab.array_enum, [])
+
+ fish_or_crab.array_enum = ["fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["fish"])
+
+ fish_or_crab.array_enum = ["fish", "fish", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["fish", "fish", "fish"])
+
+ fish_or_crab.array_enum = ["crab"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab"])
+
+ fish_or_crab.array_enum = ["crab", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab", "fish"])
+
+ fish_or_crab.array_enum = ["crab", "fish", "crab", "fish"]
+ self.assertEqual(fish_or_crab.array_enum, ["crab", "fish", "crab", "fish"])
+
+ #
+ # Check if setting invalid values fails
+ #
+ fish_or_crab = petstore_api.EnumArrays()
+ try:
+ fish_or_crab.just_symbol = "!="
+ except ValueError:
+ self.assertEqual(fish_or_crab.just_symbol, None)
+
+ try:
+ fish_or_crab.just_symbol = ["fish"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.just_symbol, None)
+
+ try:
+ fish_or_crab.array_enum = ["cat"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ try:
+ fish_or_crab.array_enum = ["fish", "crab", "dog"]
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+ try:
+ fish_or_crab.array_enum = "fish"
+ except ValueError:
+ self.assertEqual(fish_or_crab.array_enum, None)
+
+
+ def test_todict(self):
+ #
+ # Check if dictionary serialization works
+ #
+ dollar_fish_crab_dict = {
+ 'just_symbol': "$",
+ 'array_enum': ["fish", "crab"]
+ }
+
+ dollar_fish_crab = petstore_api.EnumArrays("$", ["fish", "crab"])
+
+ self.assertEqual(dollar_fish_crab_dict, dollar_fish_crab.to_dict())
+
+ #
+ # Sanity check for different arrays
+ #
+ dollar_crab_fish_dict = {
+ 'just_symbol': "$",
+ 'array_enum': ["crab", "fish"]
+ }
+
+ dollar_fish_crab = petstore_api.EnumArrays("$", ["fish", "crab"])
+
+ self.assertNotEqual(dollar_crab_fish_dict, dollar_fish_crab.to_dict())
+
+
+ def test_equals(self):
+ #
+ # Check if object comparison works
+ #
+ fish1 = petstore_api.EnumArrays("$", ["fish"])
+ fish2 = petstore_api.EnumArrays("$", ["fish"])
+ self.assertEqual(fish1, fish2)
+
+ fish = petstore_api.EnumArrays("$", ["fish"])
+ crab = petstore_api.EnumArrays("$", ["crab"])
+ self.assertNotEqual(fish, crab)
+
+ dollar = petstore_api.EnumArrays("$")
+ greater = petstore_api.EnumArrays(">=")
+ self.assertNotEqual(dollar, greater)
\ No newline at end of file
diff --git a/samples/client/petstore/python-experimental/tests/test_map_test.py b/samples/client/petstore/python-experimental/tests/test_map_test.py
new file mode 100644
index 0000000000..6031cebf3a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_map_test.py
@@ -0,0 +1,117 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class MapTestTests(unittest.TestCase):
+
+ def test_maptest_init(self):
+ #
+ # Test MapTest construction with valid values
+ #
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_enum_test = petstore_api.MapTest(map_of_enum_string=up_or_low_dict)
+
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+
+ map_of_map_of_strings = {
+ 'val1': 1,
+ 'valText': "Text",
+ 'valueDict': up_or_low_dict
+ }
+ map_enum_test = petstore_api.MapTest(map_map_of_string=map_of_map_of_strings)
+
+ self.assertEqual(map_enum_test.map_map_of_string, map_of_map_of_strings)
+
+ #
+ # Make sure that the init fails for invalid enum values
+ #
+ black_or_white_dict = {
+ 'black': "UP",
+ 'white': "low"
+ }
+ try:
+ map_enum_test = petstore_api.MapTest(map_of_enum_string=black_or_white_dict)
+ self.assertTrue(0)
+ except ValueError:
+ self.assertTrue(1)
+
+ def test_maptest_setter(self):
+ #
+ # Check with some valid values
+ #
+ map_enum_test = petstore_api.MapTest()
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_enum_test.map_of_enum_string = up_or_low_dict
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+
+ #
+ # Check if the setter fails for invalid enum values
+ #
+ map_enum_test = petstore_api.MapTest()
+ black_or_white_dict = {
+ 'black': "UP",
+ 'white': "low"
+ }
+ try:
+ map_enum_test.map_of_enum_string = black_or_white_dict
+ except ValueError:
+ self.assertEqual(map_enum_test.map_of_enum_string, None)
+
+ def test_todict(self):
+ #
+ # Check dictionary serialization
+ #
+ map_enum_test = petstore_api.MapTest()
+ up_or_low_dict = {
+ 'UPPER': "UP",
+ 'lower': "low"
+ }
+ map_of_map_of_strings = {
+ 'val1': 1,
+ 'valText': "Text",
+ 'valueDict': up_or_low_dict
+ }
+ indirect_map = {
+ 'option1': True
+ }
+ direct_map = {
+ 'option2': False
+ }
+ map_enum_test.map_of_enum_string = up_or_low_dict
+ map_enum_test.map_map_of_string = map_of_map_of_strings
+ map_enum_test.indirect_map = indirect_map
+ map_enum_test.direct_map = direct_map
+
+ self.assertEqual(map_enum_test.map_of_enum_string, up_or_low_dict)
+ self.assertEqual(map_enum_test.map_map_of_string, map_of_map_of_strings)
+ self.assertEqual(map_enum_test.indirect_map, indirect_map)
+ self.assertEqual(map_enum_test.direct_map, direct_map)
+
+ expected_dict = {
+ 'map_of_enum_string': up_or_low_dict,
+ 'map_map_of_string': map_of_map_of_strings,
+ 'indirect_map': indirect_map,
+ 'direct_map': direct_map
+ }
+
+ self.assertEqual(map_enum_test.to_dict(), expected_dict)
diff --git a/samples/client/petstore/python-experimental/tests/test_order_model.py b/samples/client/petstore/python-experimental/tests/test_order_model.py
new file mode 100644
index 0000000000..31dc6e3661
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_order_model.py
@@ -0,0 +1,27 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class OrderModelTests(unittest.TestCase):
+
+ def test_status(self):
+ order = petstore_api.Order()
+ order.status = "placed"
+ self.assertEqual("placed", order.status)
+
+ with self.assertRaises(ValueError):
+ order.status = "invalid"
diff --git a/samples/client/petstore/python-experimental/tests/test_pet_api.py b/samples/client/petstore/python-experimental/tests/test_pet_api.py
new file mode 100644
index 0000000000..4f38fbd6e1
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_pet_api.py
@@ -0,0 +1,272 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ docker pull swaggerapi/petstore
+$ docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import unittest
+
+import petstore_api
+from petstore_api import Configuration
+from petstore_api.rest import ApiException
+
+from .util import id_gen
+
+import json
+
+import urllib3
+
+HOST = 'http://localhost/v2'
+
+
+class TimeoutWithEqual(urllib3.Timeout):
+ def __init__(self, *arg, **kwargs):
+ super(TimeoutWithEqual, self).__init__(*arg, **kwargs)
+
+ def __eq__(self, other):
+ return self._read == other._read and self._connect == other._connect and self.total == other.total
+
+
+class MockPoolManager(object):
+ def __init__(self, tc):
+ self._tc = tc
+ self._reqs = []
+
+ def expect_request(self, *args, **kwargs):
+ self._reqs.append((args, kwargs))
+
+ def request(self, *args, **kwargs):
+ self._tc.assertTrue(len(self._reqs) > 0)
+ r = self._reqs.pop(0)
+ self._tc.maxDiff = None
+ self._tc.assertEqual(r[0], args)
+ self._tc.assertEqual(r[1], kwargs)
+ return urllib3.HTTPResponse(status=200, body=b'test')
+
+
+class PetApiTests(unittest.TestCase):
+
+ def setUp(self):
+ config = Configuration()
+ config.host = HOST
+ self.api_client = petstore_api.ApiClient(config)
+ self.pet_api = petstore_api.PetApi(self.api_client)
+ self.setUpModels()
+ self.setUpFiles()
+
+ def setUpModels(self):
+ self.category = petstore_api.Category()
+ self.category.id = id_gen()
+ self.category.name = "dog"
+ self.tag = petstore_api.Tag()
+ self.tag.id = id_gen()
+ self.tag.name = "python-pet-tag"
+ self.pet = petstore_api.Pet(name="hello kity", photo_urls=["http://foo.bar.com/1", "http://foo.bar.com/2"])
+ self.pet.id = id_gen()
+ self.pet.status = "sold"
+ self.pet.category = self.category
+ self.pet.tags = [self.tag]
+
+ def setUpFiles(self):
+ self.test_file_dir = os.path.join(os.path.dirname(__file__), "..", "testfiles")
+ self.test_file_dir = os.path.realpath(self.test_file_dir)
+ self.foo = os.path.join(self.test_file_dir, "foo.png")
+
+ def test_preload_content_flag(self):
+ self.pet_api.add_pet(self.pet)
+
+ resp = self.pet_api.find_pets_by_status(status=[self.pet.status], _preload_content=False)
+
+ # return response should at least have read and close methods.
+ self.assertTrue(hasattr(resp, 'read'))
+ self.assertTrue(hasattr(resp, 'close'))
+
+ # Also we need to make sure we can release the connection to a pool (if exists) when we are done with it.
+ self.assertTrue(hasattr(resp, 'release_conn'))
+
+ # Right now, the client returns urllib3.HTTPResponse. If that changed in future, it is probably a breaking
+ # change, however supporting above methods should be enough for most usecases. Remove this test case if
+ # we followed the breaking change procedure for python client (e.g. increasing major version).
+ self.assertTrue(resp.__class__, 'urllib3.response.HTTPResponse')
+
+ resp.close()
+ resp.release_conn()
+
+ def test_timeout(self):
+ mock_pool = MockPoolManager(self)
+ self.api_client.rest_client.pool_manager = mock_pool
+
+ mock_pool.expect_request('POST', 'http://localhost/v2/pet',
+ body=json.dumps(self.api_client.sanitize_for_serialization(self.pet)),
+ headers={'Content-Type': 'application/json',
+ 'Authorization': 'Bearer ',
+ 'User-Agent': 'OpenAPI-Generator/1.0.0/python'},
+ preload_content=True, timeout=TimeoutWithEqual(total=5))
+ mock_pool.expect_request('POST', 'http://localhost/v2/pet',
+ body=json.dumps(self.api_client.sanitize_for_serialization(self.pet)),
+ headers={'Content-Type': 'application/json',
+ 'Authorization': 'Bearer ',
+ 'User-Agent': 'OpenAPI-Generator/1.0.0/python'},
+ preload_content=True, timeout=TimeoutWithEqual(connect=1, read=2))
+
+ self.pet_api.add_pet(self.pet, _request_timeout=5)
+ self.pet_api.add_pet(self.pet, _request_timeout=(1, 2))
+
+ def test_separate_default_client_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client, pet_api2.api_client)
+
+ pet_api.api_client.user_agent = 'api client 3'
+ pet_api2.api_client.user_agent = 'api client 4'
+
+ self.assertNotEqual(pet_api.api_client.user_agent, pet_api2.api_client.user_agent)
+
+ def test_separate_default_config_instances(self):
+ pet_api = petstore_api.PetApi()
+ pet_api2 = petstore_api.PetApi()
+ self.assertNotEqual(pet_api.api_client.configuration, pet_api2.api_client.configuration)
+
+ pet_api.api_client.configuration.host = 'somehost'
+ pet_api2.api_client.configuration.host = 'someotherhost'
+ self.assertNotEqual(pet_api.api_client.configuration.host, pet_api2.api_client.configuration.host)
+
+ def test_async_request(self):
+ thread = self.pet_api.add_pet(self.pet, async_req=True)
+ response = thread.get()
+ self.assertIsNone(response)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ result = thread.get()
+ self.assertIsInstance(result, petstore_api.Pet)
+
+ def test_async_with_result(self):
+ self.pet_api.add_pet(self.pet, async_req=False)
+
+ thread = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+ thread2 = self.pet_api.get_pet_by_id(self.pet.id, async_req=True)
+
+ response = thread.get()
+ response2 = thread2.get()
+
+ self.assertEquals(response.id, self.pet.id)
+ self.assertIsNotNone(response2.id, self.pet.id)
+
+ def test_async_with_http_info(self):
+ self.pet_api.add_pet(self.pet)
+
+ thread = self.pet_api.get_pet_by_id_with_http_info(self.pet.id, async_req=True)
+ data, status, headers = thread.get()
+
+ self.assertIsInstance(data, petstore_api.Pet)
+ self.assertEquals(status, 200)
+
+ def test_async_exception(self):
+ self.pet_api.add_pet(self.pet)
+
+ thread = self.pet_api.get_pet_by_id("-9999999999999", async_req=True)
+
+ exception = None
+ try:
+ thread.get()
+ except ApiException as e:
+ exception = e
+
+ self.assertIsInstance(exception, ApiException)
+ self.assertEqual(exception.status, 404)
+
+ def test_add_pet_and_get_pet_by_id(self):
+ self.pet_api.add_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(self.pet.category.name, fetched.category.name)
+
+ def test_add_pet_and_get_pet_by_id_with_http_info(self):
+ self.pet_api.add_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id_with_http_info(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched[0].id)
+ self.assertIsNotNone(fetched[0].category)
+ self.assertEqual(self.pet.category.name, fetched[0].category.name)
+
+ def test_update_pet(self):
+ self.pet.name = "hello kity with updated"
+ self.pet_api.update_pet(self.pet)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertIsNotNone(fetched)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(self.pet.name, fetched.name)
+ self.assertIsNotNone(fetched.category)
+ self.assertEqual(fetched.category.name, self.pet.category.name)
+
+ def test_find_pets_by_status(self):
+ self.pet_api.add_pet(self.pet)
+
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), self.pet_api.find_pets_by_status(status=[self.pet.status])))
+ )
+
+ def test_find_pets_by_tags(self):
+ self.pet_api.add_pet(self.pet)
+
+ self.assertIn(
+ self.pet.id,
+ list(map(lambda x: getattr(x, 'id'), self.pet_api.find_pets_by_tags(tags=[self.tag.name])))
+ )
+
+ def test_update_pet_with_form(self):
+ self.pet_api.add_pet(self.pet)
+
+ name = "hello kity with form updated"
+ status = "pending"
+ self.pet_api.update_pet_with_form(pet_id=self.pet.id, name=name, status=status)
+
+ fetched = self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ self.assertEqual(self.pet.id, fetched.id)
+ self.assertEqual(name, fetched.name)
+ self.assertEqual(status, fetched.status)
+
+ def test_upload_file(self):
+ # upload file with form parameter
+ try:
+ additional_metadata = "special"
+ self.pet_api.upload_file(
+ pet_id=self.pet.id,
+ additional_metadata=additional_metadata,
+ file=self.foo
+ )
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ # upload only file
+ try:
+ self.pet_api.upload_file(pet_id=self.pet.id, file=self.foo)
+ except ApiException as e:
+ self.fail("upload_file() raised {0} unexpectedly".format(type(e)))
+
+ def test_delete_pet(self):
+ self.pet_api.add_pet(self.pet)
+ self.pet_api.delete_pet(pet_id=self.pet.id, api_key="special-key")
+
+ try:
+ self.pet_api.get_pet_by_id(pet_id=self.pet.id)
+ raise Exception("expected an error")
+ except ApiException as e:
+ self.assertEqual(404, e.status)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/petstore/python-experimental/tests/test_pet_model.py b/samples/client/petstore/python-experimental/tests/test_pet_model.py
new file mode 100644
index 0000000000..70ab1a007a
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_pet_model.py
@@ -0,0 +1,69 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd petstore_api-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+
+
+class PetModelTests(unittest.TestCase):
+
+ def setUp(self):
+ self.pet = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet.id = 1
+ self.pet.status = "available"
+ cate = petstore_api.Category()
+ cate.id = 1
+ cate.name = "dog"
+ self.pet.category = cate
+ tag = petstore_api.Tag()
+ tag.id = 1
+ self.pet.tags = [tag]
+
+ def test_to_str(self):
+ data = ("{'category': {'id': 1, 'name': 'dog'},\n"
+ " 'id': 1,\n"
+ " 'name': 'test name',\n"
+ " 'photo_urls': ['string'],\n"
+ " 'status': 'available',\n"
+ " 'tags': [{'id': 1, 'name': None}]}")
+ self.assertEqual(data, self.pet.to_str())
+
+ def test_equal(self):
+ self.pet1 = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet1.id = 1
+ self.pet1.status = "available"
+ cate1 = petstore_api.Category()
+ cate1.id = 1
+ cate1.name = "dog"
+ self.pet.category = cate1
+ tag1 = petstore_api.Tag()
+ tag1.id = 1
+ self.pet1.tags = [tag1]
+
+ self.pet2 = petstore_api.Pet(name="test name", photo_urls=["string"])
+ self.pet2.id = 1
+ self.pet2.status = "available"
+ cate2 = petstore_api.Category()
+ cate2.id = 1
+ cate2.name = "dog"
+ self.pet.category = cate2
+ tag2 = petstore_api.Tag()
+ tag2.id = 1
+ self.pet2.tags = [tag2]
+
+ self.assertTrue(self.pet1 == self.pet2)
+
+ # reset pet1 tags to empty array so that object comparison returns false
+ self.pet1.tags = []
+ self.assertFalse(self.pet1 == self.pet2)
diff --git a/samples/client/petstore/python-experimental/tests/test_store_api.py b/samples/client/petstore/python-experimental/tests/test_store_api.py
new file mode 100644
index 0000000000..1817477aba
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/test_store_api.py
@@ -0,0 +1,32 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+Run the tests.
+$ pip install nose (optional)
+$ cd OpenAP/Petstore-python
+$ nosetests -v
+"""
+
+import os
+import time
+import unittest
+
+import petstore_api
+from petstore_api.rest import ApiException
+
+
+class StoreApiTests(unittest.TestCase):
+
+ def setUp(self):
+ self.store_api = petstore_api.StoreApi()
+
+ def tearDown(self):
+ # sleep 1 sec between two every 2 tests
+ time.sleep(1)
+
+ def test_get_inventory(self):
+ data = self.store_api.get_inventory()
+ self.assertIsNotNone(data)
+ self.assertTrue(isinstance(data, dict))
diff --git a/samples/client/petstore/python-experimental/tests/util.py b/samples/client/petstore/python-experimental/tests/util.py
new file mode 100644
index 0000000000..113d7dcc54
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tests/util.py
@@ -0,0 +1,8 @@
+# flake8: noqa
+
+import random
+
+
+def id_gen(bits=32):
+ """ Returns a n-bit randomly generated int """
+ return int(random.getrandbits(bits))
diff --git a/samples/client/petstore/python-experimental/tox.ini b/samples/client/petstore/python-experimental/tox.ini
new file mode 100644
index 0000000000..3d0be613cf
--- /dev/null
+++ b/samples/client/petstore/python-experimental/tox.ini
@@ -0,0 +1,10 @@
+[tox]
+envlist = py27, py3
+
+[testenv]
+deps=-r{toxinidir}/requirements.txt
+ -r{toxinidir}/test-requirements.txt
+
+commands=
+ nosetests \
+ []