
    Vh	                     L    d dl mZ d dlmZ d dlZddlmZ  G d d          ZdS )    )OrderedDict)PathN   )XPc                       e Zd ZdZdedej        defdZdede	fdZ
dedefdZi fd	e	d
efdZdej        e         dej        ej        e         ef         fdZdS )
NamesMixinzHMixin that handles everything related to the naming of experiments.
    keyvaluereturnc                 6   |                     d          }g }|dd         D ]}|                    |dd                     |                    |d                    d                    |          }t          |t                    r|j        }|du r|S | d| S )z#Shorten the name of an XP.
        .N   T=)splitappendjoin
isinstancer   name)selfr	   r
   	key_partsshort_key_partsparts         P/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/dora/names.pyshort_name_partzNamesMixin.short_name_part   s     IIcNN	crcN 	- 	-D""48,,,,y}---hh''eT"" 	JED==J    xpc                     t                      )zReturns name parts, i.e. an OrderedDict from param name -> param value.
        Name parts that don't impact the signature should be ignored.
        )NotImplementedErrorr   r   s     r   get_name_partszNamesMixin.get_name_parts"   s     "###r   c                 :    |                      |g          d         S )zReturns the XP name.
        r   )	get_namesr    s     r   get_namezNamesMixin.get_name(   s     ~~rd##B''r   parts	referencec                     g }|                                 D ]4\  }}||vr+|                     ||          }|                    |           5d                    |          S )N )itemsr   r   r   )r   r%   r&   	out_partsr	   r
   r   s          r   _get_short_namezNamesMixin._get_short_name-   si    	++-- 	' 	'JC)##++C77  &&&xx	"""r   xpsc                    t          |          dk    sJ |                     |d                   }g }|D ]}|                     |          }|                                D ]*\  }}||v r!||         |k    r|                    |           +t	          |                                          t	          |                                          z
  }|D ]}|                    |           |                    |           g }	|D ]+}|	                    |                     ||                     ,|                     |          }
|	|
fS )zGiven list of XPs, return individual XP names + base name.
        The common part in all XPs are factored into the base name
        r   )lenr!   r)   popsetkeysr   r+   )r   r,   r&   all_xp_partsr   r%   r	   valmissingnames	base_names              r   r#   zNamesMixin.get_names5   s\    3xx!||||''A//	 		' 		'B''++E!KKMM ' 'S)##	##(=(=MM#&&&)..**++c%**,,.?.??G # #c""""&&&&! 	A 	AELL--eY??@@@@((33	ir   N)__name__
__module____qualname____doc__strtpAnyr   r   r   r!   r$   dictr+   ListTupler#    r   r   r   r      s          3  rv  #         $ $ $ $ $ $(2 (# ( ( ( (
 EG # #[ #T # # # # RWR[  RXbgclC6G-H            r   r   )	collectionsr   pathlibr   typingr<   r   r   r   rA   r   r   <module>rE      s{    $ # # # # #                >  >  >  >  >  >  >  >  >  > r   