From 931197a1cd589fdad00b25e97d205b96e0442939 Mon Sep 17 00:00:00 2001 From: Yassine Ilmi <9211413+yilmi@users.noreply.github.com> Date: Mon, 14 Aug 2023 07:26:24 +0200 Subject: [PATCH] Clean-up - Unnecessary trailing underscores in Python Flask, AIOHttp, BluePlanet (#16249) * Remove trailing underscore in security_controller_.py and base_model_.py * Regenerating sample files * Clean-up files with trailing underscore in samples * Update security extension to use the new security_controller * Regenerate unmaintained samples --- .../AbstractPythonConnexionServerCodegen.java | 58 ++++++++++------- .../PythonBluePlanetServerCodegen.java | 17 +++-- ...se_model_.mustache => base_model.mustache} | 0 .../resources/python-aiohttp/model.mustache | 2 +- ....mustache => security_controller.mustache} | 0 .../app/{{packageName}}/encoder.mustache | 2 +- ...se_model_.mustache => base_model.mustache} | 0 .../app/{{packageName}}/models/model.mustache | 2 +- ...se_model_.mustache => base_model.mustache} | 0 .../resources/python-flask/encoder.mustache | 2 +- .../resources/python-flask/model.mustache | 2 +- ....mustache => security_controller.mustache} | 0 .../.openapi-generator/FILES | 31 +++++++++ .../.openapi-generator/VERSION | 2 +- .../petstore/python-flask-python2/.travis.yml | 1 - .../petstore/python-flask-python2/Dockerfile | 6 +- .../petstore/python-flask-python2/README.md | 6 +- .../petstore/python-flask-python2/git_push.sh | 5 +- .../openapi_server/__main__.py | 3 +- .../controllers/pet_controller.py | 21 ++++--- ..._controller_.py => security_controller.py} | 59 +++++++++-------- .../controllers/store_controller.py | 11 ++-- .../controllers/user_controller.py | 19 +++--- .../openapi_server/encoder.py | 2 +- .../openapi_server/models/__init__.py | 2 - .../openapi_server/models/api_response.py | 4 +- .../openapi_server/models/base_model.py} | 0 .../openapi_server/models/category.py | 12 ++-- .../openapi_server/models/order.py | 20 +++--- .../openapi_server/models/pet.py | 12 ++-- .../openapi_server/models/status_enum.py | 4 +- .../openapi_server/models/tag.py | 12 ++-- .../openapi_server/models/user.py | 12 ++-- .../openapi_server/openapi/openapi.yaml | 63 ++++++++++++++++--- .../openapi_server/util.py | 6 ++ .../python-flask-python2/requirements.txt | 7 +-- .../petstore/python-flask-python2/setup.py | 3 +- .../test-requirements.txt | 6 +- .../petstore/python-flask-python2/tox.ini | 2 +- .../python-flask/.openapi-generator/FILES | 31 +++++++++ .../python-flask/.openapi-generator/VERSION | 2 +- .../server/petstore/python-flask/git_push.sh | 5 +- .../python-flask/openapi_server/__main__.py | 1 + .../controllers/pet_controller.py | 21 ++++--- ..._controller_.py => security_controller.py} | 59 +++++++++-------- .../controllers/store_controller.py | 11 ++-- .../controllers/user_controller.py | 19 +++--- .../python-flask/openapi_server/encoder.py | 2 +- .../openapi_server/models/__init__.py | 2 - .../openapi_server/models/api_response.py | 2 +- .../models/{base_model_.py => base_model.py} | 4 +- .../openapi_server/models/category.py | 2 +- .../openapi_server/models/order.py | 2 +- .../python-flask/openapi_server/models/pet.py | 2 +- .../openapi_server/models/status_enum.py | 2 +- .../python-flask/openapi_server/models/tag.py | 2 +- .../openapi_server/models/user.py | 2 +- .../openapi_server/openapi/openapi.yaml | 63 ++++++++++++++++--- .../python-flask/openapi_server/util.py | 6 ++ .../petstore/python-flask/requirements.txt | 1 + .../python-flask/test-requirements.txt | 6 +- .../.openapi-generator/FILES | 4 +- ..._controller_.py => security_controller.py} | 0 .../src/openapi_server/models/api_response.py | 2 +- .../models/{base_model_.py => base_model.py} | 0 .../src/openapi_server/models/category.py | 2 +- .../src/openapi_server/models/order.py | 2 +- .../src/openapi_server/models/pet.py | 2 +- .../src/openapi_server/models/tag.py | 2 +- .../src/openapi_server/models/user.py | 2 +- .../src/openapi_server/openapi/openapi.yaml | 6 +- .../.openapi-generator/FILES | 4 +- .../app/openapi_server/encoder.py | 2 +- .../app/openapi_server/models/api_response.py | 2 +- .../models/{base_model_.py => base_model.py} | 0 .../app/openapi_server/models/category.py | 2 +- .../app/openapi_server/models/order.py | 2 +- .../app/openapi_server/models/pet.py | 2 +- .../app/openapi_server/models/tag.py | 2 +- .../app/openapi_server/models/user.py | 2 +- .../python-flask/.openapi-generator/FILES | 4 +- ..._controller_.py => security_controller.py} | 0 .../python-flask/openapi_server/encoder.py | 2 +- .../openapi_server/models/api_response.py | 2 +- .../openapi_server/models/base_model.py} | 9 ++- .../openapi_server/models/category.py | 2 +- .../openapi_server/models/order.py | 2 +- .../python-flask/openapi_server/models/pet.py | 2 +- .../python-flask/openapi_server/models/tag.py | 2 +- .../openapi_server/models/user.py | 2 +- .../openapi_server/openapi/openapi.yaml | 6 +- 91 files changed, 463 insertions(+), 273 deletions(-) rename modules/openapi-generator/src/main/resources/python-aiohttp/{base_model_.mustache => base_model.mustache} (100%) rename modules/openapi-generator/src/main/resources/python-aiohttp/{security_controller_.mustache => security_controller.mustache} (100%) rename modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/{base_model_.mustache => base_model.mustache} (100%) rename modules/openapi-generator/src/main/resources/python-flask/{base_model_.mustache => base_model.mustache} (100%) rename modules/openapi-generator/src/main/resources/python-flask/{security_controller_.mustache => security_controller.mustache} (100%) create mode 100644 samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/FILES rename samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/{security_controller_.py => security_controller.py} (99%) rename samples/{server/petstore/python-flask/openapi_server/models/base_model_.py => openapi3/server/petstore/python-flask-python2/openapi_server/models/base_model.py} (100%) create mode 100644 samples/openapi3/server/petstore/python-flask/.openapi-generator/FILES rename samples/openapi3/server/petstore/python-flask/openapi_server/controllers/{security_controller_.py => security_controller.py} (99%) rename samples/openapi3/server/petstore/python-flask/openapi_server/models/{base_model_.py => base_model.py} (95%) rename samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/controllers/{security_controller_.py => security_controller.py} (100%) rename samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/{base_model_.py => base_model.py} (100%) rename samples/server/petstore/python-blueplanet/app/openapi_server/models/{base_model_.py => base_model.py} (100%) rename samples/server/petstore/python-flask/openapi_server/controllers/{security_controller_.py => security_controller.py} (100%) rename samples/{openapi3/server/petstore/python-flask-python2/openapi_server/models/base_model_.py => server/petstore/python-flask/openapi_server/models/base_model.py} (90%) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java index c1cb47da0a89..9fdfde04999f 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractPythonConnexionServerCodegen.java @@ -16,15 +16,48 @@ package org.openapitools.codegen.languages; +import static org.openapitools.codegen.utils.StringUtils.camelize; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; +import org.openapitools.codegen.CliOption; +import org.openapitools.codegen.CodegenConfig; +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.CodegenModel; +import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenParameter; +import org.openapitools.codegen.CodegenProperty; +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.SupportingFile; +import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.model.ApiInfoMap; +import org.openapitools.codegen.model.ModelMap; +import org.openapitools.codegen.model.ModelsMap; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; +import org.openapitools.codegen.utils.ModelUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.module.SimpleModule; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; + import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.Operation; @@ -35,23 +68,6 @@ import io.swagger.v3.oas.models.parameters.Parameter; import io.swagger.v3.oas.models.parameters.RequestBody; import io.swagger.v3.oas.models.security.SecurityScheme; -import org.apache.commons.lang3.StringUtils; -import org.openapitools.codegen.*; -import org.openapitools.codegen.meta.features.DocumentationFeature; -import org.openapitools.codegen.model.ApiInfoMap; -import org.openapitools.codegen.model.ModelMap; -import org.openapitools.codegen.model.ModelsMap; -import org.openapitools.codegen.model.OperationMap; -import org.openapitools.codegen.model.OperationsMap; -import org.openapitools.codegen.utils.ModelUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.util.*; - -import static org.openapitools.codegen.utils.StringUtils.camelize; public abstract class AbstractPythonConnexionServerCodegen extends AbstractPythonCodegen implements CodegenConfig { private static class PythonBooleanSerializer extends JsonSerializer { @@ -230,9 +246,9 @@ public void processOpts() { supportingFiles.add(new SupportingFile("util.mustache", packagePath(), "util.py")); supportingFiles.add(new SupportingFile("typing_utils.mustache", packagePath(), "typing_utils.py")); supportingFiles.add(new SupportingFile("__init__.mustache", packagePath() + File.separatorChar + packageToPath(controllerPackage), "__init__.py")); - supportingFiles.add(new SupportingFile("security_controller_.mustache", packagePath() + File.separatorChar + packageToPath(controllerPackage), "security_controller_.py")); + supportingFiles.add(new SupportingFile("security_controller.mustache", packagePath() + File.separatorChar + packageToPath(controllerPackage), "security_controller.py")); supportingFiles.add(new SupportingFile("__init__model.mustache", packagePath() + File.separatorChar + packageToPath(modelPackage), "__init__.py")); - supportingFiles.add(new SupportingFile("base_model_.mustache", packagePath() + File.separatorChar + packageToPath(modelPackage), "base_model_.py")); + supportingFiles.add(new SupportingFile("base_model.mustache", packagePath() + File.separatorChar + packageToPath(modelPackage), "base_model.py")); supportingFiles.add(new SupportingFile("openapi.mustache", packagePath() + File.separatorChar + "openapi", "openapi.yaml")); addSupportingFiles(); @@ -455,7 +471,7 @@ private void addSecurityExtensions(OpenAPI openAPI) { for (Map.Entry securitySchemesEntry : securitySchemes.entrySet()) { String securityName = securitySchemesEntry.getKey(); SecurityScheme securityScheme = securitySchemesEntry.getValue(); - String baseFunctionName = controllerPackage + ".security_controller_."; + String baseFunctionName = controllerPackage + ".security_controller."; switch (securityScheme.getType()) { case APIKEY: addSecurityExtension(securityScheme, "x-apikeyInfoFunc", baseFunctionName + "info_from_" + securityName); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java index 5f5b8852e199..e36fc7a3170b 100755 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonBluePlanetServerCodegen.java @@ -15,15 +15,20 @@ */ package org.openapitools.codegen.languages; +import java.io.File; +import java.util.EnumSet; + import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.SupportingFile; -import org.openapitools.codegen.meta.features.*; +import org.openapitools.codegen.meta.features.DocumentationFeature; +import org.openapitools.codegen.meta.features.GlobalFeature; +import org.openapitools.codegen.meta.features.ParameterFeature; +import org.openapitools.codegen.meta.features.SchemaSupportFeature; +import org.openapitools.codegen.meta.features.SecurityFeature; +import org.openapitools.codegen.meta.features.WireFormatFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.util.EnumSet; - public class PythonBluePlanetServerCodegen extends AbstractPythonConnexionServerCodegen { private final Logger LOGGER = LoggerFactory.getLogger(PythonBluePlanetServerCodegen.class); @@ -145,7 +150,7 @@ public void processOpts() { supportingFiles.add(new SupportingFile("app/{{packageName}}/controllers/__init__.mustache", CONTROLLER_PATH, "__init__.py")); supportingFiles.add(new SupportingFile("app/{{packageName}}/models/__init__.mustache", MODEL_PATH, "__init__.py")); - supportingFiles.add(new SupportingFile("app/{{packageName}}/models/base_model_.mustache", MODEL_PATH, "base_model_.py")); + supportingFiles.add(new SupportingFile("app/{{packageName}}/models/base_model.mustache", MODEL_PATH, "base_model.py")); supportingFiles.add(new SupportingFile("app/{{packageName}}/test/__init__.mustache", TEST_PATH, "__init__.py")); @@ -220,7 +225,7 @@ protected void addSupportingFiles() { supportingFiles.add(new SupportingFile("app/{{packageName}}/controllers/__init__.mustache", CONTROLLER_PATH, "__init__.py")); supportingFiles.add(new SupportingFile("app/{{packageName}}/models/__init__.mustache", MODEL_PATH, "__init__.py")); - supportingFiles.add(new SupportingFile("app/{{packageName}}/models/base_model_.mustache", MODEL_PATH, "base_model_.py")); + supportingFiles.add(new SupportingFile("app/{{packageName}}/models/base_model.mustache", MODEL_PATH, "base_model.py")); supportingFiles.add(new SupportingFile("app/{{packageName}}/test/__init__.mustache", TEST_PATH, "__init__.py")); diff --git a/modules/openapi-generator/src/main/resources/python-aiohttp/base_model_.mustache b/modules/openapi-generator/src/main/resources/python-aiohttp/base_model.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/python-aiohttp/base_model_.mustache rename to modules/openapi-generator/src/main/resources/python-aiohttp/base_model.mustache diff --git a/modules/openapi-generator/src/main/resources/python-aiohttp/model.mustache b/modules/openapi-generator/src/main/resources/python-aiohttp/model.mustache index 55423b17f5f5..227baea3fdf4 100644 --- a/modules/openapi-generator/src/main/resources/python-aiohttp/model.mustache +++ b/modules/openapi-generator/src/main/resources/python-aiohttp/model.mustache @@ -4,7 +4,7 @@ from datetime import date, datetime from typing import List, Dict, Type -from {{modelPackage}}.base_model_ import Model +from {{modelPackage}}.base_model import Model {{#models}} {{#model}} {{#pyImports}} diff --git a/modules/openapi-generator/src/main/resources/python-aiohttp/security_controller_.mustache b/modules/openapi-generator/src/main/resources/python-aiohttp/security_controller.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/python-aiohttp/security_controller_.mustache rename to modules/openapi-generator/src/main/resources/python-aiohttp/security_controller.mustache diff --git a/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/encoder.mustache b/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/encoder.mustache index e303a0e41a76..0681e63c126f 100644 --- a/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/encoder.mustache +++ b/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/encoder.mustache @@ -1,7 +1,7 @@ from connexion.apps.flask_app import FlaskJSONEncoder import six -from {{modelPackage}}.base_model_ import Model +from {{modelPackage}}.base_model import Model class JSONEncoder(FlaskJSONEncoder): diff --git a/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/base_model_.mustache b/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/base_model.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/base_model_.mustache rename to modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/base_model.mustache diff --git a/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/model.mustache b/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/model.mustache index d9aa9bfd34d7..999c1d879a61 100644 --- a/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/model.mustache +++ b/modules/openapi-generator/src/main/resources/python-blueplanet/app/{{packageName}}/models/model.mustache @@ -5,7 +5,7 @@ from datetime import date, datetime # noqa: F401 from typing import List, Dict # noqa: F401 -from {{modelPackage}}.base_model_ import Model +from {{modelPackage}}.base_model import Model {{#imports}}{{import}} # noqa: F401,E501 {{/imports}} from {{packageName}} import util diff --git a/modules/openapi-generator/src/main/resources/python-flask/base_model_.mustache b/modules/openapi-generator/src/main/resources/python-flask/base_model.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/python-flask/base_model_.mustache rename to modules/openapi-generator/src/main/resources/python-flask/base_model.mustache diff --git a/modules/openapi-generator/src/main/resources/python-flask/encoder.mustache b/modules/openapi-generator/src/main/resources/python-flask/encoder.mustache index c2c402be3da2..0021509ffc47 100644 --- a/modules/openapi-generator/src/main/resources/python-flask/encoder.mustache +++ b/modules/openapi-generator/src/main/resources/python-flask/encoder.mustache @@ -1,7 +1,7 @@ from connexion.apps.flask_app import FlaskJSONEncoder import six -from {{modelPackage}}.base_model_ import Model +from {{modelPackage}}.base_model import Model class JSONEncoder(FlaskJSONEncoder): diff --git a/modules/openapi-generator/src/main/resources/python-flask/model.mustache b/modules/openapi-generator/src/main/resources/python-flask/model.mustache index 9be98da6f3f2..b790e80f1874 100644 --- a/modules/openapi-generator/src/main/resources/python-flask/model.mustache +++ b/modules/openapi-generator/src/main/resources/python-flask/model.mustache @@ -5,7 +5,7 @@ from datetime import date, datetime # noqa: F401 from typing import List, Dict # noqa: F401 -from {{modelPackage}}.base_model_ import Model +from {{modelPackage}}.base_model import Model {{#models}} {{#model}} {{#pyImports}} diff --git a/modules/openapi-generator/src/main/resources/python-flask/security_controller_.mustache b/modules/openapi-generator/src/main/resources/python-flask/security_controller.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/python-flask/security_controller_.mustache rename to modules/openapi-generator/src/main/resources/python-flask/security_controller.mustache diff --git a/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/FILES b/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/FILES new file mode 100644 index 000000000000..79bc02917f5a --- /dev/null +++ b/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/FILES @@ -0,0 +1,31 @@ +.dockerignore +.gitignore +.travis.yml +Dockerfile +README.md +git_push.sh +openapi_server/__init__.py +openapi_server/__main__.py +openapi_server/controllers/__init__.py +openapi_server/controllers/pet_controller.py +openapi_server/controllers/security_controller.py +openapi_server/controllers/store_controller.py +openapi_server/controllers/user_controller.py +openapi_server/encoder.py +openapi_server/models/__init__.py +openapi_server/models/api_response.py +openapi_server/models/base_model.py +openapi_server/models/category.py +openapi_server/models/order.py +openapi_server/models/pet.py +openapi_server/models/status_enum.py +openapi_server/models/tag.py +openapi_server/models/user.py +openapi_server/openapi/openapi.yaml +openapi_server/test/__init__.py +openapi_server/typing_utils.py +openapi_server/util.py +requirements.txt +setup.py +test-requirements.txt +tox.ini diff --git a/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION b/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION index d99e7162d01f..757e67400401 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION +++ b/samples/openapi3/server/petstore/python-flask-python2/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +7.0.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/server/petstore/python-flask-python2/.travis.yml b/samples/openapi3/server/petstore/python-flask-python2/.travis.yml index 388de83128fe..ad71ee5ca083 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/.travis.yml +++ b/samples/openapi3/server/petstore/python-flask-python2/.travis.yml @@ -1,7 +1,6 @@ # ref: https://docs.travis-ci.com/user/languages/python language: python python: - - "2.7" - "3.2" - "3.3" - "3.4" diff --git a/samples/openapi3/server/petstore/python-flask-python2/Dockerfile b/samples/openapi3/server/petstore/python-flask-python2/Dockerfile index d51d2b7a8568..4857637c3799 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/Dockerfile +++ b/samples/openapi3/server/petstore/python-flask-python2/Dockerfile @@ -1,16 +1,16 @@ -FROM python:2-alpine +FROM python:3-alpine RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY requirements.txt /usr/src/app/ -RUN pip install --no-cache-dir -r requirements.txt +RUN pip3 install --no-cache-dir -r requirements.txt COPY . /usr/src/app EXPOSE 8080 -ENTRYPOINT ["python"] +ENTRYPOINT ["python3"] CMD ["-m", "openapi_server"] \ No newline at end of file diff --git a/samples/openapi3/server/petstore/python-flask-python2/README.md b/samples/openapi3/server/petstore/python-flask-python2/README.md index ceebd18c340b..673c8b3b5a01 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/README.md +++ b/samples/openapi3/server/petstore/python-flask-python2/README.md @@ -8,14 +8,14 @@ is an example of building a OpenAPI-enabled Flask server. This example uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. ## Requirements -Python 2.7+ +Python 3.5.2+ ## Usage To run the server, please execute the following from the root directory: ``` -pip install -r requirements.txt -python -m openapi_server +pip3 install -r requirements.txt +python3 -m openapi_server ``` and open your browser to here: diff --git a/samples/openapi3/server/petstore/python-flask-python2/git_push.sh b/samples/openapi3/server/petstore/python-flask-python2/git_push.sh index 200e975d2120..f53a75d4fabe 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/git_push.sh +++ b/samples/openapi3/server/petstore/python-flask-python2/git_push.sh @@ -38,14 +38,14 @@ git add . git commit -m "$release_note" # Sets the new remote -git_remote=`git 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://${git_host}/${git_user_id}/${git_repo_id}.git else - git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git fi fi @@ -55,4 +55,3 @@ git pull origin master # Pushes (Forces) the changes in the local repository up to the remote repository echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" git push origin master 2>&1 | grep -v 'To https' - diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/__main__.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/__main__.py index a6fa13105b89..6045d0156f05 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/__main__.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/__main__.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import connexion @@ -11,6 +11,7 @@ def main(): app.add_api('openapi.yaml', arguments={'title': 'OpenAPI Petstore'}, pythonic_params=True) + app.run(port=8080) diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/pet_controller.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/pet_controller.py index 5ae8f380ee38..d2a440eae16a 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/pet_controller.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/pet_controller.py @@ -1,5 +1,8 @@ import connexion import six +from typing import Dict +from typing import Tuple +from typing import Union from openapi_server.models.api_response import ApiResponse # noqa: E501 from openapi_server.models.pet import Pet # noqa: E501 @@ -17,7 +20,7 @@ def add_pet(pet): # noqa: E501 :param pet: Pet object that needs to be added to the store :type pet: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: pet = Pet.from_dict(connexion.request.get_json()) # noqa: E501 @@ -34,7 +37,7 @@ def delete_pet(pet_id, api_key=None): # noqa: E501 :param api_key: :type api_key: str - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -47,7 +50,7 @@ def find_pets_by_status(status): # noqa: E501 :param status: Status values that need to be considered for filter :type status: List[str] - :rtype: List[Pet] + :rtype: Union[List[Pet], Tuple[List[Pet], int], Tuple[List[Pet], int, Dict[str, str]] """ return 'do some magic!' @@ -60,7 +63,7 @@ def find_pets_by_tags(tags): # noqa: E501 :param tags: Tags to filter by :type tags: List[str] - :rtype: List[Pet] + :rtype: Union[List[Pet], Tuple[List[Pet], int], Tuple[List[Pet], int, Dict[str, str]] """ return 'do some magic!' @@ -73,7 +76,7 @@ def get_pet_by_id(pet_id): # noqa: E501 :param pet_id: ID of pet to return :type pet_id: int - :rtype: Pet + :rtype: Union[Pet, Tuple[Pet, int], Tuple[Pet, int, Dict[str, str]] """ return 'do some magic!' @@ -86,7 +89,7 @@ def update_pet(pet): # noqa: E501 :param pet: Pet object that needs to be added to the store :type pet: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: pet = Pet.from_dict(connexion.request.get_json()) # noqa: E501 @@ -103,7 +106,7 @@ def update_pet_status_with_enum(pet_id, status): # noqa: E501 :param status: The required status :type status: dict | bytes - :rtype: Pet + :rtype: Union[Pet, Tuple[Pet, int], Tuple[Pet, int, Dict[str, str]] """ if connexion.request.is_json: status = StatusEnum.from_dict(connexion.request.get_json()) # noqa: E501 @@ -120,7 +123,7 @@ def update_pet_with_form(pet_id, pet_form=None): # noqa: E501 :param pet_form: :type pet_form: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: pet_form = PetForm.from_dict(connexion.request.get_json()) # noqa: E501 @@ -137,7 +140,7 @@ def upload_file(pet_id, upload_form=None): # noqa: E501 :param upload_form: :type upload_form: dict | bytes - :rtype: ApiResponse + :rtype: Union[ApiResponse, Tuple[ApiResponse, int], Tuple[ApiResponse, int, Dict[str, str]] """ if connexion.request.is_json: upload_form = UploadForm.from_dict(connexion.request.get_json()) # noqa: E501 diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/security_controller_.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/security_controller.py similarity index 99% rename from samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/security_controller_.py rename to samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/security_controller.py index b4bd85dd1a71..7a37d8e0b657 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/security_controller_.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/security_controller.py @@ -1,6 +1,35 @@ from typing import List +def info_from_petstore_auth(token): + """ + Validate and decode token. + Returned value will be passed in 'token_info' parameter of your operation function, if there is one. + 'sub' or 'uid' will be set in 'user' parameter of your operation function, if there is one. + 'scope' or 'scopes' will be passed to scope validation function. + + :param token Token provided by Authorization header + :type token: str + :return: Decoded token information or None if token is invalid + :rtype: dict | None + """ + return {'scopes': ['read:pets', 'write:pets'], 'uid': 'user_id'} + + +def validate_scope_petstore_auth(required_scopes, token_scopes): + """ + Validate required scopes are included in token scope + + :param required_scopes Required scope to access called API + :type required_scopes: List[str] + :param token_scopes Scope present in token + :type token_scopes: List[str] + :return: True if access to called API is allowed + :rtype: bool + """ + return set(required_scopes).issubset(set(token_scopes)) + + def info_from_api_key(api_key, required_scopes): """ Check and retrieve authentication information from api_key. @@ -32,33 +61,3 @@ def info_from_auth_cookie(api_key, required_scopes): """ return {'uid': 'user_id'} - -def info_from_petstore_auth(token): - """ - Validate and decode token. - Returned value will be passed in 'token_info' parameter of your operation function, if there is one. - 'sub' or 'uid' will be set in 'user' parameter of your operation function, if there is one. - 'scope' or 'scopes' will be passed to scope validation function. - - :param token Token provided by Authorization header - :type token: str - :return: Decoded token information or None if token is invalid - :rtype: dict | None - """ - return {'scopes': ['read:pets', 'write:pets'], 'uid': 'user_id'} - - -def validate_scope_petstore_auth(required_scopes, token_scopes): - """ - Validate required scopes are included in token scope - - :param required_scopes Required scope to access called API - :type required_scopes: List[str] - :param token_scopes Scope present in token - :type token_scopes: List[str] - :return: True if access to called API is allowed - :rtype: bool - """ - return set(required_scopes).issubset(set(token_scopes)) - - diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/store_controller.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/store_controller.py index 7e58cf96c232..79340691c03e 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/store_controller.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/store_controller.py @@ -1,5 +1,8 @@ import connexion import six +from typing import Dict +from typing import Tuple +from typing import Union from openapi_server.models.order import Order # noqa: E501 from openapi_server import util @@ -13,7 +16,7 @@ def delete_order(order_id): # noqa: E501 :param order_id: ID of the order that needs to be deleted :type order_id: str - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -24,7 +27,7 @@ def get_inventory(): # noqa: E501 Returns a map of status codes to quantities # noqa: E501 - :rtype: Dict[str, int] + :rtype: Union[Dict[str, int], Tuple[Dict[str, int], int], Tuple[Dict[str, int], int, Dict[str, str]] """ return 'do some magic!' @@ -37,7 +40,7 @@ def get_order_by_id(order_id): # noqa: E501 :param order_id: ID of pet that needs to be fetched :type order_id: int - :rtype: Order + :rtype: Union[Order, Tuple[Order, int], Tuple[Order, int, Dict[str, str]] """ return 'do some magic!' @@ -50,7 +53,7 @@ def place_order(order): # noqa: E501 :param order: order placed for purchasing the pet :type order: dict | bytes - :rtype: Order + :rtype: Union[Order, Tuple[Order, int], Tuple[Order, int, Dict[str, str]] """ if connexion.request.is_json: order = Order.from_dict(connexion.request.get_json()) # noqa: E501 diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/user_controller.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/user_controller.py index e897814d4b0d..1187dcf862d5 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/user_controller.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/controllers/user_controller.py @@ -1,5 +1,8 @@ import connexion import six +from typing import Dict +from typing import Tuple +from typing import Union from openapi_server.models.user import User # noqa: E501 from openapi_server import util @@ -13,7 +16,7 @@ def create_user(user): # noqa: E501 :param user: Created user object :type user: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = User.from_dict(connexion.request.get_json()) # noqa: E501 @@ -28,7 +31,7 @@ def create_users_with_array_input(user): # noqa: E501 :param user: List of user objects :type user: list | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = [User.from_dict(d) for d in connexion.request.get_json()] # noqa: E501 @@ -43,7 +46,7 @@ def create_users_with_list_input(user): # noqa: E501 :param user: List of user objects :type user: list | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = [User.from_dict(d) for d in connexion.request.get_json()] # noqa: E501 @@ -58,7 +61,7 @@ def delete_user(username): # noqa: E501 :param username: The name that needs to be deleted :type username: str - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -71,7 +74,7 @@ def get_user_by_name(username): # noqa: E501 :param username: The name that needs to be fetched. Use user1 for testing. :type username: str - :rtype: User + :rtype: Union[User, Tuple[User, int], Tuple[User, int, Dict[str, str]] """ return 'do some magic!' @@ -86,7 +89,7 @@ def login_user(username, password): # noqa: E501 :param password: The password for login in clear text :type password: str - :rtype: str + :rtype: Union[str, Tuple[str, int], Tuple[str, int, Dict[str, str]] """ return 'do some magic!' @@ -97,7 +100,7 @@ def logout_user(): # noqa: E501 # noqa: E501 - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -112,7 +115,7 @@ def update_user(username, user): # noqa: E501 :param user: Updated user object :type user: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = User.from_dict(connexion.request.get_json()) # noqa: E501 diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/encoder.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/encoder.py index 3bbef854f3b8..1ec9cb99b838 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/encoder.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/encoder.py @@ -1,7 +1,7 @@ from connexion.apps.flask_app import FlaskJSONEncoder import six -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model class JSONEncoder(FlaskJSONEncoder): diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/__init__.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/__init__.py index bb6f70f1569b..d96a91ec6464 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/__init__.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/__init__.py @@ -7,8 +7,6 @@ from openapi_server.models.category import Category from openapi_server.models.order import Order from openapi_server.models.pet import Pet -from openapi_server.models.pet_form import PetForm from openapi_server.models.status_enum import StatusEnum from openapi_server.models.tag import Tag -from openapi_server.models.upload_form import UploadForm from openapi_server.models.user import User diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/api_response.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/api_response.py index f4f26e834a27..a795a0a22246 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/api_response.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/api_response.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util @@ -42,7 +42,7 @@ def __init__(self, code=None, type=None, message=None): # noqa: E501 self._message = message @classmethod - def from_dict(cls, dikt): + def from_dict(cls, dikt) -> 'ApiResponse': """Returns the dict as a model :param dikt: A dict. diff --git a/samples/server/petstore/python-flask/openapi_server/models/base_model_.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/base_model.py similarity index 100% rename from samples/server/petstore/python-flask/openapi_server/models/base_model_.py rename to samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/base_model.py diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/category.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/category.py index ff50af35c212..16cde95a0563 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/category.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/category.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model import re from openapi_server import util @@ -21,12 +21,12 @@ def __init__(self, id=None, name=None): # noqa: E501 """Category - a model defined in OpenAPI :param id: The id of this Category. # noqa: E501 - :type id: long + :type id: int :param name: The name of this Category. # noqa: E501 :type name: str """ self.openapi_types = { - 'id': long, + 'id': int, 'name': str } @@ -39,7 +39,7 @@ def __init__(self, id=None, name=None): # noqa: E501 self._name = name @classmethod - def from_dict(cls, dikt): + def from_dict(cls, dikt) -> 'Category': """Returns the dict as a model :param dikt: A dict. @@ -55,7 +55,7 @@ def id(self): :return: The id of this Category. - :rtype: long + :rtype: int """ return self._id @@ -65,7 +65,7 @@ def id(self, id): :param id: The id of this Category. - :type id: long + :type id: int """ self._id = id diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/order.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/order.py index 02ea8c4fd728..b9b11b2b35a5 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/order.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/order.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util @@ -19,9 +19,9 @@ def __init__(self, id=None, pet_id=None, quantity=None, ship_date=None, status=N """Order - a model defined in OpenAPI :param id: The id of this Order. # noqa: E501 - :type id: long + :type id: int :param pet_id: The pet_id of this Order. # noqa: E501 - :type pet_id: long + :type pet_id: int :param quantity: The quantity of this Order. # noqa: E501 :type quantity: int :param ship_date: The ship_date of this Order. # noqa: E501 @@ -32,8 +32,8 @@ def __init__(self, id=None, pet_id=None, quantity=None, ship_date=None, status=N :type complete: bool """ self.openapi_types = { - 'id': long, - 'pet_id': long, + 'id': int, + 'pet_id': int, 'quantity': int, 'ship_date': datetime, 'status': str, @@ -57,7 +57,7 @@ def __init__(self, id=None, pet_id=None, quantity=None, ship_date=None, status=N self._complete = complete @classmethod - def from_dict(cls, dikt): + def from_dict(cls, dikt) -> 'Order': """Returns the dict as a model :param dikt: A dict. @@ -73,7 +73,7 @@ def id(self): :return: The id of this Order. - :rtype: long + :rtype: int """ return self._id @@ -83,7 +83,7 @@ def id(self, id): :param id: The id of this Order. - :type id: long + :type id: int """ self._id = id @@ -94,7 +94,7 @@ def pet_id(self): :return: The pet_id of this Order. - :rtype: long + :rtype: int """ return self._pet_id @@ -104,7 +104,7 @@ def pet_id(self, pet_id): :param pet_id: The pet_id of this Order. - :type pet_id: long + :type pet_id: int """ self._pet_id = pet_id diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/pet.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/pet.py index a9c5e52330fc..1473099c5f8e 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/pet.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/pet.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server.models.category import Category from openapi_server.models.tag import Tag from openapi_server import util @@ -23,7 +23,7 @@ def __init__(self, id=None, category=None, name=None, photo_urls=None, tags=None """Pet - a model defined in OpenAPI :param id: The id of this Pet. # noqa: E501 - :type id: long + :type id: int :param category: The category of this Pet. # noqa: E501 :type category: Category :param name: The name of this Pet. # noqa: E501 @@ -36,7 +36,7 @@ def __init__(self, id=None, category=None, name=None, photo_urls=None, tags=None :type status: str """ self.openapi_types = { - 'id': long, + 'id': int, 'category': Category, 'name': str, 'photo_urls': List[str], @@ -61,7 +61,7 @@ def __init__(self, id=None, category=None, name=None, photo_urls=None, tags=None self._status = status @classmethod - def from_dict(cls, dikt): + def from_dict(cls, dikt) -> 'Pet': """Returns the dict as a model :param dikt: A dict. @@ -77,7 +77,7 @@ def id(self): :return: The id of this Pet. - :rtype: long + :rtype: int """ return self._id @@ -87,7 +87,7 @@ def id(self, id): :param id: The id of this Pet. - :type id: long + :type id: int """ self._id = id diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/status_enum.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/status_enum.py index 08bebbe6242f..ad3294da3e7f 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/status_enum.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/status_enum.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util @@ -32,7 +32,7 @@ def __init__(self): # noqa: E501 } @classmethod - def from_dict(cls, dikt): + def from_dict(cls, dikt) -> 'StatusEnum': """Returns the dict as a model :param dikt: A dict. diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/tag.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/tag.py index 24a262951ed9..c4dfa927b864 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/tag.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/tag.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util @@ -19,12 +19,12 @@ def __init__(self, id=None, name=None): # noqa: E501 """Tag - a model defined in OpenAPI :param id: The id of this Tag. # noqa: E501 - :type id: long + :type id: int :param name: The name of this Tag. # noqa: E501 :type name: str """ self.openapi_types = { - 'id': long, + 'id': int, 'name': str } @@ -37,7 +37,7 @@ def __init__(self, id=None, name=None): # noqa: E501 self._name = name @classmethod - def from_dict(cls, dikt): + def from_dict(cls, dikt) -> 'Tag': """Returns the dict as a model :param dikt: A dict. @@ -53,7 +53,7 @@ def id(self): :return: The id of this Tag. - :rtype: long + :rtype: int """ return self._id @@ -63,7 +63,7 @@ def id(self, id): :param id: The id of this Tag. - :type id: long + :type id: int """ self._id = id diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/user.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/user.py index 3807bfe99782..8ed94b32f48a 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/user.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/user.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util @@ -19,7 +19,7 @@ def __init__(self, id=None, username=None, first_name=None, last_name=None, emai """User - a model defined in OpenAPI :param id: The id of this User. # noqa: E501 - :type id: long + :type id: int :param username: The username of this User. # noqa: E501 :type username: str :param first_name: The first_name of this User. # noqa: E501 @@ -36,7 +36,7 @@ def __init__(self, id=None, username=None, first_name=None, last_name=None, emai :type user_status: int """ self.openapi_types = { - 'id': long, + 'id': int, 'username': str, 'first_name': str, 'last_name': str, @@ -67,7 +67,7 @@ def __init__(self, id=None, username=None, first_name=None, last_name=None, emai self._user_status = user_status @classmethod - def from_dict(cls, dikt): + def from_dict(cls, dikt) -> 'User': """Returns the dict as a model :param dikt: A dict. @@ -83,7 +83,7 @@ def id(self): :return: The id of this User. - :rtype: long + :rtype: int """ return self._id @@ -93,7 +93,7 @@ def id(self, id): :param id: The id of this User. - :type id: long + :type id: int """ self._id = id diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/openapi/openapi.yaml b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/openapi/openapi.yaml index 2257a3886817..c863de3bfe52 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/openapi/openapi.yaml +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/openapi/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.1 info: - description: This is a sample server Petstore server. For this sample, you can use - the api key `special-key` to test the authorization filters. + description: "This is a sample server Petstore server. For this sample, you can\ + \ use the api key `special-key` to test the authorization filters." license: name: Apache-2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html @@ -22,6 +22,7 @@ tags: paths: /pet: post: + description: "" operationId: add_pet requestBody: $ref: '#/components/requestBodies/Pet' @@ -37,6 +38,7 @@ paths: - pet x-openapi-router-controller: openapi_server.controllers.pet_controller put: + description: "" operationId: update_pet requestBody: $ref: '#/components/requestBodies/Pet' @@ -101,8 +103,8 @@ paths: /pet/findByTags: get: deprecated: true - description: Multiple tags can be provided with comma separated strings. Use - tag1, tag2, tag3 for testing. + description: "Multiple tags can be provided with comma separated strings. Use\ + \ tag1, tag2, tag3 for testing." operationId: find_pets_by_tags parameters: - description: Tags to filter by @@ -140,6 +142,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.pet_controller /pet/{petId}: delete: + description: "" operationId: delete_pet parameters: - explode: false @@ -203,6 +206,7 @@ paths: - pet x-openapi-router-controller: openapi_server.controllers.pet_controller patch: + description: "" operationId: update_pet_status_with_enum parameters: - description: ID of pet to return @@ -242,6 +246,7 @@ paths: - pet x-openapi-router-controller: openapi_server.controllers.pet_controller post: + description: "" operationId: update_pet_with_form parameters: - description: ID of pet that needs to be updated @@ -268,6 +273,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.pet_controller /pet/{petId}/uploadImage: post: + description: "" operationId: upload_file parameters: - description: ID of pet to update @@ -318,6 +324,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.store_controller /store/order: post: + description: "" operationId: place_order requestBody: content: @@ -421,6 +428,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/createWithArray: post: + description: "" operationId: create_users_with_array_input requestBody: $ref: '#/components/requestBodies/UserArray' @@ -435,6 +443,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/createWithList: post: + description: "" operationId: create_users_with_list_input requestBody: $ref: '#/components/requestBodies/UserArray' @@ -449,6 +458,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/login: get: + description: "" operationId: login_user parameters: - description: The user name for login @@ -457,7 +467,7 @@ paths: name: username required: true schema: - pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" type: string style: form - description: The password for login in clear text @@ -509,6 +519,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/logout: get: + description: "" operationId: logout_user responses: default: @@ -544,6 +555,7 @@ paths: - user x-openapi-router-controller: openapi_server.controllers.user_controller get: + description: "" operationId: get_user_by_name parameters: - description: The name that needs to be fetched. Use user1 for testing. @@ -663,15 +675,19 @@ components: properties: id: format: int64 + title: id type: integer petId: format: int64 + title: petId type: integer quantity: format: int32 + title: quantity type: integer shipDate: format: date-time + title: shipDate type: string status: description: Order Status @@ -679,9 +695,11 @@ components: - placed - approved - delivered + title: status type: string complete: default: false + title: complete type: boolean title: Pet Order type: object @@ -695,9 +713,11 @@ components: properties: id: format: int64 + title: id type: integer name: - pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" + title: name type: string title: Pet category type: object @@ -717,22 +737,30 @@ components: properties: id: format: int64 + title: id type: integer username: + title: username type: string firstName: + title: firstName type: string lastName: + title: lastName type: string email: + title: email type: string password: + title: password type: string phone: + title: phone type: string userStatus: description: User Status format: int32 + title: userStatus type: integer title: a User type: object @@ -746,8 +774,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet Tag type: object @@ -773,15 +803,18 @@ components: properties: id: format: int64 + title: id type: integer category: $ref: '#/components/schemas/Category' name: example: doggie + title: name type: string photoUrls: items: type: string + title: photoUrls type: array xml: name: photoUrl @@ -789,6 +822,7 @@ components: tags: items: $ref: '#/components/schemas/Tag' + title: tags type: array xml: name: tag @@ -799,6 +833,7 @@ components: - available - pending - sold + title: status type: string required: - name @@ -812,9 +847,11 @@ components: properties: name: description: Updated name of the pet + title: name type: string status: description: Updated status of the pet + title: status type: string required: - name @@ -826,10 +863,12 @@ components: properties: additionalMetadata: description: Additional data to pass to server + title: additionalMetadata type: string file: description: file to upload format: binary + title: file type: string required: - file @@ -844,10 +883,13 @@ components: properties: code: format: int32 + title: code type: integer type: + title: type type: string message: + title: message type: string title: An uploaded response type: object @@ -857,6 +899,7 @@ components: - available - pending - sold + title: statusEnum type: string securitySchemes: petstore_auth: @@ -867,15 +910,15 @@ components: write:pets: modify pets in your account read:pets: read your pets type: oauth2 - x-tokenInfoFunc: openapi_server.controllers.security_controller_.info_from_petstore_auth - x-scopeValidateFunc: openapi_server.controllers.security_controller_.validate_scope_petstore_auth + x-tokenInfoFunc: openapi_server.controllers.security_controller.info_from_petstore_auth + x-scopeValidateFunc: openapi_server.controllers.security_controller.validate_scope_petstore_auth api_key: in: header name: api_key type: apiKey - x-apikeyInfoFunc: openapi_server.controllers.security_controller_.info_from_api_key + x-apikeyInfoFunc: openapi_server.controllers.security_controller.info_from_api_key auth_cookie: in: cookie name: AUTH_KEY type: apiKey - x-apikeyInfoFunc: openapi_server.controllers.security_controller_.info_from_auth_cookie + x-apikeyInfoFunc: openapi_server.controllers.security_controller.info_from_auth_cookie diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/util.py b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/util.py index e1185a713ec9..2a63f2109ba5 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/util.py +++ b/samples/openapi3/server/petstore/python-flask-python2/openapi_server/util.py @@ -67,6 +67,9 @@ def deserialize_date(string): :return: date. :rtype: date """ + if string is None: + return None + try: from dateutil.parser import parse return parse(string).date() @@ -84,6 +87,9 @@ def deserialize_datetime(string): :return: datetime. :rtype: datetime """ + if string is None: + return None + try: from dateutil.parser import parse return parse(string) diff --git a/samples/openapi3/server/petstore/python-flask-python2/requirements.txt b/samples/openapi3/server/petstore/python-flask-python2/requirements.txt index 55ef66307fc4..be4c8a3a02c1 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/requirements.txt +++ b/samples/openapi3/server/petstore/python-flask-python2/requirements.txt @@ -1,16 +1,11 @@ connexion[swagger-ui] >= 2.6.0; python_version>="3.6" # 2.3 is the last version that supports python 3.4-3.5 connexion[swagger-ui] <= 2.3.0; python_version=="3.5" or python_version=="3.4" -connexion[swagger-ui] == 2.4.0; python_version<="2.7" # connexion requires werkzeug but connexion < 2.4.0 does not install werkzeug # we must peg werkzeug versions below to fix connexion # https://github.com/zalando/connexion/pull/1044 werkzeug == 0.16.1; python_version=="3.5" or python_version=="3.4" swagger-ui-bundle >= 0.0.2 python_dateutil >= 2.6.0 -typing >= 3.5.2.2 -# For specs with timestamps, pyyaml 5.3 broke connexion's spec parsing in python 2. -# Connexion uses copy.deepcopy() on the spec, thus hitting this bug: -# https://github.com/yaml/pyyaml/issues/387 -pyyaml < 5.3; python_version<="2.7" setuptools >= 21.0.0 +Flask == 2.1.1 diff --git a/samples/openapi3/server/petstore/python-flask-python2/setup.py b/samples/openapi3/server/petstore/python-flask-python2/setup.py index 322e14e654a7..1cd2660efd67 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/setup.py +++ b/samples/openapi3/server/petstore/python-flask-python2/setup.py @@ -16,8 +16,7 @@ REQUIRES = [ "connexion>=2.0.2", "swagger-ui-bundle>=0.0.2", - "python_dateutil>=2.6.0", - "typing>=3.5.2.2" + "python_dateutil>=2.6.0" ] setup( diff --git a/samples/openapi3/server/petstore/python-flask-python2/test-requirements.txt b/samples/openapi3/server/petstore/python-flask-python2/test-requirements.txt index 0970f28c7c5a..58f51d6a0027 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/test-requirements.txt +++ b/samples/openapi3/server/petstore/python-flask-python2/test-requirements.txt @@ -1,4 +1,4 @@ -pytest~=4.6.7 # needed for python 2.7+3.4 +pytest~=7.1.0 pytest-cov>=2.8.1 -pytest-randomly==1.2.3 # needed for python 2.7+3.4 -Flask-Testing==0.8.0 +pytest-randomly>=1.2.3 +Flask-Testing==0.8.1 diff --git a/samples/openapi3/server/petstore/python-flask-python2/tox.ini b/samples/openapi3/server/petstore/python-flask-python2/tox.ini index d63c4ac5aac0..f66b2d84cdaa 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/tox.ini +++ b/samples/openapi3/server/petstore/python-flask-python2/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py27, py3 +envlist = py3 skipsdist=True [testenv] diff --git a/samples/openapi3/server/petstore/python-flask/.openapi-generator/FILES b/samples/openapi3/server/petstore/python-flask/.openapi-generator/FILES new file mode 100644 index 000000000000..79bc02917f5a --- /dev/null +++ b/samples/openapi3/server/petstore/python-flask/.openapi-generator/FILES @@ -0,0 +1,31 @@ +.dockerignore +.gitignore +.travis.yml +Dockerfile +README.md +git_push.sh +openapi_server/__init__.py +openapi_server/__main__.py +openapi_server/controllers/__init__.py +openapi_server/controllers/pet_controller.py +openapi_server/controllers/security_controller.py +openapi_server/controllers/store_controller.py +openapi_server/controllers/user_controller.py +openapi_server/encoder.py +openapi_server/models/__init__.py +openapi_server/models/api_response.py +openapi_server/models/base_model.py +openapi_server/models/category.py +openapi_server/models/order.py +openapi_server/models/pet.py +openapi_server/models/status_enum.py +openapi_server/models/tag.py +openapi_server/models/user.py +openapi_server/openapi/openapi.yaml +openapi_server/test/__init__.py +openapi_server/typing_utils.py +openapi_server/util.py +requirements.txt +setup.py +test-requirements.txt +tox.ini diff --git a/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION b/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION index d99e7162d01f..757e67400401 100644 --- a/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION +++ b/samples/openapi3/server/petstore/python-flask/.openapi-generator/VERSION @@ -1 +1 @@ -5.0.0-SNAPSHOT \ No newline at end of file +7.0.0-SNAPSHOT \ No newline at end of file diff --git a/samples/openapi3/server/petstore/python-flask/git_push.sh b/samples/openapi3/server/petstore/python-flask/git_push.sh index 200e975d2120..f53a75d4fabe 100644 --- a/samples/openapi3/server/petstore/python-flask/git_push.sh +++ b/samples/openapi3/server/petstore/python-flask/git_push.sh @@ -38,14 +38,14 @@ git add . git commit -m "$release_note" # Sets the new remote -git_remote=`git 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://${git_host}/${git_user_id}/${git_repo_id}.git else - git remote add origin https://${git_user_id}:${GIT_TOKEN}@${git_host}/${git_user_id}/${git_repo_id}.git + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git fi fi @@ -55,4 +55,3 @@ git pull origin master # Pushes (Forces) the changes in the local repository up to the remote repository echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" git push origin master 2>&1 | grep -v 'To https' - diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/__main__.py b/samples/openapi3/server/petstore/python-flask/openapi_server/__main__.py index 24b2141e14de..6045d0156f05 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/__main__.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/__main__.py @@ -11,6 +11,7 @@ def main(): app.add_api('openapi.yaml', arguments={'title': 'OpenAPI Petstore'}, pythonic_params=True) + app.run(port=8080) diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/pet_controller.py b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/pet_controller.py index 5ae8f380ee38..d2a440eae16a 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/pet_controller.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/pet_controller.py @@ -1,5 +1,8 @@ import connexion import six +from typing import Dict +from typing import Tuple +from typing import Union from openapi_server.models.api_response import ApiResponse # noqa: E501 from openapi_server.models.pet import Pet # noqa: E501 @@ -17,7 +20,7 @@ def add_pet(pet): # noqa: E501 :param pet: Pet object that needs to be added to the store :type pet: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: pet = Pet.from_dict(connexion.request.get_json()) # noqa: E501 @@ -34,7 +37,7 @@ def delete_pet(pet_id, api_key=None): # noqa: E501 :param api_key: :type api_key: str - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -47,7 +50,7 @@ def find_pets_by_status(status): # noqa: E501 :param status: Status values that need to be considered for filter :type status: List[str] - :rtype: List[Pet] + :rtype: Union[List[Pet], Tuple[List[Pet], int], Tuple[List[Pet], int, Dict[str, str]] """ return 'do some magic!' @@ -60,7 +63,7 @@ def find_pets_by_tags(tags): # noqa: E501 :param tags: Tags to filter by :type tags: List[str] - :rtype: List[Pet] + :rtype: Union[List[Pet], Tuple[List[Pet], int], Tuple[List[Pet], int, Dict[str, str]] """ return 'do some magic!' @@ -73,7 +76,7 @@ def get_pet_by_id(pet_id): # noqa: E501 :param pet_id: ID of pet to return :type pet_id: int - :rtype: Pet + :rtype: Union[Pet, Tuple[Pet, int], Tuple[Pet, int, Dict[str, str]] """ return 'do some magic!' @@ -86,7 +89,7 @@ def update_pet(pet): # noqa: E501 :param pet: Pet object that needs to be added to the store :type pet: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: pet = Pet.from_dict(connexion.request.get_json()) # noqa: E501 @@ -103,7 +106,7 @@ def update_pet_status_with_enum(pet_id, status): # noqa: E501 :param status: The required status :type status: dict | bytes - :rtype: Pet + :rtype: Union[Pet, Tuple[Pet, int], Tuple[Pet, int, Dict[str, str]] """ if connexion.request.is_json: status = StatusEnum.from_dict(connexion.request.get_json()) # noqa: E501 @@ -120,7 +123,7 @@ def update_pet_with_form(pet_id, pet_form=None): # noqa: E501 :param pet_form: :type pet_form: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: pet_form = PetForm.from_dict(connexion.request.get_json()) # noqa: E501 @@ -137,7 +140,7 @@ def upload_file(pet_id, upload_form=None): # noqa: E501 :param upload_form: :type upload_form: dict | bytes - :rtype: ApiResponse + :rtype: Union[ApiResponse, Tuple[ApiResponse, int], Tuple[ApiResponse, int, Dict[str, str]] """ if connexion.request.is_json: upload_form = UploadForm.from_dict(connexion.request.get_json()) # noqa: E501 diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/security_controller_.py b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/security_controller.py similarity index 99% rename from samples/openapi3/server/petstore/python-flask/openapi_server/controllers/security_controller_.py rename to samples/openapi3/server/petstore/python-flask/openapi_server/controllers/security_controller.py index b4bd85dd1a71..7a37d8e0b657 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/security_controller_.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/security_controller.py @@ -1,6 +1,35 @@ from typing import List +def info_from_petstore_auth(token): + """ + Validate and decode token. + Returned value will be passed in 'token_info' parameter of your operation function, if there is one. + 'sub' or 'uid' will be set in 'user' parameter of your operation function, if there is one. + 'scope' or 'scopes' will be passed to scope validation function. + + :param token Token provided by Authorization header + :type token: str + :return: Decoded token information or None if token is invalid + :rtype: dict | None + """ + return {'scopes': ['read:pets', 'write:pets'], 'uid': 'user_id'} + + +def validate_scope_petstore_auth(required_scopes, token_scopes): + """ + Validate required scopes are included in token scope + + :param required_scopes Required scope to access called API + :type required_scopes: List[str] + :param token_scopes Scope present in token + :type token_scopes: List[str] + :return: True if access to called API is allowed + :rtype: bool + """ + return set(required_scopes).issubset(set(token_scopes)) + + def info_from_api_key(api_key, required_scopes): """ Check and retrieve authentication information from api_key. @@ -32,33 +61,3 @@ def info_from_auth_cookie(api_key, required_scopes): """ return {'uid': 'user_id'} - -def info_from_petstore_auth(token): - """ - Validate and decode token. - Returned value will be passed in 'token_info' parameter of your operation function, if there is one. - 'sub' or 'uid' will be set in 'user' parameter of your operation function, if there is one. - 'scope' or 'scopes' will be passed to scope validation function. - - :param token Token provided by Authorization header - :type token: str - :return: Decoded token information or None if token is invalid - :rtype: dict | None - """ - return {'scopes': ['read:pets', 'write:pets'], 'uid': 'user_id'} - - -def validate_scope_petstore_auth(required_scopes, token_scopes): - """ - Validate required scopes are included in token scope - - :param required_scopes Required scope to access called API - :type required_scopes: List[str] - :param token_scopes Scope present in token - :type token_scopes: List[str] - :return: True if access to called API is allowed - :rtype: bool - """ - return set(required_scopes).issubset(set(token_scopes)) - - diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/store_controller.py b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/store_controller.py index 7e58cf96c232..79340691c03e 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/store_controller.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/store_controller.py @@ -1,5 +1,8 @@ import connexion import six +from typing import Dict +from typing import Tuple +from typing import Union from openapi_server.models.order import Order # noqa: E501 from openapi_server import util @@ -13,7 +16,7 @@ def delete_order(order_id): # noqa: E501 :param order_id: ID of the order that needs to be deleted :type order_id: str - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -24,7 +27,7 @@ def get_inventory(): # noqa: E501 Returns a map of status codes to quantities # noqa: E501 - :rtype: Dict[str, int] + :rtype: Union[Dict[str, int], Tuple[Dict[str, int], int], Tuple[Dict[str, int], int, Dict[str, str]] """ return 'do some magic!' @@ -37,7 +40,7 @@ def get_order_by_id(order_id): # noqa: E501 :param order_id: ID of pet that needs to be fetched :type order_id: int - :rtype: Order + :rtype: Union[Order, Tuple[Order, int], Tuple[Order, int, Dict[str, str]] """ return 'do some magic!' @@ -50,7 +53,7 @@ def place_order(order): # noqa: E501 :param order: order placed for purchasing the pet :type order: dict | bytes - :rtype: Order + :rtype: Union[Order, Tuple[Order, int], Tuple[Order, int, Dict[str, str]] """ if connexion.request.is_json: order = Order.from_dict(connexion.request.get_json()) # noqa: E501 diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/user_controller.py b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/user_controller.py index e897814d4b0d..1187dcf862d5 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/user_controller.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/controllers/user_controller.py @@ -1,5 +1,8 @@ import connexion import six +from typing import Dict +from typing import Tuple +from typing import Union from openapi_server.models.user import User # noqa: E501 from openapi_server import util @@ -13,7 +16,7 @@ def create_user(user): # noqa: E501 :param user: Created user object :type user: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = User.from_dict(connexion.request.get_json()) # noqa: E501 @@ -28,7 +31,7 @@ def create_users_with_array_input(user): # noqa: E501 :param user: List of user objects :type user: list | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = [User.from_dict(d) for d in connexion.request.get_json()] # noqa: E501 @@ -43,7 +46,7 @@ def create_users_with_list_input(user): # noqa: E501 :param user: List of user objects :type user: list | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = [User.from_dict(d) for d in connexion.request.get_json()] # noqa: E501 @@ -58,7 +61,7 @@ def delete_user(username): # noqa: E501 :param username: The name that needs to be deleted :type username: str - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -71,7 +74,7 @@ def get_user_by_name(username): # noqa: E501 :param username: The name that needs to be fetched. Use user1 for testing. :type username: str - :rtype: User + :rtype: Union[User, Tuple[User, int], Tuple[User, int, Dict[str, str]] """ return 'do some magic!' @@ -86,7 +89,7 @@ def login_user(username, password): # noqa: E501 :param password: The password for login in clear text :type password: str - :rtype: str + :rtype: Union[str, Tuple[str, int], Tuple[str, int, Dict[str, str]] """ return 'do some magic!' @@ -97,7 +100,7 @@ def logout_user(): # noqa: E501 # noqa: E501 - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ return 'do some magic!' @@ -112,7 +115,7 @@ def update_user(username, user): # noqa: E501 :param user: Updated user object :type user: dict | bytes - :rtype: None + :rtype: Union[None, Tuple[None, int], Tuple[None, int, Dict[str, str]] """ if connexion.request.is_json: user = User.from_dict(connexion.request.get_json()) # noqa: E501 diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/encoder.py b/samples/openapi3/server/petstore/python-flask/openapi_server/encoder.py index 3bbef854f3b8..1ec9cb99b838 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/encoder.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/encoder.py @@ -1,7 +1,7 @@ from connexion.apps.flask_app import FlaskJSONEncoder import six -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model class JSONEncoder(FlaskJSONEncoder): diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/__init__.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/__init__.py index bb6f70f1569b..d96a91ec6464 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/__init__.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/__init__.py @@ -7,8 +7,6 @@ from openapi_server.models.category import Category from openapi_server.models.order import Order from openapi_server.models.pet import Pet -from openapi_server.models.pet_form import PetForm from openapi_server.models.status_enum import StatusEnum from openapi_server.models.tag import Tag -from openapi_server.models.upload_form import UploadForm from openapi_server.models.user import User diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/api_response.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/api_response.py index 1e23da9c2304..a795a0a22246 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/api_response.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/api_response.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/base_model_.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/base_model.py similarity index 95% rename from samples/openapi3/server/petstore/python-flask/openapi_server/models/base_model_.py rename to samples/openapi3/server/petstore/python-flask/openapi_server/models/base_model.py index ec33e3ba3cff..916e582ec27f 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/base_model_.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/base_model.py @@ -11,11 +11,11 @@ class Model(object): # openapiTypes: The key is attribute name and the # value is attribute type. - openapi_types = {} + openapi_types: typing.Dict[str, type] = {} # attributeMap: The key is attribute name and the # value is json key in definition. - attribute_map = {} + attribute_map: typing.Dict[str, str] = {} @classmethod def from_dict(cls: typing.Type[T], dikt) -> T: diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/category.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/category.py index 8511752bafb9..16cde95a0563 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/category.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/category.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model import re from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/order.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/order.py index aa8a7a71c393..b9b11b2b35a5 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/order.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/order.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/pet.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/pet.py index e61674165e1c..1473099c5f8e 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/pet.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/pet.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server.models.category import Category from openapi_server.models.tag import Tag from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/status_enum.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/status_enum.py index 653c1684396f..ad3294da3e7f 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/status_enum.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/status_enum.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/tag.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/tag.py index bd6fff169078..c4dfa927b864 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/tag.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/tag.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/models/user.py b/samples/openapi3/server/petstore/python-flask/openapi_server/models/user.py index 1b1f4bdae726..8ed94b32f48a 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/models/user.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/models/user.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/openapi/openapi.yaml b/samples/openapi3/server/petstore/python-flask/openapi_server/openapi/openapi.yaml index 2257a3886817..c863de3bfe52 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/openapi/openapi.yaml +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/openapi/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.1 info: - description: This is a sample server Petstore server. For this sample, you can use - the api key `special-key` to test the authorization filters. + description: "This is a sample server Petstore server. For this sample, you can\ + \ use the api key `special-key` to test the authorization filters." license: name: Apache-2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html @@ -22,6 +22,7 @@ tags: paths: /pet: post: + description: "" operationId: add_pet requestBody: $ref: '#/components/requestBodies/Pet' @@ -37,6 +38,7 @@ paths: - pet x-openapi-router-controller: openapi_server.controllers.pet_controller put: + description: "" operationId: update_pet requestBody: $ref: '#/components/requestBodies/Pet' @@ -101,8 +103,8 @@ paths: /pet/findByTags: get: deprecated: true - description: Multiple tags can be provided with comma separated strings. Use - tag1, tag2, tag3 for testing. + description: "Multiple tags can be provided with comma separated strings. Use\ + \ tag1, tag2, tag3 for testing." operationId: find_pets_by_tags parameters: - description: Tags to filter by @@ -140,6 +142,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.pet_controller /pet/{petId}: delete: + description: "" operationId: delete_pet parameters: - explode: false @@ -203,6 +206,7 @@ paths: - pet x-openapi-router-controller: openapi_server.controllers.pet_controller patch: + description: "" operationId: update_pet_status_with_enum parameters: - description: ID of pet to return @@ -242,6 +246,7 @@ paths: - pet x-openapi-router-controller: openapi_server.controllers.pet_controller post: + description: "" operationId: update_pet_with_form parameters: - description: ID of pet that needs to be updated @@ -268,6 +273,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.pet_controller /pet/{petId}/uploadImage: post: + description: "" operationId: upload_file parameters: - description: ID of pet to update @@ -318,6 +324,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.store_controller /store/order: post: + description: "" operationId: place_order requestBody: content: @@ -421,6 +428,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/createWithArray: post: + description: "" operationId: create_users_with_array_input requestBody: $ref: '#/components/requestBodies/UserArray' @@ -435,6 +443,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/createWithList: post: + description: "" operationId: create_users_with_list_input requestBody: $ref: '#/components/requestBodies/UserArray' @@ -449,6 +458,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/login: get: + description: "" operationId: login_user parameters: - description: The user name for login @@ -457,7 +467,7 @@ paths: name: username required: true schema: - pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" type: string style: form - description: The password for login in clear text @@ -509,6 +519,7 @@ paths: x-openapi-router-controller: openapi_server.controllers.user_controller /user/logout: get: + description: "" operationId: logout_user responses: default: @@ -544,6 +555,7 @@ paths: - user x-openapi-router-controller: openapi_server.controllers.user_controller get: + description: "" operationId: get_user_by_name parameters: - description: The name that needs to be fetched. Use user1 for testing. @@ -663,15 +675,19 @@ components: properties: id: format: int64 + title: id type: integer petId: format: int64 + title: petId type: integer quantity: format: int32 + title: quantity type: integer shipDate: format: date-time + title: shipDate type: string status: description: Order Status @@ -679,9 +695,11 @@ components: - placed - approved - delivered + title: status type: string complete: default: false + title: complete type: boolean title: Pet Order type: object @@ -695,9 +713,11 @@ components: properties: id: format: int64 + title: id type: integer name: - pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$ + pattern: "^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$" + title: name type: string title: Pet category type: object @@ -717,22 +737,30 @@ components: properties: id: format: int64 + title: id type: integer username: + title: username type: string firstName: + title: firstName type: string lastName: + title: lastName type: string email: + title: email type: string password: + title: password type: string phone: + title: phone type: string userStatus: description: User Status format: int32 + title: userStatus type: integer title: a User type: object @@ -746,8 +774,10 @@ components: properties: id: format: int64 + title: id type: integer name: + title: name type: string title: Pet Tag type: object @@ -773,15 +803,18 @@ components: properties: id: format: int64 + title: id type: integer category: $ref: '#/components/schemas/Category' name: example: doggie + title: name type: string photoUrls: items: type: string + title: photoUrls type: array xml: name: photoUrl @@ -789,6 +822,7 @@ components: tags: items: $ref: '#/components/schemas/Tag' + title: tags type: array xml: name: tag @@ -799,6 +833,7 @@ components: - available - pending - sold + title: status type: string required: - name @@ -812,9 +847,11 @@ components: properties: name: description: Updated name of the pet + title: name type: string status: description: Updated status of the pet + title: status type: string required: - name @@ -826,10 +863,12 @@ components: properties: additionalMetadata: description: Additional data to pass to server + title: additionalMetadata type: string file: description: file to upload format: binary + title: file type: string required: - file @@ -844,10 +883,13 @@ components: properties: code: format: int32 + title: code type: integer type: + title: type type: string message: + title: message type: string title: An uploaded response type: object @@ -857,6 +899,7 @@ components: - available - pending - sold + title: statusEnum type: string securitySchemes: petstore_auth: @@ -867,15 +910,15 @@ components: write:pets: modify pets in your account read:pets: read your pets type: oauth2 - x-tokenInfoFunc: openapi_server.controllers.security_controller_.info_from_petstore_auth - x-scopeValidateFunc: openapi_server.controllers.security_controller_.validate_scope_petstore_auth + x-tokenInfoFunc: openapi_server.controllers.security_controller.info_from_petstore_auth + x-scopeValidateFunc: openapi_server.controllers.security_controller.validate_scope_petstore_auth api_key: in: header name: api_key type: apiKey - x-apikeyInfoFunc: openapi_server.controllers.security_controller_.info_from_api_key + x-apikeyInfoFunc: openapi_server.controllers.security_controller.info_from_api_key auth_cookie: in: cookie name: AUTH_KEY type: apiKey - x-apikeyInfoFunc: openapi_server.controllers.security_controller_.info_from_auth_cookie + x-apikeyInfoFunc: openapi_server.controllers.security_controller.info_from_auth_cookie diff --git a/samples/openapi3/server/petstore/python-flask/openapi_server/util.py b/samples/openapi3/server/petstore/python-flask/openapi_server/util.py index e1185a713ec9..2a63f2109ba5 100644 --- a/samples/openapi3/server/petstore/python-flask/openapi_server/util.py +++ b/samples/openapi3/server/petstore/python-flask/openapi_server/util.py @@ -67,6 +67,9 @@ def deserialize_date(string): :return: date. :rtype: date """ + if string is None: + return None + try: from dateutil.parser import parse return parse(string).date() @@ -84,6 +87,9 @@ def deserialize_datetime(string): :return: datetime. :rtype: datetime """ + if string is None: + return None + try: from dateutil.parser import parse return parse(string) diff --git a/samples/openapi3/server/petstore/python-flask/requirements.txt b/samples/openapi3/server/petstore/python-flask/requirements.txt index 72ed547c4429..be4c8a3a02c1 100644 --- a/samples/openapi3/server/petstore/python-flask/requirements.txt +++ b/samples/openapi3/server/petstore/python-flask/requirements.txt @@ -8,3 +8,4 @@ werkzeug == 0.16.1; python_version=="3.5" or python_version=="3.4" swagger-ui-bundle >= 0.0.2 python_dateutil >= 2.6.0 setuptools >= 21.0.0 +Flask == 2.1.1 diff --git a/samples/openapi3/server/petstore/python-flask/test-requirements.txt b/samples/openapi3/server/petstore/python-flask/test-requirements.txt index 0970f28c7c5a..58f51d6a0027 100644 --- a/samples/openapi3/server/petstore/python-flask/test-requirements.txt +++ b/samples/openapi3/server/petstore/python-flask/test-requirements.txt @@ -1,4 +1,4 @@ -pytest~=4.6.7 # needed for python 2.7+3.4 +pytest~=7.1.0 pytest-cov>=2.8.1 -pytest-randomly==1.2.3 # needed for python 2.7+3.4 -Flask-Testing==0.8.0 +pytest-randomly>=1.2.3 +Flask-Testing==0.8.1 diff --git a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/FILES b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/FILES index ce2928201ef6..5cc3df12950f 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/FILES +++ b/samples/server/petstore/python-aiohttp-srclayout/.openapi-generator/FILES @@ -6,12 +6,12 @@ src/openapi_server/__init__.py src/openapi_server/__main__.py src/openapi_server/controllers/__init__.py src/openapi_server/controllers/pet_controller.py -src/openapi_server/controllers/security_controller_.py +src/openapi_server/controllers/security_controller.py src/openapi_server/controllers/store_controller.py src/openapi_server/controllers/user_controller.py src/openapi_server/models/__init__.py src/openapi_server/models/api_response.py -src/openapi_server/models/base_model_.py +src/openapi_server/models/base_model.py src/openapi_server/models/category.py src/openapi_server/models/order.py src/openapi_server/models/pet.py diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/controllers/security_controller_.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/controllers/security_controller.py similarity index 100% rename from samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/controllers/security_controller_.py rename to samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/controllers/security_controller.py diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/api_response.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/api_response.py index 2fc7342b8bc2..1ee9b143c962 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/api_response.py +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/api_response.py @@ -4,7 +4,7 @@ from typing import List, Dict, Type -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/base_model_.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/base_model.py similarity index 100% rename from samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/base_model_.py rename to samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/base_model.py diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/category.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/category.py index 930eef70829a..f4fd3dde80b1 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/category.py +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/category.py @@ -4,7 +4,7 @@ from typing import List, Dict, Type -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/order.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/order.py index 88df4eb7e8f3..6fab59c0350c 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/order.py +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/order.py @@ -4,7 +4,7 @@ from typing import List, Dict, Type -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/pet.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/pet.py index d3e68e105e3a..8b4fcb126de5 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/pet.py +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/pet.py @@ -4,7 +4,7 @@ from typing import List, Dict, Type -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server.models.category import Category from openapi_server.models.tag import Tag from openapi_server import util diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/tag.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/tag.py index d494277441c7..b26cfe75909f 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/tag.py +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/tag.py @@ -4,7 +4,7 @@ from typing import List, Dict, Type -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/user.py b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/user.py index 24e024c54ab5..6fdcd455e776 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/user.py +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/models/user.py @@ -4,7 +4,7 @@ from typing import List, Dict, Type -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml index 7f83054c4a72..8516a4208bc9 100644 --- a/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml +++ b/samples/server/petstore/python-aiohttp-srclayout/src/openapi_server/openapi/openapi.yaml @@ -819,11 +819,11 @@ components: write:pets: modify pets in your account read:pets: read your pets type: oauth2 - x-tokenInfoFunc: openapi_server.controllers.security_controller_.info_from_petstore_auth - x-scopeValidateFunc: openapi_server.controllers.security_controller_.validate_scope_petstore_auth + x-tokenInfoFunc: openapi_server.controllers.security_controller.info_from_petstore_auth + x-scopeValidateFunc: openapi_server.controllers.security_controller.validate_scope_petstore_auth api_key: in: header name: api_key type: apiKey - x-apikeyInfoFunc: openapi_server.controllers.security_controller_.info_from_api_key + x-apikeyInfoFunc: openapi_server.controllers.security_controller.info_from_api_key x-original-swagger-version: "2.0" diff --git a/samples/server/petstore/python-blueplanet/.openapi-generator/FILES b/samples/server/petstore/python-blueplanet/.openapi-generator/FILES index 129ea61cb4db..b111fa752190 100644 --- a/samples/server/petstore/python-blueplanet/.openapi-generator/FILES +++ b/samples/server/petstore/python-blueplanet/.openapi-generator/FILES @@ -24,8 +24,8 @@ app/openapi_server/encoder.py app/openapi_server/models/__init__.py app/openapi_server/models/__init__.py app/openapi_server/models/api_response.py -app/openapi_server/models/base_model_.py -app/openapi_server/models/base_model_.py +app/openapi_server/models/base_model.py +app/openapi_server/models/base_model.py app/openapi_server/models/category.py app/openapi_server/models/order.py app/openapi_server/models/pet.py diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/encoder.py b/samples/server/petstore/python-blueplanet/app/openapi_server/encoder.py index 96da9553f37f..e20b15882061 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/encoder.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/encoder.py @@ -1,7 +1,7 @@ from connexion.apps.flask_app import FlaskJSONEncoder import six -from app.openapi_server.models.base_model_ import Model +from app.openapi_server.models.base_model import Model class JSONEncoder(FlaskJSONEncoder): diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/models/api_response.py b/samples/server/petstore/python-blueplanet/app/openapi_server/models/api_response.py index 9c876ad632c4..a1e206febf91 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/models/api_response.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/models/api_response.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from app.openapi_server.models.base_model_ import Model +from app.openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/models/base_model_.py b/samples/server/petstore/python-blueplanet/app/openapi_server/models/base_model.py similarity index 100% rename from samples/server/petstore/python-blueplanet/app/openapi_server/models/base_model_.py rename to samples/server/petstore/python-blueplanet/app/openapi_server/models/base_model.py diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/models/category.py b/samples/server/petstore/python-blueplanet/app/openapi_server/models/category.py index 2b407d025090..b423c2bc9d9d 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/models/category.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/models/category.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from app.openapi_server.models.base_model_ import Model +from app.openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/models/order.py b/samples/server/petstore/python-blueplanet/app/openapi_server/models/order.py index e222f5ee0069..dbf5ce956c49 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/models/order.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/models/order.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from app.openapi_server.models.base_model_ import Model +from app.openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/models/pet.py b/samples/server/petstore/python-blueplanet/app/openapi_server/models/pet.py index 0a427ef53e19..00f51b6bd758 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/models/pet.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/models/pet.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from app.openapi_server.models.base_model_ import Model +from app.openapi_server.models.base_model import Model from app.openapi_server.models.category import Category # noqa: F401,E501 from app.openapi_server.models.tag import Tag # noqa: F401,E501 from openapi_server import util diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/models/tag.py b/samples/server/petstore/python-blueplanet/app/openapi_server/models/tag.py index 19a8f833ac25..e89e96e6927d 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/models/tag.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/models/tag.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from app.openapi_server.models.base_model_ import Model +from app.openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-blueplanet/app/openapi_server/models/user.py b/samples/server/petstore/python-blueplanet/app/openapi_server/models/user.py index e45a8a55a4d8..603e43122441 100644 --- a/samples/server/petstore/python-blueplanet/app/openapi_server/models/user.py +++ b/samples/server/petstore/python-blueplanet/app/openapi_server/models/user.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from app.openapi_server.models.base_model_ import Model +from app.openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-flask/.openapi-generator/FILES b/samples/server/petstore/python-flask/.openapi-generator/FILES index 2d71840efc01..9dbaae5533b5 100644 --- a/samples/server/petstore/python-flask/.openapi-generator/FILES +++ b/samples/server/petstore/python-flask/.openapi-generator/FILES @@ -8,13 +8,13 @@ openapi_server/__init__.py openapi_server/__main__.py openapi_server/controllers/__init__.py openapi_server/controllers/pet_controller.py -openapi_server/controllers/security_controller_.py +openapi_server/controllers/security_controller.py openapi_server/controllers/store_controller.py openapi_server/controllers/user_controller.py openapi_server/encoder.py openapi_server/models/__init__.py openapi_server/models/api_response.py -openapi_server/models/base_model_.py +openapi_server/models/base_model.py openapi_server/models/category.py openapi_server/models/order.py openapi_server/models/pet.py diff --git a/samples/server/petstore/python-flask/openapi_server/controllers/security_controller_.py b/samples/server/petstore/python-flask/openapi_server/controllers/security_controller.py similarity index 100% rename from samples/server/petstore/python-flask/openapi_server/controllers/security_controller_.py rename to samples/server/petstore/python-flask/openapi_server/controllers/security_controller.py diff --git a/samples/server/petstore/python-flask/openapi_server/encoder.py b/samples/server/petstore/python-flask/openapi_server/encoder.py index 3bbef854f3b8..1ec9cb99b838 100644 --- a/samples/server/petstore/python-flask/openapi_server/encoder.py +++ b/samples/server/petstore/python-flask/openapi_server/encoder.py @@ -1,7 +1,7 @@ from connexion.apps.flask_app import FlaskJSONEncoder import six -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model class JSONEncoder(FlaskJSONEncoder): diff --git a/samples/server/petstore/python-flask/openapi_server/models/api_response.py b/samples/server/petstore/python-flask/openapi_server/models/api_response.py index 1e23da9c2304..a795a0a22246 100644 --- a/samples/server/petstore/python-flask/openapi_server/models/api_response.py +++ b/samples/server/petstore/python-flask/openapi_server/models/api_response.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/base_model_.py b/samples/server/petstore/python-flask/openapi_server/models/base_model.py similarity index 90% rename from samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/base_model_.py rename to samples/server/petstore/python-flask/openapi_server/models/base_model.py index 2f7f96c14e47..916e582ec27f 100644 --- a/samples/openapi3/server/petstore/python-flask-python2/openapi_server/models/base_model_.py +++ b/samples/server/petstore/python-flask/openapi_server/models/base_model.py @@ -1,21 +1,24 @@ import pprint import six +import typing from openapi_server import util +T = typing.TypeVar('T') + class Model(object): # openapiTypes: The key is attribute name and the # value is attribute type. - openapi_types = {} + openapi_types: typing.Dict[str, type] = {} # attributeMap: The key is attribute name and the # value is json key in definition. - attribute_map = {} + attribute_map: typing.Dict[str, str] = {} @classmethod - def from_dict(cls, dikt): + def from_dict(cls: typing.Type[T], dikt) -> T: """Returns the dict as a model""" return util.deserialize_model(dikt, cls) diff --git a/samples/server/petstore/python-flask/openapi_server/models/category.py b/samples/server/petstore/python-flask/openapi_server/models/category.py index 3a68d86c250c..5e068634926b 100644 --- a/samples/server/petstore/python-flask/openapi_server/models/category.py +++ b/samples/server/petstore/python-flask/openapi_server/models/category.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-flask/openapi_server/models/order.py b/samples/server/petstore/python-flask/openapi_server/models/order.py index aa8a7a71c393..b9b11b2b35a5 100644 --- a/samples/server/petstore/python-flask/openapi_server/models/order.py +++ b/samples/server/petstore/python-flask/openapi_server/models/order.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-flask/openapi_server/models/pet.py b/samples/server/petstore/python-flask/openapi_server/models/pet.py index e61674165e1c..1473099c5f8e 100644 --- a/samples/server/petstore/python-flask/openapi_server/models/pet.py +++ b/samples/server/petstore/python-flask/openapi_server/models/pet.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server.models.category import Category from openapi_server.models.tag import Tag from openapi_server import util diff --git a/samples/server/petstore/python-flask/openapi_server/models/tag.py b/samples/server/petstore/python-flask/openapi_server/models/tag.py index bd6fff169078..c4dfa927b864 100644 --- a/samples/server/petstore/python-flask/openapi_server/models/tag.py +++ b/samples/server/petstore/python-flask/openapi_server/models/tag.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-flask/openapi_server/models/user.py b/samples/server/petstore/python-flask/openapi_server/models/user.py index 1b1f4bdae726..8ed94b32f48a 100644 --- a/samples/server/petstore/python-flask/openapi_server/models/user.py +++ b/samples/server/petstore/python-flask/openapi_server/models/user.py @@ -5,7 +5,7 @@ from typing import List, Dict # noqa: F401 -from openapi_server.models.base_model_ import Model +from openapi_server.models.base_model import Model from openapi_server import util diff --git a/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml b/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml index 0d47b9c980b7..92baa6a0525e 100644 --- a/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml +++ b/samples/server/petstore/python-flask/openapi_server/openapi/openapi.yaml @@ -808,11 +808,11 @@ components: write:pets: modify pets in your account read:pets: read your pets type: oauth2 - x-tokenInfoFunc: openapi_server.controllers.security_controller_.info_from_petstore_auth - x-scopeValidateFunc: openapi_server.controllers.security_controller_.validate_scope_petstore_auth + x-tokenInfoFunc: openapi_server.controllers.security_controller.info_from_petstore_auth + x-scopeValidateFunc: openapi_server.controllers.security_controller.validate_scope_petstore_auth api_key: in: header name: api_key type: apiKey - x-apikeyInfoFunc: openapi_server.controllers.security_controller_.info_from_api_key + x-apikeyInfoFunc: openapi_server.controllers.security_controller.info_from_api_key x-original-swagger-version: "2.0"