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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何强制用户在允许访问活动之前处理对话框?我的许可证代码怎么了?   java ArraysList作为JSON   mysql如何在java中创建包含多个可选where子句的搜索语句?   java如何让Apache Camel在“直接”路径的末尾删除文件?   使用socket在两个Androids之间进行java实时数据传输。IO(websocket)和4G   如何在java中实现两个CORBA服务器之间的通信   会话树xml表示为java对象   java Skype4Java编号swtwin323325   java RecyclerView getAdapterPosition()不工作:第一次单击返回正确位置,第二次单击返回1   java在$TOMCAT/conf/context上为JNDI设置资源。xml   java为什么第二个矩形冲突在第一个矩形冲突时不起作用?   JScrollPane上的java JTextArea未出现在JPanel上   java如何将实现的PriorityQueue打印为字符串?   jpa使用Jersey更新用户角色RESTJava(JAXRS)