Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

v2 change enums to literals #85

Merged
merged 5 commits into from
Nov 19, 2022
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,8 @@ public class PythonClientCodegen extends AbstractPythonCodegen {

// for apis.tags imports
private Map<String, String> tagModuleNameToApiClassname = new LinkedHashMap<>();
// for apis.tags enum tag definition
private Map<String, String> enumToTag = new LinkedHashMap<>();
// for apis.tags tag api definition
private Map<String, String> tagEnumToApiClassname = new LinkedHashMap<>();
private Map<String, String> tagToApiClassname = new LinkedHashMap<>();

private boolean nonCompliantUseDiscrIfCompositionFails = false;

Expand Down Expand Up @@ -556,9 +554,7 @@ protected void generateEndpoints(OperationsMap objs) {
String tagModuleName = toApiFilename(tagName);
String apiClassname = toApiName(tagName);
tagModuleNameToApiClassname.put(tagModuleName, apiClassname);
String tagEnum = toEnumVarName(tagName, "str");
enumToTag.put(tagEnum, tagName);
tagEnumToApiClassname.put(tagEnum, apiClassname);
tagToApiClassname.put(tagName, apiClassname);
}
}

Expand All @@ -574,9 +570,7 @@ protected void generateEndpoints(OperationsMap objs) {
String tagModuleName = toApiFilename(tagName);
String apiClassname = toApiName(tagName);
tagModuleNameToApiClassname.put(tagModuleName, apiClassname);
String tagEnum = toEnumVarName(tagName, "str");
enumToTag.put(tagEnum, tagName);
tagEnumToApiClassname.put(tagEnum, apiClassname);
tagToApiClassname.put(tagName, apiClassname);
}
}
String path = co.path;
Expand Down Expand Up @@ -658,15 +652,13 @@ protected void generateEndpoints(OperationsMap objs) {
outputFilename = filenameFromRoot(Arrays.asList("test", "test_paths", "__init__.py"));
testFiles.add(Arrays.asList(new HashMap<>(), "__init__test_paths.handlebars", outputFilename));

Map<String, String> pathValToVar = new LinkedHashMap<>();
Map<String, String> pathModuleToApiClassname = new LinkedHashMap<>();
Map<String, String> pathEnumToApiClassname = new LinkedHashMap<>();
Map<String, String> pathToApiClassname = new LinkedHashMap<>();
for (Map.Entry<String, PathItem> pathsEntry : paths.entrySet()) {
String path = pathsEntry.getKey();
String pathEnumVar = toEnumVarName(path, "str");
pathValToVar.put(path, pathEnumVar);
String apiClassName = toModelName(path);
pathEnumToApiClassname.put(pathEnumVar, apiClassName);
pathToApiClassname.put(path, apiClassName);
pathModuleToApiClassname.put(toVarName(path), apiClassName);
}
// Note: __init__apis.handlebars is generated as a supporting file
Expand All @@ -675,29 +667,27 @@ protected void generateEndpoints(OperationsMap objs) {
tagToApiMap.put("packageName", packageName);
tagToApiMap.put("apiClassname", "Api");
tagToApiMap.put("tagModuleNameToApiClassname", tagModuleNameToApiClassname);
tagToApiMap.put("tagEnumToApiClassname", tagEnumToApiClassname);
tagToApiMap.put("tagToApiClassname", tagToApiClassname);
outputFilename = packageFilename(Arrays.asList(apiPackage, "tag_to_api.py"));
apisFiles.add(Arrays.asList(tagToApiMap, "apis_tag_to_api.handlebars", outputFilename));
// apis.path_to_api.py
Map<String, Object> allByPathsFileMap = new HashMap<>();
allByPathsFileMap.put("packageName", packageName);
allByPathsFileMap.put("apiClassname", "Api");
allByPathsFileMap.put("pathModuleToApiClassname", pathModuleToApiClassname);
allByPathsFileMap.put("pathEnumToApiClassname", pathEnumToApiClassname);
allByPathsFileMap.put("pathToApiClassname", pathToApiClassname);
outputFilename = packageFilename(Arrays.asList(apiPackage, "path_to_api.py"));
apisFiles.add(Arrays.asList(allByPathsFileMap, "apis_path_to_api.handlebars", outputFilename));
// apis.paths.__init__.py
Map<String, Object> initApiTagsMap = new HashMap<>();
initApiTagsMap.put("packageName", packageName);
initApiTagsMap.put("enumToTag", enumToTag);
outputFilename = packageFilename(Arrays.asList(apiPackage, "tags", "__init__.py"));
apisFiles.add(Arrays.asList(initApiTagsMap, "__init__apis_tags.handlebars", outputFilename));

// paths.__init__.py (contains path str enum)
Map<String, Object> initOperationMap = new HashMap<>();
initOperationMap.put("packageName", packageName);
initOperationMap.put("apiClassname", "Api");
initOperationMap.put("pathValToVar", pathValToVar);
outputFilename = packageFilename(Arrays.asList("paths", "__init__.py"));
pathsFiles.add(Arrays.asList(initOperationMap, "__init__paths_enum.handlebars", outputFilename));
// apis.paths.__init__.py
Expand All @@ -708,17 +698,16 @@ protected void generateEndpoints(OperationsMap objs) {
for (Map.Entry<String, String> entry: pathModuleToPath.entrySet()) {
String pathModule = entry.getKey();
String path = entry.getValue();
String pathVar = pathValToVar.get(path);
Map<String, Object> pathApiMap = new HashMap<>();
pathApiMap.put("packageName", packageName);
pathApiMap.put("pathModule", pathModule);
pathApiMap.put("apiClassName", "Api");
pathApiMap.put("pathVar", pathVar);
pathApiMap.put("path", path);
outputFilename = packageFilename(Arrays.asList("paths", pathModule, "__init__.py"));
pathsFiles.add(Arrays.asList(pathApiMap, "__init__paths_x.handlebars", outputFilename));

PathItem pi = openAPI.getPaths().get(path);
String apiClassName = pathEnumToApiClassname.get(pathVar);
String apiClassName = pathToApiClassname.get(path);
Map<String, Object> operationMap = new HashMap<>();
operationMap.put("packageName", packageName);
operationMap.put("pathModule", pathModule);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
# do not import all endpoints into this module because that uses a lot of memory and stack frames
# if you need the ability to import all endpoints from this module, import them with
# from {{packageName}}.apis.tag_to_api import tag_to_api

import enum


class TagValues(str, enum.Enum):
{{#each enumToTag}}
{{@key}} = "{{this}}"
{{/each}}
# from {{packageName}}.apis.tag_to_api import tag_to_api
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
# do not import all endpoints into this module because that uses a lot of memory and stack frames
# if you need the ability to import all endpoints from this module, import them with
# from {{packageName}}.apis.path_to_api import path_to_api

import enum


class PathValues(str, enum.Enum):
{{#each pathValToVar}}
{{this}} = "{{@key}}"
{{/each}}
# from {{packageName}}.apis.path_to_api import path_to_api
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,4 @@
# if you need the ability to import all endpoints from this module, import them with
# from {{packageName}}.paths.{{pathModule}} import {{apiClassName}}

from {{packageName}}.paths import PathValues

path = PathValues.{{{pathVar}}}
path = "{{{path}}}"
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
import typing_extensions

from {{packageName}}.paths import PathValues
{{#each pathModuleToApiClassname}}
from {{packageName}}.apis.paths.{{@key}} import {{this}}
{{/each}}

PathToApi = typing_extensions.TypedDict(
'PathToApi',
{
{{#each pathEnumToApiClassname}}
PathValues.{{@key}}: {{this}},
{{#each pathToApiClassname}}
"{{{@key}}}": {{this}},
{{/each}}
}
)

path_to_api = PathToApi(
{
{{#each pathEnumToApiClassname}}
PathValues.{{@key}}: {{this}},
{{#each pathToApiClassname}}
"{{{@key}}}": {{this}},
{{/each}}
}
)
Original file line number Diff line number Diff line change
@@ -1,23 +1,22 @@
import typing_extensions

from {{packageName}}.apis.tags import TagValues
{{#each tagModuleNameToApiClassname}}
from {{packageName}}.apis.tags.{{@key}} import {{this}}
{{/each}}

TagToApi = typing_extensions.TypedDict(
'TagToApi',
{
{{#each tagEnumToApiClassname}}
TagValues.{{@key}}: {{this}},
{{#each tagToApiClassname}}
"{{{@key}}}": {{this}},
{{/each}}
}
)

tag_to_api = TagToApi(
{
{{#each tagEnumToApiClassname}}
TagValues.{{@key}}: {{this}},
{{#each tagToApiClassname}}
"{{{@key}}}": {{this}},
{{/each}}
}
)
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ class BaseApi(api_client.Api):
{{#if cookieParams}}
self._verify_typed_dict_inputs_oapg(RequestCookieParameters.Params, cookie_params)
{{/if}}
used_path = path.value
used_path = path
{{#if pathParams}}

_path_params = {}
Expand Down
Loading