From cf2d9247d517714e8568664606f119d8521ebd10 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 12:14:08 -0800 Subject: [PATCH 01/26] chore: Python codegen runs in target --- SmithyDafnyMakefile.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index a7cbef1a5..8fcd7c5d2 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -346,6 +346,11 @@ _polymorph_code_gen: OUTPUT_DOTNET=\ $(if $(DIR_STRUCTURE_V2), --output-dotnet $(LIBRARY_ROOT)/runtimes/net/Generated/$(SERVICE)/, --output-dotnet $(LIBRARY_ROOT)/runtimes/net/Generated/) _polymorph_code_gen: OUTPUT_JAVA=--output-java $(LIBRARY_ROOT)/runtimes/java/src/main/smithy-generated _polymorph_code_gen: OUTPUT_JAVA_TEST=--output-java-test $(LIBRARY_ROOT)/runtimes/java/src/test/smithy-generated +_polymorph_code_gen: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated +# Defined per-Makefile +_polymorph_code_gen: MODULE_NAME=--library-name $(PYTHON_MODULE_NAME) +# Defined per-Makefile +_polymorph_code_gen: DEPENDENCY_MODULE_NAMES=$(PYTHON_DEPENDENCY_MODULE_NAMES) _polymorph_code_gen: _polymorph check_polymorph_diff: From 25bdb21792c5f1680e3962709c6c38a367251509 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 12:17:53 -0800 Subject: [PATCH 02/26] m --- SmithyDafnyMakefile.mk | 2 -- 1 file changed, 2 deletions(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index 8fcd7c5d2..fc5630487 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -347,9 +347,7 @@ _polymorph_code_gen: OUTPUT_DOTNET=\ _polymorph_code_gen: OUTPUT_JAVA=--output-java $(LIBRARY_ROOT)/runtimes/java/src/main/smithy-generated _polymorph_code_gen: OUTPUT_JAVA_TEST=--output-java-test $(LIBRARY_ROOT)/runtimes/java/src/test/smithy-generated _polymorph_code_gen: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated -# Defined per-Makefile _polymorph_code_gen: MODULE_NAME=--library-name $(PYTHON_MODULE_NAME) -# Defined per-Makefile _polymorph_code_gen: DEPENDENCY_MODULE_NAMES=$(PYTHON_DEPENDENCY_MODULE_NAMES) _polymorph_code_gen: _polymorph From 8f8c7a24eed9c4fc81ff669e4df3ca4b5cdccb23 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 12:19:06 -0800 Subject: [PATCH 03/26] m --- SmithyDafnyMakefile.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index fc5630487..b2ce1e2e3 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -347,6 +347,7 @@ _polymorph_code_gen: OUTPUT_DOTNET=\ _polymorph_code_gen: OUTPUT_JAVA=--output-java $(LIBRARY_ROOT)/runtimes/java/src/main/smithy-generated _polymorph_code_gen: OUTPUT_JAVA_TEST=--output-java-test $(LIBRARY_ROOT)/runtimes/java/src/test/smithy-generated _polymorph_code_gen: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated +# Omni-language targets for MODULE_NAME and DEPENDENCY_MODULE_NAMES break if generating multiple languages in one Polymorph invocation... _polymorph_code_gen: MODULE_NAME=--library-name $(PYTHON_MODULE_NAME) _polymorph_code_gen: DEPENDENCY_MODULE_NAMES=$(PYTHON_DEPENDENCY_MODULE_NAMES) _polymorph_code_gen: _polymorph From 8869a8582fdc6fd4647e263e4037b21e8706a070 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 12:19:35 -0800 Subject: [PATCH 04/26] m --- SmithyDafnyMakefile.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index b2ce1e2e3..151a413d2 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -347,7 +347,7 @@ _polymorph_code_gen: OUTPUT_DOTNET=\ _polymorph_code_gen: OUTPUT_JAVA=--output-java $(LIBRARY_ROOT)/runtimes/java/src/main/smithy-generated _polymorph_code_gen: OUTPUT_JAVA_TEST=--output-java-test $(LIBRARY_ROOT)/runtimes/java/src/test/smithy-generated _polymorph_code_gen: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated -# Omni-language targets for MODULE_NAME and DEPENDENCY_MODULE_NAMES break if generating multiple languages in one Polymorph invocation... +# Omni-language targets ()MODULE_NAME and DEPENDENCY_MODULE_NAMES) don't work if generating multiple languages in one Polymorph invocation... _polymorph_code_gen: MODULE_NAME=--library-name $(PYTHON_MODULE_NAME) _polymorph_code_gen: DEPENDENCY_MODULE_NAMES=$(PYTHON_DEPENDENCY_MODULE_NAMES) _polymorph_code_gen: _polymorph From b9756525f6fc6b5b1430609b078bb3d38acc130d Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 12:19:48 -0800 Subject: [PATCH 05/26] m --- SmithyDafnyMakefile.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index 151a413d2..d4944e6f3 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -347,7 +347,7 @@ _polymorph_code_gen: OUTPUT_DOTNET=\ _polymorph_code_gen: OUTPUT_JAVA=--output-java $(LIBRARY_ROOT)/runtimes/java/src/main/smithy-generated _polymorph_code_gen: OUTPUT_JAVA_TEST=--output-java-test $(LIBRARY_ROOT)/runtimes/java/src/test/smithy-generated _polymorph_code_gen: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated -# Omni-language targets ()MODULE_NAME and DEPENDENCY_MODULE_NAMES) don't work if generating multiple languages in one Polymorph invocation... +# Omni-language targets (MODULE_NAME and DEPENDENCY_MODULE_NAMES) don't work if generating multiple languages in one Polymorph invocation... _polymorph_code_gen: MODULE_NAME=--library-name $(PYTHON_MODULE_NAME) _polymorph_code_gen: DEPENDENCY_MODULE_NAMES=$(PYTHON_DEPENDENCY_MODULE_NAMES) _polymorph_code_gen: _polymorph From 8779581fe4c9e5f37261f2c187d56e329bfb112a Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 16:30:28 -0800 Subject: [PATCH 06/26] m --- SmithyDafnyMakefile.mk | 16 +++------ .../software/amazon/polymorph/CodegenCli.java | 34 +++++++++---------- .../amazon/polymorph/CodegenEngine.java | 24 ++++++------- 3 files changed, 34 insertions(+), 40 deletions(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index d4944e6f3..ea4a22b6b 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -283,12 +283,12 @@ _polymorph: $(OUTPUT_JAVA_TEST) \ $(OUTPUT_DOTNET) \ $(OUTPUT_PYTHON) \ - $(MODULE_NAME) \ + --python-module-name $(PYTHON_MODULE_NAME) \ + $(PYTHON_DEPENDENCY_MODULE_NAMES) \ $(OUTPUT_RUST) \ --model $(if $(DIR_STRUCTURE_V2), $(LIBRARY_ROOT)/dafny/$(SERVICE)/Model, $(SMITHY_MODEL_ROOT)) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ $(patsubst %, --dependent-model $(PROJECT_ROOT)/%/Model, $($(service_deps_var))) \ - $(DEPENDENCY_MODULE_NAMES) \ $(patsubst %, --namespace %, $($(namespace_var))) \ $(OUTPUT_LOCAL_SERVICE_$(SERVICE)) \ $(AWS_SDK_CMD) \ @@ -307,12 +307,12 @@ _polymorph_wrapped: $(OUTPUT_DOTNET_WRAPPED) \ $(OUTPUT_JAVA_WRAPPED) \ $(OUTPUT_PYTHON_WRAPPED) \ - $(MODULE_NAME) \ $(OUTPUT_RUST_WRAPPED) \ --model $(if $(DIR_STRUCTURE_V2),$(LIBRARY_ROOT)/dafny/$(SERVICE)/Model,$(LIBRARY_ROOT)/Model) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ $(patsubst %, --dependent-model $(PROJECT_ROOT)/%/Model, $($(service_deps_var))) \ - $(DEPENDENCY_MODULE_NAMES) \ + --python-module-name $(PYTHON_MODULE_NAME) \ + $(PYTHON_DEPENDENCY_MODULE_NAMES) \ --namespace $($(namespace_var)) \ --local-service-test \ $(AWS_SDK_CMD) \ @@ -347,9 +347,6 @@ _polymorph_code_gen: OUTPUT_DOTNET=\ _polymorph_code_gen: OUTPUT_JAVA=--output-java $(LIBRARY_ROOT)/runtimes/java/src/main/smithy-generated _polymorph_code_gen: OUTPUT_JAVA_TEST=--output-java-test $(LIBRARY_ROOT)/runtimes/java/src/test/smithy-generated _polymorph_code_gen: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated -# Omni-language targets (MODULE_NAME and DEPENDENCY_MODULE_NAMES) don't work if generating multiple languages in one Polymorph invocation... -_polymorph_code_gen: MODULE_NAME=--library-name $(PYTHON_MODULE_NAME) -_polymorph_code_gen: DEPENDENCY_MODULE_NAMES=$(PYTHON_DEPENDENCY_MODULE_NAMES) _polymorph_code_gen: _polymorph check_polymorph_diff: @@ -422,10 +419,7 @@ polymorph_python: done _polymorph_python: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated -# Defined per-Makefile -_polymorph_python: MODULE_NAME=--library-name $(PYTHON_MODULE_NAME) -# Defined per-Makefile -_polymorph_python: DEPENDENCY_MODULE_NAMES=$(PYTHON_DEPENDENCY_MODULE_NAMES) +_polymorph_python: PYTHON_MODULE_NAME=--python-module-name $(PYTHON_MODULE_NAME) _polymorph_python: _polymorph # Dependency for formatting generating Java code diff --git a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java index 9087ff011..d43ce1adf 100644 --- a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java +++ b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java @@ -126,7 +126,7 @@ public static void main(String[] args) { .withLibraryRoot(cliArguments.libraryRoot) .withServiceModel(serviceModel) .withDependentModelPaths(cliArguments.dependentModelPaths) - .withDependencyLibraryNames(cliArguments.dependencyLibraryNames) + .withDependencyPythonModuleNames(cliArguments.dependencyPythonModuleNames) .withNamespaces(cliArguments.namespaces) .withTargetLangOutputDirs(outputDirs) .withTargetLangTestOutputDirs(testOutputDirs) @@ -156,7 +156,7 @@ public static void main(String[] args) { cliArguments.includeDafnyFile.ifPresent( engineBuilder::withIncludeDafnyFile ); - cliArguments.libraryName.ifPresent(engineBuilder::withLibraryName); + cliArguments.pythonModuleName.ifPresent(engineBuilder::withPythonModuleName); cliArguments.patchFilesDir.ifPresent(engineBuilder::withPatchFilesDir); final CodegenEngine engine = engineBuilder.build(); switch (cliArguments.command) { @@ -199,10 +199,10 @@ private static Options getCliOptionsForBuild() { ) .addOption( Option - .builder("dln") - .longOpt("dependency-library-name") + .builder("pdln") + .longOpt("python-dependency-module-name") .desc( - "namespace-to-library-name map entry for a dependency namespace" + " if using Python, a dependency namespace-to-Python module name map entry" ) .hasArg() .build() @@ -218,10 +218,10 @@ private static Options getCliOptionsForBuild() { ) .addOption( Option - .builder("ln") - .longOpt("library-name") + .builder("pmn") + .longOpt("python-module-name") .desc( - "if generating for a language that uses library names (go, python), the name of the library in that language" + " if using Python, the intended Python module name for generated code" ) .hasArg() .build() @@ -461,9 +461,9 @@ private record CliArguments( Path libraryRoot, Path modelPath, Path[] dependentModelPaths, - Map dependencyLibraryNames, + Map dependencyPythonModuleNames, Set namespaces, - Optional libraryName, + Optional pythonModuleName, Optional outputDotnetDir, Optional outputJavaDir, Optional testOutputJavaDir, @@ -526,10 +526,10 @@ static Optional parse(String[] args) throws ParseException { // ex. `dependency-library-name=aws.cryptography.materialproviders=aws_cryptographic_materialproviders` // maps the Smithy namespace `aws.cryptography.materialproviders` to a module name `aws_cryptographic_materialproviders` // via a map key of "aws.cryptography.materialproviders" and a value of "aws_cryptographic_materialproviders" - final Map dependencyNamespacesToLibraryNamesMap = - commandLine.hasOption("dependency-library-name") + final Map dependencyNamespacesToPythonModuleNamesMap = + commandLine.hasOption("python-dependency-module-name") ? Arrays - .stream(commandLine.getOptionValues("dln")) + .stream(commandLine.getOptionValues("pdmn")) .map(s -> s.split("=")) .collect(Collectors.toMap(i -> i[0], i -> i[1])) : new HashMap<>(); @@ -539,8 +539,8 @@ static Optional parse(String[] args) throws ParseException { .>map(ns -> new HashSet<>(Arrays.asList(ns))) .orElse(Collections.emptySet()); - final Optional libraryName = Optional.ofNullable( - commandLine.getOptionValue("library-name") + final Optional pythonModuleName = Optional.ofNullable( + commandLine.getOptionValue("python-module-name") ); Optional outputDafnyDir = Optional @@ -628,9 +628,9 @@ static Optional parse(String[] args) throws ParseException { libraryRoot, modelPath, dependentModelPaths, - dependencyNamespacesToLibraryNamesMap, + dependencyNamespacesToPythonModuleNamesMap, namespaces, - libraryName, + pythonModuleName, outputDotnetDir, outputJavaDir, testOutputJavaDir, diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java index 225cb523a..95da9d6af 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java @@ -1023,8 +1023,8 @@ public static class Builder { private Path libraryRoot; private Path patchFilesDir; private boolean updatePatchFiles = false; - private Map dependencyLibraryNames; - private String libraryName; + private Map dependencyPythonModuleNames; + private String pythonModuleName; public Builder() {} @@ -1053,20 +1053,20 @@ public Builder withNamespaces(final Set namespaces) { } /** - * Sets the directories in which to search for dependent model file(s). + * Sets the Smithy namespace-to-Python module name map. */ - public Builder withDependencyLibraryNames( - final Map dependencyLibraryNames + public Builder withDependencyPythonModuleNames( + final Map dependencyPythonModuleNames ) { - this.dependencyLibraryNames = dependencyLibraryNames; + this.dependencyPythonModuleNames = dependencyPythonModuleNames; return this; } /** - * Sets the Python module name for any generated Python code. + * Sets the Python module name for generated Python code. */ - public Builder withLibraryName(final String libraryName) { - this.libraryName = libraryName; + public Builder withPythonModuleName(final String pythonModuleName) { + this.pythonModuleName = pythonModuleName; return this; } @@ -1225,9 +1225,9 @@ public CodegenEngine build() { : this.dependentModelPaths.clone(); final Map dependencyLibraryNames = - this.dependencyLibraryNames == null + this.dependencyPythonModuleNames == null ? new HashMap<>() - : this.dependencyLibraryNames; + : this.dependencyPythonModuleNames; final Map targetLangOutputDirsRaw = Objects.requireNonNull(this.targetLangOutputDirs); @@ -1283,7 +1283,7 @@ public CodegenEngine build() { } final Optional libraryName = Optional.ofNullable( - this.libraryName + this.pythonModuleName ); final Path libraryRoot = this.libraryRoot.toAbsolutePath().normalize(); From f09757c6bb413cc190d3927dd2dc6cbaa7f721de Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 16:32:37 -0800 Subject: [PATCH 07/26] m --- SmithyDafnyMakefile.mk | 5 ++--- .../src/main/java/software/amazon/polymorph/CodegenCli.java | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index ea4a22b6b..6e1873e72 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -283,7 +283,7 @@ _polymorph: $(OUTPUT_JAVA_TEST) \ $(OUTPUT_DOTNET) \ $(OUTPUT_PYTHON) \ - --python-module-name $(PYTHON_MODULE_NAME) \ + --python-module-name $(PYTHON_MODULE_NAME) \ $(PYTHON_DEPENDENCY_MODULE_NAMES) \ $(OUTPUT_RUST) \ --model $(if $(DIR_STRUCTURE_V2), $(LIBRARY_ROOT)/dafny/$(SERVICE)/Model, $(SMITHY_MODEL_ROOT)) \ @@ -311,7 +311,7 @@ _polymorph_wrapped: --model $(if $(DIR_STRUCTURE_V2),$(LIBRARY_ROOT)/dafny/$(SERVICE)/Model,$(LIBRARY_ROOT)/Model) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ $(patsubst %, --dependent-model $(PROJECT_ROOT)/%/Model, $($(service_deps_var))) \ - --python-module-name $(PYTHON_MODULE_NAME) \ + --python-module-name $(PYTHON_MODULE_NAME) \ $(PYTHON_DEPENDENCY_MODULE_NAMES) \ --namespace $($(namespace_var)) \ --local-service-test \ @@ -419,7 +419,6 @@ polymorph_python: done _polymorph_python: OUTPUT_PYTHON=--output-python $(LIBRARY_ROOT)/runtimes/python/src/$(PYTHON_MODULE_NAME)/smithygenerated -_polymorph_python: PYTHON_MODULE_NAME=--python-module-name $(PYTHON_MODULE_NAME) _polymorph_python: _polymorph # Dependency for formatting generating Java code diff --git a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java index d43ce1adf..9ca05e986 100644 --- a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java +++ b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java @@ -199,7 +199,7 @@ private static Options getCliOptionsForBuild() { ) .addOption( Option - .builder("pdln") + .builder("pdmn") .longOpt("python-dependency-module-name") .desc( " if using Python, a dependency namespace-to-Python module name map entry" From d9a0df5f4128dd4e4bf52a272216311a97635e61 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Wed, 6 Nov 2024 16:38:44 -0800 Subject: [PATCH 08/26] m --- .../src/main/java/software/amazon/polymorph/CodegenCli.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java index 9ca05e986..774cfa81b 100644 --- a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java +++ b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java @@ -156,7 +156,9 @@ public static void main(String[] args) { cliArguments.includeDafnyFile.ifPresent( engineBuilder::withIncludeDafnyFile ); - cliArguments.pythonModuleName.ifPresent(engineBuilder::withPythonModuleName); + cliArguments.pythonModuleName.ifPresent( + engineBuilder::withPythonModuleName + ); cliArguments.patchFilesDir.ifPresent(engineBuilder::withPatchFilesDir); final CodegenEngine engine = engineBuilder.build(); switch (cliArguments.command) { From df68815a5175873f2a8914842eb8ba949fde1120 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 7 Nov 2024 09:23:01 -0800 Subject: [PATCH 09/26] m --- SmithyDafnyMakefile.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index 6e1873e72..adfdf0487 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -311,7 +311,7 @@ _polymorph_wrapped: --model $(if $(DIR_STRUCTURE_V2),$(LIBRARY_ROOT)/dafny/$(SERVICE)/Model,$(LIBRARY_ROOT)/Model) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ $(patsubst %, --dependent-model $(PROJECT_ROOT)/%/Model, $($(service_deps_var))) \ - --python-module-name $(PYTHON_MODULE_NAME) \ + $(if $(PYTHON_MODULE_NAME),--python-module-name $(PYTHON_MODULE_NAME),) \ $(PYTHON_DEPENDENCY_MODULE_NAMES) \ --namespace $($(namespace_var)) \ --local-service-test \ From 61f4908a176d9ca9b03ec4c80cf203c3577d588a Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 7 Nov 2024 09:23:19 -0800 Subject: [PATCH 10/26] m --- SmithyDafnyMakefile.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index adfdf0487..3ba56f3e5 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -312,7 +312,7 @@ _polymorph_wrapped: --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ $(patsubst %, --dependent-model $(PROJECT_ROOT)/%/Model, $($(service_deps_var))) \ $(if $(PYTHON_MODULE_NAME),--python-module-name $(PYTHON_MODULE_NAME),) \ - $(PYTHON_DEPENDENCY_MODULE_NAMES) \ + $(if $(PYTHON_DEPENDENCY_MODULE_NAMES),$(PYTHON_DEPENDENCY_MODULE_NAMES),) \ --namespace $($(namespace_var)) \ --local-service-test \ $(AWS_SDK_CMD) \ From cb00377700954f8775d01247d4e190222b78c236 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 7 Nov 2024 09:38:57 -0800 Subject: [PATCH 11/26] m --- SmithyDafnyMakefile.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index 3ba56f3e5..291ffb853 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -311,8 +311,8 @@ _polymorph_wrapped: --model $(if $(DIR_STRUCTURE_V2),$(LIBRARY_ROOT)/dafny/$(SERVICE)/Model,$(LIBRARY_ROOT)/Model) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ $(patsubst %, --dependent-model $(PROJECT_ROOT)/%/Model, $($(service_deps_var))) \ - $(if $(PYTHON_MODULE_NAME),--python-module-name $(PYTHON_MODULE_NAME),) \ - $(if $(PYTHON_DEPENDENCY_MODULE_NAMES),$(PYTHON_DEPENDENCY_MODULE_NAMES),) \ + $(if $(strip $(PYTHON_MODULE_NAME)),--python-module-name $(PYTHON_MODULE_NAME),) \ + $(if $(strip $(PYTHON_DEPENDENCY_MODULE_NAMES)),$(PYTHON_DEPENDENCY_MODULE_NAMES),) \ --namespace $($(namespace_var)) \ --local-service-test \ $(AWS_SDK_CMD) \ From 543e0dac0529a7ecea8b1a208b25078f61902606 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 7 Nov 2024 09:44:32 -0800 Subject: [PATCH 12/26] m --- SmithyDafnyMakefile.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index 291ffb853..2296cd727 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -283,8 +283,8 @@ _polymorph: $(OUTPUT_JAVA_TEST) \ $(OUTPUT_DOTNET) \ $(OUTPUT_PYTHON) \ - --python-module-name $(PYTHON_MODULE_NAME) \ - $(PYTHON_DEPENDENCY_MODULE_NAMES) \ + $(if $(strip $(PYTHON_MODULE_NAME)),--python-module-name $(PYTHON_MODULE_NAME),) \ + $(if $(strip $(PYTHON_DEPENDENCY_MODULE_NAMES)),$(PYTHON_DEPENDENCY_MODULE_NAMES),) \ $(OUTPUT_RUST) \ --model $(if $(DIR_STRUCTURE_V2), $(LIBRARY_ROOT)/dafny/$(SERVICE)/Model, $(SMITHY_MODEL_ROOT)) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ From f91289e71d558dc90dfb17ab5d4875ee5f4a027b Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 7 Nov 2024 09:51:12 -0800 Subject: [PATCH 13/26] m --- TestModels/Dependencies/Makefile | 8 ++++---- TestModels/MultipleModels/Makefile | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/TestModels/Dependencies/Makefile b/TestModels/Dependencies/Makefile index 81dc8626d..116348060 100644 --- a/TestModels/Dependencies/Makefile +++ b/TestModels/Dependencies/Makefile @@ -51,10 +51,10 @@ clean: _clean PYTHON_MODULE_NAME=simple_dependencies PYTHON_DEPENDENCY_MODULE_NAMES := \ - --dependency-library-name=simple.resources=simple_resources \ - --dependency-library-name=simple.errors=simple_errors \ - --dependency-library-name=simple.extendable.resources=simple_extendable_resources \ - --dependency-library-name=simple.constraints=simple_constraints + --python-dependency-module-name=simple.resources=simple_resources \ + --python-dependency-module-name=simple.errors=simple_errors \ + --python-dependency-module-name=simple.extendable.resources=simple_extendable_resources \ + --python-dependency-module-name=simple.constraints=simple_constraints TRANSLATION_RECORD_PYTHON := \ --translation-record ../dafny-dependencies/StandardLibrary/runtimes/python/src/smithy_dafny_standard_library/internaldafny/generated/dafny_src-py.dtr \ diff --git a/TestModels/MultipleModels/Makefile b/TestModels/MultipleModels/Makefile index 4a62183be..2d6ce3722 100644 --- a/TestModels/MultipleModels/Makefile +++ b/TestModels/MultipleModels/Makefile @@ -38,7 +38,7 @@ SMITHY_DEPS=dafny-dependencies/Model/traits.smithy PYTHON_MODULE_NAME=multiple_models PYTHON_DEPENDENCY_MODULE_NAMES := \ - --dependency-library-name=simple.multiplemodels.dependencyproject=multiple_models + --python-dependency-module-name=simple.multiplemodels.dependencyproject=multiple_models TRANSLATION_RECORD_PYTHON := \ --translation-record ../dafny-dependencies/StandardLibrary/runtimes/python/src/smithy_dafny_standard_library/internaldafny/generated/dafny_src-py.dtr From 06e2795c14cc33f49187fc16ec5cfe801be674f7 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 7 Nov 2024 10:11:55 -0800 Subject: [PATCH 14/26] m --- SmithyDafnyMakefile.mk | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/SmithyDafnyMakefile.mk b/SmithyDafnyMakefile.mk index 2296cd727..5348d92ca 100644 --- a/SmithyDafnyMakefile.mk +++ b/SmithyDafnyMakefile.mk @@ -284,7 +284,7 @@ _polymorph: $(OUTPUT_DOTNET) \ $(OUTPUT_PYTHON) \ $(if $(strip $(PYTHON_MODULE_NAME)),--python-module-name $(PYTHON_MODULE_NAME),) \ - $(if $(strip $(PYTHON_DEPENDENCY_MODULE_NAMES)),$(PYTHON_DEPENDENCY_MODULE_NAMES),) \ + $(PYTHON_DEPENDENCY_MODULE_NAMES) \ $(OUTPUT_RUST) \ --model $(if $(DIR_STRUCTURE_V2), $(LIBRARY_ROOT)/dafny/$(SERVICE)/Model, $(SMITHY_MODEL_ROOT)) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ @@ -307,12 +307,12 @@ _polymorph_wrapped: $(OUTPUT_DOTNET_WRAPPED) \ $(OUTPUT_JAVA_WRAPPED) \ $(OUTPUT_PYTHON_WRAPPED) \ + $(if $(strip $(PYTHON_MODULE_NAME)),--python-module-name $(PYTHON_MODULE_NAME),) \ + $(PYTHON_DEPENDENCY_MODULE_NAMES) \ $(OUTPUT_RUST_WRAPPED) \ --model $(if $(DIR_STRUCTURE_V2),$(LIBRARY_ROOT)/dafny/$(SERVICE)/Model,$(LIBRARY_ROOT)/Model) \ --dependent-model $(PROJECT_ROOT)/$(SMITHY_DEPS) \ $(patsubst %, --dependent-model $(PROJECT_ROOT)/%/Model, $($(service_deps_var))) \ - $(if $(strip $(PYTHON_MODULE_NAME)),--python-module-name $(PYTHON_MODULE_NAME),) \ - $(if $(strip $(PYTHON_DEPENDENCY_MODULE_NAMES)),$(PYTHON_DEPENDENCY_MODULE_NAMES),) \ --namespace $($(namespace_var)) \ --local-service-test \ $(AWS_SDK_CMD) \ @@ -625,6 +625,9 @@ _clean: rm -rf $(LIBRARY_ROOT)/TestResults rm -rf $(LIBRARY_ROOT)/runtimes/net/Generated $(LIBRARY_ROOT)/runtimes/net/bin $(LIBRARY_ROOT)/runtimes/net/obj rm -rf $(LIBRARY_ROOT)/runtimes/net/tests/bin $(LIBRARY_ROOT)/runtimes/net/tests/obj + rm -rf $(LIBRARY_ROOT)/runtimes/python/src/**/smithygenerated + rm -rf $(LIBRARY_ROOT)/runtimes/python/src/**/internaldafny/generated + rm -rf $(LIBRARY_ROOT)/runtimes/python/test/internaldafny/generated clean: _clean @@ -641,7 +644,7 @@ setup_python: setup_smithy_dafny_python setup_python: python3 -m pip install poetry -net: polymorph_dafny transpile_python polymorph_python test_python +python: polymorph_dafny transpile_python polymorph_python test_python # Python MUST transpile dependencies first to generate .dtr files transpile_python: $(if $(ENABLE_EXTERN_PROCESSING), _no_extern_pre_transpile, ) From d6f55b431a4b533aedba6b3d48653fbcd03aee6a Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Thu, 21 Nov 2024 11:32:56 -0800 Subject: [PATCH 15/26] smoke test --- .github/workflows/smithy-polymorph.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index 002bd09a1..5bc055991 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -46,6 +46,11 @@ jobs: working-directory: TestModels/SimpleTypes/SimpleString run: make polymorph_dafny + - name: Build with all languages (smoke test for polymorph_code_gen target) + shell: bash + working-directory: TestModels/SimpleTypes/SimpleString + run: make polymorph_code_gen + - name: not-grep if: matrix.os == 'ubuntu-latest' uses: mattsb42-meta/not-grep@1.0.0 From 6f99dcf25ee6c823b293df105e31c7b3c18ddeee Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 11:39:59 -0800 Subject: [PATCH 16/26] go --- .../software/amazon/polymorph/CodegenCli.java | 40 ++++++++++ .../amazon/polymorph/CodegenEngine.java | 73 ++++++++++++++----- 2 files changed, 95 insertions(+), 18 deletions(-) diff --git a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java index 4664ac045..a9cacdcab 100644 --- a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java +++ b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java @@ -130,6 +130,7 @@ public static void main(String[] args) { .withServiceModel(serviceModel) .withDependentModelPaths(cliArguments.dependentModelPaths) .withDependencyPythonModuleNames(cliArguments.dependencyPythonModuleNames) + .withDependencyGoModuleNames(cliArguments.dependencyGoModuleNames) .withNamespaces(cliArguments.namespaces) .withTargetLangOutputDirs(outputDirs) .withTargetLangTestOutputDirs(testOutputDirs) @@ -162,6 +163,9 @@ public static void main(String[] args) { cliArguments.pythonModuleName.ifPresent( engineBuilder::withPythonModuleName ); + cliArguments.goModuleName.ifPresent( + engineBuilder::withGoModuleName + ); cliArguments.patchFilesDir.ifPresent(engineBuilder::withPatchFilesDir); final CodegenEngine engine = engineBuilder.build(); switch (cliArguments.command) { @@ -212,6 +216,16 @@ private static Options getCliOptionsForBuild() { .hasArg() .build() ) + .addOption( + Option + .builder("gdmn") + .longOpt("go-dependency-module-name") + .desc( + " if using Go, a dependency namespace-to-Go module name map entry" + ) + .hasArg() + .build() + ) .addOption( Option .builder("n") @@ -231,6 +245,16 @@ private static Options getCliOptionsForBuild() { .hasArg() .build() ) + .addOption( + Option + .builder("gmn") + .longOpt("go-module-name") + .desc( + " if using Go, the intended Go module name for generated code" + ) + .hasArg() + .build() + ) .addOption( Option .builder() @@ -475,8 +499,10 @@ private record CliArguments( Path modelPath, Path[] dependentModelPaths, Map dependencyPythonModuleNames, + Map dependencyGoModuleNames, Set namespaces, Optional pythonModuleName, + Optional goModuleName, Optional outputDotnetDir, Optional outputJavaDir, Optional outputGoDir, @@ -548,6 +574,14 @@ static Optional parse(String[] args) throws ParseException { .collect(Collectors.toMap(i -> i[0], i -> i[1])) : new HashMap<>(); + final Map dependencyNamespacesToGoModuleNamesMap = + commandLine.hasOption("go-dependency-module-name") + ? Arrays + .stream(commandLine.getOptionValues("gdmn")) + .map(s -> s.split("=")) + .collect(Collectors.toMap(i -> i[0], i -> i[1])) + : new HashMap<>(); + final Set namespaces = Optional .ofNullable(commandLine.getOptionValues("namespace")) .>map(ns -> new HashSet<>(Arrays.asList(ns))) @@ -557,6 +591,10 @@ static Optional parse(String[] args) throws ParseException { commandLine.getOptionValue("python-module-name") ); + final Optional goModuleName = Optional.ofNullable( + commandLine.getOptionValue("go-module-name") + ); + Optional outputDafnyDir = Optional .ofNullable(commandLine.getOptionValue("output-dafny")) .map(Paths::get); @@ -646,8 +684,10 @@ static Optional parse(String[] args) throws ParseException { modelPath, dependentModelPaths, dependencyNamespacesToPythonModuleNamesMap, + dependencyNamespacesToGoModuleNamesMap, namespaces, pythonModuleName, + goModuleName, outputDotnetDir, outputJavaDir, outputGoDir, diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java index d63e576c3..d06eacf1e 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/CodegenEngine.java @@ -108,8 +108,10 @@ public class CodegenEngine { // To be initialized in constructor private final Model model; private final ServiceShape serviceShape; - private final Map dependencyLibraryNames; - private final Optional libraryName; + private final Map dependencyPythonModuleNames; + private final Map dependencyGoModuleNames; + private final Optional pythonModuleName; + private final Optional goModuleName; /** * This should only be called by {@link Builder#build()}, @@ -133,8 +135,10 @@ private CodegenEngine( final Path libraryRoot, final Optional patchFilesDir, final boolean updatePatchFiles, - final Map dependencyLibraryNames, - final Optional libraryName + final Map dependencyPythonModuleNames, + final Map dependencyGoModuleNames, + final Optional pythonModuleName, + final Optional goModuleName ) { // To be provided to constructor this.fromSmithyBuildPlugin = fromSmithyBuildPlugin; @@ -152,8 +156,10 @@ private CodegenEngine( this.libraryRoot = libraryRoot; this.patchFilesDir = patchFilesDir; this.updatePatchFiles = updatePatchFiles; - this.dependencyLibraryNames = dependencyLibraryNames; - this.libraryName = libraryName; + this.dependencyPythonModuleNames = dependencyPythonModuleNames; + this.dependencyGoModuleNames = dependencyGoModuleNames; + this.pythonModuleName = pythonModuleName; + this.goModuleName = goModuleName; this.model = this.awsSdkStyle @@ -811,14 +817,14 @@ private void handlePatching(TargetLanguage targetLanguage, Path outputDir) { } private void generateGo() { - if (libraryName.isEmpty()) { + if (goModuleName.isEmpty()) { throw new IllegalArgumentException("Go codegen requires a library name"); } ObjectNode.Builder goSettingsBuilder = ObjectNode .builder() .withMember("service", serviceShape.getId().toString()) - .withMember("moduleName", libraryName.get()); + .withMember("moduleName", goModuleName.get()); final PluginContext pluginContext = PluginContext .builder() @@ -830,11 +836,11 @@ private void generateGo() { .build(); final Map smithyNamespaceToGoModuleNameMap = new HashMap<>( - dependencyLibraryNames + dependencyGoModuleNames ); smithyNamespaceToGoModuleNameMap.put( serviceShape.getId().getNamespace(), - libraryName.get() + goModuleName.get() ); if (this.awsSdkStyle) { new DafnyGoAwsSdkClientCodegenPlugin(smithyNamespaceToGoModuleNameMap) @@ -846,7 +852,7 @@ private void generateGo() { } private void generatePython() { - if (libraryName.isEmpty()) { + if (pythonModuleName.isEmpty()) { throw new IllegalArgumentException( "Python codegen requires a module name" ); @@ -855,7 +861,7 @@ private void generatePython() { ObjectNode.Builder pythonSettingsBuilder = ObjectNode .builder() .withMember("service", serviceShape.getId().toString()) - .withMember("module", libraryName.get()) + .withMember("module", pythonModuleName.get()) // Smithy-Python requires some string to be present here, but this is unused. // Any references to this version are deleted as part of code generation. .withMember("moduleVersion", "0.0.1"); @@ -873,9 +879,9 @@ private void generatePython() { new HashMap<>(); smithyNamespaceToPythonModuleNameMap.put( serviceShape.getId().getNamespace(), - libraryName.get() + pythonModuleName.get() ); - smithyNamespaceToPythonModuleNameMap.putAll(dependencyLibraryNames); + smithyNamespaceToPythonModuleNameMap.putAll(dependencyPythonModuleNames); if (this.awsSdkStyle) { DafnyPythonAwsSdkClientCodegenPlugin dafnyPythonAwsSdkClientCodegenPlugin = @@ -1071,6 +1077,8 @@ public static class Builder { private boolean updatePatchFiles = false; private Map dependencyPythonModuleNames; private String pythonModuleName; + private Map dependencyGoModuleNames; + private String goModuleName; public Builder() {} @@ -1108,6 +1116,16 @@ public Builder withDependencyPythonModuleNames( return this; } + /** + * Sets the Smithy namespace-to-Go module name map. + */ + public Builder withDependencyGoModuleNames( + final Map dependencyGoModuleNames + ) { + this.dependencyGoModuleNames = dependencyGoModuleNames; + return this; + } + /** * Sets the Python module name for generated Python code. */ @@ -1116,6 +1134,14 @@ public Builder withPythonModuleName(final String pythonModuleName) { return this; } + /** + * Sets the GO module name for generated Go code. + */ + public Builder withGoModuleName(final String goModuleName) { + this.goModuleName = goModuleName; + return this; + } + /** * Sets the target language(s) for which to generate code, * along with the directory(-ies) into which to output each language's generated code. @@ -1270,11 +1296,16 @@ public CodegenEngine build() { ? new Path[] {} : this.dependentModelPaths.clone(); - final Map dependencyLibraryNames = + final Map dependencyPythonModuleNames = this.dependencyPythonModuleNames == null ? new HashMap<>() : this.dependencyPythonModuleNames; + final Map dependencyGoModuleNames = + this.dependencyGoModuleNames == null + ? new HashMap<>() + : this.dependencyGoModuleNames; + final Map targetLangOutputDirsRaw = Objects.requireNonNull(this.targetLangOutputDirs); targetLangOutputDirsRaw.replaceAll((_lang, path) -> @@ -1340,10 +1371,14 @@ public CodegenEngine build() { ); } - final Optional libraryName = Optional.ofNullable( + final Optional pythonModuleName = Optional.ofNullable( this.pythonModuleName ); + final Optional goModuleName = Optional.ofNullable( + this.goModuleName + ); + final Path libraryRoot = this.libraryRoot.toAbsolutePath().normalize(); final Optional patchFilesDir = Optional @@ -1372,8 +1407,10 @@ public CodegenEngine build() { libraryRoot, patchFilesDir, updatePatchFiles, - dependencyLibraryNames, - libraryName + dependencyPythonModuleNames, + dependencyGoModuleNames, + pythonModuleName, + goModuleName ); } } From 7c0b35b03cbd76ee960fcb077e8cd9b53fe566e1 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 11:48:14 -0800 Subject: [PATCH 17/26] m --- TestModels/CallingAWSSDKFromLocalService/Makefile | 8 ++++---- TestModels/Dependencies/Makefile | 8 ++++---- TestModels/aws-sdks/ddb/Makefile | 2 +- TestModels/aws-sdks/ddbv2/Makefile | 2 +- TestModels/aws-sdks/kmsv2/Makefile | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/TestModels/CallingAWSSDKFromLocalService/Makefile b/TestModels/CallingAWSSDKFromLocalService/Makefile index bdfc74d04..8f89e00c5 100644 --- a/TestModels/CallingAWSSDKFromLocalService/Makefile +++ b/TestModels/CallingAWSSDKFromLocalService/Makefile @@ -43,10 +43,10 @@ WRAPPED_INDEX_FILE_WITHOUT_EXTERN_STRING="module WrappedSimpleCallingawssdkfroml # Go GO_DEPENDENCY_MODULE_NAMES := \ - --go-dependency-library-name=com.amazonaws.kms=github.com/smithy-lang/smithy-dafny/kmsv2 \ - --go-dependency-library-name=com.amazonaws.dynamodb=github.com/smithy-lang/smithy-dafny/ddbv2 \ - --go-dependency-library-name=sdk.com.amazonaws.dynamodb=github.com/aws/aws-sdk-go-v2/service/dynamodb \ - --go-dependency-library-name=sdk.com.amazonaws.kms=github.com/aws/aws-sdk-go-v2/service/kms + --go-dependency-module-name=com.amazonaws.kms=github.com/smithy-lang/smithy-dafny/kmsv2 \ + --go-dependency-module-name=com.amazonaws.dynamodb=github.com/smithy-lang/smithy-dafny/ddbv2 \ + --go-dependency-module-name=sdk.com.amazonaws.dynamodb=github.com/aws/aws-sdk-go-v2/service/dynamodb \ + --go-dependency-module-name=sdk.com.amazonaws.kms=github.com/aws/aws-sdk-go-v2/service/kms GO_MODULE_NAME="github.com/smithy-lang/smithy-dafny/TestModels/CallingAWSSDKFromLocalService" diff --git a/TestModels/Dependencies/Makefile b/TestModels/Dependencies/Makefile index 5a6be05ce..6981daefd 100644 --- a/TestModels/Dependencies/Makefile +++ b/TestModels/Dependencies/Makefile @@ -44,10 +44,10 @@ SMITHY_DEPS=dafny-dependencies/Model/traits.smithy GO_MODULE_NAME="github.com/smithy-lang/smithy-dafny/TestModels/Dependencies" GO_DEPENDENCY_MODULE_NAMES := \ - --go-dependency-library-name=simple.constraints=github.com/smithy-lang/smithy-dafny/TestModels/Constraints \ - --go-dependency-library-name=simple.errors=github.com/smithy-lang/smithy-dafny/TestModels/Errors \ - --go-dependency-library-name=simple.extendable.resources=github.com/smithy-lang/smithy-dafny/TestModels/Extendable \ - --go-dependency-library-name=simple.resources=github.com/smithy-lang/smithy-dafny/TestModels/Resource + --go-dependency-module-name=simple.constraints=github.com/smithy-lang/smithy-dafny/TestModels/Constraints \ + --go-dependency-module-name=simple.errors=github.com/smithy-lang/smithy-dafny/TestModels/Errors \ + --go-dependency-module-name=simple.extendable.resources=github.com/smithy-lang/smithy-dafny/TestModels/Extendable \ + --go-dependency-module-name=simple.resources=github.com/smithy-lang/smithy-dafny/TestModels/Resource TRANSLATION_RECORD_GO := \ Resource/runtimes/go/ImplementationFromDafny-go/ImplementationFromDafny-go.dtr \ diff --git a/TestModels/aws-sdks/ddb/Makefile b/TestModels/aws-sdks/ddb/Makefile index 89bea20a7..7999f4bdb 100644 --- a/TestModels/aws-sdks/ddb/Makefile +++ b/TestModels/aws-sdks/ddb/Makefile @@ -28,7 +28,7 @@ AWS_SDK_CMD=--aws-sdk GO_MODULE_NAME="github.com/smithy-lang/smithy-dafny/ddb" GO_DEPENDENCY_MODULE_NAMES := \ - --go-dependency-library-name=sdk.com.amazonaws.dynamodb=github.com/aws/aws-sdk-go-v2/service/dynamodb \ + --go-dependency-module-name=sdk.com.amazonaws.dynamodb=github.com/aws/aws-sdk-go-v2/service/dynamodb \ TRANSLATION_RECORD_GO := \ dafny-dependencies/StandardLibrary/runtimes/go/ImplementationFromDafny-go/ImplementationFromDafny-go.dtr diff --git a/TestModels/aws-sdks/ddbv2/Makefile b/TestModels/aws-sdks/ddbv2/Makefile index 0941d4aed..c0ded5eec 100644 --- a/TestModels/aws-sdks/ddbv2/Makefile +++ b/TestModels/aws-sdks/ddbv2/Makefile @@ -54,7 +54,7 @@ TRANSLATION_RECORD_PYTHON := \ GO_MODULE_NAME="github.com/smithy-lang/smithy-dafny/ddbv2" GO_DEPENDENCY_MODULE_NAMES := \ - --go-dependency-library-name=sdk.com.amazonaws.dynamodb=github.com/aws/aws-sdk-go-v2/service/dynamodb \ + --go-dependency-module-name=sdk.com.amazonaws.dynamodb=github.com/aws/aws-sdk-go-v2/service/dynamodb \ TRANSLATION_RECORD_GO := \ dafny-dependencies/StandardLibrary/runtimes/go/ImplementationFromDafny-go/ImplementationFromDafny-go.dtr diff --git a/TestModels/aws-sdks/kmsv2/Makefile b/TestModels/aws-sdks/kmsv2/Makefile index 9f1b70157..d567344da 100644 --- a/TestModels/aws-sdks/kmsv2/Makefile +++ b/TestModels/aws-sdks/kmsv2/Makefile @@ -55,7 +55,7 @@ TRANSLATION_RECORD_PYTHON := \ GO_MODULE_NAME="github.com/smithy-lang/smithy-dafny/kmsv2" GO_DEPENDENCY_MODULE_NAMES := \ - --go-dependency-library-name=sdk.com.amazonaws.kms=github.com/aws/aws-sdk-go-v2/service/kms \ + --go-dependency-module-name=sdk.com.amazonaws.kms=github.com/aws/aws-sdk-go-v2/service/kms \ TRANSLATION_RECORD_GO := \ dafny-dependencies/StandardLibrary/runtimes/go/ImplementationFromDafny-go/ImplementationFromDafny-go.dtr From 9b216494290c7407f0f1934a0df8021ac0cda08c Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 11:51:48 -0800 Subject: [PATCH 18/26] m --- .../java/software/amazon/polymorph/CodegenCli.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java index a9cacdcab..3e8649c4b 100644 --- a/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java +++ b/codegen/smithy-dafny-codegen-cli/src/main/java/software/amazon/polymorph/CodegenCli.java @@ -163,9 +163,7 @@ public static void main(String[] args) { cliArguments.pythonModuleName.ifPresent( engineBuilder::withPythonModuleName ); - cliArguments.goModuleName.ifPresent( - engineBuilder::withGoModuleName - ); + cliArguments.goModuleName.ifPresent(engineBuilder::withGoModuleName); cliArguments.patchFilesDir.ifPresent(engineBuilder::withPatchFilesDir); final CodegenEngine engine = engineBuilder.build(); switch (cliArguments.command) { @@ -577,9 +575,9 @@ static Optional parse(String[] args) throws ParseException { final Map dependencyNamespacesToGoModuleNamesMap = commandLine.hasOption("go-dependency-module-name") ? Arrays - .stream(commandLine.getOptionValues("gdmn")) - .map(s -> s.split("=")) - .collect(Collectors.toMap(i -> i[0], i -> i[1])) + .stream(commandLine.getOptionValues("gdmn")) + .map(s -> s.split("=")) + .collect(Collectors.toMap(i -> i[0], i -> i[1])) : new HashMap<>(); final Set namespaces = Optional From 6b8a763021b21deaf2ed7af2ae02f284022d6d71 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 12:20:43 -0800 Subject: [PATCH 19/26] m --- .github/workflows/smithy-polymorph.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index 5bc055991..4b621ca8c 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -46,6 +46,22 @@ jobs: working-directory: TestModels/SimpleTypes/SimpleString run: make polymorph_dafny + - name: Setup Python for running tests + uses: actions/setup-python@v4 + with: + python-version: 3.11 + architecture: x64 + - run: | + python -m pip install --upgrade pip + pip install --upgrade tox + pip install poetry + + - name: Setup Java 17 for codegen + uses: actions/setup-java@v3 + with: + distribution: "corretto" + java-version: 17 + - name: Build with all languages (smoke test for polymorph_code_gen target) shell: bash working-directory: TestModels/SimpleTypes/SimpleString From 1bf0811d25c30ac4260dba6b4ac7b561865f2d86 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 12:41:19 -0800 Subject: [PATCH 20/26] m --- .github/workflows/smithy-polymorph.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index 4b621ca8c..a6ccb858b 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -55,6 +55,9 @@ jobs: python -m pip install --upgrade pip pip install --upgrade tox pip install poetry + + - name: Install Python formatters + run: make setup_smithy_dafny_python - name: Setup Java 17 for codegen uses: actions/setup-java@v3 @@ -62,6 +65,11 @@ jobs: distribution: "corretto" java-version: 17 + - name: Install npm for Java formatter (not installed on Windows by default) + - uses: actions/setup-node@v4 + with: + node-version: 18 + - name: Build with all languages (smoke test for polymorph_code_gen target) shell: bash working-directory: TestModels/SimpleTypes/SimpleString From fafb16fab0e55cb740c92ae3aa582d3a45451e76 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 12:44:02 -0800 Subject: [PATCH 21/26] m --- .github/workflows/smithy-polymorph.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index a6ccb858b..1e615847d 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -55,7 +55,7 @@ jobs: python -m pip install --upgrade pip pip install --upgrade tox pip install poetry - + - name: Install Python formatters run: make setup_smithy_dafny_python From 4502a7bccfe055ed951142dd2e99ecfeb741f83a Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 12:56:06 -0800 Subject: [PATCH 22/26] m --- .github/workflows/smithy-polymorph.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index 1e615847d..495b70e80 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -66,7 +66,7 @@ jobs: java-version: 17 - name: Install npm for Java formatter (not installed on Windows by default) - - uses: actions/setup-node@v4 + uses: actions/setup-node@v4 with: node-version: 18 From 8356416c40641174cb58f2e3b02ea06f5c4b3860 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 13:08:42 -0800 Subject: [PATCH 23/26] npm windows --- .github/workflows/smithy-polymorph.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index 495b70e80..eec37b25f 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -70,6 +70,15 @@ jobs: with: node-version: 18 + - name: Verify npm is installed + run: npm --version + + - name: Add npm to PATH + run: echo "$GITHUB_PATH:/c/Program Files/nodejs" >> $GITHUB_PATH # Adjust path for Windows + + - name: Verify npm is installed + run: npm --version + - name: Build with all languages (smoke test for polymorph_code_gen target) shell: bash working-directory: TestModels/SimpleTypes/SimpleString From ec22d928ad69d422eee4773f01485c944bcfc5b1 Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 13:19:43 -0800 Subject: [PATCH 24/26] m --- .github/workflows/smithy-polymorph.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index eec37b25f..210888b73 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -74,7 +74,7 @@ jobs: run: npm --version - name: Add npm to PATH - run: echo "$GITHUB_PATH:/c/Program Files/nodejs" >> $GITHUB_PATH # Adjust path for Windows + run: echo "/c/Program Files/nodejs" >> $env:GITHUB_PATH # Adjust path for Windows - name: Verify npm is installed run: npm --version From f67cce7d968cfd789e331bd539baff190a7dbfdf Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 14:50:50 -0800 Subject: [PATCH 25/26] just a new workflow --- .github/workflows/manual.yml | 4 +++ .github/workflows/pull.yml | 9 ++++++ .github/workflows/push.yml | 9 ++++++ .github/workflows/smithy-polymorph.yml | 38 -------------------------- 4 files changed, 22 insertions(+), 38 deletions(-) diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index fc44ba70e..8c95a7764 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -16,6 +16,10 @@ jobs: uses: ./.github/workflows/test_models_dafny_verification.yml with: dafny: ${{ inputs.dafny }} + manual-ci-polymorph-code-gen: + uses: ./.github/workflows/test_models_polymorph_code_gen.yml + with: + dafny: ${{ inputs.dafny }} manual-ci-java: uses: ./.github/workflows/test_models_java_tests.yml with: diff --git a/.github/workflows/pull.yml b/.github/workflows/pull.yml index 289a31d9b..68d3f862c 100644 --- a/.github/workflows/pull.yml +++ b/.github/workflows/pull.yml @@ -27,6 +27,15 @@ jobs: uses: ./.github/workflows/test_models_dafny_verification.yml with: dafny: ${{ matrix.dafny-version }} + pr-ci-polymorph-code-gen: + needs: pr-populate-dafny-versions + strategy: + fail-fast: false + matrix: + dafny-version: ${{ fromJson(needs.pr-populate-dafny-versions.outputs.dafny-version-list) }} + uses: ./.github/workflows/test_models_polymorph_code_gen.yml + with: + dafny: ${{ matrix.dafny-version }} pr-ci-java: needs: pr-populate-dafny-versions strategy: diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 247dfef2b..8c7f6ed80 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -29,6 +29,15 @@ jobs: uses: ./.github/workflows/test_models_dafny_verification.yml with: dafny: ${{ matrix.dafny-version }} + push-ci-polymorph-code-gen: + needs: pr-populate-dafny-versions + strategy: + fail-fast: false + matrix: + dafny-version: ${{ fromJson(needs.pr-populate-dafny-versions.outputs.dafny-version-list) }} + uses: ./.github/workflows/test_models_polymorph_code_gen.yml + with: + dafny: ${{ matrix.dafny-version }} push-ci-java: needs: pr-populate-dafny-versions strategy: diff --git a/.github/workflows/smithy-polymorph.yml b/.github/workflows/smithy-polymorph.yml index 210888b73..002bd09a1 100644 --- a/.github/workflows/smithy-polymorph.yml +++ b/.github/workflows/smithy-polymorph.yml @@ -46,44 +46,6 @@ jobs: working-directory: TestModels/SimpleTypes/SimpleString run: make polymorph_dafny - - name: Setup Python for running tests - uses: actions/setup-python@v4 - with: - python-version: 3.11 - architecture: x64 - - run: | - python -m pip install --upgrade pip - pip install --upgrade tox - pip install poetry - - - name: Install Python formatters - run: make setup_smithy_dafny_python - - - name: Setup Java 17 for codegen - uses: actions/setup-java@v3 - with: - distribution: "corretto" - java-version: 17 - - - name: Install npm for Java formatter (not installed on Windows by default) - uses: actions/setup-node@v4 - with: - node-version: 18 - - - name: Verify npm is installed - run: npm --version - - - name: Add npm to PATH - run: echo "/c/Program Files/nodejs" >> $env:GITHUB_PATH # Adjust path for Windows - - - name: Verify npm is installed - run: npm --version - - - name: Build with all languages (smoke test for polymorph_code_gen target) - shell: bash - working-directory: TestModels/SimpleTypes/SimpleString - run: make polymorph_code_gen - - name: not-grep if: matrix.os == 'ubuntu-latest' uses: mattsb42-meta/not-grep@1.0.0 From 4b5c98c84e3132de4a76078f480daf37d2ab704f Mon Sep 17 00:00:00 2001 From: Lucas McDonald Date: Mon, 16 Dec 2024 14:55:52 -0800 Subject: [PATCH 26/26] m --- .../test_models_polymorph_code_gen.yml | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/test_models_polymorph_code_gen.yml diff --git a/.github/workflows/test_models_polymorph_code_gen.yml b/.github/workflows/test_models_polymorph_code_gen.yml new file mode 100644 index 000000000..00cee207e --- /dev/null +++ b/.github/workflows/test_models_polymorph_code_gen.yml @@ -0,0 +1,51 @@ +# This workflow runs polymorph_code_gen. +name: polymorph_code_gen test + +on: + workflow_call: + inputs: + dafny: + description: "The Dafny version to run" + required: true + type: string + +jobs: + testPolymorphCodeGen: + runs-on: "ubuntu-latest" + steps: + - name: Support longpaths on Git checkout + run: | + git config --global core.longpaths true + + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Setup Dafny + uses: dafny-lang/setup-dafny-action@v1.7.0 + with: + dafny-version: ${{ inputs.dafny }} + + - name: Setup Java 17 for codegen + uses: actions/setup-java@v3 + with: + distribution: "corretto" + java-version: 17 + + - name: Setup Python for running tests + uses: actions/setup-python@v4 + with: + python-version: 3.11 + architecture: x64 + - run: | + python -m pip install --upgrade pip + pip install --upgrade tox + pip install poetry + + - name: Install Python formatters + run: make setup_smithy_dafny_python + + - name: Build one TestModel with all languages (smoke test for polymorph_code_gen target) + shell: bash + working-directory: TestModels/SimpleTypes/SimpleString + run: make polymorph_code_gen