parameters: (self, func, args, kws)
return_statement: return res
docstring: Resolve function type *func* for argument types *args* and *kws*.
          A signature is returned.
docstring_summary: Resolve function type *func* for argument types *args* and *kws*.
          A signature is returned.
docstring_tokens: Resolve function type * func * for argument types * args * and * kws * . A signature is returned .
function: def resolve_function_type(self, func, args, kws):
          """
          Resolve function type *func* for argument types *args* and *kws*.
          A signature is returned.
          """
          # Prefer user definition first
          try:
              res = self._resolve_user_function_type(func, args, kws)
          except errors.TypingError as e:
              # Capture any typing error
              last_exception = e
              res = None
          else:
              last_exception = None
  
          # Return early we there's a working user function
          if res is not None:
              return res
  
          # Check builtin functions
          res = self._resolve_builtin_function_type(func, args, kws)
  
          # Re-raise last_exception if no function type has been found
          if res is None and last_exception is not None:
              raise last_exception
  
          return res
function_tokens: def resolve_function_type ( self , func , args , kws ) : # Prefer user definition first try : res = self . _resolve_user_function_type ( func , args , kws ) except errors . TypingError as e : # Capture any typing error last_exception = e res = None else : last_exception = None # Return early we there's a working user function if res is not None : return res # Check builtin functions res = self . _resolve_builtin_function_type ( func , args , kws ) # Re-raise last_exception if no function type has been found if res is None and last_exception is not None : raise last_exception return res