
    ُkh_`                         d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&  G d d	ee	e         Z'y)
    N)AnyCallableDictIterableIteratorListMutableSequenceOptionalTupleTypeUnion   )
	ValueKind_is_missing_literal_is_none_resolve_optionalformat_and_raiseget_value_kindis_intis_primitive_listis_structured_configtype_str)BoxContainerMetadataNode)BaseContainer)ConfigAttributeErrorConfigTypeErrorConfigValueErrorKeyValidationErrorMissingMandatoryValueReadonlyConfigErrorValidationErrorc                   R    e Zd ZU eee   def   ed<   ddededfdeee   e	edf   d edf   dede
e   deee   ef   d	ed
eee   ef   de
eeef      ddf fdZdFdededdfdZdededdfdZdeeef   dd fdZdGdZdee   fdZdededdfdZdedefdZdeeef   defdZdede	eeef   fdZdeeef   deddfdZdeeef   deddfdZdeddfdZdHdZdededdfdZ d ee   ddfd!Z!d"eddfd#Z"deeef   ddfd$Z#dHd%Z$	 dId"ed&e
e   d'e
e   defd(Z%d"edefd)Z&	 	 	 	 dJdeeef   d*ed+ed,ed-edee
e   ee
e      f   fd.Z'dFded/edefd0Z(dKdedefd1Z)	 dLde
e*egef      d2eddfd3Z+d4edefd5Z,d4edefd6Z-defd7Z.de/e   fd8Z0 G d9 d:e/e         Z1d;ede/e   fd<Z2d4eee   d f   dd fd=Z3d4eee   d f   dd fd>Z4d4ee   dd fd?Z5dedefd@Z6dFdede
eeef      ddfdAZ7	 dFdede
eeef      ddfdBZ8e9dCe
d    dDe
d    defdE       Z: xZ;S )M
ListConfigN_contentTcontent.keyparentelement_typeis_optionalref_typeflagsreturnc                    	 t        |t              r||j                  j                  }t        
|   |t        |t        |||t        |             t        |t              rJt        j                  |j                        }||_        ||_        ||_        ||_        || j                  d<   | j!                  ||       y # t"        $ r#}	t%        d |d |	t'        |	             Y d }	~	y d }	~	ww xY w)N)r,   object_typer(   optionalr*   key_typer-   )r)   metadata	_metadata)valuer-   )noder(   r5   causemsg)
isinstancer%   r4   r-   super__init__r   listintcopydeepcopyr(   r,   r1   r*   __dict__
_set_value	Exceptionr   str)selfr'   r(   r)   r*   r+   r,   r-   r3   ex	__class__s             P/var/www/teggl/fontify/venv/lib/python3.12/site-packages/omegaconf/listconfig.pyr;   zListConfig.__init__.   s    	T':.=#--33EG*% $(!-    ':.==):):;"$,!$/!(4%-5k*OO'O7 	T$Ct23r7SS	Ts   B>C 	C.C))C.r5   c                 F    t        |t        t        f      st        d      y )Nz<ListConfig indices must be integers or slices, not $KEY_TYPE)r9   r=   slicer    rD   r(   r5   s      rG   _validate_getzListConfig._validate_getT   s%    #U|,$N  -    c                 Z   ddl m} | j                  ||       | j                  d      rt	        d      d|cxk  r| j                         k  rEn nB| j                  |      }|/t        |t              sJ ||j                         st        d      t        |      }|t        j                  k(  ry t        | j                  j                         \  }}|j#                  |      }||rt%        |      r8|5t'        ||      s(dt)        |       dt)        |       d| }	t        |	      y y y )	Nr   )	OmegaConfreadonlyzListConfig is read-onlyz5$FULL_KEY is not optional and cannot be assigned NonezInvalid type assigned: z is not a subclass of z	. value: )	omegaconfrN   rK   	_get_flagr"   __len__	_get_noder9   r   _is_optionalr#   r   r   MANDATORY_MISSINGr   r4   r*   get_typer   
issubclassr   )
rD   r(   r5   rN   targetvkr+   target_type
value_typer8   s
             rG   _validate_setzListConfig._validate_setZ   s7   '3&>>*%%&?@@$dlln$^^C(F!!&$///=)<)<)>)O  E",,,'89T9T'U$K"++E2J";$[1*":{; .hz.B-C D##+K#8"95'K  &c** < + 2rL   memoc                 ~   t        d       }t        j                  | j                  d   |      |j                  d<   t        j                  | j                  d   |      |j                  d<   | j                  d   }t	        |t
              rog }|D ]g  }|j                  d   }	 d |j                  d<   t        j                  ||      }||j                  d<   |j                  |       ||j                  d<   i n|}||j                  d<   | j                  d   |j                  d<   |S # ||j                  d<   w xY w)Nr4   )r]   _flags_cacher&   _parent)r%   r>   r?   r@   r9   r<   append)rD   r]   ressrc_contentcontent_copyv
old_parentvcs           rG   __deepcopy__zListConfig.__deepcopy__}   s    $(MM$--2LSW$X[!'+}}MM.)(
^$ mmJ/k4(13L  7ZZ	2
7,0AJJy)qt4B-0BKK	* ''+,6AJJy)7 'L#/Z "&--	":Y
 -7AJJy)s   $AD++D<c                 ,    t        j                   |       S N)r>   rD   s    rG   r>   zListConfig.copy   s    yyrL   c                     | j                         s| j                         rg S t        dt        |             D cg c]  }t	        |       c}S c c}w )Nr   )_is_missingr   rangelenrC   rD   xs     rG   __dir__zListConfig.__dir__   s>    I %aT 341A444s   Ac                 @    | j                  ||t        d             J )N,ListConfig does not support attribute accessr(   r5   r7   )_format_and_raiser   rJ   s      rG   __setattr__zListConfig.__setattr__   s+    &'UV 	 	

 	urL   c                     |dk(  r
t               |dk(  r
t               t        |      r| j                  t        |            S | j	                  |d t        d             y )N__members____name__rt   ru   )AttributeErrorr   __getitem__r=   rv   r   rD   r(   s     rG   __getattr__zListConfig.__getattr__   sd    - ""* ""#;##CH--""*B # rL   indexc                    	 | j                         rt        d      | j                  |d        | j                         rt	        d      t        | j                  d   t              sJ t        |t              rg }| j                  |      \  }}}t        j                  t        dt        |             |||      D ]6  }| j                  || j                  d   |         }|j                  |       8 |j                   r|j                   dk  r|j#                          |S | j                  || j                  d   |         S # t$        $ r}| j'                  |d |       Y d }~y d }~ww xY w)NzListConfig is missingz8ListConfig object representing None is not subscriptabler&   r   r(   r5   ru   )rm   r!   rK   r   	TypeErrorr9   r@   r<   rI   _correct_index_params	itertoolsislicern   ro   _resolve_with_defaultra   stepreverserB   rv   )	rD   r   resultstartstopr   	slice_idxvales	            rG   r|   zListConfig.__getitem__   si   	C!+,CDDud+}}N  dmmJ7>>>%'$($>$>u$E!tT!*!1!1!SY'd" 'I 44%T]]:-Fy-Q 5 C MM#&' ::%**q.NN$11T]]:%>u%E 2    	C""uD"BB	Cs   DE !"E 	E+E&&E+c                 f   |j                   }|j                  }|j                  }|j                   r,|j                   dk  r| j                         |j                   z   }|j                  r,|j                  dk  r| j                         |j                  z   }|j                  r|j                  dk  r~t	        |      }|r|r||kD  r|dz   |dz   }}n_dx}}nZ|s0|r.t        t        | j                         dz
  ||             d   }d }n(|r|s|dz   }|dz
  |z  }n| j                         dz
  |z  }|||fS Nr   r   )r   r   r   rR   absr<   rn   )rD   r   r   r   r   s        rG   r   z ListConfig._correct_index_params   s   zzzz;;5;;?LLNU[[0E::%**q.<<>EJJ.D::%**q.t9D4<"&(EAI4E#$$EDtU4<<>A#5tdUCDQGtqyT)!+t3dD  rL   c                 (    | j                  ||       y rj   )_set_item_impl)rD   r   r5   s      rG   _set_at_indexzListConfig._set_at_index   s    E5)rL   c                    	 t        |t              r<t        |      }|j                  t	        |             }t        | }|j                  dvr:t	        |      t	        |      k7  r#t        dt	        |       dt	        |             t	        |      dk(  r
|d   dz
  }d}| j                         }d}	t        |      D ]6  \  }}
|
|	z
  }||= |t	        |      k  r|j                  |||          2|	dz  }	8 t        dz   t	        |            D ]  }dz  }|j                  |||           | j                          | j                  |       y | j                  ||       y # t        $ r}| j                  |||       Y d }~y d }~ww xY w)N)Nr   z#attempt to assign sequence of size z to extended slice of size r   r   ru   )r9   rI   iterindicesro   rn   r   
ValueErrorr>   	enumerateinsertclearextendr   rB   rv   )rD   r   r5   _self_indicesindexes
curr_indexval_i	work_copyonly_removedir   s               rG   __setitem__zListConfig.__setitem__   s   *	D%'K$}}SY7. ::Y.7|s5z1(A#e*9#g,I  w<1$!-a1!4JE IIK	  ! )' 2 *HE1!"\!1J!*-s5z)!((U5\B$)* #519c%j9 ?E!OJ$$Zu>?
 

I&""5%0 	D""uE"CC	Ds   EE" E" "	F	+FF	itemc                     | j                   d   }t        |      }|j                  d        	 | j                  ||       y # t        $ r}||= | j                  |||       J d }~ww xY w)Nr&   ru   )r@   ro   ra   r   rB   rv   )rD   r   r'   r   r   s        rG   ra   zListConfig.append%  sk    --
+Gt	t, 	""uD"B5	s   A   	A'	A""A'c                     t        t        |             D ]9  }| j                  |      }|t        |t              sJ ||j
                  _        ; y rj   )rn   ro   rS   r9   r   r4   r(   )rD   r   r6   s      rG   _update_keyszListConfig._update_keys0  sJ    s4y! 	'A>>!$D!$---%&"		'rL   c                    ddl m} 	 | j                  d      rt        d      | j	                         rt        d      | j                         rt        d      	 t        | j                  d   t              sJ | j                  d   j                  |d        t        | j                  j                        \  }} ||||||       }| j                  ||	       | j!                  ||       | j#                          y # t$        $ r" | j                  d   |= | j#                           w xY w# t$        $ r}| j'                  |||
       J d }~ww xY w)Nr   )_maybe_wraprO   z)Cannot insert into a read-only ListConfigz6Cannot insert into ListConfig object representing Nonez%Cannot insert into missing ListConfigr&   )r,   r(   r5   r+   r)   r   ru   )omegaconf.omegaconfr   rQ   r"   r   r   rm   r!   r9   r@   r<   r   r   r4   r*   r\   r   r   rB   rv   )rD   r   r   r   r+   r,   r6   r   s           rG   r   zListConfig.insert7  sI   3	~~j))*UVV}}L  !+,STT!$--
";TBBBj)00=(9$..:U:U(V%X"% + ""uD"9""5$/!!# MM*-e4!!#  	""uD"B5	s+   AD, B"C> >+D))D, ,	E5EElstc                 n    t        |t        t        t        f      sJ |D ]  }| j	                  |        y rj   )r9   tupler<   r%   ra   )rD   r   rq   s      rG   r   zListConfig.extend[  s3    #tZ8999 	AKKN	rL   rq   c                 (    | | j                  |      = y rj   )r   rp   s     rG   removezListConfig.remove`  s    ArL   c                     | j                  d      r| j                  |d t        d             | j                  d   |= | j	                          y )NrO   z,Cannot delete item from read-only ListConfigru   r&   )rQ   rv   r"   r@   r   r}   s     rG   __delitem__zListConfig.__delitem__c  sQ    >>*%"")B #  MM*%c*rL   c                     | d d = y rj    rk   s    rG   r   zListConfig.clearo  s	    GrL   r   endc                     |d}|t        |       }|dk\  sJ |t        |       k  sJ d}t        ||      D ]  }| |   }||k(  s|} n |dk7  r|S | j                  d d t        d             J )Nr   r   zItem not found in ListConfigru   )ro   rn   rv   r   )rD   rq   r   r   	found_idxidxr   s          rG   r   zListConfig.indexr  s     =E;d)Czzc$i	$ 	C9DDy			
 ?""&'EF # 
 5rL   c                 .    d}| D ]  }||k(  s	|dz   } |S r   r   )rD   rq   cr   s       rG   countzListConfig.count  s-     	DqyE	 rL   validate_accessvalidate_keythrow_on_missing_valuethrow_on_missing_keyc                    	 | j                         rt        d      | j                         rt        d      t	        | j
                  d   t              sJ |r| j                  |       | j
                  d   |   }|xt	        |t              r9t	        |t              sJ |D ]   }|s|j                         st        d       |S t	        |t              sJ |r|j                         rt        d      |S # t        t        t        t        f$ r5}t	        |t              r|r |r| j                  |d |       J Y d }~y d }~ww xY w)Nz:Cannot get_node from a ListConfig object representing Nonez)Cannot get_node from a missing ListConfigr&   zMissing mandatory valuezMissing mandatory value: $KEYru   )r   r   rm   r!   r9   r@   r<   rK   rI   r   
