mypy的额外类型和特性的集合
mypy-extras的Python项目详细描述
我的临时演员
特点
- 提供一个自定义的
mypy
插件以增强其可能性 - 提供新的类型,可以用我们的插件在你的程序中使用
- 带注释的完全类型化并使用mypy检查PEP561 compatible
安装
pip install mypy-extras
您还需要configuremypy
正确安装我们的自定义插件:
我们还建议使用相同的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!
许可证
- 项目
标签: