From ad41014c94f17a85d1f21553d89f6676a9bfd374 Mon Sep 17 00:00:00 2001 From: Paillat Date: Thu, 13 Mar 2025 08:47:21 +0100 Subject: [PATCH] :sparkles: Use ClassVars for constructor classes to allow more customization when subclassing (#8) --- src/pycord_rest/app.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pycord_rest/app.py b/src/pycord_rest/app.py index 8fc0ecd..59dd8c5 100644 --- a/src/pycord_rest/app.py +++ b/src/pycord_rest/app.py @@ -53,10 +53,15 @@ def not_supported[T, U](func: Callable[[T], U]) -> Callable[[T], U]: class App(discord.Bot): + _UvicornConfig: type[uvicorn.Config] = uvicorn.Config + _UvicornServer: type[uvicorn.Server] = uvicorn.Server + _FastAPI: type[FastAPI] = FastAPI + _APIRouter: type[APIRouter] = APIRouter + def __init__(self, *args: Any, **options: Any) -> None: # pyright: ignore [reportExplicitAny] super().__init__(*args, **options) # pyright: ignore [reportUnknownMemberType] - self._app: FastAPI = FastAPI(openapi_url=None, docs_url=None, redoc_url=None) - self.router: APIRouter = APIRouter() + self._app: FastAPI = self._FastAPI(openapi_url=None, docs_url=None, redoc_url=None) + self.router: APIRouter = self._APIRouter() self._public_key: str | None = None @property @@ -263,8 +268,8 @@ class App(discord.Bot): self._app.include_router(self.router) uvicorn_options = uvicorn_options or {} uvicorn_options["log_level"] = uvicorn_options.get("log_level", logging.root.level) - config = uvicorn.Config(self._app, **uvicorn_options) - server = uvicorn.Server(config) + config = self._UvicornConfig(self._app, **uvicorn_options) + server = self._UvicornServer(config) try: self.dispatch("connect") await server.serve()