L i 6UdZddlmZddlZddlmZddlmZddlZddlmZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZddlZddlZddlZddlZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddl m!Z!ddl m"Z"ddl#m$Z$edZ%dZ&dCdZ'dDdZ(dEdZ) dFdZ*GddeZ+GddZ,dGdZ-dGdZ. dHdZ/Gd d!Z0Gd"d#e0Z1Gd$d%e0Z2Gd&d'e0Z3Gd(d)e0Z4Gd*d+e0Z5Gd,d-e0Z6Gd.d/e0Z7Gd0d1e0Z8Gd2d3e0Z9Gd4d5e0Z:Gd6d7e0Z;e1e2e3e4e5e6e7e8e9e:e;d8 ZdJd<Z? dKd=Z@dLdMd>ZAdNd?ZBdOd@ZCdOdAZDdPdBZEy)QzfOptuna CLI module. If you want to add a new command, you also need to update the constant `_COMMANDS` ) annotationsN)ArgumentParser) Namespace)Enum)Any) _LazyImport) CLIUsageError)ExperimentalWarning) BaseStorage)JournalFileStorage)JournalRedisStorage)JournalStorage) RDBStorage)JournalFileBackend)JournalRedisBackend) TrialStatezoptuna.study._dataframez%Y-%m-%d %H:%M:%Sc||Stjjd}|tjdt |St d)NOPTUNA_STORAGEzSpecifying the storage url via 'OPTUNA_STORAGE' environment variable is an experimental feature. The interface can change in the future.zStorage URL is not specified.)osenvirongetwarningswarnr r ) storage_url env_storages P/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/optuna/cli.py_check_storage_urlr*sP**..!12K  S   7 88ct|}|r|tjk(rtt|S|tjk(rtt |S|t jk(rtt |S|t jk(rtt |S|tjk(r t|Std|jdrtt|Stjj|rtt |S t|S#tjj$r tdwxYw)NzUnsupported storage classredisz.Failed to guess storage class from storage_url)rr__name__rr rr rr startswithrpathisfile sqlalchemyexc ArgumentError)r storage_classs r _get_storager)9s,$[1K /88 8!"5k"BC C /88 8!"5k"BC C .77 7!"4["AB B .77 7!"4["AB B J// /k* *788g&1+>?? ww~~k"0=>>N+&& >> ' 'NLMMNs , D77)E c|t|ttfr|St|tjr|j t St|t rt d|DSt|trtd|DSt|tr6|jDcic]\}}t|t|c}}St|Scc}}w)Nc32K|]}t|ywN _format_value.0vs r z _format_value..Ys4M!$4c32K|]}t|ywr,r-r/s rr2z _format_value..[s5!]1%5r3) isinstanceintfloatdatetimestrftime_DATETIME_FORMATlisttupledictitemsr.str)valuekr1s rr.r.Rs } 53,7 E8,, -~~.// E4 4e444 E5 !5u555 E4 ?D{{}Mtq! a -"22MM5zNs1Cch g}g}|r3|D] ddk7r|j dd d(t fd|DrPd}|D]} |vst|t| }!t |D]}|j dd||j d|D]}i}|D]l |vrt | } ddk7r| | dd d</t fd|Dr!t | D]\}} | | dd|<d| | d<n|j|||fS|D] d|vs |j d |D]}|D cic]} | i} } |D] |vrt | } t dtrX| dik(rg| d<| dxxdgt ddzt| dz dzz cc<| | d d< ddk7r| | d d<| | d<|j| ||fScc} w)Nr_c3hK|])}t|jttf+ywr,r5rr;r<r0recordcolumns rr2z#_convert_to_dict..ks%YvZ 6 2T5MBY/2c3hK|])}t|jttf+ywr,rGrHs rr2z#_convert_to_dict..|s%]6FJJv$6u F]rK) appendanymaxlenranger. enumerater5r6)recordscolumnsflattenheaderret max_lengthrIirowr@r1 column_nameattrsrJs @r_convert_to_dictr]bsF C )FayB  1VAYK89YQXYY %JF'%(S5H%I Jz*6AMMVAYKq"456 fQi( ) FC! 0'%fVn5!9?6;C6!9+Qvayk23]U\]] )% 04123vayk1#./4+0C6!9+' 0 JJsO J ;- )Fay& fQi( ) FHN$O["_$OE$O! -'%fVn5fQi-VAY'2-+-fQi(&)$VAY]SvVWyIYEZ5Z\]1^(^^$27E&)$VAY/AY"_27E&)$VAY/',E&)$ - JJu # & ;%%Ps( H/ceZdZdZdZdZy) ValueTyperrCN)r! __module__ __qualname__NONENUMERICSTRINGrrr_r_s DG Frr_c,eZdZddZddZddZd dZy) CellValuec||_|tj|_yt |t t frtj|_ytj|_yr,) r@r_rc value_typer5r6r7rdre)selfr@s r__init__zCellValue.__init__sA ='nnDO U| ,'//DO'..DOrct|jtjr|jjtSt |jSr,)r5r@r8r9r:r?rks r__str__zCellValue.__str__s: djj("3"3 4::&&'78 8tzz? "rc>tt|jSr,)rPr?r@rns rwidthzCellValue.widths3tzz?##rct|j}|jd|zS|tjk(r|d|dS|d|dS)N >rD<)r?r@r_rd)rkrjrqr@s r get_stringzCellValue.get_stringsWDJJ :: ;  9,, ,AeW@9% &AeW@9% &rN)r@rreturnNone)rwr?rwr6)rjr_rqr6rwr?)r!rarbrlrorqrvrfrrrhrhs/# $'rrhcg}|D][}g}|D]2}|j|j|t||nd4|jdj|]dj|S)NrDrs )rMrr?join)rSrVvaluesrIrZr[s r _dump_valuer~s| F%! `K JJ6::k3J3Vs6+./\^ _  `  chhsm$% 99V rc g}|D]E}g}|D]+}|jt|j|-|j|Gd}d}|Dcgc]}d} }tt |D]|Dcgc]}|j } }t j} | D]&} | t jk(st j} (t |dk(rt |} n*tt |tfd|D} |d| dzzdzz }| t jk(r|d|d| d d z }n|d|d | d d z }t|D]+\}}| |xxd|j| | zd zz cc<-!d }||d zz }||d zz }||d zz }| D] }||d zz } ||d zz }|Scc}wcc}w) N+|rc3DK|]}|jywr,)rq)r0rZrJs rr2z_dump_table..s4YSS[5F5F5H4Ys -r`rsrtrDz |rur{) rMrhrrQrPrjr_rdrerOrRrv)rSrVrowsrIrZr[ separator header_stringrE rows_string value_typesrjt max_widthrYrW row_stringrJs @r _dump_tablers1 D! ;K JJyK!89 : ; C  IM $%13%K%F $Y9=>#s6{--> >&&  .AI$$$&--  . t9>F6N+ICv/4YTX4Y1YZISIM*S00 ** * q)@} =R@ @M q)@} =R@ @Mo YFAs NcCK$:$::y$QQTXX XN YY$ C9t C=4 C9t C!!  zD  !9t C J7&>s  G =Gcxt|trt|||\}}nt|g||\}}|dk(rt||j S|dk(rt ||j S|dk(rYt|tr#t j|j St j|dj S|dk(rYt|tr#tj|j Stj|dj Std|d)Nr@tablejsonryamlz"Optuna CLI does not supported the z format.) r5r;r]r~striprrdumpsr safe_dumpr )rSrT output_formatrUr}rVs r_format_outputrs '4 )'7GD)7)WgF66*0022 ' !66*0022 & gt $::f%++- -::fQi(..0 0 & gt $>>&)//1 1>>&),224 4@xXYYrc(eZdZdZddZddZddZy) _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. cTtjjt|_yr,)optunalogging get_loggerr!loggerrns rrlz_BaseCommand.__init__snn//9 rcy)zAdd arguments required for each command. Args: parser: `ArgumentParser` object to add arguments Nrfrkparsers r add_argumentsz_BaseCommand.add_argumentss rct)aDefine 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)rk parsed_argss r take_actionz_BaseCommand.take_action$s "!rN)rwrxrrrwrxrrrwr6)r!rarb__doc__rlrrrfrrrrs :  "rrc eZdZdZddZddZy) _CreateStudyzCreate a new study.c|jddd|jddtdd|jdd d d |jd tddddy)N --study-namez?A human-readable name of a study to distinguish it from others.defaulthelpz --direction)minimizemaximizeznSet direction of optimization to a new study. Set 'minimize' for minimization and 'maximize' for maximization.)rtypechoicesrz--skip-if-existsF store_truezgIf specified, the creation of the study is skipped without any error when the study name is duplicated.ractionrz --directionszSet directions of optimization to a new study. Put whitespace between directions. Each direction should be either "minimize" or "maximize".r)rrrrnargs add_argumentr?rs rrz_CreateStudy.add_arguments6s R   ,@    C    ,0  rct|j|j}tj||j |j |j|jj }t|y)N)storage study_name direction directionsload_if_existsr) r)rr(r create_studyrrrskip_if_existsprint)rkrrrs rrz_CreateStudy.take_actionVsh{22K4M4MN(("--!++"--&55  *  jrNrrr!rarbrrrrfrrrr3s @ rrc eZdZdZddZddZy) _DeleteStudyzDelete a specified study.c,|jdddy)Nrz The name of the study to delete.rrrs rrz_DeleteStudy.add_argumentsfsND?abrct|j|j}|j|j}|j |y)Nr)r)rr(get_study_id_from_namer delete_study)rkrrstudy_ids rrz_DeleteStudy.take_actionisA{22K4M4MN11+2H2HIX&rNrrrrfrrrrcs#crrc eZdZdZddZddZy)_StudySetUserAttributez Set a user attribute to a study.c~|jddd|jdddd|jddd y) NrTz3The name of the study to set the user attribute to.)requiredrz--keyz-kzKey of the user attribute.z--valuezValue to be set.rrs rrz$_StudySetUserAttribute.add_argumentsssN F  GTD?[\I;MNrct|j|j}tj||j }|j |j|j|jjdy)NrrzAttribute successfully written.r) r)rr(r load_studyr set_user_attrkeyr@rinfo)rkrrstudys rrz"_StudySetUserAttribute.take_action|sb{22K4M4MN!!'k>T>TU KOO[->->? :;rNrrrrfrrrrps*Orrc eZdZdZddZddZy) _StudyNamesz1Get all study names stored in a specified storagec:|jddtdddy)N-f--formatr@rrrr@Output format.rrrrrrs rrz_StudyNames.add_argumentss'  6!  rct|j|j}tj|}g}d}|D]}|j ||it t||g|jdy)NnamerDF)rUr) r)rr(rget_all_study_namesrMrrformat)rkrrall_study_namesrS record_keyrs rrz_StudyNames.take_actionss{22K4M4MN 44W=! ) 5J NNJ 3 4 5 nWzlK4F4FPUVWrNrrrrfrrrrs; rrc(eZdZdZgdZddZddZy)_StudieszShow a list of studies.)rrrDn_trialsrDdatetime_startrDcd|jddtddd|jddd d y) Nrrrrrr --flattenFrz*Flatten nested columns such as directions.rrrs rrz_Studies.add_argumentssH  6!    =  rcjt|j|j}tj|d}g}|D]}|j |j j tnd}i}|j|d<td|jD|d<|j|d<||d<|j|d<|j|td |Dr|jjdt!t#||j|j$|j&y ) NF)include_best_trialrc34K|]}|jywr,)r)r0ds rr2z'_Studies.take_action..s-Kaff-Ksrrr user_attrsrDc3,K|] }|dik7yw)rNrf)r0rs rr2z'_Studies.take_action..s 00+2D2DkFYFY  rNrr)r!rarbrrrrrfrrrrs! rrc eZdZdZddZddZy)_TrialszShow a list of trials.c|jdtdd|jddtddd |jd d d dy)NrTz,The name of the study which includes trials.rrrrrrrrrrFr5Flatten nested columns such as params and user_attrs.rrrs rrz_Trials.add_argumentsi ?    6!    H  rcztjdtt|j|j }t j||j}d|jsdnddddd d d f}tj||\}}tt|||j|jy ) NzP'trials' is an experimental CLI command. The interface can change in the future.rnumberr@r}rdatetime_completedurationparamsrstater)rrr r)rr(rrr_is_multi_objective _dataframe$_create_records_and_aggregate_columnrrrrUrkrrrr\rSrTs rrz_Trials.take_actions ^  {22K4M4MN!!'k>T>TU  446GH        &JJ5RWX nWg{/A/A;CVCVWXrNrrrrfrrrrs  ,rrc eZdZdZddZddZy) _BestTrialzShow the best trial.c|jdtdd|jddtddd |jd d d dy)NrTz,The name of the study to get the best trial.rrrrrrrrFrrrrrs rrz_BestTrial.add_arguments rrctjdtt|j|j }t j||j}d|jsdnddddd d d f}tj||\}}tt||jj||j |j"y ) NzT'best-trial' is an experimental CLI command. The interface can change in the future.rrr@r}rrrrrrr)rrr r)rr(rrrrrr rr best_trialrrrUr s rrz_BestTrial.take_action!s b  {22K4M4MN!!'k>T>TU  446GH        &JJ5RWX ((//0';;M;M{ObOb  rNrrrrfrrr r s ,rr c eZdZdZddZddZy) _BestTrialsz2Show a list of trials located at the Pareto front.c|jdtdd|jddtddd |jd d d dy)NrTzJThe name of the study to get the best trials (trials at the Pareto front).rrrrrrrrFrrrrrs rrz_BestTrials.add_arguments@si ]    6!    H  rc tjdtt|j|j }t j||j}|jDcgc]}|jc} d|jsdnddddd d d f}tj||\}}tt fd |}t!t#|||j$|j&y cc}w)NzU'best-trials' is an experimental CLI command. The interface can change in the future.rrr@r}rrrrrrc|dvS)NrrDrf)rI best_trialss rz)_BestTrials.take_action..ls&2HK2Wrr)rrr r)rr(rrrrrrrr r;filterrrrrU) rkrrrtrialr\rSrT best_recordsrs @rrz_BestTrials.take_actionVs    {22K4M4MN!!'k>T>TU161B1BCu||C  446GH        &JJ5RWXF#WY`ab  n\7K4F4F H[H[\]Ds+C:Nrrrrfrrrr=s< ,rrceZdZdZddZy)_StorageUpgradez%Upgrade the schema of an RDB storage.c*t|j} t|dd}|j}|j}|j}||k(r|j jdy ||vrG|j jd|j|j jdy tjdy #tjj $r|j jdYywxYw) NT)skip_compatibility_checkskip_table_creationzInvalid RDBStorage URL.rCzThis 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)rrrr%r&r'rerrorget_current_versionget_head_versionget_all_versionsrupgraderr)rkrrrcurrent_version head_versionknown_versionss rrz_StorageUpgrade.take_actionts()<)<=   dPTG "557//1  113 l * KK  : ; . KK  R S OO  KK  @ A MM-  %~~++  KK  7 8 sC8DDNr)r!rarbrrrfrrrrqs /rrc eZdZdZddZddZy)_Askz*Create a new trial and suggest parameters.c$|jdtd|jdtd|jdtd|jdtd |jd d td d d|jddddy)NrName of study.rrz --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`.rrrrrrrFrz&Flatten nested columns such as params.rrrs rrz_Ask.add_argumentssN;KLKc8ab K   F     6!    9  rc *tjdtt|j|j }||j dd}|j`|j tj|j}ni}ttj|j}|di|}||d<n|j td|jqtj|jj!Dcic]8\}}|tj"j%tj&|:} }}ni} tj(|d|d|j+d} | j/| } |j0j3d | j4d | j6d d| j4i} dg} t9| j6dk(r#|j:si| d<| j=dn<| j6j!D]\}}|| d|f<| j=d|f!t?tA| | |jB|j:ycc}}w#t,$r t-d wxYw)NzM'ask' is an experimental CLI command. The interface can change in the future.T)rrrsamplerzm`--sampler_kwargs` is set without `--sampler`. Please specify `--sampler` as well or omit `--sampler-kwargs`.rr)rrr.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 .rr)rrDrrf)"rrr r)rr(rr.sampler_kwargsrloadsgetattrrsamplers ValueError search_spacer> distributionsjson_to_distributionrrrKeyErroraskrrrrrPrUrMrrr)rkrrcreate_study_kwargsr1 sampler_clsr.rdistr6rrrIrT param_name param_values rrz_Ask.take_actionsy [  {22K4M4MN%00"     *))5!%K,F,F!G!#!&//;3F3FGK!3N3G-4  *))5 8  # # / #'**[-E-E"F"L"L"ND$f**?? 4@PQQL L %%.|<+I6+// :E l ; < ~5Fu||nTUVW. " NN> *+0<<+=+=+? 7' K1<*-.*56 7 nVWk.@.@+BUBUVWG D  s =I7-I==JNrrrrfrrr)r)s4 >Drr)c eZdZdZddZddZy)_Tellz5Finish a trial, which was created by the ask command.c|jdtd|jdtd|jdtdd |jd td d |jddddy)Nrr+r,z--trial-numberz Trial number.z--valuesrzObjective values.)rrrz--statez Trial state.)completeprunedfail)rrrz--skip-if-finishedFrzSIf specified, tell is skipped without any error when the trial is already finished.r)rr?r6r7rs rrz_Tell.add_argumentssN;KL,3_MJU#DWX 2     rc tjdtt|j|j }t j||j}|j"t|jj}nd}|j}|j}|j||||j|j j#d|d|d|dy) NzN'tell' is an experimental CLI command. The interface can change in the future.r)rr}rskip_if_finishedz Told trial z with values z and state r0r)rrr r)rr(rrrrrupper trial_numberr}tellrGrr)rkrrrrrIr}s rrz_Tell.take_action s \  {22K4M4MN!!"--     ('1+2C2C2I2I2K'LEE"// ## (99   ;|nM&UZT[[\]^rNrrrrfrrrArAs? $rrA) z create-studyz delete-studyzstudy set-user-attrz study-namesstudiestrialsz best-trialz best-trialszstorage upgrader:rJzdict[str, type[_BaseCommand]] _COMMANDSctjtjtjg}tjt jg}|||zvr|St jd|dt|ddd)NzInvalid choice: z (choose from rC)) rr!rrr r argparseArgumentTypeErrorr?)r@rdeprecated_choicess r:_parse_storage_class_without_suggesting_deprecated_choicesrT=s##$$G ##$$ ,,,  $ $ 5'Wa1C0DAF rc0|jddd|jdddt|j}|jddd d d d |jdddd dd|jdddd|jdddd|S)Nz --storagezbDB URL. (e.g. sqlite:///example.db) Also can be specified via OPTUNA_STORAGE environment variable.rz--storage-classz,Storage class hint (e.g. JournalFileBackend))rrrz-vz --verbosecount verbose_levelrCz.Increase verbosity of output. Can be repeated.)rdestrrz-qz--quiet store_constrz+Suppress output except warnings and errors.)rrXconstrz --log-filestorez2Specify a file to log output. Disabled by default.)rrrz--debugFrzShow tracebacks on errors.r)rrTadd_mutually_exclusive_group)r verbose_groups r_add_common_argumentsr^Ns  M   ; G  779M   =    :   A    )  Mrcxj}i}tjD]f\}}|}|j||gt j |}|j ||j|j|||<hdfd }|jddj||S)N)parentsr)handlerc&jyr,) print_help)args main_parsers r _print_helpz"_add_commands.._print_helps rrzShow help message and exit.)rrdrrwrx) add_subparsersrMr> add_parserinspectgetdocr set_defaultsr) re parent_parser subparserscommand_name_to_subparser command_name command_typecommand subparserrfs ` r _add_commandsrt}s++-J "&/oo&7<" l.)) =/|8T*  i(w':':;2;!,/<!&'DERRS %$rctd}t|}t||g}|jdddjdtj t ||}||fS) NF)add_help) descriptionr`z --versionversionz{0} {1}r)rrx)rr^rrr __version__rt)rwrmreros r _get_parserrzsn#E2M)-8M [=/RKIy/?/?&J\J\/]!.k= I 1 11rct|dkDr|ddndg}tt|D]M}t||dzD]9}dj|||dz}|tvs#|d|||dzdz}|g|zccSO|S)NrCrr`rs)rPrQr|rM)argvrYjcommand_candidateoptionss r_preprocess_argvrs4y1}486(D 3t9 5q!a% 5A #a!a% 9  I-r(T!a%']2)*W44  55 Krc<tj}|jtjtjt j }tjtjtjdj|jtj}|j||jtjj|j|tjj|y)N)rrCr`)r getLoggersetLevelDEBUG StreamHandlersysstderrWARNINGINFOrrW setFormatterrcreate_default_formatter addHandler set_verbosity)rd root_loggerstream_handler logging_levels r_set_verbosityrs##%K'**3::6N ?? << == c$  gmm,  M* G G IJ>* NN  /rc@|jytj}|jtjtj |j}|j tjj|j|y)N)filename) log_filerrrr FileHandlerrrrr)rdr file_handlers r _set_log_filersq }}##%K'&&LfnnEEGH<(rc*t\}}tj}t|}|j |}t |t |tjd} |j|S#t$rO}|jr|j|n'|j|||djYd}~yd}~wt$r<dj!|dd}|jd|d|jYywxYw)NrrrCrs'z/' is not an optuna command. see 'optuna --help')rzrr|r parse_argsrrrrrar debug exceptionr rcAttributeErrorr|)reror|preprocessed_argvrdreargv_strs rmainrs-8]*K* 88D(.  ! !"3 4D4$   x (F||D!!  ::   Q  LLO &&7&: ; F F H 88DH% q "QRS  s &A77 DAC  ADD)r str | Nonerwr?)rrr(rrwr )r@rrwr)rSz list[dict[tuple[str, str], Any]]rTlist[tuple[str, str]]rUboolrwz&tuple[list[dict[str, Any]], list[str]])rSzlist[dict[str, Any]]rV list[str]rwr?) rSz=list[dict[tuple[str, str], Any]] | dict[tuple[str, str], Any]rTrrr?rUrrwr?)r@r?rwr?)rrrwr)rerrmrrwzdict[str, ArgumentParser])rD)rwr?rwz0tuple[ArgumentParser, dict[str, ArgumentParser]])r|rrwrrgry)Fr __future__rrQrrr8enumrrjrrrrtypingrrsqlalchemy.excr%rroptuna._importsroptuna.exceptionsr r optuna.storagesr r r rroptuna.storages.journalrr optuna.trialrrr:rr)r.r]r_rhr~rrrrrrrrrr rrr)rArM__annotations__rTr^rtrzrrrrrfrrrs ##   '+1'./*&67#2 3 & 9N2  7 -78M7X\7+7t '': %PZ JZ "ZZ Z  Z:""D-<-` < \.,04|4n/l/d22j1,1hl%%0 2  0$ )r