U
    ”Ê¹j  ã                   @   s€   d dl Z d dlmZ d dlmZmZ d dlmZmZ e	dœdd„Z
ddœe	ee	 ee	 d	œd
d„Zddœe	ee	 dœdd„ZdS )é    N)Úwraps)Ú	ParameterÚ	signature)ÚIterableÚOptional©Úversionc                    s   ‡ fd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                    sr   t ˆƒ‰g ‰g ‰ ˆj ¡ D ]6\}}|jtjkr:ˆ  |¡ q|jtjkrˆ |¡ qtˆƒ‡ ‡‡‡‡fdd„ƒ}|S )Nc               	      s�   t | ƒt ˆ ƒ }|dkr"ˆ| |ŽS dd„ tˆd |… | | d … ƒD ƒ}d |¡}t dˆj› d|› dˆ› d�t¡ | tˆj| ƒ¡ ˆf |ŽS )	Nr   c                 S   s8   g | ]0\}}t |tƒr&|› d |› d�n|› d|› �‘qS )z='ú'ú=)Ú
isinstanceÚstr)Ú.0ÚnameÚarg© r   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/huggingface_hub/utils/_deprecation.pyÚ
<listcomp>!   s   ÿzi_deprecate_positional_args.<locals>._inner_deprecate_positional_args.<locals>.inner_f.<locals>.<listcomp>ú, 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_argsZargs_msg)Úall_argsÚfÚkwonly_argsÚsigr   r   r   Úinner_f   s    
þ
üzU_deprecate_positional_args.<locals>._inner_deprecate_positional_args.<locals>.inner_f)	r   r   ÚitemsÚkindr   ÚPOSITIONAL_OR_KEYWORDÚappendÚKEYWORD_ONLYr   )r!   r   Úparamr$   r   )r    r!   r"   r#   r   Ú _inner_deprecate_positional_args   s    zD_deprecate_positional_args.<locals>._inner_deprecate_positional_argsr   )r   r+   r   r   r   Ú_deprecate_positional_args   s    
 r,   )Úcustom_message)r   Údeprecated_argsr-   c                    s   ‡ ‡‡fd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                    s(   t ˆ ƒ‰tˆ ƒ‡‡‡ ‡‡fdd„ƒ}|S )Nc                     s¾   g }t | ˆj ¡ ƒD ]\}}|jˆkr| |j¡ q| ¡ D ]*\}}|ˆkr<|ˆj| jkr<| |¡ q<t|ƒdkr´dˆj› dd 	|¡› dˆ› d�}ˆ d k	r¨|dˆ  7 }t
 |t¡ ˆ| |Ž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   Zused_deprecated_argsÚ_Z	parameterZ
kwarg_nameZkwarg_valueÚmessage)r-   r.   r!   r#   r   r   r   r$   K   s"    
þüÿzO_deprecate_arguments.<locals>._inner_deprecate_positional_args.<locals>.inner_f)r   r   ©r!   r$   ©r-   r.   r   )r!   r#   r   r+   H   s    z>_deprecate_arguments.<locals>._inner_deprecate_positional_argsr   )r   r.   r-   r+   r   r5   r   Ú_deprecate_arguments4   s    !r6   )r3   )r   r3   c                    s   ‡ ‡fd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                    s<   ˆ j ‰ˆdkrˆ j d¡d ‰tˆ ƒ‡ ‡‡‡fdd„ƒ}|S )NÚ__init__Ú.r   c                     sD   dˆ› dˆ j › dˆ› d�}ˆd k	r.|dˆ 7 }t |t¡ ˆ | |ŽS )Nr	   z	' (from 'z3') is deprecated and will be removed from version 'r/   ú )Ú
__module__r   r   r   )r   r   Zwarning_message)r!   r3   r   r   r   r   r$   |   s    ÿzC_deprecate_method.<locals>._inner_deprecate_method.<locals>.inner_f)r   Ú__qualname__Úsplitr   r4   ©r3   r   )r!   r   r   Ú_inner_deprecate_methodw   s    	z2_deprecate_method.<locals>._inner_deprecate_methodr   )r   r3   r>   r   r=   r   Ú_deprecate_methodl   s    r?   )r   Ú	functoolsr   Úinspectr   r   Útypingr   r   r   r,   r6   r?   r   r   r   r   Ú<module>   s   1üü8