diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index 66ed01279a94..8f28acb3695c 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -41,8 +41,8 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig public static final String PACKAGE_URL = "packageUrl"; public static final String DEFAULT_LIBRARY = "urllib3"; - protected String packageName; // e.g. petstore_api - protected String packageVersion; + protected String packageName = "openapi_client"; + protected String packageVersion = "1.0.0"; protected String projectName; // for setup.py, e.g. petstore-api protected String packageUrl; protected String apiDocPath = "docs/"; @@ -176,8 +176,6 @@ public void processOpts() { if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) { setPackageName((String) additionalProperties.get(CodegenConstants.PACKAGE_NAME)); - } else { - setPackageName("openapi_client"); } if (additionalProperties.containsKey(CodegenConstants.PROJECT_NAME)) { @@ -190,9 +188,7 @@ public void processOpts() { if (additionalProperties.containsKey(CodegenConstants.PACKAGE_VERSION)) { setPackageVersion((String) additionalProperties.get(CodegenConstants.PACKAGE_VERSION)); - } else { - setPackageVersion("1.0.0"); - } + } Boolean generateSourceCodeOnly = false; if (additionalProperties.containsKey(CodegenConstants.SOURCECODEONLY_GENERATION)) { @@ -240,10 +236,22 @@ public void processOpts() { supportingFiles.add(new SupportingFile("__init__package.mustache", packagePath(), "__init__.py")); supportingFiles.add(new SupportingFile("__init__model.mustache", packagePath() + File.separatorChar + modelPackage, "__init__.py")); supportingFiles.add(new SupportingFile("__init__api.mustache", packagePath() + File.separatorChar + apiPackage, "__init__.py")); + + // If the package name consists of dots(openapi.client), then we need to create the directory structure like openapi/client with __init__ files. + String[] packageNameSplits = packageName.split("\\."); + String currentPackagePath = ""; + for (int i = 0; i < packageNameSplits.length-1; i++) { + if (i > 0) { + currentPackagePath = currentPackagePath + File.separatorChar; + } + currentPackagePath = currentPackagePath + packageNameSplits[i]; + supportingFiles.add(new SupportingFile("__init__.mustache", currentPackagePath, "__init__.py")); + } + supportingFiles.add(new SupportingFile("exceptions.mustache", packagePath(), "exceptions.py")); if (Boolean.FALSE.equals(excludeTests)) { - supportingFiles.add(new SupportingFile("__init__test.mustache", testFolder, "__init__.py")); + supportingFiles.add(new SupportingFile("__init__.mustache", testFolder, "__init__.py")); } supportingFiles.add(new SupportingFile("api_client.mustache", packagePath(), "api_client.py")); diff --git a/modules/openapi-generator/src/main/resources/python/__init__test.mustache b/modules/openapi-generator/src/main/resources/python/__init__.mustache similarity index 100% rename from modules/openapi-generator/src/main/resources/python/__init__test.mustache rename to modules/openapi-generator/src/main/resources/python/__init__.mustache