From 576d15d7c5444a7886be14d79c9d53cc2a1ca992 Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Thu, 9 Jan 2025 18:55:21 -0500 Subject: [PATCH] fix: nullable properties that are references to other objects. Update to xtp-bindgen 1.0.0-rc.17 This a is breaking change, maps must have `type: object`. Also add support for various int types. --- package-lock.json | 9 +++++---- package.json | 2 +- src/index.ts | 17 +++++++++-------- tests/schemas/fruit.yaml | 1 + 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6f9cd0e..b8b8a34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.0.1", "license": "BSD-3-Clause", "dependencies": { - "@dylibso/xtp-bindgen": "1.0.0-rc.16", + "@dylibso/xtp-bindgen": "1.0.0-rc.17", "ejs": "^3.1.10" }, "devDependencies": { @@ -21,9 +21,10 @@ } }, "node_modules/@dylibso/xtp-bindgen": { - "version": "1.0.0-rc.16", - "resolved": "https://registry.npmjs.org/@dylibso/xtp-bindgen/-/xtp-bindgen-1.0.0-rc.16.tgz", - "integrity": "sha512-qbv3tH7jpyq4p2czEGGwZudWByZUOttCeRXs2mnMZB+fNuW90W2FfqBHfdAijMABnhTII45AkmQHS3w/9SpSwg==" + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@dylibso/xtp-bindgen/-/xtp-bindgen-1.0.0-rc.17.tgz", + "integrity": "sha512-M5jZR/tTb6/sbZ8A6zypwseW9rQcNOo2wO5CpzcJeFc79Ln48RfjiL/uEa5FdcB1bq+x/5Eo5MvUpSQb/UPnMQ==", + "license": "BSD-3-Clause" }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.12", diff --git a/package.json b/package.json index 2a9adfa..eba8f6b 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "typescript": "^5.3.2" }, "dependencies": { - "@dylibso/xtp-bindgen": "1.0.0-rc.16", + "@dylibso/xtp-bindgen": "1.0.0-rc.17", "ejs": "^3.1.10" } } diff --git a/src/index.ts b/src/index.ts index 98c7d0b..24f0047 100644 --- a/src/index.ts +++ b/src/index.ts @@ -29,16 +29,18 @@ function toPythonTypeX(type: XtpNormalizedType, required: boolean = true): strin switch (type.kind) { case 'string': return opt('str'); + case 'uint8': + case 'int8': + case 'uint16': + case 'int16': + case 'uint32': case 'int32': - return opt('int'); + case 'uint64': case 'int64': return opt('int'); case 'float': - return opt('float'); case 'double': return opt('float') - case 'byte': - return opt('byte'); case 'date-time': return opt("datetime"); case 'boolean': @@ -52,11 +54,10 @@ function toPythonTypeX(type: XtpNormalizedType, required: boolean = true): strin // TODO: improve typing of dicts return opt('dict'); case 'object': - const name = (type as ObjectType).name; - if (!name) { - return opt('dict'); - } + const name = (type as ObjectType).name; return opt(pythonTypeName(name)); + case 'free-form-object': + return opt('dict'); case 'enum': return opt(pythonTypeName((type as EnumType).name)); default: diff --git a/tests/schemas/fruit.yaml b/tests/schemas/fruit.yaml index 4ba0c62..906033d 100644 --- a/tests/schemas/fruit.yaml +++ b/tests/schemas/fruit.yaml @@ -128,6 +128,7 @@ components: "$ref": "#/components/schemas/WriteParams" nullable: true aMapOfNullableDateTimes: + type: object additionalProperties: type: string format: date-time