The codeop module provides a function to compile Python code
with hints on whether it is certainly complete, possibly complete or
definitely incomplete. This is used by the code module
and should not normally be used directly.
Tries to compile source, which should be a string of Python
code and return a code object if source is valid
Python code. In that case, the filename attribute of the code object
will be filename, which defaults to '<input>'.
Returns None if source is not valid Python
code, but is a prefix of valid Python code.
If there is a problem with source, an exception will be raised.
SyntaxError is raised if there is invalid Python syntax,
and OverflowError if there is an invalid numeric
constant.
The symbol argument determines whether source is compiled
as a statement ('single', the default) or as an expression
('eval'). Any other value will cause ValueError to
be raised.
Caveat:
It is possible (but not likely) that the parser stops parsing
with a successful outcome before reaching the end of the source;
in this case, trailing symbols may be ignored instead of causing an
error. For example, a backslash followed by two newlines may be
followed by arbitrary garbage. This will be fixed once the API
for the parser is better.