
    Diц                    :   U d Z ddlmZ ddlZddlmZ ddlmZ ddlZddlmZ ddl	Z	ddl
Z
ddlZddlZddlZddlmZ ddlZddlZddl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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%  ed      Z&dZ'dDdZ(dEdZ)dFdZ*	 	 	 	 	 	 	 	 dGdZ+ G d de      Z, G d d      Z-dHdZ.dHdZ/	 	 	 	 	 	 	 	 	 	 dId Z0 G d! d"      Z1 G d# d$e1      Z2 G d% d&e1      Z3 G d' d(e1      Z4 G d) d*e1      Z5 G d+ d,e1      Z6 G d- d.e1      Z7 G d/ d0e1      Z8 G d1 d2e1      Z9 G d3 d4e1      Z: G d5 d6e1      Z; G d7 d8e1      Z<e2e3e4e5e6e7e8e9e:e;e<d9Z=d:e>d;<   dJd<Z?dKd=Z@	 	 	 	 	 	 dLd>ZAdMdNd?ZBdOd@ZCdPdAZDdPdBZEdQdCZFy)RzfOptuna CLI module.
If you want to add a new command, you also need to update the constant `_COMMANDS`
    )annotationsN)ArgumentParser)	Namespace)Enum)Any)_LazyImport)optuna_warn)CLIUsageError)ExperimentalWarning)BaseStorage)JournalFileStorage)JournalRedisStorage)JournalStorage)
RDBStorage)JournalFileBackend)JournalRedisBackend)
TrialStatezoptuna.study._dataframez%Y-%m-%d %H:%M:%Sc                    | | S t         j                  j                  d      }|t        dt               |S t        d      )NOPTUNA_STORAGEzSpecifying the storage url via 'OPTUNA_STORAGE' environment variable is an experimental feature. The interface can change in the future.zStorage URL is not specified.)osenvirongetr	   r   r
   )storage_urlenv_storages     P/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/optuna/cli.py_check_storage_urlr   *   sL    **..!12KS	

 
7
88    c                   t        |       } |r|t        j                  k(  rt        t        |             S |t        j                  k(  rt        t	        |             S |t
        j                  k(  rt        t        |             S |t        j                  k(  rt        t        |             S |t        j                  k(  rt        |       S t        d      | j                  d      rt        t        |             S t        j                  j                  |       rt        t        |             S 	 t        |       S # t        j                  j                  $ r t        d      w xY w)NzUnsupported storage classredisz.Failed to guess storage class from storage_url)r   r   __name__r   r   r   r   r   r
   
startswithr   pathisfile
sqlalchemyexcArgumentError)r   storage_classs     r   _get_storager(   9   s,   $[1K/888!"5k"BCC/888!"5k"BCC.777!"4["ABB.777!"4["ABBJ///k**788g&1+>??	ww~~k"0=>>N+&&>>'' NLMMNs   ,
D7 7)E c                   | t        | t        t        f      r| S t        | t        j                        r| j	                  t
              S t        | t              rt        d | D              S t        | t              rt        d | D              S t        | t              r6| j                         D ci c]  \  }}t        |      t        |       c}}S t        |       S c c}}w )Nc              3  2   K   | ]  }t        |        y wN_format_value.0vs     r   	<genexpr>z _format_value.<locals>.<genexpr>Y   s     4M!$4   c              3  2   K   | ]  }t        |        y wr+   r,   r.   s     r   r1   z _format_value.<locals>.<genexpr>[   s     5!]1%5r2   )
