
    i                         d dl Z d dlmZ d dlmZ d dlmZmZ defdZ	dddedee         d	edz  fd
Z
dddededz  fdZdS )    N)Iterable)wraps)	Parameter	signatureversionc                       fd}|S )aB  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.

    Args:
        version (`str`):
            The version when positional arguments will result in error.
    c                 Z    t                     g g j                                        D ]Z\  }}|j        t          j        k    r                    |           0|j        t          j        k    r                    |           [t                      fd            }|S )Nc            	         t          |           t                    z
  }|dk    r | i |S d t          d |         | | d                    D             }d                    |          }t          j        dj         d| d dt                     |                    t          j        |                       di |S )	Nr   c                 \    g | ])\  }}t          |t                    r| d | dn| d| *S )z=''=)
isinstancestr).0nameargs      c/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/huggingface_hub/utils/_deprecation.py
<listcomp>zi_deprecate_positional_args.<locals>._inner_deprecate_positional_args.<locals>.inner_f.<locals>.<listcomp>!   s[       D# &0S%9%9N4!!3!!!!$      , z+Deprecated positional argument(s) used in 'z': pass z as keyword args. From version z? passing these as positional arguments will result in an error, )	lenzipjoinwarningswarn__name__FutureWarningupdate
parameters)	argskwargs
extra_argsargs_msgall_argsfkwonly_argssigr   s	       r   inner_fzU_deprecate_positional_args.<locals>._inner_deprecate_positional_args.<locals>.inner_f   s   TS]]2JQq$)&))) !$[*%=tZKLL?Q!R!R  H yy**HMDaj D DD D=DD D D 	   MM#cnd334441;;v;;r   )	r   r    itemskindr   POSITIONAL_OR_KEYWORDappendKEYWORD_ONLYr   )r&   r   paramr)   r%   r'   r(   r   s   `   @@@r    _inner_deprecate_positional_argszD_deprecate_positional_args.<locals>._inner_deprecate_positional_args   s    ll>//11 	) 	)KD%zY<<<%%%%y555""4(((	q	 	 	 	 	 	 	 	 
	& r   r   )r   r0   s   ` r   _deprecate_positional_argsr1      s%        @ ,+r   )custom_messagedeprecated_argsr2   c                       fd}|S )a  Decorator to issue warnings when using deprecated arguments.

    TODO: could be useful to be able to set a custom error message.

    Args:
        version (`str`):
            The version when deprecated arguments will result in error.
        deprecated_args (`list[str]`):
            List of the arguments to be deprecated.
        custom_message (`str`, *optional*):
            Warning message that is raised. If not passed, a default warning message
            will be created.
    c                 f     t                     t                      fd            }|S )Nc                      g }t          | j                                                  D ](\  }}|j        	v r|                    |j                   )|                                D ]4\  }}|	v r+|j        |         j        k    r|                    |           5t          |          dk    rHd
j         dd	                    |           d d}|dz   z  }t          j        |t                      
| i |S )Nr   z Deprecated argument(s) used in 'z': r   z&. Will not be supported from version ''.z

)r   r    valuesr   r-   r*   defaultr   r   r   r   r   r   )r!   r"   used_deprecated_args_	parameter
kwarg_namekwarg_valuemessager2   r3   r&   r(   r   s           r   r)   zO_deprecate_arguments.<locals>._inner_deprecate_positional_args.<locals>.inner_fK   sG    $&  #D#.*?*?*A*A B B @ @9>_44(//	???+1<<>> < <'
K /11#s~j'A'III(//
;;; '((1,,-qz - -		"677- -!(- - - 
 "-v66Gg}5551d%f%%%r   )r   r   )r&   r)   r(   r2   r3   r   s   ` @r   r0   z>_deprecate_arguments.<locals>._inner_deprecate_positional_argsH   sT    ll	q	& 	& 	& 	& 	& 	& 	& 	& 
	&6 r   r   )r   r3   r2   r0   s   ``` r   _deprecate_argumentsr@   4   s1    (      B ,+r   )r?   r?   c                       fd}|S )aC  Decorator to issue warnings when using a deprecated method.

    Args:
        version (`str`):
            The version when deprecated arguments will result in error.
        message (`str`, *optional*):
            Warning message that is raised. If not passed, a default warning message
            will be created.
    c                       j         dk    r  j                            d          d         t                      fd            }|S )N__init__.r   c                  ~    d dj          d d}|dz   z  }t          j        |t                      | i |S )Nr   z	' (from 'z3') is deprecated and will be removed from version 'r7    )
__module__r   r   r   )r!   r"   warning_messager&   r?   r   r   s      r   r)   zC_deprecate_method.<locals>._inner_deprecate_method.<locals>.inner_f|   si     pDoo1<oodkooo  "3=0M/=9991d%f%%%r   )r   __qualname__splitr   )r&   r)   r   r?   r   s   ` @r   _inner_deprecate_methodz2_deprecate_method.<locals>._inner_deprecate_methodw   sp    z:>'',,Q/D	q	& 	& 	& 	& 	& 	& 	& 
	& r   r   )r   r?   rK   s   `` r   _deprecate_methodrL   l   s*         " #"r   )r   collections.abcr   	functoolsr   inspectr   r   r   r1   r@   rL   r   r   r   <module>rP      s     $ $ $ $ $ $       ( ( ( ( ( ( ( (*,3 *, *, *, *,b "&	5, 5, 5,5, c]5, $J	5, 5, 5, 5,p >B # # ## #d
 # # # # # #r   