Skip to main content

A Python Parser

Project description

Travis-CI build status Coverage Status https://raw.githubusercontent.com/davidhalter/parso/master/docs/_static/logo_characters.png

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.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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parso-0.2.0.tar.gz (380.5 kB view details)

Uploaded Source

Built Distribution

parso-0.2.0-py2.py3-none-any.whl (91.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file parso-0.2.0.tar.gz.

File metadata

  • Download URL: parso-0.2.0.tar.gz
  • Upload date:
  • Size: 380.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for parso-0.2.0.tar.gz
Algorithm Hash digest
SHA256 62bd6bf7f04ab5c817704ff513ef175328676471bdef3629d4bdd46626f75551
MD5 8ea720c01dfb9b72f70ae089c2fd5acb
BLAKE2b-256 fd916b2d72e37c8f83d54354a46f05d6a8b07a491fe6b605ea78ccf83d9d39b9

See more details on using hashes here.

File details

Details for the file parso-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for parso-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a75a304d7090d2c67bd298091c14ef9d3d560e3c53de1c239617889f61d1d307
MD5 3925c86f2471e23724085f6dd0358cfd
BLAKE2b-256 63690c383765d192006330bfaae27a2c5d0933fb4760c5aacd933b8b19391693

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page