isinstanceintfloatdatetimestrftime_DATETIME_FORMATlisttupledictitemsr-   str)valuekr0   s      r   r-   r-   R   s    }
53,7	E8,,	-~~.//	E4	 4e444	E5	!5u555	E4	 ?D{{}Mtq!a -"22MM5z Ns   1Cc                h   g }g }|r3|D ]  d   dk7  r|j                  d    dd           (t        fd| D              rPd}| D ]  }|v st        |t        |               }! t	        |      D ]  }|j                  d    d|         |j                  d           | D ]  }i }|D ]l  |vrt        |         }	d   dk7  r|	|d    dd    <   /t        fd| D              r!t        |	      D ]  \  }}
|
|d    d| <    d|	|d    <   n |j                  |        ||fS |D ]  d   |vs|j                  d            | D ]  }|D ci c]  }|i  }}|D ]  |vrt        |         }	t        d   t              rX|d      i k(  rg |d   <   |d   xx   d gt        d   dz   t        |d            z
  d      z  z  cc<   |	|d      d   <   d   dk7  r|	|d      d   <   |	|d   <    |j                  |        ||fS c c}w )N    r   _c              3  h   K   | ])  }t        |j                        t        t        f       + y wr+   r4   r   r:   r;   r/   recordcolumns     r   r1   z#_convert_to_dict.<locals>.<genexpr>k   s%     YvZ

6 2T5MBY   /2c              3  h   K   | ])  }t        |j                        t        t        f       + y wr+   rF   rG   s     r   r1   z#_convert_to_dict.<locals>.<genexpr>|   s%     ]6FJJv$6uF]rJ   )	appendanymaxlenranger-   	enumerater4   r5   )recordscolumnsflattenheaderret
max_lengthrH   irowr?   r0   column_nameattrsrI   s                @r   _convert_to_dictr\   b   s    F
C 	)FayB1VAYK89YQXYY
% JF'%(S5H%I
J z* 6AMMVAYKq"456 fQi(	)  	FC! 
0'%fVn5!9?6;C6!9+Qvayk23]U\]] )% 0 4123vayk1#./4 +0C6!9+'
0 JJsO	J ;-  	)Fay&fQi(	)  	FHN$O["_$OE$O! -'%fVn5fQi- VAY'2-+-fQi(&)$VAY]SvVWyIYEZ5Z\]1^(^^$27E&)$VAY/AY"_27E&)$VAY/',E&)$- JJu#	& ;% %Ps   (
H/c                      e Zd ZdZdZdZy)	ValueTyper   rB      N)r    
__module____qualname__NONENUMERICSTRING r   r   r^   r^      s    DGFr   r^   c                  ,    e Zd ZddZddZddZd	dZy)
	CellValuec                    || _         |t        j                  | _        y t	        |t
        t        f      rt        j                  | _        y t        j                  | _        y r+   )	r?   r^   rb   