IndexErrorr    rv   )	rD   r(   r   r   r   r   r5   re   r   s	            rG   rS   zListConfig._get_node  sC   	}}P  !+,WXXdmmJ7>>>""3'MM*-c2E c5)%eT222" S1ammo"78Q"RRS L &eT222-%2C2C2E34STTLI'<>PQ 	!238N&&3d!&Du	s*   B%C8 (C8 9C8 0C8 8E+EEdefault_valuec                 h   	 | j                         rt        d      | j                         rt        d      | j	                  |d        t        | j                  d   t              sJ | j                  || j                  d   |   |      S # t        $ r}| j                  |d |       J d }~ww xY w)Nz5Cannot get from a ListConfig object representing Nonez$Cannot get from a missing ListConfigr&   r(   r5   r   ru   )r   r   rm   r!   rK   r9   r@   r<   r   rB   rv   )rD   r   r   r   s       rG   getzListConfig.get  s    	}} WXX!+,RSSud+dmmJ7>>>--mmJ/6+ .  
  	""uD"B5	s   B
B 	B1B,,B1c                 4   	 | j                  d      rt        d      | j                         rt        d      | j	                         rt        d      t        | j                  d   t              sJ | j                  |      }t        |t              sJ | j                  ||d       }| j                  d   |= | j                          |S # t        $ r }| j                  |d |t               J d }~wt         $ r}| j                  |d |       J d }~ww xY w)	NrO   z$Cannot pop from read-only ListConfigz5Cannot pop from a ListConfig object representing Nonez$Cannot pop from a missing ListConfigr&   r   )r(   r5   r7   type_overrideru   )rQ   r"   r   r   rm   r!   r9   r@   r<   
_get_childr   r   r   r    rv   r   rB   )rD   r   r6   retr   s        rG   popzListConfig.pop  s   	~~j))*PQQ}} WXX!+,RSSdmmJ7>>>??5)DdD))),,dRV,WCj)%0J! 	""Qo #  5 	""uD"B5	s$   C	C 	DC00D<DDr   c                    	 | j                  d      rt        d      | j                         rt        d      | j	                         rt        d      dt        dt        fd}ndt        dt        ffd}t        | j                  d	   t              sJ | j                  d	   j                  ||
       y # t        $ r}| j                  d d |       J d }~ww xY w)NrO   z"Cannot sort a read-only ListConfigz1Cannot sort a ListConfig object representing Nonez Cannot sort a missing ListConfigrq   r.   c                 "    | j                         S rj   _value)rq   s    rG   key1zListConfig.sort.<locals>.key1  s    88:%rL   c                 0     | j                               S rj   r   )rq   r(   s    rG   r   zListConfig.sort.<locals>.key1  s    qxxz?*rL   r&   )r(   r   ru   )rQ   r"   r   r   rm   r!   r   r9   r@   r<   sortrB   rv   )rD   r(   r   r   r   s    `   rG   r   zListConfig.sort  s    	~~j))*NOO}} STT!+,NOO{&C &C &
