Ë
    þÍ:jX  ã                  ó  — d dl m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 erd d
lmZ  ej$                  «       rd dlmZ  ee«      Z G d„ de«      Z G d„ de«      Zddd„Zdd„Zdd„Zddd„Zdd„Zdd„Zy)é    )ÚannotationsN)Ú
NamedTuple)ÚTYPE_CHECKING)Ú
get_logger)Ú_CONSTRAINTS_KEY)Ú
TrialState)Ú_imports)Ú_make_hovertext)ÚStudy)Úgoc                  óJ   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   y)Ú_TimelineBarInfoÚintÚnumberúdatetime.datetimeÚstartÚcompleter   ÚstateÚstrÚ	hovertextÚboolÚ
infeasibleN©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ús/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/optuna/visualization/_timeline.pyr   r      s$   … ØƒKØÓØÓØÓØƒNØÔr   r   c                  ó   — e Zd ZU ded<   y)Ú_TimelineInfoúlist[_TimelineBarInfo]ÚbarsNr   r   r   r    r"   r"   !   s   … Ø
 Ô r   r"   c                ó~   — |�|dk  rt        d«      ‚t        j                  «        t        | |¬«      }t	        |«      S )a'  Plot the timeline of a study.

    Args:
        study:
            A :class:`~optuna.study.Study` object whose trials are plotted with
            their lifetime.
        n_recent_trials:
            The number of recent trials to plot. If :obj:`None`, all trials are plotted.
            If specified, only the most recent ``n_recent_trials`` will be displayed.
            Must be a positive integer.

    Returns:
        A :class:`plotly.graph_objects.Figure` object.

    Raises:
        ValueError: if ``n_recent_trials`` is 0 or negative.
    r   z3n_recent_trials must be a positive integer or None.)Ún_recent_trials)Ú
ValueErrorr	   ÚcheckÚ_get_timeline_infoÚ_get_timeline_plot)Ústudyr&   Úinfos      r    Úplot_timeliner-   %   s>   € ð& Ð" ¸!Ò';ÜÐNÓOÐOä‡N�NÔÜ˜e°_ÔE€DÜ˜dÓ#Ð#r   c                óÂ  — t        | j                  D �cg c]3  }|j                  �%|j                  �|j                  |j                  z
  ‘Œ5 c}d ¬«      }t	        | |«      rt
        j
                  j                  «       S t        | j                  D �cg c]  }|j                  €Œ|j                  ‘Œ c}t
        j
                  j                  «       ¬«      S c c}w c c}w )N)Údefault)ÚmaxÚtrialsÚdatetime_completeÚdatetime_startÚ_is_running_trials_in_studyÚdatetimeÚnow)r+   ÚtÚmax_run_durations      r    Ú_get_max_datetime_completer9   @   sÅ   € Üð —\‘\ö	
àØ×"Ñ"Ð.°1×3CÑ3CÐ3Oð ×Ñ !×"2Ñ"2Ó2ò	
ð
 ôÐô # 5Ð*:Ô;Ü× Ñ ×$Ñ$Ó&Ð&äØ&+§l¡lÖV °a×6IÑ6IÑ6Uˆ×	Ó	ÒVÜ×!Ñ!×%Ñ%Ó'ôð ùò	
ùò 	Ws   ”8CÂCÂ$Cc                óÐ   ‡‡— | j                  t        j                  fd¬«      }‰€t        |«      dkD  S t        j                  j                  «       Št        ˆˆfd„|D «       «      S )NF)ÚstatesÚdeepcopyr   c              3  ó`   •K  — | ]%  }|j                   �‰|j                   z
  d‰z  k  –— Œ' y ­w)Né   )r3   )Ú.0r7   r8   r6   s     €€r    ú	<genexpr>z._is_running_trials_in_study.<locals>.<genexpr>Z   s;   øè ø€ ò àà×ÑÐ'ð 	ˆa×ÑÑ Ð%5Ñ!5Õ5ñùs   ƒ+.)Ú
get_trialsr   ÚRUNNINGÚlenr5   r6   Úany)r+   r8   Úrunning_trialsr6   s    ` @r    r4   r4   R   sg   ù€ Ø×%Ñ%¬j×.@Ñ.@Ð-BÈUÐ%ÓS€NØÐÜ�>Ó" QÑ&Ð&ä
×
Ñ
×
Ñ
Ó
!€Cô ô àôó ð r   c                óÒ  — g }t        | «      }t        j                  d¬«      }| j                  d¬«      }|�|| d  }|D ]ó  }|j                  xs |}|j
                  t        j                  k(  r||z   n|j                  xs ||z   }t        |j                  vrdn,t        |j                  t           D �	cg c]  }	|	dkD  ‘Œ	 c}	«      }
||k  r)t        j                  d|j                  › d|› d|› d	�«       |j                  t!        |j                  |||j
                  t#        |«      |
