From 0b0af515be0f9cf2bcf55ee8e13d90c1dbfd7f9f Mon Sep 17 00:00:00 2001 From: marys Date: Mon, 8 Jun 2026 14:27:51 +0200 Subject: [PATCH] add own includes and imports --- README.md | 3 ++ generated-code/src/models/__init__.py | 0 openapi_templete/package.json | 6 +++ .../template/src/models/models.js | 45 ++++++++++++------- .../test/fixtures/asyncapi_1.yaml | 14 +++--- openapi_templete/test/project/client.py | 18 -------- 6 files changed, 45 insertions(+), 41 deletions(-) delete mode 100644 generated-code/src/models/__init__.py delete mode 100644 openapi_templete/test/project/client.py diff --git a/README.md b/README.md index 94c8bc7..334f11a 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,6 @@ https://www.asyncapi.com/docs/tools/generator/generator-template#overview-of-ste asyncapi generate fromTemplate openapi_templete/test/fixtures/asyncapi_test.yaml ./openapi_templete -o ./generated-code --force-write asyncapi generate fromTemplate openapi_templete/test/fixtures/asyncapi_1.yaml ./openapi_templete -o ./generated-code --force-write + + +https://github.com/asyncapi/modelina/blob/master/docs/languages/Python.md diff --git a/generated-code/src/models/__init__.py b/generated-code/src/models/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/openapi_templete/package.json b/openapi_templete/package.json index 45fca66..9a09c42 100644 --- a/openapi_templete/package.json +++ b/openapi_templete/package.json @@ -2,6 +2,12 @@ "name": "python-mqtt-client-template", "version": "0.0.1", "description": "A template that generates a Python MQTT client using MQTT.", + "scripts": { + "test:clean": "rimraf test/project/client.py", + "test:generate": "asyncapi generate fromTemplate ./test/fixtures/asyncapi_1.yaml ./ -o ./generated-code --force-write", + "test:start": "python test/project/test.py", + "test": "npm run test:clean && npm run test:generate && npm run test:start" + }, "generator": { "apiVersion": "v3", "generator": ">=2.0.0 <4.0.0", diff --git a/openapi_templete/template/src/models/models.js b/openapi_templete/template/src/models/models.js index 8bf5c43..88f5074 100644 --- a/openapi_templete/template/src/models/models.js +++ b/openapi_templete/template/src/models/models.js @@ -1,7 +1,7 @@ // 1 import { File } from '@asyncapi/generator-react-sdk'; // 2 -import { PythonGenerator, FormatHelpers } from '@asyncapi/modelina'; +import { PythonGenerator, PYTHON_PYDANTIC_PRESET } from '@asyncapi/modelina'; /** * @typedef RenderArgument @@ -9,25 +9,36 @@ import { PythonGenerator, FormatHelpers } from '@asyncapi/modelina'; * @property {AsyncAPIDocument} asyncapi document object received from the generator. */ +function generateModels(model) { + const properties = model.model?.properties ?? {}; + const ownIncludes = Object.values(properties) + .filter(p => p.property.constructor.name === 'ConstrainedReferenceModel') + .map(p => `from ${p.property.ref.name} import ${p.property.ref.name}`).join('\n') + const imports = model.dependencies + .join('\n'); + + return ( + + {imports} + {'\n\n'} + {ownIncludes} + {'\n\n'} + {model.result} + + ); +} + /** * Render all schema models - * @param {RenderArgument} param0 - * @returns + * @param {RenderArgument} param0 + * @returns */ -// 3 + export default async function schemaRender({ asyncapi }) { - // 4 - const pythonGenerator = new PythonGenerator(); - // 5 + const pythonGenerator = new PythonGenerator({ + presets: [PYTHON_PYDANTIC_PRESET], + processorOptions: {} + }); const models = await pythonGenerator.generate(asyncapi); - // 6 - const files = []; - // 7 - for (const model of models) { - // 8 - const modelFileName = `${FormatHelpers.toPascalCase(model.modelName)}.py`; - // 9 - files.push({model.result}); - } - return files; + return models.map(model => generateModels(model)) } diff --git a/openapi_templete/test/fixtures/asyncapi_1.yaml b/openapi_templete/test/fixtures/asyncapi_1.yaml index 02c67d3..06eeac0 100644 --- a/openapi_templete/test/fixtures/asyncapi_1.yaml +++ b/openapi_templete/test/fixtures/asyncapi_1.yaml @@ -55,6 +55,13 @@ components: $ref: '#/components/schemas/OrderPlaced' schemas: + Status: + type: string + enum: + - created + - pending + - confirmed + OrderCreated: $id: OrderCreated title: OrderCreated @@ -76,13 +83,8 @@ components: format: date-time example: "2025-06-03T12:00:00Z" status: - type: string - enum: - - created - - pending - - confirmed + $ref: '#/components/schemas/Status' default: created - OrderPlaced: $id: OrderPlaced title: OrderPlaced diff --git a/openapi_templete/test/project/client.py b/openapi_templete/test/project/client.py deleted file mode 100644 index b2aaa6c..0000000 --- a/openapi_templete/test/project/client.py +++ /dev/null @@ -1,18 +0,0 @@ -# 1 -import paho.mqtt.client as mqtt -# 2 -mqttBroker = "test.mosquitto.org" - -class TemperatureServiceClient: - def __init__(self): - # 3 - self.client = mqtt.Client() - # 4 - self.client.connect(mqttBroker) - - - def sendTemperatureChange(self, id): - # 5 - topic = "temperature/changed" - # 6 - self.client.publish(topic, id)