生成Python程序的假设策略,类似于CSmith。
项目描述
hypothesmith
生成Python程序的假设策略,类似于CSmith。
这绝对是预alpha版本,但如果你想玩玩,请随意!即使它崩溃了,你甚至可以保留那些闪亮的部分。
今天通过 pip install hypothesmith
,或者通过克隆 GitHub仓库 获取。
您可以使用Python 3.6或更高版本的tox运行测试,例如。使用tox -va
查看可用的环境。
用法
此包提供了两个用于生成Python源代码的Hypothesis策略。
生成的代码始终是语法有效的,并且对于测试解析器、linters、auto-formatters和其他在源代码上操作的工具非常有用。
不要执行这些策略生成的代码。
它实际上可以做任何运行Python代码能做的事情,包括更改、删除或上传重要数据。任意代码可能很有用,但“任意代码执行”可能会非常、非常糟糕。
hypothesmith.from_grammar(start="file_input", *, auto_target=True)
基于语法生成语法有效的Python源代码。
有效值 start
是 "single_input"
、"file_input"
或 "eval_input"
;分别对应单个交互式语句、从文件读取的模块或命令序列、以及 eval() 函数的输入。
如果 auto_target
为 True
,此策略将内部使用 hypothesis.target()
来驱动向更大的更复杂的示例发展。我们建议保持此功能启用,因为语法相当复杂,否则只能生成简单的示例。
hypothesmith.from_node(node=libcst.Module, *, auto_target=True)
根据由 LibCST
项目定义的节点类型生成语法有效的 Python 源代码。
您可以传递 libcst.CSTNode
的任何子类型。或者,在 Hypothesmith 注册了所需的策略后,您可以使用 Hypothesis 内置的 from_type(node_type).map(lambda n: libcst.Module([n]).code
。但是,这不包括自动定位和 LibCST 的限制可能会导致生成无效的代码。
使用 Hypothesmith 发现的显著错误
- BPO-40661,新解析器的段错误 被赋予最高优先级,并阻止了 CPython 3.9 测试版 1 的计划发布。
- BPO-38953
tokenize
->untokenize
循环错误。 - BPO-42218 新 PEG 解析器中处理错误情况不当。
- 在注释中的 \r 上
lib2to3
错误 - Black 在以反斜杠结尾的文件上失败
- LibCST 中至少有三个循环错误 (搜索提交 "hypothesis")
- LibCST 生成的无效代码
变更日志
补丁说明 可在 CHANGELOG.md
中找到。
项目详细信息
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
hypothesmith-0.3.3.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 96c14802d6c8e85d8975264176878db54b28d2ed921fdbfedc2e6b8ce3c81716 |
|
MD5 | c18c367585a8b4ffffd252c71727f9c4 |
|
BLAKE2b-256 | e3f61a64114dee6c46985482c35bdbc12025db59973a0225eec47ac4d306030f |
hypothesmith-0.3.3-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fdb0172f9de97d09450da40da7da083fdd118bcd2f88b1a2289413d2d496b1b1 |
|
MD5 | 21fb494f63838043adcacc592a575da6 |
|
BLAKE2b-256 | 69bc78dcf42c6eaaf7d628f061f1e533a596f5bca2a53be2b714adc5d370d48e |