value_typer4   r5   r6   rc   rd   )selfr?   s     r   __init__zCellValue.__init__   sA    
='nnDOU|,'//DO'..DOr   c                    t        | j                  t        j                        r| j                  j                  t              S t        | j                        S r+   )r4   r?   r7   r8   r9   r>   rj   s    r   __str__zCellValue.__str__   s:    djj("3"34::&&'788tzz?"r   c                >    t        t        | j                              S r+   )rO   r>   r?   rm   s    r   widthzCellValue.width   s    3tzz?##r   c                    t        | j                        }| j                  d|z  S |t        j                  k(  r|d| dS |d| dS )N >rC   <)r>   r?   r^   rc   )rj   ri   rp   r?   s       r   
get_stringzCellValue.get_string   sW    DJJ::;9,,,AeW@9%&AeW@9%&r   N)r?   r   returnNone)rv   r>   rv   r5   )ri   r^   rp   r5   rv   r>   )r    r`   ra   rk   rn   rp   ru   re   r   r   rg   rg      s    /#$'r   rg   c                    g }| D ][  }g }|D ]2  }|j                  |j                  |      t        ||         nd       4 |j                  dj                  |             ] dj                  |      S )NrC   rr   
)rL   r   r>   join)rR   rU   valuesrH   rY   rZ   s         r   _dump_valuer}      s|    F %! 	`K JJ6::k3J3Vs6+./\^_		`
 	chhsm$% 99Vr   c           
        g }| D ]E  }g }|D ]+  }|j                  t        |j                  |                   - |j                  |       G d}d}|D cg c]  }d }	}t        t	        |            D ]  |D cg c]  }|   j
                   }
}t        j                  }|
D ]&  }|t        j                  k(  st        j                  }( t	        |      dk(  rt	        |         }n*t        t	        |         t        fd|D                    }|d|dz   z  dz   z  }|t        j                  k(  r|d|   d| d	d
z  }n|d|   d| d	d
z  }t        |      D ]+  \  }}|	|xx   d|   j                  ||      z   d
z   z  cc<   - ! d	}||dz   z  }||dz   z  }||dz   z  }|	D ]
  }||dz   z  } ||dz   z  }|S c c}w c c}w )N+|r   c              3  D   K   | ]  }|   j                           y wr+   )rp   )r/   rY   rI   s     r   r1   z_dump_table.<locals>.<genexpr>   s     4YSS[5F5F5H4Ys    -r_   rr   rs   rC   z |rt   rz   )rL   rg   r   rP   rO   ri   r^   rc   rd   rN   rQ   ru   )rR   rU   rowsrH   rY   rZ   	separatorheader_stringrD   rows_stringvalue_typesri   t	max_widthrX   rV   
row_stringrI   s                    @r   _dump_tabler      s1   D ! 	;KJJyK!89:	;C	 IM $%13%K%F$ Y9=>#s6{-->>&&
 	.AI$$$&--
	. t9>F6N+ICv/4YTX4Y1YZISIM*S00	***q)@} =R@@Mq)@} =R@@Mo 	YFAsNcCK$:$::y$QQTXXXN	YY$ C9tC=4C9tC! !
zD  !9tCJ7 &>s   	G
=Gc                x   t        | t              rt        | ||      \  }}nt        | g||      \  }}|dk(  rt        ||      j	                         S |dk(  rt        ||      j	                         S |dk(  rYt        | t              r#t        j                  |      j	                         S t        j                  |d         j	                         S |dk(  rYt        | t              r#t        j                  |      j	                         S t        j                  |d         j	                         S t        d| d      )Nr?   tablejsonr   yamlz"Optuna CLI does not supported the z format.)r4   r:   r\   r}   stripr   r   dumpsr   	safe_dumpr
   )rR   rS   output_formatrT   r|   rU   s         r   _format_outputr      s    '4 )'7GD)7)WgF66*0022	'	!66*0022	&	 gt$::f%++--::fQi(..00	&	 gt$>>&)//11>>&),2244@xXYYr   c                  (    e Zd ZdZddZddZddZy)	_BaseCommandzBase class for commands.

    Note that command classes are not intended to be called by library users.
    They are exclusively used within this file to manage Optuna CLI commands.
    c                T    t         j                  j                  t              | _        y r+   )optunalogging
get_loggerr    loggerrm   s    r   rk   z_BaseCommand.__init__  s    nn//9r   c                     y)zAdd arguments required for each command.

        Args:
            parser:
                `ArgumentParser` object to add arguments
        Nre   rj   parsers     r   add_argumentsz_BaseCommand.add_arguments  s     	r   c                    t         )a  Define action if the command is called.

        Args:
            parsed_args:
                `Namespace` object including arguments specified by user.

        Returns:
            Running status of the action.
            0 if this method finishes normally, otherwise 1.
        )NotImplementedError)rj   parsed_argss     r   take_actionz_BaseCommand.take_action$  s
     "!r   N)rv   rw   r   r   rv   rw   r   r   rv   r5   )r    r`   ra   __doc__rk   r   r   re   r   r   r   r     s    :"r   r   c                       e Zd ZdZddZddZy)_CreateStudyzCreate a new study.c                    |j                  dd d       |j                  dd t        dd       |j                  dd	d
d       |j                  dt        d ddd       y )N--study-namez?A human-readable name of a study to distinguish it from others.defaulthelpz--direction)minimizemaximizeznSet direction of optimization to a new study. Set 'minimize' for minimization and 'maximize' for maximization.)r   typechoicesr   z--skip-if-existsF
store_truezgIf specified, the creation of the study is skipped without any error when the study name is duplicated.r   actionr   z--directionszSet directions of optimization to a new study. Put whitespace between directions. Each direction should be either "minimize" or "maximize".r   )r   r   r   r   nargsadd_argumentr>   r   s     r   r   z_CreateStudy.add_arguments6  s    R 	 	

 	,@ 	 	
 	C	 	 	
 	,0  	 		
r   c                    t        |j                  |j                        }t        j                  ||j
                  |j                  |j                  |j                        j
                  }t        |       y)N)storage