+C +C + dmmJ7>>>MM*%**tW*E 	""t4q"A5	s   B6B: :	CCCotherc                    t        |t        t        f      s|%t        |ddi      }t        j	                  | |      S |t        |t              rt        j	                  | |      S | j                         rt        |      S t        S )Nallow_objectsT)r-   )r9   r<   r   r%   _list_eqrm   r   NotImplementedrD   r   s     rG   __eq__zListConfig.__eq__   sv    edE]+u}u_d,CDE&&tU33=Juj9&&tU33&u--rL   c                 F    | j                  |      }|t        ur| S t        S rj   )r   r   )rD   r   rq   s      rG   __ne__zListConfig.__ne__
  s%    KKN"5LrL   c                 *    t        t        |             S rj   )hashrC   rk   s    rG   __hash__zListConfig.__hash__  s    CIrL   c                 &    | j                  d      S )NTresolve)_iter_exrk   s    rG   __iter__zListConfig.__iter__  s    }}T}**rL   c                   8    e Zd ZdededdfdZdefdZdefdZy)ListConfig.ListIteratorr   r   r.   Nc                 t    || _         t        |j                  d         | _        d| _        ddlm} || _        y )Nr&   r   r   )	ValueNode)r   r   r@   iteratorr   nodesr   )rD   r   r   r   s       rG   r;   z ListConfig.ListIterator.__init__  s/    "DL j!9:DMDJ(&DNrL   c                 N   t        | j                        }| j                  r8|j                         }|j	                         rt        d| j                         | j                  dz   | _        t        || j                        r|j                         S |j                         ry |S )NzMissing value at index r   )nextr   r   _dereference_noderm   r!   r   r9   r   r   r   rp   s     rG   __next__z ListConfig.ListIterator.__next__  s    T]]#A||'')==?/2I$**0VWWaDJ!T^^,xxz! ::<rL   c                 "    d| j                    dS )Nz ListConfig.ListIterator(resolve=)r   rk   s    rG   __repr__z ListConfig.ListIterator.__repr__0  s    5dll^1EErL   )	rz   
