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(),
class_docstr_tok: ["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.
docstr_tok: ["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.get_indent_spaces()
          else:
              return "complete", None
      finally:
          self.reset()
  
imports: from warnings import warn
  import ast
  import codeop
  import io
  import re
  import sys
  import tokenize
  import warnings
  from typing import List, Tuple, Union, Optional
  from types import CodeType
  from IPython.core.inputtransformer import leading_indent, classic_prompt, ipy_prompt, cellmagic, assemble_logical_lines, help_end, escaped_commands, assign_from_magic, assign_from_system, assemble_python_lines
  from IPython.utils import tokenutil
  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