study_name	direction
directionsload_if_existsr   )
r(   r   r'   r   create_studyr   r   r   skip_if_existsprint)rj   r   r   r   s       r   r   z_CreateStudy.take_actionV  sh    {22K4M4MN(("--!++"--&55
 * 	 	jr   Nr   r   r    r`   ra   r   r   r   re   r   r   r   r   3  s    
@
r   r   c                       e Zd ZdZddZddZy)_DeleteStudyzDelete a specified study.c                ,    |j                  dd d       y )Nr   z The name of the study to delete.r   r   r   s     r   r   z_DeleteStudy.add_argumentsf  s    ND?abr   c                    t        |j                  |j                        }|j                  |j                        }|j                  |       y)Nr   )r(   r   r'   get_study_id_from_namer   delete_study)rj   r   r   study_ids       r   r   z_DeleteStudy.take_actioni  sA    {22K4M4MN11+2H2HIX&r   Nr   r   r   re   r   r   r   r   c  s    #cr   r   c                       e Zd ZdZddZddZy)_StudySetUserAttributez Set a user attribute to a study.c                ~    |j                  ddd       |j                  dddd       |j                  ddd	       y )
Nr   Tz3The name of the study to set the user attribute to.)requiredr   z--keyz-kzKey of the user attribute.z--valuezValue to be set.r   r   s     r   r   z$_StudySetUserAttribute.add_argumentss  sN    F 	 	

 	GTD?[\I;MNr   c                   t        |j                  |j                        }t        j                  ||j
                        }|j                  |j                  |j                         | j                  j                  d       y)Nr   r   zAttribute successfully written.r   )r(   r   r'   r   
load_studyr   set_user_attrkeyr?   r   info)rj   r   r   studys       r   r   z"_StudySetUserAttribute.take_action|  sb    {22K4M4MN!!'k>T>TUKOO[->->?:;r   Nr   r   r   re   r   r   r   r   p  s    *Or   r   c                       e Zd ZdZddZddZy)_StudyNamesz1Get all study names stored in a specified storagec                :    |j                  ddt        ddd       y )N-f--formatr?   r   r   r   r?   Output format.r   r   r   r   r   r   s     r   r   z_StudyNames.add_arguments  s'    6! 	 	
r   c                    t        |j                  |j                        }t        j                  |      }g }d}|D ]  }|j                  ||i        t        t        ||g|j                  d             y)NnamerC   F)rT   r   )	r(   r   r'   r   get_all_study_namesrL   r   r   format)rj   r   r   all_study_namesrR   
record_keyr   s          r   r   z_StudyNames.take_action  ss    {22K4M4MN 44W=!
) 	5JNNJ
34	5nWzlK4F4FPUVWr   Nr   r   r   re   r   r   r   r     s    ;
r   r   c                  (    e Zd ZdZg dZddZddZy)_StudieszShow a list of studies.)r   r   rC   n_trialsrC   datetime_startrC   c                d    |j                  ddt        ddd       |j                  ddd	d
       y )Nr   r   r   r   r   r   	--flattenFr   z*Flatten nested columns such as directions.r   r   r   s     r   r   z_Studies.add_arguments  sH    6! 	 	
 	=	 	 	
r   c                j   t        |j                  |j                        }t        j                  |d      }g }|D ]  }|j
                  |j
                  j                  t              nd }i }|j                  |d<   t        d |j                  D              |d<   |j                  |d<   ||d<   |j                  |d<   |j                  |        t        d	 |D              r| j                  j                  d       t!        t#        || j                  |j$                  |j&                               y
)NF)include_best_trialr   c              3  4   K   | ]  }|j                     y wr+   )r   )r/   ds     r   r1   z'_Studies.take_action.<locals>.<genexpr>  s     -Kaff-Ks   r   r   r   
user_attrsrC   c              3  ,   K   | ]  }|d    i k7    yw)r   Nre   )r/   rs     r   r1   z'_Studies.take_action.<locals>.<genexpr>  s     <qq#$*<s   r   )r(   r   r'   r   get_all_study_summariesr   r8   r9   r   r;   r   r   r   rL   rM   _study_list_headerr   r   r   rT   )rj   r   r   	summariesrR   sstartrH   s           r   r   z_Studies.take_action  s&   {22K4M4MN227uU	 	#A ##/   ))*:; 
 24F#$<<F< (--Kall-K(KF$%'(zzF#$-2F)*)*F%&NN6"	# <G<<##**+=>00+2D2DkFYFY	

 r   Nr   r   )r    r`   ra   r   r   r   r   re   r   r   r   r     s    !
 r   r   c                       e Zd ZdZddZddZy)_TrialszShow a list of trials.c                    |j                  dt        dd       |j                  ddt        ddd	
       |j                  dddd       y )Nr   Tz,The name of the study which includes trials.r   r   r   r   r   r   r   r   r   r   Fr   5Flatten nested columns such as params and user_attrs.r   r   r   s     r   r   z_Trials.add_arguments  i    ?	 	 	
 	6! 	 	
 	H	 	 	
