WSGI的MyPy类型
wsgitypes的Python项目详细描述
这是使用Python的 键入功能(类型数据、协议)。看起来还可以,但会有很多空白, 漏洞,错误,错误等等,我不建议依赖它。在
这是作为Python模块实现的,而不是MyPy存根,因为它表示 协议的东西可以满足,而不是一组具体的类型。在
该包是在一次勘探过程中形成的,记录如下: https://github.com/python/mypy/issues/7654
将可调用应用程序定义为类:
classMyApplication(wsgitypes.Application[MyEnviron]):def__call__(self,environ:Environ,start_response:wsgitypes.StartResponse,)->wsgitypes.ResponseBody:my_header=environ.get("REQUEST_METHOD","")return[]
环境应该是类型安全的:
^{pr2}$您可以使用TypedDict继承定义自己的Environ扩展, 是这样的:
classMyEnviron(wsgitypes.Environ):HTTP_X_MY_HEADER:t.Optional[str]classMyApplication(wsgitypes.Application):def__call__(self,environ:wsgitypes.Environ,start_response:wsgitypes.StartResponse)->wsgitypes.Response:environ=typing.cast(MyEnviron,environ)environ.get("HTTP_X_MY_HEADER")return[]
请注意,您需要使用typing.cast将传入环境转换为派生环境 版本。这是不可行的,但这是一种环境类型: https://github.com/python/mypy/issues/7654
- 项目
标签: