a
    ‘dbç"  ã                   @   sp   zd dl mZ W n ey.   d dlmZ Y n0 zd dlmZmZmZ W n eyZ   Y n0 G dd„ de	ƒZ
dS )é    )Ú	get_ident)ÚKeysViewÚ
ValuesViewÚ	ItemsViewc                   @   s   e Zd ZdZdd„ Zejfdd„Zejfdd„Zdd	„ Zd
d„ Z	dd„ Z
d6dd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZeZeƒ Zefdd „Zd7d"d#„Zi fd$d%„Zd&d'„ Zd(d)„ Zed8d*d+„ƒZd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Z d4d5„ Z!d!S )9ÚOrderedDictz)Dictionary that remembers insertion orderc                 O   sp   t |ƒdkrtdt |ƒ ƒ‚z
| j W n4 tyZ   g  | _}||dg|dd…< i | _Y n0 | j|i |¤Ž dS )zÅInitialize an ordered dictionary.  Signature is the same as for
        regular dictionaries, but keyword arguments are not recommended
        because their insertion order is arbitrary.

        é   z$expected at most 1 arguments, got %dN)ÚlenÚ	TypeErrorÚ_OrderedDict__rootÚAttributeErrorÚ_OrderedDict__mapÚ_OrderedDict__update)ÚselfÚargsÚkwdsÚroot© r   ún/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/urllib3/packages/ordered_dict.pyÚ__init__   s    

zOrderedDict.__init__c                 C   sF   || vr6| j }|d }|||g |d<  |d< | j|< || ||ƒ dS )z!od.__setitem__(i, y) <==> od[i]=yr   r   N)r
   r   )r   ÚkeyÚvalueZdict_setitemr   Úlastr   r   r   Ú__setitem__,   s
     zOrderedDict.__setitem__c                 C   s0   || |ƒ | j  |¡\}}}||d< ||d< dS )z od.__delitem__(y) <==> del od[y]r   r   N)r   Úpop)r   r   Zdict_delitemÚ	link_prevÚ	link_nextr   r   r   Ú__delitem__6   s    
zOrderedDict.__delitem__c                 c   s.   | j }|d }||ur*|d V  |d }qdS )zod.__iter__() <==> iter(od)r   é   N©r
   ©r   r   Úcurrr   r   r   Ú__iter__?   s
    
zOrderedDict.__iter__c                 c   s.   | j }|d }||ur*|d V  |d }qdS )z#od.__reversed__() <==> reversed(od)r   r   Nr   r   r   r   r   Ú__reversed__G   s
    
zOrderedDict.__reversed__c                 C   sb   z@| j  ¡ D ]}|dd…= q| j}||dg|dd…< | j  ¡  W n tyR   Y n0 t | ¡ dS )z.od.clear() -> None.  Remove all items from od.N)r   Ú
itervaluesr
   Úclearr   Údict)r   Únoder   r   r   r   r$   O   s    zOrderedDict.clearTc                 C   s|   | st dƒ‚| j}|r8|d }|d }||d< ||d< n |d }|d }||d< ||d< |d }| j|= t | |¡}||fS )z™od.popitem() -> (k, v), return and remove a (key, value) pair.
        Pairs are returned in LIFO order if last is true or FIFO order if false.

        zdictionary is emptyr   r   r   )ÚKeyErrorr
   r   r%   r   )r   r   r   Úlinkr   r   r   r   r   r   r   Úpopitem[   s     
zOrderedDict.popitemc                 C   s   t | ƒS )zod.keys() -> list of keys in od)Úlist©r   r   r   r   Úkeyst   s    zOrderedDict.keysc                    s   ‡ fdd„ˆ D ƒS )z#od.values() -> list of values in odc                    s   g | ]}ˆ | ‘qS r   r   ©Ú.0r   r+   r   r   Ú
<listcomp>z   ó    z&OrderedDict.values.<locals>.<listcomp>r   r+   r   r+   r   Úvaluesx   s    zOrderedDict.valuesc                    s   ‡ fdd„ˆ D ƒS )z.od.items() -> list of (key, value) pairs in odc                    s   g | ]}|ˆ | f‘qS r   r   r-   r+   r   r   r/   ~   r0   z%OrderedDict.items.<locals>.<listcomp>r   r+   r   r+   r   Úitems|   s    zOrderedDict.itemsc                 C   s   t | ƒS )z0od.iterkeys() -> an iterator over the keys in od)Úiterr+   r   r   r   Úiterkeys€   s    zOrderedDict.iterkeysc                 c   s   | D ]}| | V  qdS )z2od.itervalues -> an iterator over the values in odNr   ©r   Úkr   r   r   r#   „   s    zOrderedDict.itervaluesc                 c   s   | D ]}|| | fV  qdS )z=od.iteritems -> an iterator over the (key, value) items in odNr   r5   r   r   r   Ú	iteritems‰   s    zOrderedDict.iteritemsc                  O   sÈ   t | ƒdkr tdt | ƒf ƒ‚n| s,tdƒ‚| d }d}t | ƒdkrL| d }t|tƒrn|D ]}|| ||< qZn<t|dƒr”| ¡ D ]}|| ||< q€n|D ]\}}|||< q˜| ¡ D ]\}}|||< q²dS )	aƒ  od.update(E, **F) -> None.  Update od from dict/iterable E and F.

        If E is a dict instance, does:           for k in E: od[k] = E[k]
        If E has a .keys() method, does:         for k in E.keys(): od[k] = E[k]
        Or if E is an iterable of items, does:   for k, v in E: od[k] = v
        In either case, this is followed by:     for k, v in F.items(): od[k] = v

        r   z8update() takes at most 2 positional arguments (%d given)z,update() takes at least 1 argument (0 given)r   r   r   r,   N)r   r	   Ú