__module____qualname__r   boolr;   r   rC   r   r   rL   rG   ListIteratorr     s6    	' 	'd 	't 	'	c 	"	Fc 	FrL   r   r   c                     	 | j                         rt        d      | j                         rt        d      t        j                  | |      S # t        t        f$ r}| j                  d d |       J d }~ww xY w)Nz4Cannot iterate a ListConfig object representing Nonez#Cannot iterate a missing ListConfigru   )r   r   rm   r!   r%   r   rv   )rD   r   r   s      rG   r   zListConfig._iter_ex3  sw    		}} VWW!+,QRR**49901 	""t4q"A5	s   AA A8A33A8c                     t        | j                         g       }|j                  |        |j                  |       |S N)r)   r'   r%   _get_parentr   rD   r   rb   s      rG   __add__zListConfig.__add__?  s4     0 0 2B?

4

5
rL   c                     t        | j                         g       }|j                  |       |j                  |        |S r   r   r   s      rG   __radd__zListConfig.__radd__F  s4     0 0 2B?

5

4
rL   c                 (    | j                  |       | S rj   )r   r   s     rG   __iadd__zListConfig.__iadd__M  s    ErL   c                     | j                         rt        d      | j                         rt        d      | j                  d   }|D ]  }|j                         }||k(  s y y)NzCCannot check if an item is in a ListConfig object representing Nonez0Cannot check if an item is in missing ListConfigr&   TF)r   r   rm   r!   r@   r   )rD   r   r   rq   s       rG   __contains__zListConfig.__contains__Q  su    ==?U  'B  mmJ' 	A##%ADy	 rL   c                     	 | j                   d   }| j                   d   }| j                  ||       y # t        $ r%}| j                   d<   | j                   d<   |d }~ww xY w)Nr&   r4   )r@   _set_value_implrB   )rD   r5   r-   previous_contentprevious_metadatar   s         rG   rA   zListConfig._set_valueb  sf    	#}}Z8 $k :  . 	(8DMM*%):DMM+&G	s   03 	A! AA!c                    ddl m}m} |i }t        |d      }t	        |      r<| j                         st        d      d | j                  d<   d | j                  _	        y |t        j                  u r!|| j                  d<   d | j                  _	        y |t        j                  k(  r!|| j                  d<   d | j                  _	        y t        |      s6t        |t              s&t!        |      }d|j"                   d}t        |      g | j                  d<   t        |t              rct%        j&                  |      | j                  _         || d	d
gd      5  |j+                  d      D ]  }| j-                  |        	 d d d        n9t        |      r. || d	d
gd      5  |D ]  }| j-                  |        	 d d d        t.        | j                  _	        y # 1 sw Y   xY w# 1 sw Y   +xY w)Nr   )MISSINGflag_overrideT)strict_interpolation_validationz7Non optional ListConfig cannot be constructed from Noner&   zInvalid value assigned: z$ is not a ListConfig, list or tuple.structrO   Fr   )rP   r  r	  r   r   rT   r#   r@   r4   r0   r   rU   INTERPOLATIONr   r9   r%   typerz   r>   r?   r-   r   ra   r<   )	rD   r5   r-   r  r	  rY   type_r8   r   s	            rG   r  zListConfig._set_value_impll  s    	5=EE4HE?$$&%M  )-DMM*%)-DNN&9...(/DMM*%)-DNN&9***(-DMM*%)-DNN&%e,
5*0MU00@@de%c**(*DMM*%%,'+}}U';$ #4(J)?G * %u = *D)** * #5)"4(J)?G * % *D)** *.DNN&* ** *s   )G"G&G#&G/l1l2c                 <   | j                   d   d u }|j                   d   d u }|r|ry||k7  ryt        | t              sJ t        |t              sJ t        |       t        |      k7  ryt	        t        |             D ]  }t        j                  | |||      r y y)Nr&   TF)r@   r9   r%   ro   rn   r   _item_eq)r  r  l1_nonel2_noner   s        rG   r   zListConfig._list_eq  s    ++j)T1++j)T1wg"j)))"j)))r7c"gs2w 	A ))"aQ7	 rL   rj   )r.   r%   )r.   N)NN)TTFF)r   )NF)<rz   r   r   r   r   r   rC   __annotations__r   r   r
   r   r   r   r   r;   rK   r\   r=   rh   r>   r   rr   rw   r~   rI   r|   r   r   r   ra   r   r   r   r   r   r   r   r   rS   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rA   r  staticmethodr   __classcell__)rF   s   @rG   r%   r%   *   s   DJc)**
  $.1 *-+/$TtCy%S/<dJK$T $T 	$T
 DIsN+$T $T S	3'$T S$Y($T 
$TL S D !+ !+S !+T !+Fc3h L 85# 5
s 3 4 s s &CsEz!2 Cs C>!5 !U3S=5I !2*5e#4 *S *T *+DsEz!2 +D3 +D4 +DZ	3 	4 	'"C "s "t "H(3- D 
     
uS%Z0 
T 
 IM%c]8@	2s s  !%!',%*&3:& & 	&
 !%& #& 
x~tHTN33	4&P S C " c 4 KPHcUCZ01CG	8C D C D # +(3- +Fx} F:
 
# 
U49l#:;  eDI|$;<  hsm    " HT#t)_,E QU  >B(.(.!)$sDy/!:(.	(.T Xl+ ,1G D  rL   r%   )(r>   r   typingr   r   r   r   r   r   r	   r
   r   r   r   _utilsr   r   r   r   r   r   r   r   r   r   baser   r   r   basecontainerr   errorsr   r   r   r    r!   r"   r#   r%   r   rL   rG   <module>r     s]           / . (  }	 4 }	rL   