From 7e1ff65699d0d25644aecee4849f41f8bdf95327 Mon Sep 17 00:00:00 2001 From: Slava Semushin Date: Thu, 4 Apr 2024 19:48:18 +0700 Subject: [PATCH] chore(python): unbreak optional fields on Python 3.7 The error was: TypeError: unsupported operand type(s) for |: 'type' and 'NoneType' See https://stackoverflow.com/questions/76712720/typeerror-unsupported-operand-types-for-type-and-nonetype Correction for 67a664ab98f2b7c8204b88c4ce8653813113b9ed commit. Part of #16 Relate to #13 --- examples/python/fastapi/postgres/routes.py | 10 ++++++---- src/templates/routes.py.ejs | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/examples/python/fastapi/postgres/routes.py b/examples/python/fastapi/postgres/routes.py index a7e1cb5..8c859b6 100644 --- a/examples/python/fastapi/postgres/routes.py +++ b/examples/python/fastapi/postgres/routes.py @@ -5,15 +5,17 @@ from pydantic import BaseModel +from typing import Optional + from db import db_connection router = APIRouter() class CreateCategoryDto(BaseModel): - name: str | None = None - name_ru: str | None = None - slug: str | None = None - user_id: int | None = None + name: Optional[str] = None + name_ru: Optional[str] = None + slug: Optional[str] = None + user_id: Optional[int] = None @router.get('/v1/categories/count') diff --git a/src/templates/routes.py.ejs b/src/templates/routes.py.ejs index 93f81c4..176a40e 100644 --- a/src/templates/routes.py.ejs +++ b/src/templates/routes.py.ejs @@ -7,6 +7,9 @@ from fastapi import APIRouter, Depends, HTTPException, status <%# LATER: add only when POST/PUT endpoints are present -%> from pydantic import BaseModel +<%# LATER: add only when POST/PUT endpoints are present -%> +from typing import Optional + from db import db_connection router = APIRouter() @@ -114,7 +117,7 @@ function query2dto(parser, method) { function dto2model(dto) { let result = `class ${dto.name}(BaseModel):\n`; dto.props.forEach(prop => { - result += ` ${prop.name}: ${prop.type} | None = None\n` + result += ` ${prop.name}: Optional[${prop.type}] = None\n` }); return result; }