a
    d_`                     @   s   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	 d	ee	e Z'dS )
    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                       s  e Zd ZU eee def ed< ddededfeee e	edf d edf ee
e eee ef eeee ef e
eeef  dd fddZdfeeddd	d
ZeeddddZeeef d dddZd dddZee dddZeeddddZeedddZeeef edddZee	eeef dddZeeef eddd d!Zeeef eddd"d#Zedd$d%d&Zddd'd(Zeedd)d*d+Z ee dd,d-d.Z!edd/d0d1Z"eeef ddd2d3Z#ddd4d5Z$dgee
e e
e ed6d7d8Z%eed/d9d:Z&dheeef eeeeee
e ee
e  f d<d=d>Z'dieeed?d@dAZ(djeeddCdDZ)dke
e*egef  eddEdFdGZ+eedHdIdJZ,eedHdKdLZ-eddMdNZ.e/e ddOdPZ0G dQdR dRe/e Z1ee/e dSdTdUZ2eee d f d dHdVdWZ3eee d f d dHdXdYZ4ee d dHdZd[Z5eed$d\d]Z6dlee
eeef  dd^d_d`Z7dmee
eeef  dd^dadbZ8e9e
d  e
d  edcdddeZ:  Z;S )n
ListConfigN_contentT.)contentkeyparentelement_typeis_optionalref_typeflagsreturnc           
         s   zt |tr|d u r|jj}t j|t|t|||t|dd t |trvt	
|j}||_||_||_||_|| jd< | j||d W n: ty }	 z"td |d |	t|	d W Y d }	~	n
d }	~	0 0 d S )N)r*   object_typer&   optionalr(   Zkey_typer+   )r'   metadata	_metadata)valuer+   )noder&   r1   causemsg)
isinstancer#   r0   r+   super__init__r   listintcopydeepcopyr&   r*   r.   r(   __dict__
_set_value	Exceptionr   str)
selfr%   r&   r'   r(   r)   r*   r+   r/   ex	__class__ ]/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/omegaconf/listconfig.pyr7   .   s4    



zListConfig.__init__)r&   r1   r,   c                 C   s   t |ttfstdd S )Nz<ListConfig indices must be integers or slices, not $KEY_TYPE)r5   r9   slicer   r@   r&   r1   rD   rD   rE   _validate_getT   s    zListConfig._validate_getc           
      C   s   ddl m} | || | dr*tdd|  krB|  k r~n n8| |}|d ur~t|tsfJ |d u r~|	 s~t
dt|}|tjkrd S t| jj\}}||}|d u r|rt|r|d urt||sdt| dt| d| }	t
|	d S )	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: )	omegaconfrI   rH   	_get_flagr!   __len__	_get_noder5   r   _is_optionalr"   r   r   MANDATORY_MISSINGr   r0   r(   get_typer   
issubclassr   )
r@   r&   r1   rI   targetvkr)   Ztarget_typeZ
value_typer4   rD   rD   rE   _validate_setZ   s>    



zListConfig._validate_set)memor,   c              
   C   s   t d }tj| jd |d|jd< tj| jd |d|jd< | jd }t|trg }|D ]V}|jd }z:d |jd< tj||d}||jd< || W ||jd< qX||jd< 0 qXn|}||jd< | jd |jd< |S )Nr0   )rV   Z_flags_cacher$   _parent)r#   r:   r;   r<   r5   r8   append)r@   rV   resZsrc_contentZcontent_copyvZ
old_parentZvcrD   rD   rE   __deepcopy__}   s(    






zListConfig.__deepcopy__r,   c                 C   s
   t  | S N)r:   r@   rD   rD   rE   r:      s    zListConfig.copyc                 C   s,   |   s|  rg S dd tdt| D S )Nc                 S   s   g | ]}t |qS rD   )r?   ).0xrD   rD   rE   
<listcomp>       z&ListConfig.__dir__.<locals>.<listcomp>r   )_is_missingr   rangelenr^   rD   rD   rE   __dir__   s    zListConfig.__dir__c                 C   s    | j ||tdd dsJ d S )N,ListConfig does not support attribute accessr&   r1   r3   F)_format_and_raiser   rG   rD   rD   rE   __setattr__   s    zListConfig.__setattr__)r&   r,   c                 C   sJ   |dkrt  |dkrt  t|r2| t|S | j|d tdd d S )N__members____name__rg   rh   )AttributeErrorr   __getitem__r9   ri   r   r@   r&   rD   rD   rE   __getattr__   s    zListConfig.__getattr__)indexr,   c           	   
   C   s  z|   rtd| |d  |  r.tdt| jd tsBJ t|trg }| 	|\}}}t
