Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/workflows/samples-python-pydantic-v1-petstore.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ jobs:
fail-fast: false
matrix:
python-version:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,26 @@ __all__ = [
]

# import apis into sdk package
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}}
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/apis}}{{/apiInfo}}
# import ApiClient
from {{packageName}}.api_response import ApiResponse
from {{packageName}}.api_client import ApiClient
from {{packageName}}.configuration import Configuration
from {{packageName}}.exceptions import OpenApiException
from {{packageName}}.exceptions import ApiTypeError
from {{packageName}}.exceptions import ApiValueError
from {{packageName}}.exceptions import ApiKeyError
from {{packageName}}.exceptions import ApiAttributeError
from {{packageName}}.exceptions import ApiException
from {{packageName}}.api_response import ApiResponse as ApiResponse
from {{packageName}}.api_client import ApiClient as ApiClient
from {{packageName}}.configuration import Configuration as Configuration
from {{packageName}}.exceptions import OpenApiException as OpenApiException
from {{packageName}}.exceptions import ApiTypeError as ApiTypeError
from {{packageName}}.exceptions import ApiValueError as ApiValueError
from {{packageName}}.exceptions import ApiKeyError as ApiKeyError
from {{packageName}}.exceptions import ApiAttributeError as ApiAttributeError
from {{packageName}}.exceptions import ApiException as ApiException
{{#hasHttpSignatureMethods}}
from {{packageName}}.signing import HttpSigningConfiguration
from {{packageName}}.signing import HttpSigningConfiguration as HttpSigningConfiguration
{{/hasHttpSignatureMethods}}

# import models into sdk package
{{#models}}
{{#model}}
from {{modelPackage}}.{{classFilename}} import {{classname}}
from {{modelPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/model}}
{{/models}}
{{#recursionLimit}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,26 @@ __all__ = [
]

# import apis into sdk package
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}}
{{#apiInfo}}{{#apis}}from {{apiPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/apis}}{{/apiInfo}}
# import ApiClient
from {{packageName}}.api_response import ApiResponse
from {{packageName}}.api_client import ApiClient
from {{packageName}}.configuration import Configuration
from {{packageName}}.exceptions import OpenApiException
from {{packageName}}.exceptions import ApiTypeError
from {{packageName}}.exceptions import ApiValueError
from {{packageName}}.exceptions import ApiKeyError
from {{packageName}}.exceptions import ApiAttributeError
from {{packageName}}.exceptions import ApiException
from {{packageName}}.api_response import ApiResponse as ApiResponse
from {{packageName}}.api_client import ApiClient as ApiClient
from {{packageName}}.configuration import Configuration as Configuration
from {{packageName}}.exceptions import OpenApiException as OpenApiException
from {{packageName}}.exceptions import ApiTypeError as ApiTypeError
from {{packageName}}.exceptions import ApiValueError as ApiValueError
from {{packageName}}.exceptions import ApiKeyError as ApiKeyError
from {{packageName}}.exceptions import ApiAttributeError as ApiAttributeError
from {{packageName}}.exceptions import ApiException as ApiException
{{#hasHttpSignatureMethods}}
from {{packageName}}.signing import HttpSigningConfiguration
from {{packageName}}.signing import HttpSigningConfiguration as HttpSigningConfiguration
{{/hasHttpSignatureMethods}}

# import models into sdk package
{{#models}}
{{#model}}
from {{modelPackage}}.{{classFilename}} import {{classname}}
from {{modelPackage}}.{{classFilename}} import {{classname}} as {{classname}}
{{/model}}
{{/models}}
{{#recursionLimit}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -567,4 +567,48 @@ public void testHandleNoApis() throws IOException {
assertNotNull(setupFile);
assertFileContains(setupFile.toPath(), "setup(");
}

@Test(description = "outputs __init__.py with imports for exports")
public void testInitFileImportsExports() throws IOException {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
output.deleteOnExit();
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
final DefaultGenerator defaultGenerator = new DefaultGenerator();
final ClientOptInput clientOptInput = new ClientOptInput();
clientOptInput.openAPI(openAPI);
PythonClientCodegen pythonClientCodegen = new PythonClientCodegen();
pythonClientCodegen.setOutputDir(output.getAbsolutePath());
clientOptInput.config(pythonClientCodegen);
defaultGenerator.opts(clientOptInput);

Map<String, File> files = defaultGenerator.generate().stream().collect(Collectors.toMap(File::getPath, Function.identity()));

File initFile = files.get(Paths.get(output.getAbsolutePath(), "openapi_client", "__init__.py").toString());
assertNotNull(initFile);
Path initFilePath = initFile.toPath();

// import apis into sdk package
assertFileContains(initFilePath, "from openapi_client.api.pet_api import PetApi as PetApi");
assertFileContains(initFilePath, "from openapi_client.api.store_api import StoreApi as StoreApi");
assertFileContains(initFilePath, "from openapi_client.api.user_api import UserApi as UserApi");

// import ApiClient
assertFileContains(initFilePath, "from openapi_client.api_response import ApiResponse as ApiResponse");
assertFileContains(initFilePath, "from openapi_client.api_client import ApiClient as ApiClient");
assertFileContains(initFilePath, "from openapi_client.configuration import Configuration as Configuration");
assertFileContains(initFilePath, "from openapi_client.exceptions import OpenApiException as OpenApiException");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiTypeError as ApiTypeError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiValueError as ApiValueError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiKeyError as ApiKeyError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiAttributeError as ApiAttributeError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiException as ApiException");

// import models into sdk package
assertFileContains(initFilePath, "from openapi_client.models.api_response import ApiResponse as ApiResponse");
assertFileContains(initFilePath, "from openapi_client.models.category import Category as Category");
assertFileContains(initFilePath, "from openapi_client.models.order import Order as Order");
assertFileContains(initFilePath, "from openapi_client.models.pet import Pet as Pet");
assertFileContains(initFilePath, "from openapi_client.models.tag import Tag as Tag");
assertFileContains(initFilePath, "from openapi_client.models.user import User as User");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -503,4 +503,35 @@ public void modelTestDollarSign() {
CodegenProperty property = vars.get(0);
Assert.assertEquals(property.name, "dollar_value");
}

@Test(description = "outputs __init__.py with imports for exports")
public void testInitFileImportsExports() throws Exception {
final PythonPydanticV1ClientCodegen codegen = new PythonPydanticV1ClientCodegen();
final String outputPath = generateFiles(codegen, "src/test/resources/3_0/petstore.yaml");
final Path initFilePath = Paths.get(outputPath + "openapi_client/__init__.py");

// import apis into sdk package
assertFileContains(initFilePath, "from openapi_client.api.pet_api import PetApi as PetApi");
assertFileContains(initFilePath, "from openapi_client.api.store_api import StoreApi as StoreApi");
assertFileContains(initFilePath, "from openapi_client.api.user_api import UserApi as UserApi");

// import ApiClient
assertFileContains(initFilePath, "from openapi_client.api_response import ApiResponse as ApiResponse");
assertFileContains(initFilePath, "from openapi_client.api_client import ApiClient as ApiClient");
assertFileContains(initFilePath, "from openapi_client.configuration import Configuration as Configuration");
assertFileContains(initFilePath, "from openapi_client.exceptions import OpenApiException as OpenApiException");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiTypeError as ApiTypeError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiValueError as ApiValueError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiKeyError as ApiKeyError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiAttributeError as ApiAttributeError");
assertFileContains(initFilePath, "from openapi_client.exceptions import ApiException as ApiException");

// import models into sdk package
assertFileContains(initFilePath, "from openapi_client.models.api_response import ApiResponse as ApiResponse");
assertFileContains(initFilePath, "from openapi_client.models.category import Category as Category");
assertFileContains(initFilePath, "from openapi_client.models.order import Order as Order");
assertFileContains(initFilePath, "from openapi_client.models.pet import Pet as Pet");
assertFileContains(initFilePath, "from openapi_client.models.tag import Tag as Tag");
assertFileContains(initFilePath, "from openapi_client.models.user import User as User");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,7 @@ paths:
description: Order not found
/user:
servers:
- url: 'http://localhost/v2'
- url: 'http://petstore.swagger.io/v2'
- url: 'http://path-server-test.petstore.local/v2'
- url: 'http://{server}.swagger.io:{port}/v2'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,34 +49,34 @@
]

# import apis into sdk package
from openapi_client.api.auth_api import AuthApi
from openapi_client.api.body_api import BodyApi
from openapi_client.api.form_api import FormApi
from openapi_client.api.header_api import HeaderApi
from openapi_client.api.path_api import PathApi
from openapi_client.api.query_api import QueryApi
from openapi_client.api.auth_api import AuthApi as AuthApi
from openapi_client.api.body_api import BodyApi as BodyApi
from openapi_client.api.form_api import FormApi as FormApi
from openapi_client.api.header_api import HeaderApi as HeaderApi
from openapi_client.api.path_api import PathApi as PathApi
from openapi_client.api.query_api import QueryApi as QueryApi

# import ApiClient
from openapi_client.api_response import ApiResponse
from openapi_client.api_client import ApiClient
from openapi_client.configuration import Configuration
from openapi_client.exceptions import OpenApiException
from openapi_client.exceptions import ApiTypeError
from openapi_client.exceptions import ApiValueError
from openapi_client.exceptions import ApiKeyError
from openapi_client.exceptions import ApiAttributeError
from openapi_client.exceptions import ApiException
from openapi_client.api_response import ApiResponse as ApiResponse
from openapi_client.api_client import ApiClient as ApiClient
from openapi_client.configuration import Configuration as Configuration
from openapi_client.exceptions import OpenApiException as OpenApiException
from openapi_client.exceptions import ApiTypeError as ApiTypeError
from openapi_client.exceptions import ApiValueError as ApiValueError
from openapi_client.exceptions import ApiKeyError as ApiKeyError
from openapi_client.exceptions import ApiAttributeError as ApiAttributeError
from openapi_client.exceptions import ApiException as ApiException

# import models into sdk package
from openapi_client.models.bird import Bird
from openapi_client.models.category import Category
from openapi_client.models.data_query import DataQuery
from openapi_client.models.default_value import DefaultValue
from openapi_client.models.number_properties_only import NumberPropertiesOnly
from openapi_client.models.pet import Pet
from openapi_client.models.query import Query
from openapi_client.models.string_enum_ref import StringEnumRef
from openapi_client.models.tag import Tag
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
from openapi_client.models.bird import Bird as Bird
from openapi_client.models.category import Category as Category
from openapi_client.models.data_query import DataQuery as DataQuery
from openapi_client.models.default_value import DefaultValue as DefaultValue
from openapi_client.models.number_properties_only import NumberPropertiesOnly as NumberPropertiesOnly
from openapi_client.models.pet import Pet as Pet
from openapi_client.models.query import Query as Query
from openapi_client.models.string_enum_ref import StringEnumRef as StringEnumRef
from openapi_client.models.tag import Tag as Tag
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker as TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter as TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter as TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
Original file line number Diff line number Diff line change
Expand Up @@ -49,34 +49,34 @@
]

# import apis into sdk package
from openapi_client.api.auth_api import AuthApi
from openapi_client.api.body_api import BodyApi
from openapi_client.api.form_api import FormApi
from openapi_client.api.header_api import HeaderApi
from openapi_client.api.path_api import PathApi
from openapi_client.api.query_api import QueryApi
from openapi_client.api.auth_api import AuthApi as AuthApi
from openapi_client.api.body_api import BodyApi as BodyApi
from openapi_client.api.form_api import FormApi as FormApi
from openapi_client.api.header_api import HeaderApi as HeaderApi
from openapi_client.api.path_api import PathApi as PathApi
from openapi_client.api.query_api import QueryApi as QueryApi

# import ApiClient
from openapi_client.api_response import ApiResponse
from openapi_client.api_client import ApiClient
from openapi_client.configuration import Configuration
from openapi_client.exceptions import OpenApiException
from openapi_client.exceptions import ApiTypeError
from openapi_client.exceptions import ApiValueError
from openapi_client.exceptions import ApiKeyError
from openapi_client.exceptions import ApiAttributeError
from openapi_client.exceptions import ApiException
from openapi_client.api_response import ApiResponse as ApiResponse
from openapi_client.api_client import ApiClient as ApiClient
from openapi_client.configuration import Configuration as Configuration
from openapi_client.exceptions import OpenApiException as OpenApiException
from openapi_client.exceptions import ApiTypeError as ApiTypeError
from openapi_client.exceptions import ApiValueError as ApiValueError
from openapi_client.exceptions import ApiKeyError as ApiKeyError
from openapi_client.exceptions import ApiAttributeError as ApiAttributeError
from openapi_client.exceptions import ApiException as ApiException

# import models into sdk package
from openapi_client.models.bird import Bird
from openapi_client.models.category import Category
from openapi_client.models.data_query import DataQuery
from openapi_client.models.default_value import DefaultValue
from openapi_client.models.number_properties_only import NumberPropertiesOnly
from openapi_client.models.pet import Pet
from openapi_client.models.query import Query
from openapi_client.models.string_enum_ref import StringEnumRef
from openapi_client.models.tag import Tag
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
from openapi_client.models.bird import Bird as Bird
from openapi_client.models.category import Category as Category
from openapi_client.models.data_query import DataQuery as DataQuery
from openapi_client.models.default_value import DefaultValue as DefaultValue
from openapi_client.models.number_properties_only import NumberPropertiesOnly as NumberPropertiesOnly
from openapi_client.models.pet import Pet as Pet
from openapi_client.models.query import Query as Query
from openapi_client.models.string_enum_ref import StringEnumRef as StringEnumRef
from openapi_client.models.tag import Tag as Tag
from openapi_client.models.test_form_object_multipart_request_marker import TestFormObjectMultipartRequestMarker as TestFormObjectMultipartRequestMarker
from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter as TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter as TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
Loading
Loading