Use ClassVars for constructor classes to allow more customization when subclassing (#8)

This commit is contained in:
2025-03-13 08:47:21 +01:00
committed by GitHub
parent cd444d51d1
commit ad41014c94

View File

@@ -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()