(
typeName: string,
schemas: JSONSchema7[],
ctx: PyCodegenCtx,
description?: string
)
| 1809 | } |
| 1810 | |
| 1811 | function resolvePyNamedUnion( |
| 1812 | typeName: string, |
| 1813 | schemas: JSONSchema7[], |
| 1814 | ctx: PyCodegenCtx, |
| 1815 | description?: string |
| 1816 | ): PyResolvedType | undefined { |
| 1817 | const members = schemas |
| 1818 | .filter((schema) => !isPyNullLikeSchema(schema)) |
| 1819 | .map((schema) => getPyNamedSchemaType(schema, ctx)); |
| 1820 | |
| 1821 | if (members.length === 0 || members.some((member) => member === undefined)) { |
| 1822 | return undefined; |
| 1823 | } |
| 1824 | |
| 1825 | const namedMembers = members as Array<{ typeName: string; resolved: PyResolvedType }>; |
| 1826 | const aliasName = getOrCreatePyUnionAlias( |
| 1827 | typeName, |
| 1828 | namedMembers.map((member) => member.typeName), |
| 1829 | ctx, |
| 1830 | description |
| 1831 | ); |
| 1832 | |
| 1833 | return { |
| 1834 | annotation: aliasName, |
| 1835 | fromExpr: (expr) => `from_union([${namedMembers.map((member) => member.resolved.fromExpr).map((fromExpr) => fromExpr("x")).map((expr) => `lambda x: ${expr}`).join(", ")}], ${expr})`, |
| 1836 | toExpr: (expr) => `from_union([${namedMembers.map((member) => member.resolved.toExpr).map((toExpr) => toExpr("x")).map((expr) => `lambda x: ${expr}`).join(", ")}], ${expr})`, |
| 1837 | }; |
| 1838 | } |
| 1839 | |
| 1840 | function getOrCreatePyEnum( |
| 1841 | enumName: string, |
no test coverage detected
searching dependent graphs…