tdt| |||D ]&}| j|| jd | d}|| qz|jr|jdk r|  |W S | j|| jd | dW S W n6 ty } z| j|d |d W Y d }~n
d }~0 0 d S )NzListConfig is missingz8ListConfig object representing None is not subscriptabler$   r   r&   r1   rh   )rc   r    rH   r   	TypeErrorr5   r<   r8   rF   _correct_index_params	itertoolsislicerd   re   _resolve_with_defaultrX   stepreverser>   ri   )	r@   rq   resultstartstoprx   Z	slice_idxvalerD   rD   rE   rn      s6    
zListConfig.__getitem__c                 C   s   |j }|j}|j}|j r0|j dk r0|  |j  }|jrN|jdk rN|  |j }|jr|jdk rt|}|r|r||kr|d |d  }}qd }}nZ|s|rtt|  d || d }d }n.|r|s|d }|d | }n|  d | }|||fS Nr   r   )r{   r|   rx   rM   absr8   rd   )r@   rq   r{   r|   rx   rD   rD   rE   rt      s*    
z ListConfig._correct_index_params)rq   r1   r,   c                 C   s   |  || d S r]   )_set_item_impl)r@   rq   r1   rD   rD   rE   _set_at_index   s    zListConfig._set_at_indexc              
   C   s`  z"t |trt|}|t| }t| }|jdvrdt|t|krdtdt| dt| t|dkr|d d }d}|  }d}	t	|D ]<\}}
|
|	 }||= |t|k r|
|||  q|	d7 }	qt|d t|D ]}|d7 }|
|||  q|   | | n| || W n6 tyZ } z| j|||d W Y d }~n
d }~0 0 d S )N)Nr   z#attempt to assign sequence of size z to extended slice of size r   r   rh   )r5   rF   iterindicesre   rd   rx   
ValueErrorr:   	enumerateinsertclearextendr   r>   ri   )r@   rq   r1   _Zself_indicesZindexesZ
curr_indexZval_iZ	work_copyZonly_removedir~   rD   rD   rE   __setitem__   s>    

zListConfig.__setitem__)itemr,   c              
   C   st   | j d }t|}|d  z| || W nB tyn } z*||= | j|||d dsZJ W Y d }~n
d }~0 0 d S )Nr$   rh   F)r<   re   rX   r   r>   ri   )r@   r   r%   rq   r~   rD   rD   rE   rX   %  s    

zListConfig.appendc                 C   s>   t t| D ],}| |}|d urt|ts0J ||j_qd S r]   )rd   re   rN   r5   r   r0   r&   )r@   r   r2   rD   rD   rE   _update_keys0  s
    
zListConfig._update_keys)rq   r   r,   c              
   C   s   ddl m} z| dr td|  r0td|  r@tdznt| j	d t
sVJ | j	d |d  t| jj\}}|||||| d}| j||d	 | || |   W n( ty   | j	d |= |    Y n0 W n@ ty } z&| j|||d
 dsJ W Y d }~n
d }~0 0 d S )Nr   )_maybe_wraprJ   z)Cannot insert into a read-only ListConfigz6Cannot insert into ListConfig object representing Nonez%Cannot insert into missing ListConfigr$   )r*   r&   r1   r)   r'   rr   rh   F)Zomegaconf.omegaconfr   rL   r!   r   rs   rc   r    r5   r<   r8   r   r   r0   r(   rU   r   r   r>   ri   )r@   rq   r   r   r)   r*   r2   r~   rD   rD   rE   r   7  s>    
zListConfig.insert)lstr,   c                 C   s,   t |tttfsJ |D ]}| | qd S r]   )r5   tupler8   r#   rX   )r@   r   r`   rD   rD   rE   r   [  s    zListConfig.extendr`   r,   c                 C   s   | |  |= d S r]   )rq   r@   r`   rD   rD   rE   remove`  s    zListConfig.removec                 C   s6   |  dr| j|d tdd | jd |= |   d S )NrJ   z,Cannot delete item from read-only ListConfigrh   r$   )rL   ri   r!   r<   r   ro   rD   rD   rE   __delitem__c  s    
zListConfig.__delitem__c                 C   s   | d d = d S r]   rD   r^   rD   rD   rE   r   o  s    zListConfig.clear)r`   r{   endr,   c                 C   s   |d u rd}|d u rt | }|dks(J |t | ks8J d}t||D ]}| | }||krF|} qdqF|dkrp|S | jd d tdd dsJ d S )Nr   r   zItem not found in ListConfigrh   F)re   rd   ri   r   )r@   r`   r{   r   Z	found_idxidxr   rD   rD   rE   rq   r  s(    zListConfig.indexc                 C   s"   d}| D ]}||kr|d }q|S r   rD   )r@   r`   cr   rD   rD   rE   count  s
    
