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: Compute the new indentation level for a single line.
  
  Parameters
  ----------
  line : str
    A single new line of non-whitespace, non-comment Python input.
  
  Returns
  -------
  indent_spaces : int
    New value for the indent level (it may be equal to self.indent_spaces
  if indentation doesn't change.
  
  full_dedent : boolean
    Whether the new line causes a full flush-left dedent.
code: def _find_indent(self, line):
      """Compute the new indentation level for a single line.
  
      Parameters
      ----------
      line : str
        A single new line of non-whitespace, non-comment Python input.
  
      Returns
      -------
      indent_spaces : int
        New value for the indent level (it may be equal to self.indent_spaces
      if indentation doesn't change.
  
      full_dedent : boolean
        Whether the new line causes a full flush-left dedent.
      """
      indent_spaces = self.indent_spaces
      full_dedent = self._full_dedent
  
      inisp = num_ini_spaces(line)
      if inisp < indent_spaces:
          indent_spaces = inisp
          if indent_spaces <= 0:
              # print 'Full dedent in text',self.source # dbg
              full_dedent = True
  
      if line.rstrip()[-1] == ":":
          indent_spaces += 4
      elif dedent_re.match(line):
          indent_spaces -= 4
          if indent_spaces <= 0:
              full_dedent = True
  
      # Safety
      if indent_spaces < 0:
          indent_spaces = 0
          # print 'safety' # dbg
  
      return indent_spaces, full_dedent
  
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 7 for calling the InputSplitter obj's underlying member method code with example usage: obj._find_indent(line) and returns: indent_spaces,  full_dedent