
    Vh                         d 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mZ ddlmZ ddlmZ dd
edefdZ G d d          Z G d d          ZddZdedej        fdZdS )zHiPlot support.    )ProcessPoolExecutorN)	OmegaConf)BaseContainer   )XP)get_main   value	precisionc                 d    t          j        |           s| S t          | d|z  z            d|z  z  S )zCRound value but returned as float, to make display nicer in Hiplot.
   )mathisfiniteround)r
   r   s     Q/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/dora/hiplot.pyroundfr      s9    = y())B	M99    c                       e Zd ZdZdedej        eej        f         fdZ	dedej
        ej        eej        f                  fdZdej        fdZd	S )
HiPlotExplorerzvYou can inherit this class in order to make custom HiPlotExplorer,
    for instance to select a subset of the metrics.xpmetricsc                     |S )N )selfr   r   s      r   process_metricszHiPlotExplorer.process_metrics    s    r   historyc                 $      fd|D             S )Nc                 <    g | ]}                     |          S r   )r   ).0mr   r   s     r   
<listcomp>z2HiPlotExplorer.process_history.<locals>.<listcomp>$   s)    ===$$R++===r   r   )r   r   r   s   `` r   process_historyzHiPlotExplorer.process_history#   s!    =====W====r   expc                     dS )zpUse this method to further tune the `hiplot.Experiment` object,
        for instance setting a XY plot.
        Nr   )r   r#   s     r   postprocess_expzHiPlotExplorer.postprocess_exp&   s	     	r   N)__name__
__module____qualname____doc__r   tpDictstrAnyr   Listr"   hiplot
Experimentr%   r   r   r   r   r      s        7 7" rwsBF{/C    >" >rwrwsBF{7K/L > > > >6#4      r   r   c                       e Zd ZdZdZdZdS )STYLEzbadge badge-pill badge-primaryz badge badge-pill badge-secondaryzbadge badge-pill badge-darkN)r&   r'   r(   r   internalparamsr   r   r   r2   r2   -   s        .G1H*FFFr   r2    c                     |i n|}|                                  D ];\  }}t          |t                    rt          ||||z   dz              3||||z   <   <|S )N.)outprefix)items
isinstancedict_flatten)dctr8   r9   keyr
   s        r   r=   r=   3   ss    ""Ciikk & &
UeT"" 	&UFSL3,>????? %CJr   urireturnc                 J   t                      }t                      }d}d}|j        j        }|
|j        dz   }t          j        |           D ]}d|v rE|                    dd          \  }}|dk    r
|}||dz   }n|dk    r|}nt          d	|           K|j        j        |j        j	        z  |z  }	|	
                                r2|	                                D ]}
|                    |
j                   |                    |           |d
}|dz   |z   }t          j        |          }|
J |             |            }t!          d          5 }t#          |                    |j        |                    }ddd           n# 1 swxY w Y   t)          j                    }|s|S |                    |d                   }g }t                      }|D ]}|                    |          }|                                D ]?\  }}|                    |           ||v r!||         |k    r|                    |           @t          |                                          t          |                                          z
  }|D ]}|                    |           |                    |           |t          |                                          z  }t7          ||          D ]\  }}i }|                                D ]Z\  }}||vrQ|                    ||                              dd          d         }|||<   t:          j        |j        |         _         [|D ]d}||vr^	 tC          d|z   d|i          }n# tD          $ r d}Y nw xY w|                    ||                              dd          d         }|||<   e|                                D ]r\  }}tG          |tH                    rtK          j&        |d          }tG          |t"                    r(d'                    t%          tP          |                    }|||<   s|j)        |d<   d}|j*        +                                 |,                    ||j*        j-                  }t                      }t]          |          D ]\  }}t_          |          }||d<   |ta          |j*        j-                  dz
  k    |d<   tc          |          } |2                    |            t)          j3        |j)         d| ||          }!|!j4        }|j5                            |!           |                                 D ]3}|                    |           t:          j6        |j        |         _         4|7                    t(          j8        j9                  2                    ddgddgt#          |          z   d           |7                    t(          j8        j:                  2                    dgg dt#          |          z   d           t:          j;        |j        d         _         t:          j;        |j        d         _         t:          j;        |j        d         _         |<                    |           |S )a  Loader for hiplot
    Running: python -m hiplot dora.hiplot.load --port=XXXX
    will run an hiplot server. You can provide there a list of sigs or grid names, separated
    by spaces.

    To select metrics or further tune the display, you should inherit from
    `HiPlotExplorer`, very similar in spirit to the grid explorers.

    To specify the explorer, using `explorer=MyExplorer`.
    You can also change the module to look into with `explorer_module=` (default is
    `yourproject.grids._hiplot`).
    Nr   z.grids=r   explorerz._hiplotexplorer_modulezInvalid param zdora.hiplotr7   r   r   zxp.cfg.r   T)resolvez, sigepochlast_)uidfrom_uidvaluesrL   rK   )hideorder)rG   rI   rH   )=r   setdoragrid_packagepackageshlexsplit
ValueErrordir_gridsexistsiterdiraddnamepydoclocater   listmapget_xp_from_sigr/   r0   get_name_partsr:   popkeysappendzipshort_name_partr2   r4   parameters_definition	label_cssevalAttributeErrorr;   r   r   to_containerjoinr,   rG   linkloadr"   r   	enumerater<   lenr=   update	DatapointrK   
datapointsr   display_dataDisplaysPARALLEL_PLOTTABLEr3   r%   )"r@   mainsigsrE   explorer_name
grids_nametokenr?   r
   grid_folderchildexplorer_qualifiedexplorer_klassrD   poolxpsr#   	referencexps_name_partsall_columnsr   partsvalmissingrM   snamerL   r   metric_nameskr   point_valuesflat_metricsdps"                                     r   ro   ro   =   s)    ::D55D(,O$M'J\H,
S!!  %<<S!,,JCj   %"*&0:&=O)))"' !7#!7!7888imdi&66> 	$,,.. % %$$$$% HHUOOOO'(3.>\"455N%%'9%%%~H	R	 	  9D488D0$77889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 


C 
 ##CF++IN%%K 
% 
%##B'' 	# 	#HCOOC   iIcNc$9$9c"""inn&&''#ejjll*;*;; 	 	CMM#e$$$$3y~~''(((Kn-- (I (I	E')++-- 	J 	JJC)##,,S%88>>sAFFqI %u=B\)%0: 	& 	&C%! S4*==EE% ! ! ! EEE!,,S%88>>sAFFqI %u ,,.. 	  	 JC%// D!.udCCC%&& 3		#c5//22F3KKu%)
**2rw??uu#G,, 	I 	IJAw<<L$%L!#$BGO(<(<q(@#@L #G,,L---!vOOOO!#% % %B vHN!!"%%%#((** I I  %%%;@=)#.88I	I  V_233::U#'"T,%7%77< <    V_*++22)))D,>,>>4 4    49>Cg&027.Cf%/16Ce$.S!!!Js$   )F

FF+NNN)r	   )Nr5   )r)   concurrent.futuresr   r   r]   rT   typingr*   r/   	omegaconfr   omegaconf.basecontainerr   r   r   _utilsr   floatintr   r   r2   r=   r,   r-   ro   r   r   r   <module>r      sX     2 2 2 2 2 2               1 1 1 1 1 1            : :% :C : : : :        + + + + + + + +   |c |bf | | | | | |r   