测试时类型检查
项目描述
typist 是一个测试时工具,它使用您的 Sphinx 文档字符串(您确实记录了代码吗?)以确保您的可调用对象
仅使用它们期望的类型进行调用
只返回它们声明的类型
只抛出它们声明的异常
用法
目前您必须导入 typist 并安装它。安装的参数是您要测试的代码的最高级包。将来我计划为测试框架创建插件。
import typist typist.install('keystone')
typist 实现了一个 导入钩子,它将使用 Python 的 AST 为您的所有可调用对象添加装饰器。装饰器确保可调用对象根据其文档字符串类型声明正确使用。如果您的可调用对象没有 :param:、:returns 或 :raises:,则它仍然可以正常工作,只是不进行检查。
类型语言
类型将从以下格式中提取
- param {type} varname:
一些描述性文本
- rtype avarname:
{types}
- returns {types}:
一些描述性文本
{type} 可以是任何有效的 Python 类型。一些示例
int
list
:py:class:typist._import_hook.Finder
typist._import_hook.Finder
{types} 可以是类型列表,用逗号分隔,包含可选的 ‘or’。可以使用与上面相同的所有类型。一些示例
list 或 None
int、float 或 long
int、float、long
typist._py.PY2 或 typist._py.PY3
list 或 callable
可调用 上面是一个特殊情况。虽然在技术上它不是一个类型,但它确实描述了一个对象应该如何行为。另一个尚未实现但可能很快就会实现的特殊情况是 可迭代。
用于指定类型的这种语言将变得更加丰富,用于集合。允许开发者指定参数化类型将非常方便,例如
list<int> - 一个 list,元素为 int
dict<str,package.module.Class> - 一个 dict,键为字符串,值为 package.module.Class 的实例
背景
当我正在为 Keystone 开发 Python 3 支持 时,我产生了写这个的想法。我想确保代码实际上得到了它期望的二进制或文本类型。我对 .encode(‘utf8’).decode(‘utf8’) (也许我搞反了) 的垃圾做法感到厌烦,这种做法让异常消失了,但并没有解决任何问题。
我没有费心寻找已经实现的东西,因为我想要学习一些关于导入钩子的知识。如果你知道更好的东西,请告诉我。如果这是自切片面包以来最好的东西,我也想知道。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
typist-0.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | feec0126c8f029e61790073ae559cfdab0759e09a21b36ff8b0cf008a1eb63bb |
|
MD5 | 2a6a0f1487575f1a95e279f62fca8c91 |
|
BLAKE2b-256 | 64c8d15e22c77135fff6eb959b756b7fae5a61b209920909481597648bcf73ce |
typist-0.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4e7399216f0282c69a61e511e3857fcf1b001a21ddb0192fb83b2a89397adde3 |
|
MD5 | 3e2a1e53b7c7a3f076cb8e5e621c2753 |
|
BLAKE2b-256 | f644e0bd138588fa6e9dbe0130566a63b1fe3955034af55bf64d5de4857d43db |
typist-0.0.1-py2-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 73411a3a3926d31ac05538e8ba4f2fe96fc81932e32dae9aab3cdd925c964d12 |
|
MD5 | 7d1d493bd423733c94467f4c4a08405f |
|
BLAKE2b-256 | add34a777422be68da90506828fc46675d83f2badc3a805dbd7ddfe3046278e9 |