Ñò AñUc @sddklZlZyddklZWn&ej odd d„ƒYZnXyddklZWn#ej oddklZnXddkl Z l Z l Z dd gZ e ƒZdefd „ƒYZeiZeiZeiZeiZeiZd efd „ƒYZd S(iÿÿÿÿ(tMappingtMutableMapping(tRLockRcBseZd„Zd„ZRS(cCsdS(N((tself((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt __enter__scCsdS(N((Rtexc_typet exc_valuet traceback((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt__exit__ s(t__name__t __module__RR(((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyRs (t OrderedDicti(titerkeyst itervaluestPY3tRecentlyUsedContainertHTTPHeaderDictcBsbeZdZeZdd d„Zd„Zd„Zd„Z d„Z d„Z d„Z d „Z RS( s‘ Provides a thread-safe dict-like container which maintains up to ``maxsize`` keys while throwing away the least-recently-used keys beyond ``maxsize``. :param maxsize: Maximum number of recent elements to retain. :param dispose_func: Every time an item is evicted from the container, ``dispose_func(value)`` is called. Callback which will get called i cCs1||_||_|iƒ|_tƒ|_dS(N(t_maxsizet dispose_funct ContainerClst _containerRtlock(RtmaxsizeR((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt__init__*s  cCsB|iiiƒz'|ii|ƒ}||i|<|SWdQXdS(N(RRRRtpop(Rtkeytitem((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt __getitem__1s cCs§t}|iiiƒz^|ii|tƒ}||i|>> headers = HTTPHeaderDict() >>> headers.add('Set-Cookie', 'foo=bar') >>> headers.add('set-cookie', 'baz=quxx') >>> headers['content-length'] = '7' >>> headers['SET-cookie'] 'foo=bar, baz=quxx' >>> headers['Content-Length'] '7' cKshti|ƒ|dj o2t|tƒo|i|ƒqL|i|ƒn|o|i|ƒndS(N(tdictRR/t isinstanceRt _copy_fromtextend(Rtheaderstkwargs((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyRs  cCst||iƒ||fƒS(N(t _dict_setitemtlower(RRtval((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyR%—scCs&t||iƒƒ}di|dƒS(Ns, i(t _dict_getitemR7tjoin(RRR8((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyRšscCst||iƒƒS(N(t _dict_delitemR7(RR((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyR&žscCst||iƒƒS(N(t_dict_containsR7(RR((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt __contains__¡scs‰tˆtƒ otˆdƒ otStˆtˆƒƒptˆƒˆƒ‰nt‡fd†ˆDƒƒt‡fd†ˆDƒƒjS(NR-c3s#x|]}|ˆ|fVqWdS(N((t.0tk1(R(sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pys ©s c3s#x|]}|ˆ|fVqWdS(N((R>tk2(tother(sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pys ©s (R1RthasattrR!ttypeR0(RRA((RRAsL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt__eq__¤s "cCs|i|ƒ S(N(RD(RRA((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt__ne__«scCsKy||}Wn+tj o||ijo‚n|SX||=|SdS(s©D.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. N(tKeyErrort_HTTPHeaderDict__marker(RRtdefaultR"((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyR¸scCs%y ||=Wntj onXdS(N(RF(RR((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pytdiscardÉs cCs|iƒ}||f}t|||ƒ}||j oFt|tƒo|i|ƒq}t|||d|d|gƒndS(sâAdds a (name, value) pair, doesn't overwrite the value if it already exists. >>> headers = HTTPHeaderDict(foo='bar') >>> headers.add('Foo', 'baz') >>> headers['foo'] 'bar, baz' iiN(R7t_dict_setdefaultR1R*tappendR6(RRR8t key_lowertnew_valstvals((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pytaddÏs   cOsGt|ƒdjotdit|ƒƒƒ‚n|ptdƒ‚n|d}t|ƒdjo |dnd}t|tƒo)xŒ|D]}|i|||ƒqŽWngt|dƒo/xS|iƒD]}|i|||ƒqÍWn(x$|D]\}}|i||ƒqöWx*|iƒD]\}}|i||ƒq#WdS( sÀGeneric import function for any type of header-like object. Adapted version of MutableMapping.update in order to insert items with self.add instead of self.__setitem__ is8update() takes at most 2 positional arguments ({} given)s,update() takes at least 1 argument (0 given)iiR-N(( Rt TypeErrortformatR1RRORBR-titems(targsR5RRARR"((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyR3æs*  $   cCsXyt||iƒƒ}Wntj ogSXt|tƒo |dgS|dSdS(smReturns a list of all the values for the named field. Returns an empty list if the key doesn't exist.iN(R9R7RFR1ttuple(RRRN((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pytgetlists cCs#dt|ƒit|iƒƒfS(Ns%s(%s)(RCR R0t itermerged(R((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt__repr__scCsTxM|D]E}t||ƒ}t|tƒot|ƒ}nt|||ƒqWdS(N(R9R1R*R6(RRARR8((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyR2s cCs t|ƒƒ}|i|ƒ|S(N(RCR2(Rtclone((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pytcopys ccsHxA|D]9}t||ƒ}x!|dD]}|d|fVq'WqWdS(s8Iterate over all header lines, including duplicate ones.iiN(R9(RRRNR8((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt iteritems"s  ccs@x9|D]1}t||ƒ}|ddi|dƒfVqWdS(s:Iterate over all headers, merging duplicate ones together.is, iN(R9R:(RRR8((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyRV)scCst|iƒƒS(N(R*RZ(R((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyRR/ss set-cookiecCs_||iƒƒ}xF|D]>}|i|ƒx'|i|ƒD]}|i||ƒq<W|SWdS(s4Read headers from a Python 2 httplib message object.N(RRRIt getheadersRO(tclstmessaget duplicatestretRR8((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyt from_httplib2s N(s set-cookie($R R R.R/RR%RR&R=RDRERR,RtupdateRR R tobjectRGRRIROR3RUR[tgetallmatchingheaderstigetRWR2RYRZRVRRt classmethodR`(((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyRks>                        N((t collectionsRRt threadingRt ImportErrorR tpackages.ordered_dictt packages.sixR R Rt__all__RbRRR0R%R6RR9R&R;R=R<t setdefaultRJR(((sL/usr/lib/python2.6/vendor-packages/requests/packages/urllib3/_collections.pyts$  J