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.4.0 (2019-04-05)

  • Python 3.8 support

  • FileIO support, it’s now possible to use abstract file IO, support is alpha

0.3.4 (2018-02-13)

  • Fix an f-string tokenizer error

0.3.3 (2018-02-06)

  • Fix async errors in the diff parser

  • A fix in iter_errors

  • This is a very small bugfix release

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


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.4.0.tar.gz (388.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

parso-0.4.0-py2.py3-none-any.whl (94.3 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: parso-0.4.0.tar.gz
  • Upload date:
  • Size: 388.8 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

Hashes for parso-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2e9574cb12e7112a87253e14e2c380ce312060269d04bd018478a3c92ea9a376
MD5 2ade6b152c194ab6a3d9bc7ef65b9266
BLAKE2b-256 795270d0bb8a1f4b1475a603b4b1484bb351edda30846996fc93fe1976948fef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parso-0.4.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 94.3 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

Hashes for parso-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 17cc2d7a945eb42c3569d4564cdf49bde221bc2b552af3eca9c1aad517dcdd33
MD5 6b392de67187d9f6bd2635d4bb4b52b8
BLAKE2b-256 a7bde2f4753c5fa93932899243b4299011a757ac212e9bc8ddf062f38df4e78b

See more details on using hashes here.

Supported by

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