class_docstr: An object that can accumulate lines of Python source before execution.
  
  This object is designed to be fed python source line-by-line, using
  :meth:`push`. It will return on each push whether the currently pushed
  code could be executed already. In addition, it provides a method called
  :meth:`push_accepts_more` that can be used to query whether more input
  can be pushed into a single interactive block.
  
  This is a simple example of how an interactive terminal-based client can use
  this tool::
  
      isp = InputSplitter()
      while isp.push_accepts_more():
          indent = ' '*isp.indent_spaces
          prompt = '>>> ' + indent
          line = indent + raw_input(prompt)
          isp.push(line)
      print 'Input source was:\n', isp.source_reset(),
docstr: Return whether a block of code is ready to execute, or should be continued
  
  This is a non-stateful API, and will reset the state of this InputSplitter.
  
  Parameters
  ----------
  source : string
    Python input code, which can be multiline.
  
  Returns
  -------
  status : str
    One of 'complete', 'incomplete', or 'invalid' if source is not a
    prefix of valid code.
  indent_spaces : int or None
    The number of spaces by which to indent the next line of code. If
    status is not 'incomplete', this is None.
code: def check_complete(self, source):
      """Return whether a block of code is ready to execute, or should be continued
  
      This is a non-stateful API, and will reset the state of this InputSplitter.
  
      Parameters
      ----------
      source : string
        Python input code, which can be multiline.
  
      Returns
      -------
      status : str
        One of 'complete', 'incomplete', or 'invalid' if source is not a
        prefix of valid code.
      indent_spaces : int or None
        The number of spaces by which to indent the next line of code. If
        status is not 'incomplete', this is None.
      """
      self.reset()
      try:
          self.push(source)
      except SyntaxError:
          # Transformers in IPythonInputSplitter can raise SyntaxError,
          # which push() will not catch.
          return "invalid", None
      else:
          if self._is_invalid:
              return "invalid", None
          elif self.push_accepts_more():
              return "incomplete", self.indent_spaces
          else:
              return "complete", None
      finally:
          self.reset()
  
imports: import ast
  import codeop
  import re
  import sys
  import warnings
  from IPython.utils.py3compat import cast_unicode
  from IPython.core.inputtransformer import leading_indent, classic_prompt, ipy_prompt, strip_encoding_cookie, cellmagic, assemble_logical_lines, help_end, escaped_commands, assign_from_magic, assign_from_system, assemble_python_lines
  from IPython.core.inputtransformer import ESC_SHELL, ESC_SH_CAP, ESC_HELP, ESC_HELP2, ESC_MAGIC, ESC_MAGIC2, ESC_QUOTE, ESC_QUOTE2, ESC_PAREN, ESC_SEQUENCES
label_desc: Use image node_id 4 for calling the InputSplitter obj's underlying member method code with example usage: obj.check_complete(source) and returns: str,  None, str,  None, str,  self, str,  None