parameters: (fn)
return_statement: return tuple(tf_inspect.getargspec(fn).args)
docstring: Get argument names for function-like object.
  
    Args:
      fn: Function, or function-like object (e.g., result of `functools.partial`).
  
    Returns:
      `tuple` of string argument names.
  
    Raises:
      ValueError: if partial function has positionally bound arguments
docstring_summary: Get argument names for function-like object.
docstring_tokens: Get argument names for function - like object .
function: def _model_fn_args(fn):
    """Get argument names for function-like object.
  
    Args:
      fn: Function, or function-like object (e.g., result of `functools.partial`).
  
    Returns:
      `tuple` of string argument names.
  
    Raises:
      ValueError: if partial function has positionally bound arguments
    """
    _, fn = tf_decorator.unwrap(fn)
    if hasattr(fn, 'func') and hasattr(fn, 'keywords') and hasattr(fn, 'args'):
      # Handle functools.partial and similar objects.
      return tuple([
          arg for arg in tf_inspect.getargspec(fn.func).args[len(fn.args):]
          if arg not in set(fn.keywords.keys())
      ])
    # Handle function.
    return tuple(tf_inspect.getargspec(fn).args)
function_tokens: def _model_fn_args ( fn ) : _ , fn = tf_decorator . unwrap ( fn ) if hasattr ( fn , 'func' ) and hasattr ( fn , 'keywords' ) and hasattr ( fn , 'args' ) : # Handle functools.partial and similar objects. return tuple ( [ arg for arg in tf_inspect . getargspec ( fn . func ) . args [ len ( fn . args ) : ] if arg not in set ( fn . keywords . keys ( ) ) ] ) # Handle function. return tuple ( tf_inspect . getargspec ( fn ) . args )