fix(fastapi): use correct impl & package name with custom values (#20970)

Signed-off-by: Henrik Gerdes <hegerdes@outlook.de>
This commit is contained in:
Henrik Gerdes 2025-04-23 09:57:21 +02:00 committed by GitHub
parent ee7927a525
commit abce11152e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 3 deletions

View File

@ -71,6 +71,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
private static final int DEFAULT_SERVER_PORT = 8080;
private static final String DEFAULT_PACKAGE_NAME = "openapi_server";
private static final String DEFAULT_SOURCE_FOLDER = "src";
private static final String DEFAULT_IMPL_FOLDER = "impl";
private static final String DEFAULT_PACKAGE_VERSION = "1.0.0";
private String implPackage;
@ -109,7 +110,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
additionalProperties.put("baseSuffix", BASE_CLASS_SUFFIX);
additionalProperties.put(CodegenConstants.SOURCE_FOLDER, DEFAULT_SOURCE_FOLDER);
additionalProperties.put(CodegenConstants.PACKAGE_NAME, DEFAULT_PACKAGE_NAME);
additionalProperties.put(CodegenConstants.FASTAPI_IMPLEMENTATION_PACKAGE, DEFAULT_PACKAGE_NAME.concat(".impl"));
additionalProperties.put(CodegenConstants.FASTAPI_IMPLEMENTATION_PACKAGE, DEFAULT_IMPL_FOLDER);
languageSpecificPrimitives.add("List");
languageSpecificPrimitives.add("Dict");
@ -124,7 +125,7 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
apiPackage = "apis";
modelPackage = "models";
testPackage = "tests";
implPackage = "impl";
implPackage = DEFAULT_IMPL_FOLDER;
apiTestTemplateFiles().put("api_test.mustache", ".py");
cliOptions.add(new CliOption(CodegenConstants.PACKAGE_NAME, "python package name (convention: snake_case).")
@ -153,10 +154,14 @@ public class PythonFastAPIServerCodegen extends AbstractPythonCodegen {
if (additionalProperties.containsKey(CodegenConstants.FASTAPI_IMPLEMENTATION_PACKAGE)) {
this.implPackage = ((String) additionalProperties.get(CodegenConstants.FASTAPI_IMPLEMENTATION_PACKAGE));
// Prefix templating value with the package name
additionalProperties.put(CodegenConstants.FASTAPI_IMPLEMENTATION_PACKAGE,
this.packageName + "." + this.implPackage);
}
modelPackage = packageName + "." + modelPackage;
apiPackage = packageName + "." + apiPackage;
implPackage = packageName + "." + implPackage;
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
supportingFiles.add(new SupportingFile("openapi.mustache", "", "openapi.yaml"));

View File

@ -30,7 +30,7 @@ public class PythonFastapiCodegenTest {
List<File> files = generator.opts(configurator.toClientOptInput()).generate();
files.forEach(File::deleteOnExit);
TestUtils.assertFileExists(Paths.get(output.getAbsolutePath(), "/src", IMPL_PKG, "__init__.py"));
TestUtils.assertFileExists(Paths.get(output.getAbsolutePath(), "/src", "/nodesc", IMPL_PKG, "__init__.py"));
}
@Test