class_docstr: Given a series of lines, find the common prefix and strip it from them.
  
  >>> lines = [
  ...     'abcdefg\n',
  ...     'abc\n',
  ...     'abcde\n',
  ... ]
  >>> res = Stripper.strip_prefix(lines)
  >>> res.prefix
  'abc'
  >>> list(res.lines)
  ['defg\n', '\n', 'de\n']
  
  If no prefix is common, nothing should be stripped.
  
  >>> lines = [
  ...     'abcd\n',
  ...     '1234\n',
  ... ]
  >>> res = Stripper.strip_prefix(lines)
  >>> res.prefix = ''
  >>> list(res.lines)
  ['abcd\n', '1234\n']
class_docstr_tok: ["Given","a","series","of","lines",",","find","the","common","prefix","and","strip","it","from","them",".",">",">",">","lines","=","[","...","'abcdefg\\n","'",",","...","'abc\\n","'",",","...","'abcde\\n","'",",","...","]",">",">",">","res","=","Stripper.strip_prefix","(","lines",")",">",">",">","res.prefix","'abc'",">",">",">","list","(","res.lines",")","[","'defg\\n","'",",","'\\n","'",",","'de\\n","'","]","If","no","prefix","is","common",",","nothing","should","be","stripped",".",">",">",">","lines","=","[","...","'abcd\\n","'",",","...","'1234\\n","'",",","...","]",">",">",">","res","=","Stripper.strip_prefix","(","lines",")",">",">",">","res.prefix","=","``",">",">",">","list","(","res.lines",")","[","'abcd\\n","'",",","'1234\\n","'","]"]
code: def __call__(self, line):
      if not self.prefix:
          return line
      null, prefix, rest = line.partition(self.prefix)
      return rest
  
imports: import re
  import itertools
  import textwrap
  import functools
  from setuptools.extern.jaraco.functools import compose, method_cache
  from setuptools.extern.jaraco.context import ExceptionTrap
label_desc: Use image node_id 3 for calling the Stripper obj's underlying member method code with example usage: obj.__call__(line) and returns: rest, line