r   c                f   t        dt               t        |j                  |j                        }t        j                  ||j                        }d|j                         sdnddddd	d
df}t        j                  ||      \  }}t        t        |||j                  |j                               y)NzP'trials' is an experimental CLI command. The interface can change in the future.r   numberr?   r|   r   datetime_completedurationparamsr   stater   )r	   r   r(   r   r'   r   r   r   _is_multi_objective
_dataframe$_create_records_and_aggregate_columnr   r   r   rT   rj   r   r   r   r[   rR   rS   s          r   r   z_Trials.take_action  s    ^	

 {22K4M4MN!!'k>T>TU 446GH	
 &JJ5RWXnWg{/A/A;CVCVWXr   Nr   r   r   re   r   r   r   r     s     
,r   r   c                       e Zd ZdZddZddZy)
_BestTrialzShow the best trial.c                    |j                  dt        dd       |j                  ddt        ddd	
       |j                  dddd       y )Nr   Tz,The name of the study to get the best trial.r   r   r   r   r   r   r   r   Fr   r   r   r   r   s     r   r   z_BestTrial.add_arguments  r   r   c                   t        dt               t        |j                  |j                        }t        j                  ||j                        }d|j                         sdnddddd	d
df}t        j                  ||      \  }}t        t        ||j                  j                     ||j                  |j                                y)NzT'best-trial' is an experimental CLI command. The interface can change in the future.r   r  r?   r|   r   r  r  r  r   r  r   )r	   r   r(   r   r'   r   r   r   r  r  r  r   r   
best_trialr  r   rT   r	  s          r   r   z_BestTrial.take_action!  s    b	

 {22K4M4MN!!'k>T>TU 446GH	
 &JJ5RWX((//0';;M;M{ObOb	

 r   Nr   r   r   re   r   r   r  r    s    
,r   r  c                       e Zd ZdZddZddZy)_BestTrialsz2Show a list of trials located at the Pareto front.c                    |j                  dt        dd       |j                  ddt        ddd	
       |j                  dddd       y )Nr   TzJThe name of the study to get the best trials (trials at the Pareto front).r   r   r   r   r   r   r   r   Fr   r   r   r   r   s     r   r   z_BestTrials.add_arguments@  si    ]	 	 	
 	6! 	 	
 	H	 	 	
r   c                  	 t        dt               t        |j                  |j                        }t        j                  ||j                        }|j                  D cg c]  }|j                   c}	d|j                         sdnddddd	d
df}t        j                  ||      \  }}t        t        	fd|            }t        t!        |||j"                  |j$                               yc c}w )NzU'best-trials' is an experimental CLI command. The interface can change in the future.r   r  r?   r|   r   r  r  r  r   r  c                    | d   v S )Nr  rC   re   )rH   best_trialss    r   <lambda>z)_BestTrials.take_action.<locals>.<lambda>l  s    &2HK2W r   r   )r	   r   r(   r   r'   r   r   r   r  r  r  r  r  r:   filterr   r   r   rT   )
rj   r   r   r   trialr[   rR   rS   best_recordsr  s
            @r   r   z_BestTrials.take_actionV  s    	
 {22K4M4MN!!'k>T>TU161B1BCu||C 446GH	
 &JJ5RWXF#WY`abn\7K4F4FH[H[\] Ds   !C0Nr   r   r   re   r   r   r  r  =  s    <
,r   r  c                      e Zd ZdZddZy)_StorageUpgradez%Upgrade the schema of an RDB storage.c                   t        |j                        }	 t        |dd      }|j                         }|j                         }|j                         }||k(  r| j                  j                  d       y	||v rG| j                  j                  d       |j                          | j                  j                  d       y	t        d       y	# t        j                  j
                  $ r | j                  j                  d       Y yw xY w)
