From 41dd55d5a5e9de5465875db6398ed93ca0dc1689 Mon Sep 17 00:00:00 2001 From: Kostiantyn Goloveshko Date: Sat, 7 Sep 2024 17:08:38 +0300 Subject: [PATCH] Add Makefile for python code generation from jsonschema --- Makefile | 2 +- python/Makefile | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 python/Makefile diff --git a/Makefile b/Makefile index a540e214..0e58a855 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ schemas = \ ./jsonschema/UndefinedParameterType.json \ ./jsonschema/Envelope.json -languages = cpp go java javascript perl php ruby dotnet +languages = cpp dotnet go java javascript perl php python ruby .DEFAULT_GOAL = help diff --git a/python/Makefile b/python/Makefile new file mode 100644 index 00000000..45d9595a --- /dev/null +++ b/python/Makefile @@ -0,0 +1,33 @@ +schemas = $(shell find ../jsonschema -name "*.json") + +.DEFAULT_GOAL = help + +MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +HERE := $(dir $(MKFILE_PATH)) + +help: ## Show this help + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \n\nWhere is one of:\n"} /^[$$()% a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +generate: require install-deps + datamodel-codegen \ + --output-model-type "pydantic_v2.BaseModel" \ + --input $(HERE)../jsonschema/Envelope.json \ + --output $(HERE)src/_messages.py \ + --use-generic-container-types \ + --allow-population-by-field-name \ + --snake-case-field \ + --input-file-type=jsonschema \ + --class-name Envelope \ + --use-double-quotes \ + --use-union-operator \ + --disable-timestamp + +require: ## Check requirements for the code generation (python is required) + @python --version >/dev/null 2>&1 || (echo "ERROR: python is required."; exit 1) + +clean: ## Remove automatically generated files and related artifacts + rm -rf $(HERE)src/_messages.py + +install-deps: ## Install generation dependencies + python -m ensurepip --upgrade + pip install $(HERE)[generation]