Viewing File: /lib/python3.6/site-packages/pip/_vendor/urllib3/packages/__pycache__/ordered_dict.cpython-36.pyc

3

�Pf�"�@styddlmZWn ek
r0ddlmZYnXyddlmZmZmZWnek
r^YnXGdd�de	�Z
dS)�)�	get_ident)�KeysView�
ValuesView�	ItemsViewc@seZdZdZdd�Zejfdd�Zejfdd�Zdd	�Zd
d�Z	dd
�Z
d6dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZeZe�Zefdd �Zd7d"d#�Zifd$d%�Zd&d'�Zd(d)�Zed8d*d+��Zd,d-�Zd.d/�Zd0d1�Zd2d3�Z d4d5�Z!d!S)9�OrderedDictz)Dictionary that remembers insertion ordercOsnt|�dkrtdt|���y
|jWn6tk
r\g|_}||dg|dd�<i|_YnX|j||�dS)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�"/usr/lib/python3.6/ordered_dict.py�__init__s

zOrderedDict.__init__cCsF||kr6|j}|d}|||g|d<|d<|j|<||||�dS)z!od.__setitem__(i, y) <==> od[i]=yrrN)r
r)r�key�valueZdict_setitemr�lastrrr�__setitem__,s
 zOrderedDict.__setitem__cCs0|||�|jj|�\}}}||d<||d<dS)z od.__delitem__(y) <==> del od[y]rrN)r�pop)rrZdict_delitem�	link_prev�	link_nextrrr�__delitem__6s
zOrderedDict.__delitem__ccs2|j}|d}x||k	r,|dV|d}qWdS)zod.__iter__() <==> iter(od)r�N)r
)rr�currrrr�__iter__?s


zOrderedDict.__iter__ccs2|j}|d}x||k	r,|dV|d}qWdS)z#od.__reversed__() <==> reversed(od)rrN)r
)rrrrrr�__reversed__Gs


zOrderedDict.__reversed__cCshyDx|jj�D]}|dd�=qW|j}||dg|dd�<|jj�Wntk
rXYnXtj|�dS)z.od.clear() -> None.  Remove all items from od.N)r�
itervaluesr
�clearr�dict)rZnoderrrrr"OszOrderedDict.clearTcCs||std��|j}|r8|d}|d}||d<||d<n |d}|d}||d<||d<|d}|j|=tj||�}||fS)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.

        zdictionary is emptyrrr)�KeyErrorr
rr#r)rrr�linkrrrrrrr�popitem[s 
zOrderedDict.popitemcCst|�S)zod.keys() -> list of keys in od)�list)rrrr�keystszOrderedDict.keyscs�fdd��D�S)z#od.values() -> list of values in odcsg|]}�|�qSrr)�.0r)rrr�
<listcomp>zsz&OrderedDict.values.<locals>.<listcomp>r)rr)rr�valuesxszOrderedDict.valuescs�fdd��D�S)z.od.items() -> list of (key, value) pairs in odcsg|]}|�|f�qSrr)r)r)rrrr*~sz%OrderedDict.items.<locals>.<listcomp>r)rr)rr�items|szOrderedDict.itemscCst|�S)z0od.iterkeys() -> an iterator over the keys in od)�iter)rrrr�iterkeys�szOrderedDict.iterkeysccsx|D]}||VqWdS)z2od.itervalues -> an iterator over the values in odNr)r�krrrr!�s
zOrderedDict.itervaluesccs x|D]}|||fVqWdS)z=od.iteritems -> an iterator over the (key, value) items in odNr)rr/rrr�	iteritems�s
zOrderedDict.iteritemscOs�t|�dkr tdt|�f��n|s,td��|d}f}t|�dkrL|d}t|t�rrx^|D]}||||<q\WnDt|d�r�x8|j�D]}||||<q�Wnx|D]\}}|||<q�Wx|j�D]\}}|||<q�WdS)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

        rz8update() takes at most 2 positional arguments (%d given)z,update() takes at least 1 argument (0 given)rrr(N)rr	�
isinstancer#�hasattrr(r,)rrr�otherrrrrr�update�s&	


zOrderedDict.updatecCs0||kr||}||=|S||jkr,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$)rr�default�resultrrrr�s
zOrderedDict.popNcCs||kr||S|||<|S)zDod.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in odr)rrr6rrr�
setdefault�szOrderedDict.setdefaultcCsVt|�t�f}||krdSd||<z&|s6d|jjfSd|jj|j�fS||=XdS)zod.__repr__() <==> repr(od)z...rz%s()z%s(%r)N)�id�
_get_ident�	__class__�__name__r,)rZ
_repr_runningZcall_keyrrr�__repr__�szOrderedDict.__repr__cs\�fdd��D�}t��j�}xtt��D]}|j|d�q*W|rP�j|f|fS�j|ffS)z%Return state information for picklingcsg|]}|�|g�qSrr)r)r/)rrrr*�sz*OrderedDict.__reduce__.<locals>.<listcomp>N)�vars�copyrrr;)rr,Z	inst_dictr/r)rr�
__reduce__�szOrderedDict.__reduce__cCs
|j|�S)z!od.copy() -> a shallow copy of od)r;)rrrrr?�szOrderedDict.copycCs |�}x|D]}|||<qW|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�drrrr�fromkeys�s
zOrderedDict.fromkeyscCs6t|t�r*t|�t|�ko(|j�|j�kStj||�S)z�od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive
        while comparison to a regular mapping is order-insensitive.

        )r1rrr,r#�__eq__)rr3rrrrE�s
 zOrderedDict.__eq__cCs
||kS)Nr)rr3rrr�__ne__�szOrderedDict.__ne__cCst|�S)z@od.viewkeys() -> a set-like object providing a view on od's keys)r)rrrr�viewkeys�szOrderedDict.viewkeyscCst|�S)z<od.viewvalues() -> an object providing a view on od's values)r)rrrr�
viewvalues�szOrderedDict.viewvaluescCst|�S)zBod.viewitems() -> a set-like object providing a view on od's items)r)rrrr�	viewitemsszOrderedDict.viewitems)T)N)N)"r<�
__module__�__qualname__�__doc__rr#rrrr r"r&r(r+r,r.r!r0r4r
�objectr5rr8r=r@r?�classmethodrDrErFrGrHrIrrrrrs:
	




	rN)Zthreadrr:�ImportErrorZdummy_threadZ_abcollrrrr#rrrrr�<module>s
Back to Directory File Manager
<