
    g                         d dl Z d dlmZ d dlmZmZ d dlmZmZ de	fdZ
ddde	dee	   d	ee	   fd
Zddde	dee	   fdZy)    N)wraps)	Parameter	signature)IterableOptional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                 \    t               g g j                  j                         D ]c  \  }}|j                  t        j
                  k(  rj                  |       5|j                  t        j                  k(  sSj                  |       e t                fd       }|S )Nc            	         t        |       t              z
  }|dk  r | i |S t        d | | | d        D cg c]$  \  }}t        |t              r| d| dn| d| & }}}dj	                  |      }t        j                  dj                   d| d
 d	t               |j                  t        	j                  |               d
i |S c c}}w )Nr   z=''=, 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
isinstancestrjoinwarningswarn__name__FutureWarningupdate
parameters)argskwargs
extra_argsnameargargs_msgall_argsfkwonly_argssigr   s         W/var/www/openai/venv/lib/python3.12/site-packages/huggingface_hub/utils/_deprecation.pyinner_fzU_deprecate_positional_args.<locals>._inner_deprecate_positional_args.<locals>.inner_f   s   TS]2JQ$)&)) "%[*%=tZKL?Q!R!RID# &0S%94&3%q!$qN!R   yy*HMM=ajj\ J:<WI FDD 	 MM#cnnd34;v;s   )C)	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    l>>//1KD%zzY<<<%y555""4(	 2 
q	 
	&     r   )r   r-   s   ` r%   _deprecate_positional_argsr/      s    @ ,+r.   )custom_messagedeprecated_argsr0   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                 P     t               t                fd       }|S )Nc                     g }t        | j                  j                               D ]/  \  }}|j                  	v s|j	                  |j                         1 |j                         D ]8  \  }}|	v s|j                  |   j                  k7  s(|j	                  |       : t        |      dkD  rId
j                   ddj                  |       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messager0   r1   r"   r$   r   s           r%   r&   zO_deprecate_arguments.<locals>._inner_deprecate_positional_args.<locals>.inner_fK   s    $&  #D#..*?*?*A B9>>_4(//	? !C ,2<<>'
K /1#s~~j'A'I'II(//
; ,: '(1,6qzzl C		"678 9!!(	- 
 "-v66Gg}5d%f%%r.   )r   r   )r"   r&   r$   r0   r1   r   s   ` @r%   r-   z>_deprecate_arguments.<locals>._inner_deprecate_positional_argsH   s)    l	q	& 
	&6 r.   r   )r   r1   r0   r-   s   ``` r%   _deprecate_argumentsr>   4   s    (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                  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 'r5    )
__module__r   r   r   )r   r   warning_messager"   r=   r   r   s      r%   r&   zC_deprecate_method.<locals>._inner_deprecate_method.<locals>.inner_f|   s^     D61<<.0cdkcllno  "3=0MM/=9d%f%%r.   )r   __qualname__splitr   )r"   r&   r   r=   r   s   ` @r%   _inner_deprecate_methodz2_deprecate_method.<locals>._inner_deprecate_methodw   sJ    zz:>>'',Q/D	q	& 
	& r.   r   )r   r=   rI   s   `` r%   _deprecate_methodrJ   l   s    " #"r.   )r   	functoolsr   inspectr   r   typingr   r   r   r/   r>   rJ   r   r.   r%   <module>rN      sk      ( %*,3 *,b %)	5,5, c]5, SM	5,p AE ## # #r.   