A Python Parser
Project description
Parso is a Python parser that supports error recovery and round-trip parsing for different Python versions (in multiple Python versions). Parso is also able to list multiple syntax errors in your python file.
Parso has been battle-tested by jedi. It was pulled out of jedi to be useful for other projects as well.
Parso consists of a small API to parse Python and analyse the syntax tree.
A simple example:
>>> import parso
>>> module = parso.parse('hello + 1', version="3.6")
>>> 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)
To list multiple issues:
>>> 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"
Resources
Installation
pip install parso
Future
There will be better support for refactoring and comments. Stay tuned.
There’s a WIP PEP8 validator. It’s however not in a good shape, yet.
Known Issues
async/await are already used as keywords in Python3.6.
from __future__ import print_function is not ignored.
Acknowledgements
Guido van Rossum (@gvanrossum) for creating the parser generator pgen2 (originally used in lib2to3).
Salome Schneider for the extremely awesome parso logo.
Changelog
0.3.2 (2018-01-24)
20+ bugfixes in the diff parser and 3 in the tokenizer
A fuzzer for the diff parser, to give confidence that the diff parser is in a good shape.
Some bugfixes for f-string
0.3.1 (2018-07-09)
Bugfixes in the diff parser and keyword-only arguments
0.3.0 (2018-06-30)
Rewrote the pgen2 parser generator.
0.2.1 (2018-05-21)
A bugfix for the diff parser.
Grammar files can now be loaded from a specific path.
0.2.0 (2018-04-15)
f-strings are now parsed as a part of the normal Python grammar. This makes it way easier to deal with them.
0.1.1 (2017-11-05)
Fixed a few bugs in the caching layer
Added support for Python 3.7
0.1.0 (2017-09-04)
Pulling the library out of Jedi. Some APIs will definitely change.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file parso-0.3.2.tar.gz
.
File metadata
- Download URL: parso-0.3.2.tar.gz
- Upload date:
- Size: 387.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.9.1 setuptools/20.7.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.5.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b8f9ed80c3a4a3191aa3261505d868aa552dd25649cb13a7d73b6b7315edf2d |
|
MD5 | feb32694159dfba20c8ad7eab80189d5 |
|
BLAKE2b-256 | 2250fa4ffb9b7e0b52f0bea19e5fcc9759eda369efa43a4e4a534a5cf9a00e71 |
File details
Details for the file parso-0.3.2-py2.py3-none-any.whl
.
File metadata
- Download URL: parso-0.3.2-py2.py3-none-any.whl
- Upload date:
- Size: 93.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.9.1 setuptools/20.7.0 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.5.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a120be2e8863993b597f1c0437efca799e90e0793c98ae5d4e34ebd00140e31 |
|
MD5 | a6f40ff9afae55c94d7476401288bd42 |
|
BLAKE2b-256 | 49f65108eb2c490c57d7ca3ac013e03e5c50f195aa1749b17a1fe553d63a37c2 |