Python解析器
项目描述
Parso是一个支持错误恢复和往返解析的Python解析器,支持多种Python版本(在多个Python版本中)。Parso还能够列出Python文件中的多个语法错误。
Parso已通过jedi的实战测试。它从jedi中提取出来,以便其他项目也能使用。
Parso包含一个用于解析Python和分析语法树的简单API。
一个简单示例
>>> import parso
>>> module = parso.parse('hello + 1', version="3.9")
>>> expr = module.children[0]
>>> expr
PythonNode(arith_expr, [<Name: hello@1,0>, <Operator: +>, <Number: 1>])
>>> print(expr.get_code())
hello + 1
>>> name = expr.children[0]
>>> name
<Name: hello@1,0>
>>> name.end_pos
(1, 5)
>>> expr.end_pos
(1, 9)
列出多个问题
>>> grammar = parso.load_grammar()
>>> module = grammar.parse('foo +\nbar\ncontinue')
>>> error1, error2 = grammar.iter_errors(module)
>>> error1.message
'SyntaxError: invalid syntax'
>>> error2.message
"SyntaxError: 'continue' not properly in loop"
资源
安装
pip install parso
未来
将提供更好的重构和注释支持。请保持关注。
有一个正在进行的PEP8验证器。然而,它还没有处于良好的状态。
已知问题
async/await 已在Python3.6中用作关键字。
from __future__ import print_function 不会被忽略。
致谢
Guido van Rossum (@gvanrossum) 为创建解析生成器pgen2(最初用于lib2to3)。
Salome Schneider 为极好的parso标志。
变更日志
未发布
0.8.4 (2024-04-05)
添加对Python 3.13的基本支持
0.8.3 (2021-11-30)
添加对Python 3.11和3.12的基本支持
0.8.2 (2021-03-30)
各种小错误修复
0.8.1 (2020-12-10)
各种小错误修复
0.8.0 (2020-08-05)
停止支持Python 2.7、3.4和3.5
现在可以在API中使用pathlib.Path对象
占位符已移除,我们现在使用注解
namedexpr_test节点现在是一个名为NamedExpr的正确类
许多小重构
0.7.1 (2020-07-24)
修复了一些小错误(主要是Grammar.iter_errors中的语法错误检测)
这将是我们支持Python 2.7、3.4和3.5的最后一个版本。
0.7.0 (2020-04-13)
修复diff解析器中的许多讨厌的错误。模糊器运行超过24小时(500k测试)后未再发现问题。
小的语法更改:套件现在可以在换行符后包含换行符。如果你不使用错误恢复,这实际上并不重要。它允许更优雅的错误恢复。
0.6.2 (2020-02-27)
错误修复
添加Grammar.refactor(可能直到0.7.0仍可能发生变化)
0.6.1 (2020-02-03)
添加parso.normalizer.Issue.end_pos以使知道问题结束的位置
0.6.0 (2020-01-26)
停止支持Python 2.6/Python 3.3
del_stmt名称现在被视为定义(对于name.is_definition())
错误修复
0.5.2 (2019-12-15)
添加include_setitem以获取定义/是定义和获取定义名称(#66)
修复命名表达式错误列表(#89,#90)
修复一些f-string分词器问题(#93)
0.5.1 (2019-07-13)
修复:一些Unicode标识符未被正确分词
修复:f-string中的行续现在工作
0.5.0 (2019-06-20)
重大变更 comp_for现在在所有Python版本中称为sync_comp_for,以与Python 3.8 Grammar兼容
为许多parso API添加.pyi占位符
小的FileIO更改
0.4.0 (2019-04-05)
支持Python 3.8
FileIO支持,现在可以使用抽象文件IO,支持为alpha
0.3.4 (2019-02-13)
修复f-string分词器错误
0.3.3 (2019-02-06)
修复diff解析器中的异步错误
iter_errors中的修复
这是一个非常小的错误修复版本
0.3.2 (2019-01-24)
diff解析器中有20多个错误修复,分词器中有3个
为diff解析器添加了一个模糊器,以提供diff解析器处于良好状态的信心。
一些f-string的修复
0.3.1 (2018-07-09)
diff解析器和关键字仅参数的错误修复
0.3.0 (2018-06-30)
重写了pgen2解析器生成器。
0.2.1 (2018-05-21)
diff解析器的错误修复。
语法文件现在可以从特定的路径加载。
0.2.0 (2018-04-15)
f-strings现在作为正常Python语法的部分进行解析。这使得处理它们变得更容易。
0.1.1 (2017-11-05)
修复了缓存层的一些错误
添加了对Python 3.7的支持
0.1.0 (2017-09-04)
将库从Jedi中分离出来。一些API肯定会发生变化。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发版
parso-0.8.4.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d |
|
| MD5 | f83b2e4164f6589ccae39b16c30ed5de |
|
| BLAKE2b-256 | 669468e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d |
parso-0.8.4-py2.py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18 |
|
| MD5 | ecc7f583a2cfc431b3686eaa1842ba22 |
|
| BLAKE2b-256 | c6acdac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027 |