code: def dedent(source, use_tabs=False):
      
      if use_tabs:
          indent_char = '\t'
      else:
          indent_char = ' '
      io_obj = io.StringIO(source)
      out = ""
      last_lineno = -1
      last_col = 0
      prev_start_line = 0
      indentation = ""
      indentation_level = 0
      for i, tok in enumerate(tokenize.generate_tokens(io_obj.readline)):
          token_type = tok[0]
          token_string = tok[1]
          start_line, start_col = tok[2]
          end_line, end_col = tok[3]
          if start_line > last_lineno:
              last_col = 0
          if token_type == tokenize.INDENT:
              indentation_level += 1
              continue
          if token_type == tokenize.DEDENT:
              indentation_level -= 1
              continue
          indentation = indent_char * indentation_level
          if start_line > prev_start_line:
              if token_string in (',', '.'):
                  out += str(token_string)
              else:
                  out += indentation + str(token_string)
          elif start_col > last_col:
              out += indent_char + str(token_string)
          else:
              out += token_string
          prev_start_line = start_line
          last_col = end_col
          last_lineno = end_line
      return out
docs: Minimizes indentation to save precious bytes.  Optionally, *use_tabs*
      may be specified if you want to use tabulators (\t) instead of spaces.
  
      Example::
  
          def foo(bar):
              test = "This is a test"
  
      Will become::
  
          def foo(bar):
           test = "This is a test"