
    ]i	                     D    S SK Jr  S SKJr  S SKrSSKJr   " S S5      rg)    )OrderedDict)PathN   )XPc                       \ rS rSrSrS\S\R                  S\4S jrS\	S\
4S jrS\	S\4S	 jr0 4S
\
S\4S jjrS\R                  \	   S\R                   \R                  \   \4   4S jrSrg)
NamesMixin   zHMixin that handles everything related to the naming of experiments.
    keyvaluereturnc                    UR                  S5      n/ nUSS  H  nUR                  USS 5        M     UR                  US   5        SR                  U5      n[        U[        5      (       a  UR
                  nUSL a  U$ U SU 3$ )z#Shorten the name of an XP.
        .N   T=)splitappendjoin
isinstancer   name)selfr
   r   	key_partsshort_key_partsparts         G/mnt/rpi/tmp/demucs-venv-sys/lib/python3.13/site-packages/dora/names.pyshort_name_partNamesMixin.short_name_part   s     IIcN	crND""48, #y}-hh'eT""JJED=Jaw    xpc                     [        5       e)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_partsNamesMixin.get_name_parts"   s     "##r   c                 ,    U R                  U/5      S   $ )zReturns the XP name.
        r   )	get_namesr"   s     r   get_nameNamesMixin.get_name(   s     ~~rd#B''r   parts	referencec                     / nUR                  5        H.  u  pEXB;  d  M  U R                  XE5      nUR                  U5        M0     SR                  U5      $ )N )itemsr   r   r   )r   r)   r*   	out_partsr
   r   r   s          r   _get_short_nameNamesMixin._get_short_name-   sN    	++-JC#++C7  & ( xx	""r   xpsc                 4   [        U5      S:  d   eU R                  US   5      n/ nU H  nU R                  U5      nUR                  5        H'  u  pgXb;   d  M  X&   U:w  d  M  UR                  U5        M)     [	        UR                  5       5      [	        UR                  5       5      -
  nU H  nUR                  U5        M     UR                  U5        M     / n	U H#  nU	R                  U R                  XR5      5        M%     U R                  U5      n
X4$ )zvGiven 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   r1   r*   all_xp_partsr   r)   r
   valmissingnames	base_names              r   r&   NamesMixin.get_names5   s     3x!||''A/	B''+E!KKM#	#(=MM#& * )..*+c%**,.??Gc" &  !ELL--e?@ " ((3	r    N)__name__
__module____qualname____firstlineno____doc__strtpAnyr   r   r   r#   r'   dictr/   ListTupler&   __static_attributes__r=   r   r   r   r      s     3  rvv  #   $ $ $(2 (# (
 EG #[ #T # RWWR[  RXXbggclC6G-H  r   r   )	collectionsr   pathlibr   typingrD   r   r   r   r=   r   r   <module>rM      s    $   >  > r   