Upgrade to python 3.10

This commit is contained in:
Alexandre Teles 2022-08-31 17:33:08 -03:00
parent 41d5ae63be
commit 1ee02be65f
4 changed files with 40 additions and 51 deletions

View File

@ -1,4 +1,4 @@
FROM python:3-slim FROM python:3.10-slim
ARG GITHUB_TOKEN ARG GITHUB_TOKEN
ENV GITHUB_TOKEN $GITHUB_TOKEN ENV GITHUB_TOKEN $GITHUB_TOKEN

View File

@ -47,7 +47,7 @@ async def root(request: Request, response: Response) -> RedirectResponse:
""" """
return RedirectResponse(url="/docs") return RedirectResponse(url="/docs")
@app.get('/tools', response_model=ResponseModels.LatestTools) @app.get('/tools', response_model=ResponseModels.ToolsResponseModel)
@limiter.limit(config['slowapi']['limit']) @limiter.limit(config['slowapi']['limit'])
async def tools(request: Request, response: Response) -> dict: async def tools(request: Request, response: Response) -> dict:
"""Get patching tools' latest version. """Get patching tools' latest version.
@ -57,7 +57,7 @@ async def tools(request: Request, response: Response) -> dict:
""" """
return await releases.get_latest_releases(config['app']['repositories']) return await releases.get_latest_releases(config['app']['repositories'])
@app.get('/apps', response_model=ResponseModels.SupportedApps) @app.get('/apps', response_model=ResponseModels.AppsResponseModel)
@limiter.limit(config['slowapi']['limit']) @limiter.limit(config['slowapi']['limit'])
async def apps(request: Request, response: Response) -> dict: async def apps(request: Request, response: Response) -> dict:
"""Get patchable apps. """Get patchable apps.
@ -67,7 +67,7 @@ async def apps(request: Request, response: Response) -> dict:
""" """
return await releases.get_patchable_apps() return await releases.get_patchable_apps()
@app.get('/patches', response_model=ResponseModels.Patches) @app.get('/patches', response_model=ResponseModels.PatchesResponseModel)
@limiter.limit(config['slowapi']['limit']) @limiter.limit(config['slowapi']['limit'])
async def patches(request: Request, response: Response) -> dict: async def patches(request: Request, response: Response) -> dict:
"""Get latest patches. """Get latest patches.

View File

@ -1,28 +1,33 @@
from enum import Enum from pydantic import BaseModel
class LatestToolsFields(str, Enum): class ToolsResponseFields(BaseModel):
"""Implements the fields for the /tools endpoint. """Implements the fields for the /tools endpoint.
Args:
str (str): String
Enum (Enum): Enum from pydantic
"""
repository = 'repository' Args:
name = 'name' BaseModel (pydantic.BaseModel): BaseModel from pydantic
size = 'size' """
browser_download_url = 'browser_download_url' repository: str
content_type = 'content_type' name: str
size: str
class SimplifiedPatchesFields(str, Enum): browser_download_url: str
content_type: str
class CompatiblePackagesResponseFields(BaseModel):
"""Implements the fields for compatible packages in the PatchesResponseFields class.
Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic
"""
name: str
verstions: list[ str ] | None
class PatchesResponseFields(BaseModel):
"""Implements the fields for the /patches endpoint. """Implements the fields for the /patches endpoint.
Args:
str (str): String
Enum (Enum): Enum from pydantic
"""
target_app = "target_app" Args:
patch_name = "patch_name" BaseModel (pydantic.BaseModel): BaseModel from pydantic
description = "description" """
target_version = "target_version" name: str
description: str
version: str
excluded: bool
dependencies: list[ str ] | None
compatiblePackages: list[ CompatiblePackagesResponseFields ]

View File

@ -1,5 +1,4 @@
import modules.ResponseFields as ResponseFields import modules.ResponseFields as ResponseFields
from typing import Dict, Union, List
from pydantic import BaseModel, create_model from pydantic import BaseModel, create_model
"""Implements pydantic models and model generator for the API's responses.""" """Implements pydantic models and model generator for the API's responses."""
@ -22,7 +21,7 @@ class ModelGenerator():
return create_model(name, **{k: self.__make_model(v, k) for k, v in v.items()}), ... return create_model(name, **{k: self.__make_model(v, k) for k, v in v.items()}), ...
return None, v return None, v
def generate(self, v: Dict, name: str): def generate(self, v: dict, name: str):
"""Returns a pydantic model from a dictionary. """Returns a pydantic model from a dictionary.
@ -35,44 +34,29 @@ class ModelGenerator():
""" """
return self.__make_model(v, name)[0] return self.__make_model(v, name)[0]
class SupportedApps(BaseModel): class AppsResponseModel(BaseModel):
"""Implements the JSON response model for the /apps endpoint. """Implements the JSON response model for the /apps endpoint.
Args: Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic BaseModel (pydantic.BaseModel): BaseModel from pydantic
""" """
apps: List[str] apps: list[str]
class LatestTools(BaseModel): class ToolsResponseModel(BaseModel):
"""Implements the JSON response model for the /tools endpoint. """Implements the JSON response model for the /tools endpoint.
Args: Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic BaseModel (pydantic.BaseModel): BaseModel from pydantic
""" """
tools: List[ Dict[ ResponseFields.LatestToolsFields, str ] ] tools: list[ ResponseFields.ToolsResponseFields ]
class Config: class PatchesResponseModel(BaseModel):
use_enum_values = True
class SimplifiedPatches(BaseModel):
"""Implements the JSON response model for the /patches endpoint. """Implements the JSON response model for the /patches endpoint.
Args: Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic BaseModel (pydantic.BaseModel): BaseModel from pydantic
""" """
patches: List[ Dict[ ResponseFields.SimplifiedPatchesFields, str ] ] __root__: list[ ResponseFields.PatchesResponseFields ]
class Config:
use_enum_values = True
class Patches(BaseModel):
"""_summary_
Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic
"""
__root__ = List[ Dict[ str, Union[str, List[str], Dict, bool] ] ]