3 L(ÌYç"ã@styddlmZWn ek r0ddlmZYnXyddlmZmZmZWnek r^YnXGdd„de ƒZ dS)é)Ú get_ident)ÚKeysViewÚ ValuesViewÚ ItemsViewc@seZdZdZdd„Zejfdd„Zejfdd„Zdd „Zd d „Z d d „Z d6dd„Z dd„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 orderc Osnt|ƒ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úH/private/tmp/pip-build-nl73fm5q/urllib3/urllib3/packages/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__c CshyDx|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)rÚnoderrrrr"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ú zsz&OrderedDict.values..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..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)rr0rrrÚ 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)rrr7rrrÚ setdefault¾szOrderedDict.setdefaultc CsVt|ƒ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*r0)rrrr+Ôsz*OrderedDict.__reduce__..N)ÚvarsÚcopyrrr<)rr-Ú inst_dictr0r)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. )r2rrr-r#Ú__eq__)rr4rrrrGës  zOrderedDict.__eq__cCs ||k S)Nr)rr4rrrÚ__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 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!r1r5r Úobjectr6rr9r>rBr@Ú classmethodrFrGrHrIrJrKrrrrrs:         rN) Úthreadrr;Ú ImportErrorÚ dummy_threadÚ_abcollrrrr#rrrrrÚs