(f)
return inner_f
Decorator for methods that issues warnings for positional arguments

    Using the keyword-only argument syntax in pep 3102, arguments after the
    * will issue a warning when passed as a positional argument.

    Parameters
    ----------
    f : function
        function to check arguments on.
Decorator for methods that issues warnings for positional arguments
Decorator for methods that issues warnings for positional arguments
def _deprecate_positional_args(f):
    """Decorator for methods that issues warnings for positional arguments

    Using the keyword-only argument syntax in pep 3102, arguments after the
    * will issue a warning when passed as a positional argument.

    Parameters
    ----------
    f : function
        function to check arguments on.
    """
    sig = signature(f)
    kwonly_args = []
    all_args = []

    for name, param in sig.parameters.items():
        if param.kind == Parameter.POSITIONAL_OR_KEYWORD:
            all_args.append(name)
        elif param.kind == Parameter.KEYWORD_ONLY:
            kwonly_args.append(name)

    @wraps(f)
    def inner_f(*args, **kwargs):
        extra_args = len(args) - len(all_args)
        if extra_args > 0:
            # ignore first 'self' argument for instance methods
            args_msg = [
                f"{name}={arg}"
                for name, arg in zip(kwonly_args[:extra_args], args[-extra_args:])
            ]
            warnings.warn(
                f"Pass {', '.join(args_msg)} as keyword args. From version 0.9 "
                f"passing these as positional arguments will "
                f"result in an error",
                FutureWarning,
            )
        kwargs.update({k: arg for k, arg in zip(sig.parameters, args)})
        return f(**kwargs)

    return inner_f
def _deprecate_positional_args ( f ) : sig = signature ( f ) kwonly_args = [ ] all_args = [ ] for name , param in sig . parameters . items ( ) : if param . kind == Parameter . POSITIONAL_OR_KEYWORD : all_args . append ( name ) elif param . kind == Parameter . KEYWORD_ONLY : kwonly_args . append ( name ) @ wraps ( f ) def inner_f ( * args , * * kwargs ) : extra_args = len ( args ) - len ( all_args ) if extra_args > 0 : # ignore first 'self' argument for instance methods args_msg = [ f"{name}={arg}" for name , arg in zip ( kwonly_args [ : extra_args ] , args [ - extra_args : ] ) ] warnings . warn ( f"Pass {', '.join(args_msg)} as keyword args. From version 0.9 " f"passing these as positional arguments will " f"result in an error" , FutureWarning , ) kwargs . update ( { k : arg for k , arg in zip ( sig . parameters , args ) } ) return f ( * * kwargs ) return inner_f