
    d                         d dl Z d dlZd dlmZ e j        j        Ze j        j        Ze j        j        Ze j        j        Z	d Z
dS )    N)wrapsc                       fd}|S )a  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
    ----------
    version : str
        version of the library when the positional arguments were deprecated

    Examples
    --------
    Deprecate passing `b` as positional argument:

    def func(a, b=1):
        pass

    @_deprecate_positional_args("v0.1.0")
    def func(a, *, b=2):
        pass

    func(1, 2)

    Notes
    -----
    This function is adapted from scikit-learn under the terms of its license. See
    licences/SCIKIT_LEARN_LICENSE
    c                     t          j                   }g g |j                                        D ]r\  }}|j        t
          t          fv r                    |           0|j        t          k    r2                    |           |j	        t          u rt          d          st                      fd            }|S )Nz.Keyword-only param without default disallowed.c            	         j         }t          |           t                    z
  }|dk    rd                    d |                   }t          j        d| d| d	 dt
          d           t          d |         | | d                    }|                    d	 |D                         | d |          i |S  | i |S )
Nr   z, z	Passing 'z' as positional argument(s) to z was deprecated in version zS and will raise an error two releases later. Please pass them as keyword arguments.   )
stacklevelc                     i | ]\  }}||	S  r
   ).0nameargs      ?lib/python3.11/site-packages/xarray/util/deprecation_helpers.py
<dictcomp>zQ_deprecate_positional_args.<locals>._decorator.<locals>.inner.<locals>.<dictcomp>j   s    CCCYT3tSCCC    )__name__lenjoinwarningswarnFutureWarningzipupdate)
argskwargsr   n_extra_args
extra_argszip_argsfunckwonly_argspos_or_kw_argsversions
         r   innerz=_deprecate_positional_args.<locals>._decorator.<locals>.innerY   s   =Dt99s>':'::La!YY{=L='ABB

  4  18   "     {=L=94;OPPCC(CCCDDDtT.L=.1<V<<<4((((r   )inspect	signature
parametersitemskindPOSITIONAL_OR_KEYWORDPOSITIONAL_ONLYappendKEYWORD_ONLYdefaultEMPTY	TypeErrorr   )r   r$   r   paramr"   r   r    r!   s   `    @@r   
_decoratorz._deprecate_positional_args.<locals>._decoratorJ   s    %d++	$/5577 	V 	VKD%z3_EEE%%d++++|++""4(((=E)) $$TUUU	t	) 	) 	) 	) 	) 	) 	) 
	), r   r
   )r!   r0   s   ` r   _deprecate_positional_argsr1   ,   s%    <& & & & &P r   )r#   r   	functoolsr   	Parameterr(   r+   r)   emptyr-   r1   r
   r   r   <module>r5      sw   D        )?  -#3F F F F Fr   