isinstancer%   Úhasattrr,   r2   )r   r   r   Úotherr   r   r   r   r   ÚupdateŽ   s(    	ÿ


zOrderedDict.updatec                 C   s0   || v r| | }| |= |S || j u r,t|ƒ‚|S )z©od.pop(k[,d]) -> v, remove specified key and return the corresponding value.
        If key is not found, d is returned if given, otherwise KeyError is raised.

        )Ú_OrderedDict__markerr'   )r   r   ÚdefaultÚresultr   r   r   r   ±   s    
zOrderedDict.popNc                 C   s   || v r| | S || |< |S )zDod.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in odr   )r   r   r=   r   r   r   Ú
setdefault¾   s    zOrderedDict.setdefaultc                 C   sf   t | ƒtƒ f}||v rdS d||< z6| s>d| jjf W ||= S d| jj|  ¡ f W ||= S ||= 0 dS )zod.__repr__() <==> repr(od)z...r   z%s()z%s(%r)N)ÚidÚ
_get_identÚ	__class__Ú__name__r2   )r   Ú_repr_runningZcall_keyr   r   r   Ú__repr__Å   s    ýþzOrderedDict.__repr__c                    sX   ‡ fdd„ˆ D ƒ}t ˆ ƒ ¡ }t tƒ ƒD ]}| |d¡ q(|rLˆ j|f|fS ˆ j|ffS )z%Return state information for picklingc                    s   g | ]}|ˆ | g‘qS r   r   )r.   r6   r+   r   r   r/   Ô   r0   z*OrderedDict.__reduce__.<locals>.<listcomp>N)ÚvarsÚcopyr   r   rB   )r   r2   Ú	inst_dictr6   r   r+   r   Ú
__reduce__Ò   s    zOrderedDict.__reduce__c                 C   s
   |   | ¡S )z!od.copy() -> a shallow copy of od)rB   r+   r   r   r   rG   Ü   s    zOrderedDict.copyc                 C   s   | ƒ }|D ]}|||< q
|S )z€OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S
        and values equal to v (which defaults to None).

        r   )ÚclsÚiterabler   Údr   r   r   r   Úfromkeysà   s    
zOrderedDict.fromkeysc                 C   s6   t |tƒr*t| ƒt|ƒko(|  ¡ | ¡ kS t | |¡S )z“od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive
        while comparison to a regular mapping is order-insensitive.

        )r8   r   r   r2   r%   Ú__eq__©r   r:   r   r   r   rN   ë   s    
 zOrderedDict.__eq__c                 C   s
   | |k S )Nr   rO   r   r   r   Ú__ne__ô   s    zOrderedDict.__ne__c                 C   s   t | ƒS )z@od.viewkeys() -> a set-like object providing a view on od's keys)r   r+   r   r   r   Úviewkeysù   s    zOrderedDict.viewkeysc                 C   s   t | ƒS )z<od.viewvalues() -> an object providing a view on od's values)r   r+   r   r   r   Ú
viewvaluesý   s    zOrderedDict.viewvaluesc                 C   s   t | ƒS )zBod.viewitems() -> a set-like object providing a view on od's items)r   r+   r   r   r   Ú	viewitems  s    zOrderedDict.viewitems)T)N)N)"rC   Ú
__module__Ú__qualname__Ú__doc__r   r%   r   r   r!   r"   r$   r)   r,   r1   r2   r4   r#   r7   r;   r   Úobjectr<   r   r?   rE   rI   rG   ÚclassmethodrM   rN   rP   rQ   rR   rS   r   r   r   r   r      s:   
	



	r   N)Úthreadr   rA   ÚImportErrorÚdummy_threadÚ_abcollr   r   r   r%   r   r   r   r   r   Ú<module>   s   