在 sanic 上下文对象上类型检查变量?

Type checking variables on the sanic context object?

全局状态的sanic python http server provides a context object。 python 的一个不错的新功能是类型检查,它可以检测拼写错误的属性。有没有一种方法可以告诉像 mypy 这样的类型系统您要将哪些属性及其类型添加到上下文对象?

因为该对象是一个 SimpleNamespace,所以没有 OOTB 方法来处理它。但是,您有一些选择。

首先,您可以使用Sanic Extensions注入一个类型化的对象。

foo = Foo()

app.ext.dependency(foo)

@app.get("/getfoo")
async def getfoo(request: Request, foo: Foo):
    return text(foo.bar())

其次,您可以创建一个输入的自定义对象并将其传递给 Sanic。

class CustomContext:
    foo: int

app = Sanic(..., ctx= CustomContext())


ctx: CustomContext = app.ctx

第三,您可以子class Sanic class 并提供类型化对象。