NT)skip_compatibility_checkskip_table_creationzInvalid RDBStorage URL.rB   zThis storage is up-to-date.z3Upgrading the storage schema to the latest version.z!Completed to upgrade the storage.zYour optuna version seems outdated against the storage version. Please try updating optuna to the latest version by `$ pip install -U optuna`.r   )r   r   r   r$   r%   r&   r   errorget_current_versionget_head_versionget_all_versionsr   upgrader	   )rj   r   r   r   current_versionhead_versionknown_versionss          r   r   z_StorageUpgrade.take_actiont  s    ()<)<=	 dPTG "557//1 113l*KK:;  .KKRSOOKK@A  -
 % ~~++ 	KK78	s   C 8DDNr   )r    r`   ra   r   r   re   r   r   r  r  q  s
    /r   r  c                       e Zd ZdZddZddZy)_Askz*Create a new trial and suggest parameters.c                $   |j                  dt        d       |j                  dt        d       |j                  dt        d       |j                  dt        d	       |j                  d
dt        ddd       |j                  dddd       y )Nr   Name of study.r   r   z	--samplerz'Class name of sampler object to create.z--sampler-kwargsz8Sampler object initialization keyword arguments as JSON.z--search-spaceztSearch space as JSON. Keys are names and values are outputs from :func:`~optuna.distributions.distribution_to_json`.r   r   r   r   r   r   r   Fr   z&Flatten nested columns such as params.r   r   r   s     r   r   z_Ask.add_arguments  s    N;KLKc8abK 	 	

 	F	 	 	
 	6! 	 	
 	9	 	 	
r   c           
        t        dt               t        |j                  |j                        }||j
                  dd}|j                  `|j                   t        j                  |j                        }ni }t        t        j                  |j                        } |di |}||d<   n|j                  t        d      |j                  qt        j                  |j                        j                         D ci c]8  \  }}|t        j                   j#                  t        j$                  |            : }	}}ni }		 t        j&                  |d   |d   |j)                  d            }
|
j-                  |	
      }| j.                  j1                  d|j2                   d|j4                   d       d|j2                  i}dg}t7        |j4                        dk(  r#|j8                  si |d<   |j;                  d       n<|j4                  j                         D ]  \  }}||d|f<   |j;                  d|f       ! t=        t?        |||j@                  |j8                               yc c}}w # t*        $ r t+        d	      w xY w)NzM'ask' is an experimental CLI command. The interface can change in the future.T)r   r   r   samplerzm`--sampler_kwargs` is set without `--sampler`. Please specify `--sampler` as well or omit `--sampler-kwargs`.r   r   )r   r   r-  zImplicit study creation within the 'ask' command was dropped in Optuna v4.0.0. Please use the 'create-study' command beforehand.)fixed_distributionszAsked trial z with parameters .r  r   )r  rC   r  re   )!r	   r   r(   r   r'   r   r-  sampler_kwargsr   loadsgetattrr   samplers
ValueErrorsearch_spacer=   distributionsjson_to_distributionr   r   r   KeyErroraskr   r   r  r  rO   rT   rL   r   r   r   )rj   r   r   create_study_kwargsr0  sampler_clsr-  r   distr5  r   r  rH   rS   
param_nameparam_values                   r   r   z_Ask.take_action  su   [	

 {22K4M4MN %00"
 *))5!%K,F,F!G!#!&//;3F3FGK!3N3G-4	*))5 8 
 ##/ #'**[-E-E"F"L"L"ND$ f**??

4@PQQL 
 L	%%.|<+I6+//	:E 		l	;<~5Fu||nTUVW.<ell-K!"u||!+*=*=%'F>"NN>*+0<<+=+=+? 7'
