
    -ji                    Z   % S r SSKJr  SSKrSSKJr  SSKJr  SSKrSSKJr  SSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKrSSKrSSKrSSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  SSK!J#r#  SSK$J%r%  \" S5      r&Sr'SDS jr(SES jr)SFS jr*        SGS jr+ " S S\5      r, " S S5      r-SHS jr.SHS jr/          SIS  jr0 " S! S"5      r1 " S# S$\15      r2 " S% S&\15      r3 " S' S(\15      r4 " S) S*\15      r5 " S+ S,\15      r6 " S- S.\15      r7 " S/ S0\15      r8 " S1 S2\15      r9 " S3 S4\15      r: " S5 S6\15      r; " S7 S8\15      r<\2\3\4\5\6\7\8\9\:\;\<S9.r=S:\>S;'   SJS< jr?SKS= jr@      SLS> jrASMSNS? jjrBSOS@ jrCSPSA jrDSPSB jrESQSC jrFg)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                    U b  U $ [         R                  R                  S5      nUb  [        S[        5        U$ [        S5      e)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     D/home/james-whalen/.local/lib/python3.13/site-packages/optuna/cli.py_check_storage_urlr   *   sL    **..!12KS	

 
7
88    c                   [        U 5      n U(       a  U[        R                  :X  a  [        [        U 5      5      $ U[        R                  :X  a  [        [	        U 5      5      $ U[
        R                  :X  a  [        [        U 5      5      $ U[        R                  :X  a  [        [        U 5      5      $ U[        R                  :X  a  [        U 5      $ [        S5      eU R                  S5      (       a  [        [        U 5      5      $ [        R                  R                  U 5      (       a  [        [        U 5      5      $  [        U 5      $ ! [        R                  R                   a    [        S5      ef = f)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   s2   $[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    
E *E5c                   U b  [        U [        [        45      (       a  U $ [        U [        R                  5      (       a  U R	                  [
        5      $ [        U [        5      (       a  [        S U  5       5      $ [        U [        5      (       a  [        S U  5       5      $ [        U [        5      (       a8  U R                  5        VVs0 s H  u  p[        U5      [        U5      _M     snn$ [        U 5      $ s  snnf )Nc              3  8   #    U  H  n[        U5      v   M     g 7fN_format_value.0vs     r   	<genexpr> _format_value.<locals>.<genexpr>Y   s     4eM!$$e   c              3  8   #    U  H  n[        U5      v   M     g 7fr+   r,   r.   s     r   r1   r2   [   s     5u!]1%%ur3   )
isinstanceintfloatdatetimestrftime_DATETIME_FORMATlisttupledictitemsr-   str)valuekr0   s      r   r-   r-   R   s    }
53,77	E8,,	-	-~~.//	E4	 	 4e444	E5	!	!5u555	E4	 	 ?D{{}M}tqa -"22}MM5z Ns   !C;c                  ^ / n/ nU(       GaR  U H  mTS   S:w  a  UR                  TS    STS    35        M*  [        U4S jU  5       5      (       aX  SnU  H#  nTU;   d  M  [        U[        UT   5      5      nM%     [	        U5       H  nUR                  TS    SU 35        M     M  UR                  TS   5        M     U  H  n0 nU Hw  mTU;  a  M  [        UT   5      n	TS   S:w  a  XTS    STS    3'   M3  [        U4S jU  5       5      (       a"  [        U	5       H  u  pzXTS    SU 3'   M     Mo  XTS    '   My     UR                  U5        M     XC4$ U H"  mTS   U;  d  M  UR                  TS   5        M$     U  H  nU Vs0 s H  o0 _M     nnU H  mTU;  a  M  [        UT   5      n	[        TS   [        5      (       aY  UTS      0 :X  a  / UTS   '   UTS   ==   S /[        TS   S-   [        UTS      5      -
  S5      -  -  ss'   XTS      TS   '   M  TS   S:w  a  XTS      TS   '   M  XTS   '   M     UR                  U5        M     XC4$ s  snf )N    r   _c              3  n   >#    U  H*  n[        UR                  T5      [        [        45      v   M,     g 7fr+   r5   r   r;   r<   r/   recordcolumns     r   r1   #_convert_to_dict.<locals>.<genexpr>k   s*     YQXvZ

6 2T5MBBQX   25c              3  n   >#    U  H*  n[        UR                  T5      [        [        45      v   M,     g 7fr+   rG   rH   s     r   r1   rK   |   s*     ]U\6FJJv$6uFFU\rL   )	appendanymaxlenranger-   	enumerater5   r6   )recordscolumnsflattenheaderret
max_lengthrI   irowr@   r0   column_nameattrsrJ   s                @r   _convert_to_dictr^   b   s    F
CFayB1VAYK89YQXYYY
%F'%(S5H%I
 & z*AMMVAYKq"45 + fQi(  FC!'%fVn5!9?6;6!9+Qvayk23]U\]]] )% 023vayk1#./ !1 +06!9+' " JJsO J ;- Fay&fQi(  FHN$O"_E$O!'%fVn5fQi-- VAY'2-+-fQi(&)$VAY]SvVWyIYEZ5Z\]1^(^^$27&)$VAY/AY"_27&)$VAY/',&)$ " JJu# & ;% %Ps   I&c                       \ rS rSrSrSrSrSrg)	ValueType   r   rC       N)r    
__module____qualname____firstlineno__NONENUMERICSTRING__static_attributes__rc   r   r   r`   r`      s    DGFr   r`   c                  <    \ rS rSrSS jrS	S jrS
S jrSS jrSrg)	CellValue   c                    Xl         Uc  [        R                  U l        g [	        U[
        [        45      (       a  [        R                  U l        g [        R                  U l        g r+   )	r@   r`   rg   
value_typer5   r6   r7   rh   ri   )selfr@   s     r   __init__CellValue.__init__   sB    
='nnDOU|,,'//DO'..DOr   c                    [        U R                  [        R                  5      (       a  U R                  R                  [        5      $ [        U R                  5      $ r+   )r5   r@   r8   r9   r:   r?   rp   s    r   __str__CellValue.__str__   s=    djj("3"344::&&'788tzz?"r   c                >    [        [        U R                  5      5      $ r+   )rQ   r?   r@   rt   s    r   widthCellValue.width   s    3tzz?##r   c                    [        U R                  5      nU R                  c  SU-  $ U[        R                  :X  a  USU 3 $ USU 3 $ )N ><)r?   r@   r`   rh   )rp   ro   rx   r@   s       r   
get_stringCellValue.get_string   sS    DJJ::;9,,,AeW9%&AeW9%&r   )r@   ro   N)r@   r   returnNone)r   r?   r   r6   )ro   r`   rx   r6   r   r?   )	r    rd   re   rf   rq   ru   rx   r~   rj   rc   r   r   rl   rl      s    /#$'r   rl   c                    / nU  H^  n/ nU H3  nUR                  UR                  U5      b  [        X5   5      OS5        M5     UR                  SR                  U5      5        M`     SR                  U5      $ )NrD   r{   
)rN   r   r?   join)rT   rW   valuesrI   r[   r\   s         r   _dump_valuer      sn    F!K JJ6::k3J3Vs6./\^_	 "
 	chhsm$  99Vr   c           
       ^ / nU  HH  n/ nU H,  nUR                  [        UR                  U5      5      5        M.     UR                  U5        MJ     SnSnU Vs/ s H  nSPM     n	n[        [	        U5      5       GH%  mU Vs/ s H  oDT   R
                  PM     n
n[        R                  nU
 H)  nU[        R                  :X  d  M  [        R                  nM+     [	        U5      S:X  a  [	        UT   5      nO+[        [	        UT   5      [        U4S jU 5       5      5      nUSUS-   -  S-   -  nU[        R                  :X  a  USUT   SU 3 S	3-  nOUSUT   S
U 3 S	3-  n[        U5       H)  u  pX==   SUT   R                  X5      -   S	-   -  ss'   M+     GM(     SnXS-   -  nXS-   -  nXS-   -  nU	 H  nUUS-   -  nM     XS-   -  nU$ s  snf s  snf )N+|r   c              3  H   >#    U  H  oT   R                  5       v   M     g 7fr+   )rx   )r/   r[   rJ   s     r   r1   _dump_table.<locals>.<genexpr>   s!     4YTXS[5F5F5H5HTXs   "-rb   r{   r|   z |r}   rD   r   )rN   rl   r   rR   rQ   ro   r`   rh   ri   rP   rS   r~   )rT   rW   rowsrI   r[   r\   	separatorheader_stringrE   rows_stringvalue_typesro   t	max_widthrZ   rX   
row_stringrJ   s                    @r   _dump_tabler      s   D!KJJyK!89: "C	  IM $%13K%F$9=>#6{-->&&
AI$$$&--
  t9>F6N+ICv/4YTX4Y1YZISIM*S00	***q)} =R@@Mq)} =R@@MoFANcCK$:$::$QQTXXXN & %$ CtC4CtC!
zD   "tCJ7 &>s   GGc                   [        U [        5      (       a  [        XU5      u  pEO[        U /X5      u  pEUS:X  a  [        XE5      R	                  5       $ US:X  a  [        XE5      R	                  5       $ US:X  a`  [        U [        5      (       a$  [        R                  " U5      R	                  5       $ [        R                  " US   5      R	                  5       $ US:X  a`  [        U [        5      (       a$  [        R                  " U5      R	                  5       $ [        R                  " US   5      R	                  5       $ [        SU S35      e)Nr@   tablejsonr   yamlz"Optuna CLI does not supported the z format.)r5   r;   r^   r   stripr   r   dumpsr   	safe_dumpr
   )rT   rU   output_formatrV   r   rW   s         r   _format_outputr      s    '4  )'GD)7)WF6*0022	'	!6*0022	&	 gt$$::f%++--::fQi(..00	&	 gt$$>>&)//11>>&),2244@xXYYr   c                  6    \ rS rSrSrSS jrS	S jrS
S jrSrg)_BaseCommandi  zBase 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    [         R                  R                  [        5      U l        g r+   )optunalogging
get_loggerr    loggerrt   s    r   rq   _BaseCommand.__init__  s    nn//9r   c                    g)zmAdd arguments required for each command.

Args:
    parser:
        `ArgumentParser` object to add arguments
Nrc   rp   parsers     r   add_arguments_BaseCommand.add_arguments  s     	r   c                    [         e)zDefine 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)rp   parsed_argss     r   take_action_BaseCommand.take_action$  s
     "!r   )r   N)r   r   r   r   r   r   r   r   r   r6   )	r    rd   re   rf   __doc__rq   r   r   rj   rc   r   r   r   r     s    :"r   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)	_CreateStudyi3  zCreate a new study.c           	         UR                  SS SS9  UR                  SS [        SSS9  UR                  SS	S
SS9  UR                  S[        S SSSS9  g )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   _CreateStudy.add_arguments6  s    R 	 	

 	,@ 	 	
 	C	 	 	
 	,0  	 		
r   c                    [        UR                  UR                  5      n[        R                  " UUR
                  UR                  UR                  UR                  S9R
                  n[        U5        g)N)storage
study_name	direction
directionsload_if_existsr   )
r(   r   r'   r   create_studyr   r   r   skip_if_existsprint)rp   r   r   r   s       r   r   _CreateStudy.take_actionV  sh    {22K4M4MN(("--!++"--&55
 * 	 	jr   rc   Nr   r   r    rd   re   rf   r   r   r   rj   rc   r   r   r   r   3  s    
@
r   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)	_DeleteStudyic  zDelete a specified study.c                &    UR                  SS SS9  g )Nr   z The name of the study to delete.r   r   r   s     r   r   _DeleteStudy.add_argumentsf  s    ND?abr   c                    [        UR                  UR                  5      nUR                  UR                  5      nUR                  U5        g)Nr   )r(   r   r'   get_study_id_from_namer   delete_study)rp   r   r   study_ids       r   r   _DeleteStudy.take_actioni  sA    {22K4M4MN11+2H2HIX&r   rc   Nr   r   r   rc   r   r   r   r   c  s    #cr   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)	_StudySetUserAttributeip  z Set a user attribute to a study.c                l    UR                  SSSS9  UR                  SSSSS9  UR                  SSS	S9  g )
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   $_StudySetUserAttribute.add_argumentss  sN    F 	 	

 	GTD?[\I;MNr   c                   [        UR                  UR                  5      n[        R                  " X!R
                  S9nUR                  UR                  UR                  5        U R                  R                  S5        g)Nr   r   zAttribute successfully written.r   )r(   r   r'   r   
load_studyr   set_user_attrkeyr@   r   info)rp   r   r   studys       r   r   "_StudySetUserAttribute.take_action|  s`    {22K4M4MN!!'>T>TUKOO[->->?:;r   rc   Nr   r   r   rc   r   r   r   r   p  s    *Or   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)	_StudyNamesi  z1Get all study names stored in a specified storagec           	     4    UR                  SS[        SSSS9  g )N-f--formatr@   r   r   r   r@   Output format.r   r   r   r   r   r   s     r   r   _StudyNames.add_arguments  s'    6! 	 	
r   c           	         [        UR                  UR                  5      n[        R                  " U5      n/ nSnU H  nUR                  XV05        M     [        [        XE/UR                  SS95        g)NnamerD   F)rV   r   )	r(   r   r'   r   get_all_study_namesrN   r   r   format)rp   r   r   all_study_namesrT   
record_keyr   s          r   r   _StudyNames.take_action  sj    {22K4M4MN 44W=!
)JNNJ34 *nWlK4F4FPUVWr   rc   Nr   r   r   rc   r   r   r   r     s    ;
r   r   c                  4    \ rS rSrSr/ SQrSS jrS	S jrSrg)
_Studiesi  zShow a list of studies.)r   r   rD   n_trialsrD   datetime_startrD   c           	     X    UR                  SS[        SSSS9  UR                  SSS	S
S9  g )Nr   r   r   r   r   r   	--flattenFr   z*Flatten nested columns such as directions.r   r   r   s     r   r   _Studies.add_arguments  sH    6! 	 	
 	=	 	 	
r   c                r   [        UR                  UR                  5      n[        R                  " USS9n/ nU H  nUR
                  b  UR
                  R                  [        5      OS n0 nUR                  US'   [        S UR                   5       5      US'   UR                  US'   XgS'   UR                  US'   UR                  U5        M     [        S	 U 5       5      (       a  U R                  R                  S5        [!        [#        X@R                  UR$                  UR&                  5      5        g
)NF)include_best_trialr   c              3  8   #    U  H  oR                   v   M     g 7fr+   )r   )r/   ds     r   r1   '_Studies.take_action.<locals>.<genexpr>  s     -Klfflr3   r   r   r   
user_attrsrD   c              3  0   #    U  H  oS    0 :g  v   M     g7f)r	  Nrc   )r/   rs     r   r1   r    s     <Gq#$*Gs   r   )r(   r   r'   r   get_all_study_summariesr   r9   r:   r   r<   r   r   r
  rN   rO   _study_list_headerr   r   r   rV   )rp   r   r   	summariesrT   sstartrI   s           r   r   _Studies.take_action  s    {22K4M4MN227uU	A ##/   ))*:; 
 24F#$<<F< (--Kall-K(KF$%'(zzF#$-2)*)*F%&NN6"  <G<<<##**+=>00+2D2DkFYFY	

 r   rc   Nr   r   )	r    rd   re   rf   r   r  r   r   rj   rc   r   r   r   r     s    !
 r   r   c                  ,    \ rS rSrSrSS jrSS jrSrg)	_Trialsi  zShow a list of trials.c           	         UR                  S[        SSS9  UR                  SS[        SSS	S
9  UR                  SSSSS9  g )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   _Trials.add_arguments  i    ?	 	 	
 	6! 	 	
 	H	 	 	
r   c                d   [        S[        5        [        UR                  UR                  5      n[
        R                  " X!R                  S9nSUR                  5       (       d  SOSSSSS	S
S4n[        R                  X45      u  pV[        [        XVUR                  UR                  5      5        g)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   rV   rp   r   r   r   r]   rT   rU   s          r   r   _Trials.take_action  s    ^	

 {22K4M4MN!!'>T>TU 4466GH	
 &JJ5XnW{/A/A;CVCVWXr   rc   Nr   r   r   rc   r   r   r  r    s     
,r   r  c                  ,    \ rS rSrSrSS jrSS jrSrg)	
_BestTriali  zShow the best trial.c           	         UR                  S[        SSS9  UR                  SS[        SSS	S
9  UR                  SSSSS9  g )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   _BestTrial.add_arguments  r  r   c                   [        S[        5        [        UR                  UR                  5      n[
        R                  " X!R                  S9nSUR                  5       (       d  SOSSSSS	S
S4n[        R                  X45      u  pV[        [        XSR                  R                     XaR                  UR                   5      5        g)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   rV   r#  s          r   r   _BestTrial.take_action!  s    b	

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

 r   rc   Nr   r   r   rc   r   r   r&  r&    s    
,r   r&  c                  ,    \ rS rSrSrSS jrSS jrSrg)	_BestTrialsi=  z2Show a list of trials located at the Pareto front.c           	         UR                  S[        SSS9  UR                  SS[        SSS	S
9  UR                  SSSSS9  g )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   _BestTrials.add_arguments@  si    ]	 	 	
 	6! 	 	
 	H	 	 	
r   c                  ^	 [        S[        5        [        UR                  UR                  5      n[
        R                  " X!R                  S9nUR                   Vs/ s H  oDR                  PM     snm	SUR                  5       (       d  SOSSSSS	S
S4n[        R                  X55      u  pg[        [        U	4S jU5      5      n[        [!        XUR"                  UR$                  5      5        gs  snf )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                   > U S   T;   $ )Nr  rD   rc   )rI   best_trialss    r   <lambda>)_BestTrials.take_action.<locals>.<lambda>l  s    &2HK2Wr   r   )r	   r   r(   r   r'   r   r   r   r3  r  r   r!  r"  r;   filterr   r   r   rV   )
rp   r   r   r   trialr]   rT   rU   best_recordsr3  s
            @r   r   _BestTrials.take_actionV  s    	
 {22K4M4MN!!'>T>TU161B1BC1B||1BC 4466GH	
 &JJ5XF#WY`abn\K4F4FH[H[\] Ds   C2rc   Nr   r   r   rc   r   r   r-  r-  =  s    <
,r   r-  c                  "    \ rS rSrSrSS jrSrg)_StorageUpgradeiq  z%Upgrade the schema of an RDB storage.c                   [        UR                  5      n [        USSS9nUR                  5       nUR                  5       nUR                  5       nXE:X  a  U R                  R                  S5        g	XF;   aG  U R                  R                  S5        UR                  5         U R                  R                  S5        g	[        S5        g	! [        R                  R
                   a    U R                  R                  S5         gf = f)
NT)skip_compatibility_checkskip_table_creationzInvalid RDBStorage URL.rC   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	   )rp   r   r   r   current_versionhead_versionknown_versionss          r   r   _StorageUpgrade.take_actiont  s    ()<)<=	 dPTG "557//1 113*KK:;  .KKRSOOKK@A  -
 % ~~++ 	KK78	s   C 9DDrc   Nr   )r    rd   re   rf   r   r   rj   rc   r   r   r;  r;  q  s
    /r   r;  c                  ,    \ rS rSrSrSS jrSS jrSrg)	_Aski  z*Create a new trial and suggest parameters.c           	         UR                  S[        SS9  UR                  S[        SS9  UR                  S[        SS9  UR                  S[        S	S9  UR                  S
S[        SSSS9  UR                  SSSSS9  g )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   _Ask.add_arguments  s    N;KLKc8abK 	 	

 	F	 	 	
 	6! 	 	
 	9	 	 	
r   c           
     (   [        S[        5        [        UR                  UR                  5      nUUR
                  SS.nUR                  ba  UR                  b!  [        R                  " UR                  5      nO0 n[        [        R                  UR                  5      nU" S0 UD6nXcS'   OUR                  b  [        S5      eUR                  bu  [        R                  " UR                  5      R                  5        VVs0 s H9  u  pxU[        R                   R#                  [        R$                  " U5      5      _M;     n	nnO0 n	 [        R&                  " US   US   UR)                  S5      S9n
U
R-                  U	S
9nU R.                  R1                  SUR2                   SUR4                   S35        SUR2                  0nS/n[7        UR4                  5      S:X  a(  UR8                  (       d  0 US'   UR;                  S5        O<UR4                  R                  5        H  u  pXSU4'   UR;                  SU45        M      [=        [?        XUR@                  UR8                  5      5        gs  snnf ! [*         a    [+        S	5      ef = f)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   rO  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 .r2  r   )r  rD   r  rc   )!r	   r   r(   r   r'   r   rO  sampler_kwargsr   loadsgetattrr   samplers
ValueErrorsearch_spacer>   distributionsjson_to_distributionr   r   r   KeyErroraskr   r   r  r  rQ   rV   rN   r   r   r   )rp   r   r   create_study_kwargsrR  sampler_clsrO  r   distrW  r   r7  rI   rU   
param_nameparam_values                   r   r   _Ask.take_action  sk   [	

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

4@PQQ"N  L
 L	%%.|<+I6+//	:E 		l	;<~5Fu||nTUVW.<ell-K!"u||!+*=*=%'F>"NN>*+0<<+=+=+?'
1<*-.*56 ,@ 	nVk.@.@+BUBUVWG  	D 	s   A I5+I; ;Jrc   Nr   r   r   rc   r   r   rI  rI    s    4
>Dr   rI  c                  ,    \ rS rSrSrSS jrSS jrSrg)	_Telli  z5Finish a trial, which was created by the ask command.c                    UR                  S[        SS9  UR                  S[        SS9  UR                  S[        SSS	9  UR                  S
[        SSS9  UR                  SSSSS9  g )Nr   rK  rL  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?   r6   r7   r   s     r   r   _Tell.add_arguments  s    N;KL,3_MJU#DWX2	 	 	
 	 	 	 	
r   c           	        [        S[        5        [        UR                  UR                  5      n[
        R                  " UUR                  S9nUR                  b"  [        UR                  R                  5          nOS nUR                  nUR                  nUR                  UUUUR                  S9  U R                  R!                  SU SU SU S35        g)	NzN'tell' is an experimental CLI command. The interface can change in the future.r   )r7  r   r  skip_if_finishedzTold trial z with values z and state rQ  r   )r	   r   r(   r   r'   r   r   r   r  r   uppertrial_numberr   tellrj  r   r   )rp   r   r   r   r  rl  r   s          r   r   _Tell.take_action  s    \	

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

(99	 	 	
 	;|nM&UZT[[\]^r   rc   Nr   r   r   rc   r   r   rc  rc    s    ?
$r   rc  )zcreate-studyzdelete-studyzstudy set-user-attrzstudy-namesstudiestrialsz
best-trialzbest-trialszstorage upgrader[  rm  zdict[str, type[_BaseCommand]]	_COMMANDSc                   [         R                  [        R                  [        R                  /n[        R                  [
        R                  /nXU-   ;   a  U $ [        R                  " SU  S[        U5      SS  S35      e)NzInvalid choice: z  (choose from rC   ))	r   r    r   r   r   r   argparseArgumentTypeErrorr?   )r@   r   deprecated_choicess      r   :_parse_storage_class_without_suggesting_deprecated_choicesrx  =  s    ##$$G 	##$$ ,,,

$
$
5'Wa1C0DAF r   c           	        U R                  SS SS9  U R                  SSS [        S9  U R                  5       nUR                  SSS	S
SSS9  UR                  SSSS
SSS9  U R                  SSS SS9  U R                  SSSSS9  U $ )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_levelrC   z.Increase verbosity of output. Can be repeated.)r   destr   r   z-qz--quietstore_constr   z+Suppress output except warnings and errors.)r   r|  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   rx  add_mutually_exclusive_group)r   verbose_groups     r   _add_common_argumentsr  N  s    
M	   ;G	   779M=   :   A	   )	   Mr   c                d  ^  T R                  5       n0 n[        R                  5        H_  u  pEU" 5       nUR                  XA/[        R
                  " U5      S9nUR                  U5        UR                  UR                  S9  XsU'   Ma     SU 4S jjnUR                  SSS9R                  US9  U$ )N)parentsr   )handlerc                &   > TR                  5         g r+   )
print_help)argsmain_parsers    r   _print_help"_add_commands.<locals>._print_help  s     r   r   zShow help message and exit.)r   r  r   r   r   )	add_subparsersrq  r>   
add_parserinspectgetdocr   set_defaultsr   )	r  parent_parser
subparserscommand_name_to_subparsercommand_namecommand_typecommand	subparserr  s	   `        r   _add_commandsr  }  s     ++-J "&/oo&7".))/|8T * 
	 	i(w':':;2;,/ '8! &'DERR S  %$r   c                    [        SS9n[        U5      n[        X/S9nUR                  SSSR                  S[        R
                  5      S9  [        X!5      nX#4$ )	NF)add_help)descriptionr  z	--versionversionz{0} {1}r   )r   r  )r   r  r   r   r   __version__r  )r  r  r  r  s       r   _get_parserr    sg     #E2M)-8M [/RKIy/?/?&J\J\/]   !.k I11r   c                   [        U 5      S:  a  U SS  OS/n [        [        U 5      5       HO  n[        XS-   5       H:  nSR                  XUS-    5      nU[        ;   d  M%  U S U XS-   S  -   nU/U-   s  s  $    MQ     U $ )NrC   r   rb   r{   )rQ   rR   r   rq  )argvrZ   jcommand_candidateoptionss        r   _preprocess_argvr    s     4y1}486(D3t9qa%A #!a% 9 I-r(Ta%']2)*W44	 !  Kr   c                @   [         R                  " 5       nUR                  [         R                  5        [         R                  " [
        R                  5      n[         R                  [         R                  [         R                  S.R                  U R                  [         R                  5      nUR                  U5        UR                  [        R                   R                  5       5        UR                  U5        [        R                   R                  U5        g )N)r   rC   rb   )r   	getLoggersetLevelDEBUGStreamHandlersysstderrWARNINGINFOr   r{  setFormatterr   create_default_formatter
addHandlerset_verbosity)r  root_loggerstream_handlerlogging_levels       r   _set_verbosityr    s    ##%K'**3::6N ??<<== 
c$

gmm,	  M* G G IJ>*
NN  /r   c                @   U R                   c  g [        R                  " 5       nUR                  [        R                  5        [        R
                  " U R                   S9nUR                  [        R                  R                  5       5        UR                  U5        g )N)filename)
log_filer   r  r  r  FileHandlerr  r   r  r  )r  r  file_handlers      r   _set_log_filer    sq    }}##%K'&&L fnnEEGH<(r   c                 6   [        5       u  p[        R                  n[        U5      nU R	                  U5      n[        U5        [        U5        [        R                  " S5      n UR                  U5      $ ! [         aS  nUR                  (       a  UR                  U5        O&UR                  U5        XS      R                  5          S nAgS nAf[         a<    SR!                  USS  5      nUR                  SU S35        U R                  5          gf = f)Nr   r   rC   r{   'z/' is not an optuna command. see 'optuna --help')r  r  r  r  
parse_argsr  r  r   r  r  r
   debug	exceptionr?  r  AttributeErrorr   )r  r  r  preprocessed_argvr  r   eargv_strs           r   mainr    s    -8]*K88D(.!!"34D4$x(F||D!! ::QLLO &&:;FFH  88DH%q
"QRS s    &A7 7
DA	CADD)r   
str | Noner   r?   )r   r  r'   r  r   r   )r@   r   r   r   )rT   z list[dict[tuple[str, str], Any]]rU   list[tuple[str, str]]rV   boolr   z&tuple[list[dict[str, Any]], list[str]])rT   zlist[dict[str, Any]]rW   	list[str]r   r?   )
rT   z=list[dict[tuple[str, str], Any]] | dict[tuple[str, str], Any]rU   r  r   r?   rV   r  r   r?   )r@   r?   r   r?   )r   r   r   r   )r  r   r  r   r   zdict[str, ArgumentParser])rD   )r  r?   r   z0tuple[ArgumentParser, dict[str, ArgumentParser]])r  r  r   r  r  r   )Gr   
__future__r   ru  r   r   r8   enumr   r  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!  r:   r   r(   r-   r^   r`   rl   r   r   r   r   r   r   r   r   r   r  r&  r-  r;  rI  rc  rq  __annotations__rx  r  r  r  r  r  r  r  rc   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   