diff --git a/Makefile b/Makefile index 776a1516d..7ee5a9809 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,7 @@ build-java: ## Builds the Java code generation packages. test-protocols: ## Generates and runs the restJson1 protocol tests. cd codegen && ./gradlew :protocol-test:build + uv pip install codegen/protocol-test/build/smithyprojections/protocol-test/rest-json-1/python-client-codegen uv run pytest codegen/protocol-test/build/smithyprojections/protocol-test/rest-json-1/python-client-codegen diff --git a/codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsUserAgentIntegration.java b/codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsUserAgentIntegration.java index 008f3233c..423296913 100644 --- a/codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsUserAgentIntegration.java +++ b/codegen/aws/core/src/main/java/software/amazon/smithy/python/aws/codegen/AwsUserAgentIntegration.java @@ -60,7 +60,7 @@ public List getClientPlugins(GenerationContext context) { moduleName, user_agent_plugin_file.replace('/', '.')), ".") .definitionFile(String - .format("./%s/%s.py", moduleName, user_agent_plugin_file)) + .format("./src/%s/%s.py", moduleName, user_agent_plugin_file)) .name("aws_user_agent_plugin") .build()) .build(); @@ -90,7 +90,7 @@ public List getClientPlugins(GenerationContext context) { .addConfigProperty(uaAppId) .pythonPlugin(userAgentPlugin) .writeAdditionalFiles((c) -> { - String filename = "%s/%s.py".formatted(moduleName, user_agent_plugin_file); + String filename = "src/%s/%s.py".formatted(moduleName, user_agent_plugin_file); c.writerDelegator() .useFileWriter( filename, diff --git a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/CodegenUtils.java b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/CodegenUtils.java index 4cba69d64..734da83a5 100644 --- a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/CodegenUtils.java +++ b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/CodegenUtils.java @@ -70,7 +70,7 @@ public static Symbol getConfigSymbol(PythonSettings settings) { return Symbol.builder() .name("Config") .namespace(String.format("%s.config", settings.moduleName()), ".") - .definitionFile(String.format("./%s/config.py", settings.moduleName())) + .definitionFile(String.format("./src/%s/config.py", settings.moduleName())) .build(); } @@ -82,7 +82,7 @@ public static Symbol getPluginSymbol(PythonSettings settings) { return Symbol.builder() .name("Plugin") .namespace(String.format("%s.config", settings.moduleName()), ".") - .definitionFile(String.format("./%s/config.py", settings.moduleName())) + .definitionFile(String.format("./src/%s/config.py", settings.moduleName())) .build(); } @@ -101,7 +101,7 @@ public static Symbol getServiceError(PythonSettings settings) { return Symbol.builder() .name("ServiceError") .namespace(String.format("%s.models", settings.moduleName()), ".") - .definitionFile(String.format("./%s/models.py", settings.moduleName())) + .definitionFile(String.format("./src/%s/models.py", settings.moduleName())) .build(); } @@ -118,7 +118,7 @@ public static Symbol getApiError(PythonSettings settings) { return Symbol.builder() .name("ApiError") .namespace(String.format("%s.models", settings.moduleName()), ".") - .definitionFile(String.format("./%s/models.py", settings.moduleName())) + .definitionFile(String.format("./src/%s/models.py", settings.moduleName())) .build(); } @@ -135,7 +135,7 @@ public static Symbol getUnknownApiError(PythonSettings settings) { return Symbol.builder() .name("UnknownApiError") .namespace(String.format("%s.models", settings.moduleName()), ".") - .definitionFile(String.format("./%s/models.py", settings.moduleName())) + .definitionFile(String.format("./src/%s/models.py", settings.moduleName())) .build(); } @@ -149,7 +149,7 @@ public static Symbol getHttpAuthParamsSymbol(PythonSettings settings) { return Symbol.builder() .name("HTTPAuthParams") .namespace(String.format("%s.auth", settings.moduleName()), ".") - .definitionFile(String.format("./%s/auth.py", settings.moduleName())) + .definitionFile(String.format("./src/%s/auth.py", settings.moduleName())) .build(); } @@ -163,7 +163,7 @@ public static Symbol getHttpAuthSchemeResolverSymbol(PythonSettings settings) { return Symbol.builder() .name("HTTPAuthSchemeResolver") .namespace(String.format("%s.auth", settings.moduleName()), ".") - .definitionFile(String.format("./%s/auth.py", settings.moduleName())) + .definitionFile(String.format("./src/%s/auth.py", settings.moduleName())) .build(); } diff --git a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/PythonSymbolProvider.java b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/PythonSymbolProvider.java index 19a4e2f96..4c7907983 100644 --- a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/PythonSymbolProvider.java +++ b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/PythonSymbolProvider.java @@ -408,7 +408,7 @@ private SymbolReference createSchemaSymbol(Shape shape) { } else { schemaSymbolBuilder .namespace(String.format("%s.%s", settings.moduleName(), SCHEMAS_FILE.replace('/', '.')), ".") - .definitionFile(String.format("./%s/%s.py", settings.moduleName(), SCHEMAS_FILE)); + .definitionFile(String.format("./src/%s/%s.py", settings.moduleName(), SCHEMAS_FILE)); } var schemaSymbol = schemaSymbolBuilder.build(); return SymbolReference.builder() @@ -428,7 +428,7 @@ private Symbol.Builder createGeneratedSymbolBuilder( boolean includeSchema ) { var namespace = String.format("%s.%s", settings.moduleName(), file.replace('/', '.')); - var filename = String.format("./%s/%s.py", settings.moduleName(), file); + var filename = String.format("./src/%s/%s.py", settings.moduleName(), file); return createSymbolBuilder(shape, typeName, includeSchema) .namespace(namespace, ".") .definitionFile(filename); diff --git a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/InitGenerator.java b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/InitGenerator.java index ca0432f4d..22b7e156d 100644 --- a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/InitGenerator.java +++ b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/InitGenerator.java @@ -42,7 +42,7 @@ public void run() { } context.writerDelegator() .useFileWriter( - "%s/__init__.py".formatted(context.settings().moduleName()), + "src/%s/__init__.py".formatted(context.settings().moduleName()), w -> w.write("__version__: str = $S", context.settings().moduleVersion())); } } diff --git a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/ProtocolGenerator.java b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/ProtocolGenerator.java index 48fe8b663..deca9d40d 100644 --- a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/ProtocolGenerator.java +++ b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/ProtocolGenerator.java @@ -69,7 +69,7 @@ default Symbol getSerializationFunction(GenerationContext context, ToShapeId sha return Symbol.builder() .name(getSerializationFunctionName(context, shapeId)) .namespace(format("%s.serialize", context.settings().moduleName()), "") - .definitionFile(format("./%s/serialize.py", context.settings().moduleName())) + .definitionFile(format("./src/%s/serialize.py", context.settings().moduleName())) .build(); } @@ -96,7 +96,7 @@ default Symbol getDeserializationFunction(GenerationContext context, ToShapeId s return Symbol.builder() .name(getDeserializationFunctionName(context, shapeId)) .namespace(format("%s.deserialize", context.settings().moduleName()), "") - .definitionFile(format("./%s/deserialize.py", context.settings().moduleName())) + .definitionFile(format("./src/%s/deserialize.py", context.settings().moduleName())) .build(); } @@ -113,7 +113,7 @@ default Symbol getErrorDeserializationFunction(GenerationContext context, ToShap return Symbol.builder() .name("_deserialize_error_" + CaseUtils.toSnakeCase(name)) .namespace(format("%s.deserialize", context.settings().moduleName()), "") - .definitionFile(format("./%s/deserialize.py", context.settings().moduleName())) + .definitionFile(format("./src/%s/deserialize.py", context.settings().moduleName())) .build(); } diff --git a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/SchemaGenerator.java b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/SchemaGenerator.java index 7711d97ba..daaccadaa 100644 --- a/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/SchemaGenerator.java +++ b/codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/SchemaGenerator.java @@ -207,7 +207,7 @@ private void writeSchemaMembers(PythonWriter writer, Shape shape) { // references, but when generating schemas we need to instead defer creating those // members until all schemas exist. public void finalizeRecursiveShapes() { - var filename = String.format("%s/_private/schemas.py", context.settings().moduleName()); + var filename = String.format("src/%s/_private/schemas.py", context.settings().moduleName()); var namespace = String.format("%s._private.schemas", context.settings().moduleName()); context.writerDelegator().useFileWriter(filename, namespace, this::finalizeRecursiveShapes); }