K1<*-.*567 	nVWk.@.@+BUBUVWG  	D 	s    =I--I3 3JNr   r   r   re   r   r   r(  r(    s    4
>Dr   r(  c                       e Zd ZdZddZddZy)_Tellz5Finish a trial, which was created by the ask command.c                    |j                  dt        d       |j                  dt        d       |j                  dt        dd	       |j                  d
t        dd       |j                  dddd       y )Nr   r*  r+  z--trial-numberzTrial number.z--valuesr   zObjective values.)r   r   r   z--statezTrial state.)completeprunedfail)r   r   r   z--skip-if-finishedFr   zSIf specified, tell is skipped without any error when the trial is already finished.r   )r   r>   r5   r6   r   s     r   r   z_Tell.add_arguments  s    N;KL,3_MJU#DWX2	 	 	
 	 	 	 	
r   c           	        t        dt               t        |j                  |j                        }t        j                  ||j                        }|j                  "t        |j                  j                            }nd }|j                  }|j                  }|j                  ||||j                         | j                  j!                  d| d| d| d       y)	NzN'tell' is an experimental CLI command. The interface can change in the future.r   )r  r|   r  skip_if_finishedzTold trial z with values z and state r/  r   )r	   r   r(   r   r'   r   r   r   r  r   uppertrial_numberr|   tellrF  r   r   )rj   r   r   r   r  rH  r|   s          r   r   z_Tell.take_action  s    \	

 {22K4M4MN!!"--

 ('1+2C2C2I2I2K'LEE"//##

(99	 	 	
 	;|nM&UZT[[\]^r   Nr   r   r   re   r   r   r@  r@    s    ?
$r   r@  )zcreate-studyzdelete-studyzstudy set-user-attrzstudy-namesstudiestrialsz
best-trialzbest-trialszstorage upgrader9  rI  zdict[str, type[_BaseCommand]]	_COMMANDSc                   t         j                  t        j                  t        j                  g}t        j                  t
        j                  g}| ||z   v r| S t        j                  d|  dt        |      dd  d      )NzInvalid choice: z  (choose from rB   ))	r   r    r   r   r   r   argparseArgumentTypeErrorr>   )r?   r   deprecated_choicess      r   :_parse_storage_class_without_suggesting_deprecated_choicesrS  =  s    ##$$G 	##$$ ,,,

$
$
5'Wa1C0DAF r   c                0   | j                  dd d       | j                  ddd t               | j                         }|j                  ddd	d
dd       |j                  dddd
dd       | j                  ddd d       | j                  dddd       | S )Nz	--storagezbDB URL. (e.g. sqlite:///example.db) Also can be specified via OPTUNA_STORAGE environment variable.r   z--storage-classz,Storage class hint (e.g. JournalFileBackend))r   r   r   z-vz	--verbosecountverbose_levelrB   z.Increase verbosity of output. Can be repeated.)r   destr   r   z-qz--quietstore_constr   z+Suppress output except warnings and errors.)r   rW  constr   z
--log-filestorez2Specify a file to log output. Disabled by default.)r   r   r   z--debugFr   zShow tracebacks on errors.r   )r   rS  add_mutually_exclusive_group)r   verbose_groups     r   _add_common_argumentsr]  N  s    
M	   ;G	   779M=   :   A	   )	   Mr   c                x     j                         }i }t        j                         D ]f  \  }} |       }|j                  ||gt	        j
                  |            }|j                  |       |j                  |j                         |||<   h d fd}|j                  dd      j                  |       |S )N)parentsr   )handlerc                &    j                          y r+   )