zListConfig.countF)r&   validate_accessvalidate_keythrow_on_missing_valuethrow_on_missing_keyr,   c           	      C   s,  z|   rtd|  r"tdt| jd ts6J |rD| | | jd | }|d urt|trt|tsrJ |D ]}|rv| rvtdqvn"t|t	sJ |r| rtd|W S  t
tttfy& } zLt|tr|r |r| j|d |d dsJ nW Y d }~d S W Y d }~n
d }~0 0 d S )Nz:Cannot get_node from a ListConfig object representing Nonez)Cannot get_node from a missing ListConfigr$   zMissing mandatory valuezMissing mandatory value: $KEYrh   F)r   rs   rc   r    r5   r<   r8   rH   rF   r   
IndexErrorr   ri   )	r@   r&   r   r   r   r   r1   rZ   r~   rD   rD   rE   rN     s8    

zListConfig._get_node)rq   default_valuer,   c              
   C   s   z\|   rtd|  r"td| |d  t| jd tsBJ | j|| jd | |dW S  t	y } z$| j
|d |d dsJ W Y d }~n
d }~0 0 d S )Nz5Cannot get from a ListConfig object representing Nonez$Cannot get from a missing ListConfigr$   r&   r1   r   rh   F)r   rs   rc   r    rH   r5   r<   r8   rw   r>   ri   )r@   rq   r   r~   rD   rD   rE   get  s    zListConfig.getr   c              
   C   s  z|  drtd|  r$td|  r4tdt| jd tsHJ | 	|}t|t
s`J | j||d d}| jd |= |   |W S  ty } z&| j|d |td dsJ W Y d }~nFd }~0  ty } z$| j|d |d	 dsJ W Y d }~n
d }~0 0 d S )
NrJ   z$Cannot pop from read-only ListConfigz5Cannot pop from a ListConfig object representing Nonez$Cannot pop from a missing ListConfigr$   r   )r&   r1   r3   Ztype_overrideFrh   )rL   r!   r   rs   rc   r    r5   r<   r8   Z
_get_childr   rw   r   r   ri   r   r>   )r@   rq   r2   retr~   rD   rD   rE   pop  s,    

zListConfig.pop)r&   ry   r,   c              
      s   z|  drtd|  r$td|  r4td d u rNttddd}nttd fdd}t| jd	 t	svJ | jd	 j
||d
 W n< ty } z$| jd d |d dsJ W Y d }~n
d }~0 0 d S )NrJ   z"Cannot sort a read-only ListConfigz1Cannot sort a ListConfig object representing Nonez Cannot sort a missing ListConfigr   c                 S   s   |   S r]   _valuer`   rD   rD   rE   key1  s    zListConfig.sort.<locals>.key1c                    s    |   S r]   r   r   r&   rD   rE   r     s    r$   )r&   ry   rh   F)rL   r!   r   rs   rc   r    r   r5   r<   r8   sortr>   ri   )r@   r&   ry   r   r~   rD   r   rE   r     s    
zListConfig.sort)otherr,   c                 C   sd   t |ttfs|d u r2t|ddid}t| |S |d u sDt |trPt| |S |  r`t|S tS )NZallow_objectsT)r+   )r5   r8   r   r#   _list_eqrc   r   NotImplementedr@   r   rD   rD   rE   __eq__   s    zListConfig.__eq__c                 C   s   |  |}|tur| S tS r]   )r   r   )r@   r   r`   rD   rD   rE   __ne__
  s    
zListConfig.__ne__c                 C   s   t t| S r]   )hashr?   r^   rD   rD   rE   __hash__  s    zListConfig.__hash__c                 C   s   | j ddS )NTresolve)_iter_exr^   rD   rD   rE   __iter__  s    zListConfig.__iter__c                   @   s:   e Zd ZeeddddZedddZeddd	ZdS )
zListConfig.ListIteratorN)r   r   r,   c                 C   s2   || _ t|jd | _d| _ddlm} || _d S )Nr$   r   r   )	ValueNode)r   r   r<   iteratorrq   nodesr   )r@   r   r   r   rD   rD   rE   r7     s
    z ListConfig.ListIterator.__init__r\   c                 C   sd   t | j}| jr0| }| r0td| j | jd | _t|| jrP|	 S |
 r\d S |S d S )NzMissing value at index r   )nextr   r   _dereference_noderc   r    rq   r5   r   r   r   r   rD   rD   rE   __next__  s    
