parameters: (callable_)
return_statement: return func, firstArg
docstring: Given a callable, return (offset, func) where func is the
      function corresponding to callable, and offset is 0 or 1 to 
      indicate whether the function's first argument is 'self' (1)
      or not (0). Raises ValueError if callable_ is not of a
      recognized type (function, method or has __call__ method).
docstring_summary: Given a callable, return (offset, func) where func is the
      function corresponding to callable, and offset is 0 or 1 to 
      indicate whether the function's first argument is 'self' (1)
      or not (0). Raises ValueError if callable_ is not of a
      recognized type (function, method or has __call__ method).
docstring_tokens: Given a callable return ( offset func ) where func is the function corresponding to callable and offset is 0 or 1 to indicate whether the function s first argument is self ( 1 ) or not ( 0 ) . Raises ValueError if callable_ is not of a recognized type ( function method or has __call__ method ) .
function: def getRawFunction(callable_):
      """Given a callable, return (offset, func) where func is the
      function corresponding to callable, and offset is 0 or 1 to 
      indicate whether the function's first argument is 'self' (1)
      or not (0). Raises ValueError if callable_ is not of a
      recognized type (function, method or has __call__ method)."""
      firstArg = 0
      if isfunction(callable_):
          #print 'Function', getID(callable_)
          func = callable_
      elif ismethod(callable_):
          #print 'Method', getID(callable_)
          func = callable_
          if func.__self__ is not None:
              # Method is bound, don't care about the self arg
              firstArg = 1
      elif hasattr(callable_, '__call__'):
          #print 'Functor', getID(callable_)
          func = callable_.__call__
          firstArg = 1  # don't care about the self arg
      else:
          msg = 'type "%s" not supported' % type(callable_).__name__
          raise ValueError(msg)
      
      return func, firstArg
function_tokens: def getRawFunction ( callable_ ) : firstArg = 0 if isfunction ( callable_ ) : #print 'Function', getID(callable_) func = callable_ elif ismethod ( callable_ ) : #print 'Method', getID(callable_) func = callable_ if func . __self__ is not None : # Method is bound, don't care about the self arg firstArg = 1 elif hasattr ( callable_ , '__call__' ) : #print 'Functor', getID(callable_) func = callable_ . __call__ firstArg = 1 # don't care about the self arg else : msg = 'type "%s" not supported' % type ( callable_ ) . __name__ raise ValueError ( msg ) return func , firstArg