print_help)argsmain_parsers    r   _print_helpz"_add_commands.<locals>._print_help  s     r   r   zShow help message and exit.)r   rc  r   rv   rw   )	add_subparsersrL  r=   
add_parserinspectgetdocr   set_defaultsr   )	rd  parent_parser
subparserscommand_name_to_subparsercommand_namecommand_typecommand	subparserre  s	   `        r   _add_commandsrs  }  s     ++-J "&/oo&7 <"l.))=/|8T * 
	 	i(w':':;2;!,/<! &'DERR S  %$r   c                    t        d      }t        |      }t        | |g      }|j                  dddt        j                          t        ||      }||fS )NF)add_help)descriptionr_  z	--versionversionzoptuna )r   rw  )r   r]  r   r   __version__rs  )rv  rl  rd  rn  s       r   _get_parserry    sb     #E2M)-8M [=/RK[gfN`N`MaDbc -k= I111r   c                    t        |       dkD  r| dd  ndg} t        t        |             D ]M  }t        ||dz         D ]9  }dj                  | ||dz          }|t        v s#| d | | |dz   d  z   }|g|z   c c S  O | S )NrB   r   r_   rr   )rO   rP   r{   rL  )argvrX   jcommand_candidateoptionss        r   _preprocess_argvr    s     4y1}486(D3t9 5q!a% 	5A #a!a% 9 I-r(T!a%']2)*W44		55 Kr   c                <   t        j                         }|j                  t         j                         t        j                  t
        j                        }t         j                  t         j                  t         j                  dj                  | j                  t         j                        }|j                  |       |j                  t        j                   j                                |j                  |       t        j                   j                  |       y )N)r   rB   r_   )r   	getLoggersetLevelDEBUGStreamHandlersysstderrWARNINGINFOr   rV  setFormatterr   create_default_formatter
addHandlerset_verbosity)rc  root_loggerstream_handlerlogging_levels       r   _set_verbosityr    s    ##%K'**3::6N ??<<== 
c$

gmm,	  M* G G IJ>*
NN  /r   c                @   | j                   y t        j                         }|j                  t        j                         t        j
                  | j                         }|j                  t        j                  j                                |j                  |       y )N)filename)
log_filer   r  r  r  FileHandlerr  r   r  r  )rc  r  file_handlers      r   _set_log_filer    sq    }}##%K'&&L fnnEEGH<(r   c                 *   t               \  } }t        j                  }t        |      }| j	                  |      }t        |       t        |       t        j                  d      }	 |j                  |      S # t        $ rO}|j                  r|j                  |       n'|j                  |       ||d      j                          Y d }~yd }~wt        $ r< dj!                  |dd        }|j                  d| d       | j                          Y yw xY w)Nr   r   rB   rr   'z/' is not an optuna command. see 'optuna --help')ry  r  r{  r  
parse_argsr  r  r   r  r`  r
   debug	exceptionr  rb  AttributeErrorr{   )rd  rn  r{  preprocessed_argvrc  r   eargv_strs           r   mainr    s    -8]*K*88D(.!!"34D4$x(F||D!! ::QLLO &&7&:;FFH  88DH%q
"QRS s    &A7 7	D AC

ADD)r   
str | Nonerv   r>   )r   r  r'   r  rv   r   )r?   r   rv   r   )rR   z list[dict[tuple[str, str], Any]]rS   list[tuple[str, str]]rT   boolrv   z&tuple[list[dict[str, Any]], list[str]])rR   zlist[dict[str, Any]]rU   	list[str]rv   r>   )
rR   z=list[dict[tuple[str, str], Any]] | dict[tuple[str, str], Any]rS   r  r   r>   rT   r  rv   r>   )r?   r>   rv   r>   )r   r   rv   r   )rd  r   rl  r   rv   zdict[str, ArgumentParser])rC   )rv  r>   rv   z0tuple[ArgumentParser, dict[str, ArgumentParser]])r{  r  rv   r  rf  rx   )Gr   
__future__r   rP  r   r   r7   enumr   ri  r   r   r   r  typingr   sqlalchemy.excr$   r   r   optuna._importsr   optuna._warningsr	   optuna.exceptionsr
   r   optuna.storagesr   r   r   r   r   optuna.storages.journalr   r   optuna.trialr   r  r9   r   r(   r-   r\   r^   rg   r}   r   r   r   r   r   r   r   r   r   r  r  r  r(  r@  rL  __annotations__rS  r]  rs  ry  r  r  r  r  re   r   r   <module>r     s   #  #       	 
     ' ( + 1 ' . / * & 6 7 # 23
& 9N2 7-78M7X\7+7t ' ':
%PZJZ"Z Z 	Z
 	Z:" "D-< -`
< 
\ ., 04| 4n/l /d2 2j1, 1hl <f< fR3L 3n ! 1&,	( ",^%%0>%%0	2 0$)r   