mypy的额外类型和特性的集合

mypy-extras的Python项目详细描述


我的临时演员

wemake.servicestestcodecovPython Versionwemake-python-styleguide

特点

  • 提供一个自定义的mypy插件以增强其可能性
  • 提供新的类型,可以用我们的插件在你的程序中使用
  • 带注释的完全类型化并使用mypy检查PEP561 compatible

安装

pip install mypy-extras

您还需要configuremypy正确安装我们的自定义插件:

^{pr2}$

我们还建议使用相同的mypy设置we use。在

使用

属性

我们提供了一个特殊类型来获取其他类型的命名属性,如下所示:

fromtyping_extensionsimportLiteral# or typing on python3.8+frommypy_extrasimportAttrOfclassUser(object):defauth(self,username:str,password:str)->bool:returnFalse# Just an exampledefget_callback(user:User)->AttrOf[User,Literal['auth']]:returnuser.authuser:Userreveal_type(get_callback(user))# Revealed type is 'def (username: builtins.str, password: builtins.str) -> builtins.bool'

确保属性

我们可以确保对象上存在某些str属性:

frommypy_extrasimportensure_attrclassUser(object):policy='update'reveal_type(ensure_attr(User,'policy'))# Revealed type is 'Literal['policy']'reveal_type(ensure_attr(User,'missing'))# Error: attribute "missing" does not exist on type "User"

当我们对基于字符串字段的对象执行任何操作时,它非常有用:

DEFAULT_POLICY_FIELD:Final=ensure_attr(User,'policy')# typesafe# vsDEFAULT_POLICY_FIELD:Final='policy'# User can rename the field, and this will blow now!

许可证

MIT

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

推荐PyPI第三方库


热门话题
java:spring应用程序中的两个招摇过市的端点   RestEasy:找不到类型为java的响应对象的MessageBodyWriter。util。媒体类型的ArrayList:application/json   Java if/for循环辅助   java Netbeans:无断点启动调试   信号器和Java(j2me)   java Maven检查Windows上的本地依赖项   java精度是线程的替代品。睡眠()   java如何使用带有2个分支的mavenreleaseplugin   java OO设计如何在给定需求的情况下选择业务对象?   java为什么我不能正确保存和加载这些序列化变量?   java什么是float的stringrepresentation的最大可能长度?   如何使用java从网站读取属性文件?   我可以将用户发送到其他用户。只有可维护性的xml。java类?   java Hibernate非法状态异常   java Spring安全OAuth 1.0流使用者验证   java跟踪:数据库异常   java无法删除或更新父行外键约束失败JPA Spring引导   用Java实现url获取请求