Ë
    O/æjÛ  ã                   ó¶   — d Z ddlZddlmZ  ed¬«       G d„ d«      «       Z ej
                  d«      Z ej
                  d	«      Z ed
«      Z	de
dee
   fd„Zy)z1Parsing of dotted and bracketed config key paths.é    N)Ú	dataclassT)Úfrozenc                   ó6   — e Zd ZU eed<   eedf   ed<   eed<   y)ÚNodeInterpolationKeyÚraw.ÚpartsÚrelative_dotsN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚtupleÚint© ó    úV/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/omegaconf/_key_path.pyr   r      s   … à	ƒHØ��c�‰?ÓØÔr   r   z(\.)*[^.[]*z\.([^.[]*)|\[(.*?)\]z.[]=ÚkeyÚreturnc                 ó¬  ‡ ‡
‡— d‰ vr£t         j                  ‰ «      }|€J ‚|j                  «       d   }‰ d| j                  d«      }|t	        ‰ «      k(  r|S ‰ |   dk(  r|d   s|j                  «        t        j                  ‰ |d «      }||D ��cg c]  \  }}|r|n|‘Œ c}}z  }|S g }dŠ
t	        ‰ «      Šdt        fˆ
ˆ ˆfd	„}dt        dz  fˆ
ˆ ˆfd
„}‰
‰k(  s‰ ‰
   dk7  r|j                   |«       «       ‰
‰k  rM‰ ‰
   dk(  r‰
dz  Š
|j                   |«       «       n#‰
dz  Š
 |«       }	|	�|j                  |	«       n	 |S ‰
‰k  rŒM|S c c}}w )aË  
    Split a full key path into its individual components.

    This is similar to `key.split(".")` but also works with the bracket syntax:
        "a.b"       -> ["a", "b"]
        "a[b]"      -> ["a", "b"]
        "[a].b"     -> ["a", "b"]

    Backslash escaping allows literal special characters inside a key name.
    Special characters are: . [ ] =
    Any other character after a backslash passes through unchanged (including
    the backslash itself, since backslash is not a special character).

        r"a\.b"     -> ["a.b"]     \. -> literal dot; no split at that dot
        r"a\[0\]"   -> ["a[0]"]   \[ and \] -> literal brackets
        r"a\=b"     -> ["a=b"]    \= -> literal equals (useful in dotlists)
        r"a\b"      -> [r"a\b"]   \b -> passthrough: backslash + b, not special
        r"a\\.b"    -> [r"a\.b"]  first \\ -> passthrough \, then \. -> literal .
                                   result key contains a backslash followed by a dot
    ú\Né   r   ú.ú[éÿÿÿÿr   c                  ó  •— g } ‰‰k  rh‰‰   dvra‰‰   dk(  r3‰dz   ‰k  r+‰‰dz      t         v r| j                  ‰‰dz      «       ‰dz  Šn| j                  ‰‰   «       ‰dz  Š‰‰k  r‰‰   dvrŒadj                  | «      S )N)r   r   r   r   é   Ú ©Ú
_ESCAPABLEÚappendÚjoin)ÚsegÚir   Úns    €€€r   Ú_read_dot_segz split_key.<locals>._read_dot_segG   s˜   ø€ àˆØ�!Še˜˜A™ jÑ0Ø�1‰v˜Š~ ! a¡%¨!¢)°°A¸±E±
¼jÑ0HØ—
‘
˜3˜q 1™u™:Ô&Ø�Q‘‘à—
‘
˜3˜q™6Ô"Ø�Q‘�ð �!Še˜˜A™ jÒ0ð �w‰w�s‹|Ðr   c                  ó&  •— g } ‰}‰‰k  rj‰‰   dk7  rb‰‰   dk(  r3‰dz   ‰k  r+‰‰dz      t         v r| j                  ‰‰dz      «       ‰dz  Šn| j                  ‰‰   «       ‰dz  Š‰‰k  r	‰‰   dk7  rŒb‰‰k  r‰dz  Šdj                  | «      S |Šy )Nú]r   r   r   r   r   )r#   Úsaved_ir$   r   r%   s     €€€r   Ú_read_bracket_segz$split_key.<locals>._read_bracket_segW   s³   ø€ àˆØˆØ�!Še˜˜A™ #šØ�1‰v˜Š~ ! a¡%¨!¢)°°A¸±E±
¼jÑ0HØ—
‘
˜3˜q 1™u™:Ô&Ø�Q‘‘à—
‘
˜3˜q™6Ô"Ø�Q‘�ð �!Še˜˜A™ #›ð ˆqŠ5Ø�‰FˆAØ—7‘7˜3“<ÐàˆØr   )
ÚKEY_PATH_HEADÚmatchÚspanÚsplitÚlenÚpopÚKEY_PATH_OTHERÚfindallr   r!   )r   ÚfirstÚ
first_stopÚtokensÚothersÚdot_keyÚbracket_keyr&   r*   r#   r$   r%   s   `         @@r   Ú	split_keyr9      s}  ú€ ð0 �3�Ü×#Ñ# CÓ(ˆØÐ Ð Ð Ø—Z‘Z“\ !‘_ˆ
Ø�Q�zÐ"×(Ñ(¨Ó-ˆØœ˜S›Ò!ØˆMØˆz‰?˜cÒ!¨&°ª*Ø�J‰JŒLÜ×'Ñ'¨¨J¨KÐ(8Ó9ˆØØLR÷
Ù4H°G¸[‘w‰G KÑ/ó
ñ 	
ˆð ˆð
 €FØ	€AÜˆC‹€Að
œ3÷ 
ð œs T™z÷ ð& 	ˆA‚v��Q‘˜3’Ø�‰‘m“oÔ&ð ˆaŠ%Øˆq‰6�SŠ=Ø�‰FˆAØ�M‰M™-›/Õ*à�‰FˆAÙ#Ó%ˆCØˆØ—‘˜cÕ"àà€Mð ˆa‹%ð €MùóA
s   ÂE)Ú__doc__ÚreÚdataclassesr   r   Úcompiler+   r1   Ú	frozensetr    r   Úlistr9   r   r   r   ú<module>r@      su   ðÙ 7ã 	Ý !ñ �$Ô÷ð ó ðð �—
‘
˜>Ó*€Ø�—‘Ð3Ó4€ñ
 �vÓ€
ðb�3ð b˜4 ™9ô br   