add own includes and imports
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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 (
|
||||
<File name={`${model.modelName}.py`}>
|
||||
{imports}
|
||||
{'\n\n'}
|
||||
{ownIncludes}
|
||||
{'\n\n'}
|
||||
{model.result}
|
||||
</File>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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(<File name={modelFileName}>{model.result}</File>);
|
||||
}
|
||||
return files;
|
||||
return models.map(model => generateModels(model))
|
||||
}
|
||||
|
||||
+8
-6
@@ -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
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user