Skip to main content

Advanced AST validation

Project description


A series of AST validators for validating the integrity of the given abstract syntax tree.


validate(tree: ast.Module, level: Optional[Literal[1, 2, 3]] = None) -> bool

tree is the AST object that you want to verify. level is an argument to pass the level of strictness, and turn on/off some of the validators. For a detailed list of validators, see the table below:

Validator Level Description
Syntatical 1 Emulates syntax warnings that are normally generated by compiler.
Simple 1 Does simple verifications, similar to PyAST_Validate interface
Symbolic 2 Emulates syntax error that are normally generated by symbol table
Contextual 3 Ensures everything is in the right context.

If there are any errors, validate() will raise a SyntaxError or issue SyntaxWarnings on the location of the target node.

import ast
import astvalidate

tree = ast.parse("""
def func():
    raise ValueError from something
tree.body[0].body[0].exc = None
assert astvalidate.validate(tree)
File "<string>", line 3
SyntaxError: Raise's cause can't be used without setting an exception

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

astvalidate-2021.12.31.tar.gz (8.5 kB view hashes)

Uploaded source

Built Distribution

astvalidate-2021.12.31-py2.py3-none-any.whl (10.7 kB view hashes)

Uploaded py2 py3

Supported by

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