[python-fastapi] Fix api endpoint template (#19139)

* [python-fastapi] Fixed endpoint template

Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>

* [python-fastapi] Fixed base class methods definition

Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>

* [python-fastapi] Updated samples

Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>

---------

Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>
This commit is contained in:
Nikita Vakula 2024-07-17 06:31:25 +02:00 committed by GitHub
parent 3dc3ee08bc
commit cfcc2c89d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 44 additions and 44 deletions

View File

@ -65,7 +65,7 @@ async def {{operationId}}(
{{/hasAuthMethods}} {{/hasAuthMethods}}
) -> {{returnType}}{{^returnType}}None{{/returnType}}: ) -> {{returnType}}{{^returnType}}None{{/returnType}}:
{{#notes}}"""{{.}}""" {{#notes}}"""{{.}}"""
return Base{{classname}}.subclasses[0]().{{operationId}}({{#allParams}}{{>impl_argument}}{{^-last}}, {{/-last}}{{/allParams}}){{/notes}}{{^notes}}...{{/notes}} {{/notes}}return await Base{{classname}}.subclasses[0]().{{operationId}}({{#allParams}}{{>impl_argument}}{{^-last}}, {{/-last}}{{/allParams}})
{{^-last}} {{^-last}}

View File

@ -15,7 +15,7 @@ class Base{{classname}}:
Base{{classname}}.subclasses = Base{{classname}}.subclasses + (cls,) Base{{classname}}.subclasses = Base{{classname}}.subclasses + (cls,)
{{#operations}} {{#operations}}
{{#operation}} {{#operation}}
def {{operationId}}( async def {{operationId}}(
self, self,
{{#allParams}} {{#allParams}}
{{>impl_argument_definition}}, {{>impl_argument_definition}},

View File

@ -46,4 +46,4 @@ async def fake_query_param_default(
no_default: str = Query(None, description="no default value", alias="noDefault"), no_default: str = Query(None, description="no default value", alias="noDefault"),
) -> None: ) -> None:
"""""" """"""
return BaseFakeApi.subclasses[0]().fake_query_param_default(has_default, no_default) return await BaseFakeApi.subclasses[0]().fake_query_param_default(has_default, no_default)

View File

@ -10,7 +10,7 @@ class BaseFakeApi:
def __init_subclass__(cls, **kwargs): def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs) super().__init_subclass__(**kwargs)
BaseFakeApi.subclasses = BaseFakeApi.subclasses + (cls,) BaseFakeApi.subclasses = BaseFakeApi.subclasses + (cls,)
def fake_query_param_default( async def fake_query_param_default(
self, self,
has_default: str, has_default: str,
no_default: str, no_default: str,

View File

@ -50,7 +50,7 @@ async def add_pet(
), ),
) -> Pet: ) -> Pet:
"""""" """"""
return BasePetApi.subclasses[0]().add_pet(pet) return await BasePetApi.subclasses[0]().add_pet(pet)
@router.delete( @router.delete(
@ -70,7 +70,7 @@ async def delete_pet(
), ),
) -> None: ) -> None:
"""""" """"""
return BasePetApi.subclasses[0]().delete_pet(petId, api_key) return await BasePetApi.subclasses[0]().delete_pet(petId, api_key)
@router.get( @router.get(
@ -90,7 +90,7 @@ async def find_pets_by_status(
), ),
) -> List[Pet]: ) -> List[Pet]:
"""Multiple status values can be provided with comma separated strings""" """Multiple status values can be provided with comma separated strings"""
return BasePetApi.subclasses[0]().find_pets_by_status(status) return await BasePetApi.subclasses[0]().find_pets_by_status(status)
@router.get( @router.get(
@ -110,7 +110,7 @@ async def find_pets_by_tags(
), ),
) -> List[Pet]: ) -> List[Pet]:
"""Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.""" """Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing."""
return BasePetApi.subclasses[0]().find_pets_by_tags(tags) return await BasePetApi.subclasses[0]().find_pets_by_tags(tags)
@router.get( @router.get(
@ -131,7 +131,7 @@ async def get_pet_by_id(
), ),
) -> Pet: ) -> Pet:
"""Returns a single pet""" """Returns a single pet"""
return BasePetApi.subclasses[0]().get_pet_by_id(petId) return await BasePetApi.subclasses[0]().get_pet_by_id(petId)
@router.put( @router.put(
@ -153,7 +153,7 @@ async def update_pet(
), ),
) -> Pet: ) -> Pet:
"""""" """"""
return BasePetApi.subclasses[0]().update_pet(pet) return await BasePetApi.subclasses[0]().update_pet(pet)
@router.post( @router.post(
@ -174,7 +174,7 @@ async def update_pet_with_form(
), ),
) -> None: ) -> None:
"""""" """"""
return BasePetApi.subclasses[0]().update_pet_with_form(petId, name, status) return await BasePetApi.subclasses[0]().update_pet_with_form(petId, name, status)
@router.post( @router.post(
@ -195,4 +195,4 @@ async def upload_file(
), ),
) -> ApiResponse: ) -> ApiResponse:
"""""" """"""
return BasePetApi.subclasses[0]().upload_file(petId, additional_metadata, file) return await BasePetApi.subclasses[0]().upload_file(petId, additional_metadata, file)

View File

@ -12,7 +12,7 @@ class BasePetApi:
def __init_subclass__(cls, **kwargs): def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs) super().__init_subclass__(**kwargs)
BasePetApi.subclasses = BasePetApi.subclasses + (cls,) BasePetApi.subclasses = BasePetApi.subclasses + (cls,)
def add_pet( async def add_pet(
self, self,
pet: Pet, pet: Pet,
) -> Pet: ) -> Pet:
@ -20,7 +20,7 @@ class BasePetApi:
... ...
def delete_pet( async def delete_pet(
self, self,
petId: int, petId: int,
api_key: str, api_key: str,
@ -29,7 +29,7 @@ class BasePetApi:
... ...
def find_pets_by_status( async def find_pets_by_status(
self, self,
status: List[str], status: List[str],
) -> List[Pet]: ) -> List[Pet]:
@ -37,7 +37,7 @@ class BasePetApi:
... ...
def find_pets_by_tags( async def find_pets_by_tags(
self, self,
tags: List[str], tags: List[str],
) -> List[Pet]: ) -> List[Pet]:
@ -45,7 +45,7 @@ class BasePetApi:
... ...
def get_pet_by_id( async def get_pet_by_id(
self, self,
petId: int, petId: int,
) -> Pet: ) -> Pet:
@ -53,7 +53,7 @@ class BasePetApi:
... ...
def update_pet( async def update_pet(
self, self,
pet: Pet, pet: Pet,
) -> Pet: ) -> Pet:
@ -61,7 +61,7 @@ class BasePetApi:
... ...
def update_pet_with_form( async def update_pet_with_form(
self, self,
petId: int, petId: int,
name: str, name: str,
@ -71,7 +71,7 @@ class BasePetApi:
... ...
def upload_file( async def upload_file(
self, self,
petId: int, petId: int,
additional_metadata: str, additional_metadata: str,

View File

@ -46,7 +46,7 @@ async def delete_order(
orderId: str = Path(..., description="ID of the order that needs to be deleted"), orderId: str = Path(..., description="ID of the order that needs to be deleted"),
) -> None: ) -> None:
"""For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors""" """For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors"""
return BaseStoreApi.subclasses[0]().delete_order(orderId) return await BaseStoreApi.subclasses[0]().delete_order(orderId)
@router.get( @router.get(
@ -64,7 +64,7 @@ async def get_inventory(
), ),
) -> Dict[str, int]: ) -> Dict[str, int]:
"""Returns a map of status codes to quantities""" """Returns a map of status codes to quantities"""
return BaseStoreApi.subclasses[0]().get_inventory() return await BaseStoreApi.subclasses[0]().get_inventory()
@router.get( @router.get(
@ -82,7 +82,7 @@ async def get_order_by_id(
orderId: int = Path(..., description="ID of pet that needs to be fetched", ge=1, le=5), orderId: int = Path(..., description="ID of pet that needs to be fetched", ge=1, le=5),
) -> Order: ) -> Order:
"""For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generate exceptions""" """For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generate exceptions"""
return BaseStoreApi.subclasses[0]().get_order_by_id(orderId) return await BaseStoreApi.subclasses[0]().get_order_by_id(orderId)
@router.post( @router.post(
@ -99,4 +99,4 @@ async def place_order(
order: Order = Body(None, description="order placed for purchasing the pet"), order: Order = Body(None, description="order placed for purchasing the pet"),
) -> Order: ) -> Order:
"""""" """"""
return BaseStoreApi.subclasses[0]().place_order(order) return await BaseStoreApi.subclasses[0]().place_order(order)

View File

@ -11,7 +11,7 @@ class BaseStoreApi:
def __init_subclass__(cls, **kwargs): def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs) super().__init_subclass__(**kwargs)
BaseStoreApi.subclasses = BaseStoreApi.subclasses + (cls,) BaseStoreApi.subclasses = BaseStoreApi.subclasses + (cls,)
def delete_order( async def delete_order(
self, self,
orderId: str, orderId: str,
) -> None: ) -> None:
@ -19,14 +19,14 @@ class BaseStoreApi:
... ...
def get_inventory( async def get_inventory(
self, self,
) -> Dict[str, int]: ) -> Dict[str, int]:
"""Returns a map of status codes to quantities""" """Returns a map of status codes to quantities"""
... ...
def get_order_by_id( async def get_order_by_id(
self, self,
orderId: int, orderId: int,
) -> Order: ) -> Order:
@ -34,7 +34,7 @@ class BaseStoreApi:
... ...
def place_order( async def place_order(
self, self,
order: Order, order: Order,
) -> Order: ) -> Order:

View File

@ -48,7 +48,7 @@ async def create_user(
), ),
) -> None: ) -> None:
"""This can only be done by the logged in user.""" """This can only be done by the logged in user."""
return BaseUserApi.subclasses[0]().create_user(user) return await BaseUserApi.subclasses[0]().create_user(user)
@router.post( @router.post(
@ -67,7 +67,7 @@ async def create_users_with_array_input(
), ),
) -> None: ) -> None:
"""""" """"""
return BaseUserApi.subclasses[0]().create_users_with_array_input(user) return await BaseUserApi.subclasses[0]().create_users_with_array_input(user)
@router.post( @router.post(
@ -86,7 +86,7 @@ async def create_users_with_list_input(
), ),
) -> None: ) -> None:
"""""" """"""
return BaseUserApi.subclasses[0]().create_users_with_list_input(user) return await BaseUserApi.subclasses[0]().create_users_with_list_input(user)
@router.delete( @router.delete(
@ -106,7 +106,7 @@ async def delete_user(
), ),
) -> None: ) -> None:
"""This can only be done by the logged in user.""" """This can only be done by the logged in user."""
return BaseUserApi.subclasses[0]().delete_user(username) return await BaseUserApi.subclasses[0]().delete_user(username)
@router.get( @router.get(
@ -124,7 +124,7 @@ async def get_user_by_name(
username: str = Path(..., description="The name that needs to be fetched. Use user1 for testing."), username: str = Path(..., description="The name that needs to be fetched. Use user1 for testing."),
) -> User: ) -> User:
"""""" """"""
return BaseUserApi.subclasses[0]().get_user_by_name(username) return await BaseUserApi.subclasses[0]().get_user_by_name(username)
@router.get( @router.get(
@ -142,7 +142,7 @@ async def login_user(
password: str = Query(None, description="The password for login in clear text", alias="password"), password: str = Query(None, description="The password for login in clear text", alias="password"),
) -> str: ) -> str:
"""""" """"""
return BaseUserApi.subclasses[0]().login_user(username, password) return await BaseUserApi.subclasses[0]().login_user(username, password)
@router.get( @router.get(
@ -160,7 +160,7 @@ async def logout_user(
), ),
) -> None: ) -> None:
"""""" """"""
return BaseUserApi.subclasses[0]().logout_user() return await BaseUserApi.subclasses[0]().logout_user()
@router.put( @router.put(
@ -181,4 +181,4 @@ async def update_user(
), ),
) -> None: ) -> None:
"""This can only be done by the logged in user.""" """This can only be done by the logged in user."""
return BaseUserApi.subclasses[0]().update_user(username, user) return await BaseUserApi.subclasses[0]().update_user(username, user)

View File

@ -11,7 +11,7 @@ class BaseUserApi:
def __init_subclass__(cls, **kwargs): def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs) super().__init_subclass__(**kwargs)
BaseUserApi.subclasses = BaseUserApi.subclasses + (cls,) BaseUserApi.subclasses = BaseUserApi.subclasses + (cls,)
def create_user( async def create_user(
self, self,
user: User, user: User,
) -> None: ) -> None:
@ -19,7 +19,7 @@ class BaseUserApi:
... ...
def create_users_with_array_input( async def create_users_with_array_input(
self, self,
user: List[User], user: List[User],
) -> None: ) -> None:
@ -27,7 +27,7 @@ class BaseUserApi:
... ...
def create_users_with_list_input( async def create_users_with_list_input(
self, self,
user: List[User], user: List[User],
) -> None: ) -> None:
@ -35,7 +35,7 @@ class BaseUserApi:
... ...
def delete_user( async def delete_user(
self, self,
username: str, username: str,
) -> None: ) -> None:
@ -43,7 +43,7 @@ class BaseUserApi:
... ...
def get_user_by_name( async def get_user_by_name(
self, self,
username: str, username: str,
) -> User: ) -> User:
@ -51,7 +51,7 @@ class BaseUserApi:
... ...
def login_user( async def login_user(
self, self,
username: str, username: str,
password: str, password: str,
@ -60,14 +60,14 @@ class BaseUserApi:
... ...
def logout_user( async def logout_user(
self, self,
) -> None: ) -> None:
"""""" """"""
... ...
def update_user( async def update_user(
self, self,
username: str, username: str,
user: User, user: User,