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
ENV GITHUB_TOKEN $GITHUB_TOKEN

View File

@ -47,7 +47,7 @@ async def root(request: Request, response: Response) -> RedirectResponse:
"""
return RedirectResponse(url="/docs")
@app.get('/tools', response_model=ResponseModels.LatestTools)
@app.get('/tools', response_model=ResponseModels.ToolsResponseModel)
@limiter.limit(config['slowapi']['limit'])
async def tools(request: Request, response: Response) -> dict:
"""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'])
@app.get('/apps', response_model=ResponseModels.SupportedApps)
@app.get('/apps', response_model=ResponseModels.AppsResponseModel)
@limiter.limit(config['slowapi']['limit'])
async def apps(request: Request, response: Response) -> dict:
"""Get patchable apps.
@ -67,7 +67,7 @@ async def apps(request: Request, response: Response) -> dict:
"""
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'])
async def patches(request: Request, response: Response) -> dict:
"""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.
Args:
str (str): String
Enum (Enum): Enum from pydantic
BaseModel (pydantic.BaseModel): BaseModel from pydantic
"""
repository: str
name: str
size: str
browser_download_url: str
content_type: str
class CompatiblePackagesResponseFields(BaseModel):
"""Implements the fields for compatible packages in the PatchesResponseFields class.
repository = 'repository'
name = 'name'
size = 'size'
browser_download_url = 'browser_download_url'
content_type = 'content_type'
class SimplifiedPatchesFields(str, Enum):
Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic
"""
name: str
verstions: list[ str ] | None
class PatchesResponseFields(BaseModel):
"""Implements the fields for the /patches endpoint.
Args:
str (str): String
Enum (Enum): Enum from pydantic
BaseModel (pydantic.BaseModel): BaseModel from pydantic
"""
target_app = "target_app"
patch_name = "patch_name"
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
from typing import Dict, Union, List
from pydantic import BaseModel, create_model
"""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 None, v
def generate(self, v: Dict, name: str):
def generate(self, v: dict, name: str):
"""Returns a pydantic model from a dictionary.
@ -35,44 +34,29 @@ class ModelGenerator():
"""
return self.__make_model(v, name)[0]
class SupportedApps(BaseModel):
class AppsResponseModel(BaseModel):
"""Implements the JSON response model for the /apps endpoint.
Args:
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.
Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic
"""
tools: List[ Dict[ ResponseFields.LatestToolsFields, str ] ]
tools: list[ ResponseFields.ToolsResponseFields ]
class Config:
use_enum_values = True
class SimplifiedPatches(BaseModel):
class PatchesResponseModel(BaseModel):
"""Implements the JSON response model for the /patches endpoint.
Args:
BaseModel (pydantic.BaseModel): BaseModel from pydantic
"""
patches: List[ Dict[ ResponseFields.SimplifiedPatchesFields, str ] ]
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] ] ]
__root__: list[ ResponseFields.PatchesResponseFields ]