
    Di                        d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlZd d	lmZ d d
lmZ e	r"d dlmZ d dlmZ d dlmZ  ed      Z e
d      ZddZddZdd	 	 	 	 	 	 	 	 	 ddZy)    )annotations)wraps)	Parameter)	signature)Any)TYPE_CHECKING)TypeVarN)_validate_two_version)_validate_version)Callable)Sequence)	ParamSpec_P_Tc                    t        |       j                  }|j                         D cg c]=  \  }}|j                  t        j
                  k(  r|j                  |j                  k(  r|? }}}|S c c}}w N)r   
parametersitemsdefaultr   emptykindPOSITIONAL_OR_KEYWORD)funcparamsnameppositional_arg_namess        e/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/optuna/_convert_positional_args.py_get_positional_arg_namesr      si    t_''F ||~D!99	'AFFa6M6M,M 	 
  s   AA0c                P    t        ||       D ci c]  \  }}||
 }}}|S c c}}w r   )zip)previous_positional_arg_namesargsvalarg_nameinferred_kwargss        r   _infer_kwargsr'   #   s1    :=dDa:bchx}cOc ds   "   )warning_stacklevelc                     <t        d      t        d      t               t               t               d fd}|S )a  Convert positional arguments to keyword arguments.

    Args:
        previous_positional_arg_names:
            List of names previously given as positional arguments.
        warning_stacklevel:
            Level of the stack trace where decorated function locates.
        deprecated_version:
            The version in which the use of positional arguments is deprecated.
        removed_version:
            The version in which the use of positional arguments will be removed.
    zFdeprecated_version must not be None when removed_version is specified.zFremoved_version must not be None when deprecated_version is specified.c                    t              j                  t        t               j                              s1J t               dt        t               j                                t	               d fd       }|S )Nz is not a subset of c                    g }t              }t        	g|  }t        |      t        |      kD  rgt        |      t        |      z
  }|j	                  j
                   d| d       s
r+|j	                  d	 dj
                   d d
 d d       |r+t        j                  d	j                  |      t        
       t        |       t        	      kD  r0t        j
                   dt        	       dt        |        d      t        |      j                  |      }t        |      rt        j
                   d| d      |j                  |        di |S )Nz() got zQ as positional arguments but they were expected to be given as keyword arguments.zPositional arguments z in z() have been deprecated since vzE. They will be replaced with the corresponding keyword arguments in vzf, so please use the keyword specification instead. See https://github.com/optuna/optuna/releases/tag/vz for details.
)
stacklevelz	() takes z positional arguments but z were given.z%() got multiple values for arguments . )r   r'   lensetappend__name__warningswarnjoinFutureWarning	TypeErrorintersectionupdate)r#   kwargswarning_messagesr   r&   expected_kwdsduplicated_kwdsdeprecated_versionr   r"   removed_versionr)   s          r   converter_wrapperzOconvert_positional_args.<locals>.converter_decorator.<locals>.converter_wrapperP   s   !#<T#B +,IQDQO?#c*>&?? #O 4s;O7P P ''}}oW]O <O O
 &$++/0M/N O"mm_ -./ 0+, - //}>	  II./K] 4y3<==}}oYs3P/Q.R S&&)$i[> 
 "&k66GO?#  }}o%J?J[[\]  MM/*>&>!    )r#   r   r<   r   returnz'_T')r2   issubsetr   r   r   )r   rB   r@   r"   rA   r)   s   ` r   converter_decoratorz4convert_positional_args.<locals>.converter_decoratorJ   s    01::3y?Y?Y;Z[ 	
012 3IdO../02	
[
 
t.	" .	" 
.	"` ! rC   )r   'Callable[_P, _T]'rD   rG   )
ValueErrorr   r
   )r"   r@   rA   r)   rF   s   ```` r   convert_positional_argsrI   (   so    ( %)D%X  "X  	,-/*0/B7! 7!r rC   )r   rG   rD   z	list[str])r"   Sequence[str]r#   r   rD   zdict[str, Any])
r"   rJ   r@   strrA   rK   r)   intrD   z0'Callable[[Callable[_P, _T]], Callable[_P, _T]]')
__future__r   	functoolsr   inspectr   r   typingr   r   r	   r5   optuna._deprecatedr
   optuna._experimentalr   collections.abcr   r   typing_extensionsr   r   r   r   r'   rI   r0   rC   r   <module>rU      s    "         4 2 ((+	4B	B   [#0[ [ 	[
 [ 6[rC   