¬
«      «       Œõ t%        |«      dk(  rt        j                  d«       t'        |«      S c c}	w )Né   )ÚsecondsF)r<   r   z"The start and end times for Trial z( seem to be reversed. The start time is z and the end time is ú.)r   r   r   r   r   r   z$Your study does not have any trials.)r9   r5   Ú	timedeltarA   r3   r   r   rB   r2   r   Úsystem_attrsrD   Ú_loggerÚwarningr   Úappendr   r
   rC   r"   )r+   r&   r$   Úmax_datetimeÚtimedelta_for_small_barr1   Útrialr3   r2   Úxr   s              r    r)   r)   b   s~  € Ø€Dä-¨eÓ4€LÜ&×0Ñ0¸Ô;Ðà×Ñ uÐÓ-€FØÐ"Ø˜Ð(Ð)Ð*ˆàò 
ˆØ×-Ñ-Ò=°ˆð �{‰{œj×0Ñ0Ò0ð Ð2Ò2à×(Ñ(ÒT¨NÐ=TÑ,Tð 	ô   u×'9Ñ'9Ñ9ñ ä U×%7Ñ%7Ô8HÑ%IÖJ �a˜!“eÒJÓKð 	ð
 ˜~Ò-Ü�O‰Oà8¸¿¹¸ð G)Ø)7Ð(8Ð8MÐN_ÐM`Ð`aðcôð 	�‰ÜØ—|‘|Ø$Ø*Ø—k‘kÜ)¨%Ó0Ø%ôõ		
ð'
ô< ˆ4ƒy�A‚~Ü�‰Ð>Ô?ä˜ÓÐùò/ Ks   Â6E$
c                ó&  — ddddddœ}t        j                  «       }t        t        d„ ¬«      D �]   }|j                  d	k(  r | j
                  D �cg c]!  }|j                  |k(  sŒ|j                  sŒ |‘Œ# }}| j
                  D �cg c]!  }|j                  |k(  sŒ|j                  rŒ |‘Œ# }}t        |d
d|«       t        |||j                     |j                  |«       Œ³| j
                  D �cg c]  }|j                  |k(  sŒ|‘Œ }}t        |||j                     |j                  |«       �Œ |j                  d¬«       |j                  t        j                  dddiddi¬«      «       |j                  d¬«       |S c c}w c c}w c c}w )NÚblueÚredÚorangeÚgreenÚgray)ÚCOMPLETEÚFAILÚPRUNEDrB   ÚWAITINGc                ó   — | j                   S ©N)Úname)rR   s    r    ú<lambda>z$_get_timeline_plot.<locals>.<lambda>š   s
   € °!·&±&€ r   )ÚkeyrY   z#ccccccÚ
INFEASIBLEÚdate)ÚtypezTimeline PlotÚtitleÚDatetimeÚTrial)re   ÚxaxisÚyaxisT)Ú
showlegend)r   ÚFigureÚsortedr   r_   r$   r   r   Ú
_plot_barsÚupdate_xaxesÚupdate_layoutÚLayout)r,   Ú_cmÚfigr   ÚbÚinfeasible_barsÚfeasible_barsr$   s           r    r*   r*   �   sb  € àØØØØñ€Cô �)‰)‹+€CÜœ
Ñ(8Ô9ó ?ˆØ�:‰:˜Ò#Ø*.¯)©)ÖY Q°q·w±wÀ%Ó7GÈAÏLËLšqÐYˆOÐYØ(,¯	©	Ö[ 1°Q·W±WÀÓ5EÈaÏlËlšQÐ[ˆMÐ[Ü�¨	°<ÀÔEÜ�} c¨%¯*©*¡o°u·z±zÀ3ÕGà#Ÿy™yÖ=˜!¨A¯G©G°uÓ,<’AÐ=ˆDÐ=Ü�t˜S §¡™_¨e¯j©j¸#Ö>ð?ð ×Ñ˜&ÐÔ!Ø×ÑÜ
�	‰	Ø!Ø˜JÐ'Ø˜GÐ$ô	
ôð ×Ñ ÐÔ&Ø€Jùò! ZùÚ[ùò >s0   ÁFÁ%FÁ2FÂF	ÂF	Â(F	Ã0FÄFc                óÜ  — t        | «      dk(  ry |j                  t        j                  || D �cg c],  }|j                  |j
                  z
  j                  «       dz  ‘Œ. c}| D �cg c]  }|j                  ‘Œ c}| D �cg c]  }|j
                  j                  «       ‘Œ c}| D �cg c]  }|j                  ‘Œ c}d|z   dz   dt        |¬«      d¬«	      «       y c c}w c c}w c c}w c c}w )	Nr   iè  z%{text}<extra>z</extra>Úh)ÚcolorÚnone)	r_   rR   ÚyÚbaseÚtextÚhovertemplateÚorientationÚmarkerÚtextposition)rC   Ú	add_tracer   ÚBarr   r   Útotal_secondsr   Ú	isoformatr   Údict)r$   rx   r_   rr   rs   s        r    rm   rm   ¯   s½   € Ü
ˆ4ƒy�A‚~Øà‡M�MÜ
�‰ØØFJÖKÀ�—
‘
˜QŸW™WÑ$×3Ñ3Ó5¸Ó<ÒKØ!%Ö&˜Aˆq�x‹xÒ&Ø/3Ö4¨!�!—'‘'×#Ñ#Õ%Ò4Ø'+Ö, !�!—+“+Ò,Ø*¨TÑ1°JÑ>ØÜ˜eÔ$Øô
	
õùò LùÚ&ùÚ4ùÚ,s   ¯1CÁ&CÁ?!C$Â&C)r^   )r+   r   r&   ú
int | NoneÚreturnú'go.Figure')r+   r   r‡   r   )r+   r   r8   zdatetime.timedelta | Noner‡   r   )r+   r   r&   r†   r‡   r"   )r,   r"   r‡   rˆ   )
r$   r#   rx   r   r_   r   rr   z	go.Figurer‡   ÚNone)Ú
__future__r   r5   Útypingr   r   Úoptuna.loggingr   Úoptuna.samplers._baser   Úoptuna.trialr   Ú$optuna.visualization._plotly_importsr	   Úoptuna.visualization._utilsr
   Úoptuna.studyr   Úis_successfulr   r   rL   r   r"   r-   r9   r4   r)   r*   rm   r   r   r    ú<module>r“      s|   ðÝ "ã Ý Ý  å %Ý 2Ý #Ý 9Ý 7ñ Ý"ð €8×ÑÔÝ7á
�XÓ
€ô�zô ô!�Jô !ô$ó6ó$ô +ó\ô>r   