z ListConfig.ListIterator.__next__c                 C   s   d| j  dS )Nz ListConfig.ListIterator(resolve=)r   r^   rD   rD   rE   __repr__0  s    z ListConfig.ListIterator.__repr__)	rl   
__module____qualname__r   boolr7   r   r?   r   rD   rD   rD   rE   ListIterator  s   r   )r   r,   c              
   C   st   z.|   rtd|  r"tdt| |W S  ttfyn } z$| jd d |d dsZJ W Y d }~n
d }~0 0 d S )Nz4Cannot iterate a ListConfig object representing Nonez#Cannot iterate a missing ListConfigrh   F)r   rs   rc   r    r#   r   ri   )r@   r   r~   rD   rD   rE   r   3  s    zListConfig._iter_exc                 C   s(   t |  g d}||  || |S N)r'   r%   r#   Z_get_parentr   r@   r   rY   rD   rD   rE   __add__?  s    

zListConfig.__add__c                 C   s(   t |  g d}|| ||  |S r   r   r   rD   rD   rE   __radd__F  s    

zListConfig.__radd__c                 C   s   |  | | S r]   )r   r   rD   rD   rE   __iadd__M  s    
zListConfig.__iadd__c                 C   sN   |   rtd|  r td| jd }|D ]}| }||kr. dS q.dS )NzCCannot check if an item is in a ListConfig object representing Nonez0Cannot check if an item is in missing ListConfigr$   TF)r   rs   rc   r    r<   r   )r@   r   r   r`   rD   rD   rE   __contains__Q  s    
zListConfig.__contains__)r1   r+   r,   c              
   C   sf   z$| j d }| j d }| || W n< ty` } z$|| j d< || j d< |W Y d }~n
d }~0 0 d S )Nr$   r0   )r<   _set_value_implr>   )r@   r1   r+   Zprevious_contentZprevious_metadatar~   rD   rD   rE   r=   b  s    



zListConfig._set_valuec           	      C   s  ddl m}m} |d u ri }t|dd}t|rV|  s@tdd | jd< d | j_	n@|t
ju rv|| jd< d | j_	n |t
jkr|| jd< d | j_	n t|st|tst|}d|j d}t|g | jd< t|tr<t|| j_|| d	d
gd. |jddD ]}| | qW d    n1 s00    Y  nRt|r|| d	d
gd& |D ]}| | q\W d    n1 s0    Y  t| j_	d S )Nr   )MISSINGflag_overrideT)Zstrict_interpolation_validationz7Non optional ListConfig cannot be constructed from Noner$   zInvalid value assigned: z$ is not a ListConfig, list or tuple.structrJ   Fr   )rK   r   r   r   r   rO   r"   r<   r0   r-   r   rP   ZINTERPOLATIONr   r5   r#   typerl   r:   r;   r+   r   rX   r8   )	r@   r1   r+   r   r   rT   type_r4   r   rD   rD   rE   r   l  s@    





0
.zListConfig._set_value_impl)l1l2r,   c                 C   s   | j d d u }|j d d u }|r(|r(dS ||kr4dS t| tsBJ t|tsPJ t| t|krddS tt| D ]}t| |||sp dS qpdS )Nr$   TF)r<   r5   r#   re   rd   r   Z_item_eq)r   r   Zl1_noneZl2_noner   rD   rD   rE   r     s    zListConfig._list_eq)N)NN)TTFF)N)r   )NF)N)N)<rl   r   r   r   r   r   r?   __annotations__r   r
   r	   r   r   r   r   r7   rH   rU   r9   r[   r:   r   rf   rj   rp   rF   rn   rt   r   r   rX   r   r   r   r   r   r   rq   r   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r   staticmethodr   __classcell__rD   rD   rB   rE   r#   *   s   
&#-$ 
    
( 
  *r#   )(r:   ru   typingr   r   r   r   r   r   r   r	   r
   r   r   _utilsr   r   r   r   r   r   r   r   r   r   baser   r   r   Zbasecontainerr   errorsr   r   r   r   r    r!   r"   r#   rD   rD   rD   rE   <module>   s   40$