The codeop module provides a function to compile Python code with hints on whether it certainly complete, possible complete or definitely incomplete. This is used by the code module and should not normally be used directly.
The codeop module defines the following function:
Try to compile source, which should be a string of Python code. 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>'.
Return None if source is not valid Python code, but is a prefix of valid Python code.
Raise an exception if there is a problem with source:
The symbol argument means whether to compile it as a statement ('single', the default) or as an expression ('eval').
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.