\h;*ddlmZ ddlmZmZ ddlmZddlm Z ddl m Z dd l m Z dd lmZmZd d gZeZGd d eZGdd eZy#e$r ddlmZmZYRwxYw#e$r GddZY`wxYw))absolute_import)MappingMutableMapping)RLockceZdZdZdZy)rcyNselfs c/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py __enter__zRLock.__enter__  cyr r )r exc_type exc_value tracebacks r __exit__zRLock.__exit__rrN)__name__ __module__ __qualname__rrr rr rr s   rr) OrderedDict) InvalidHeader)six)iterkeys itervaluesRecentlyUsedContainerHTTPHeaderDictcFeZdZdZeZd dZdZdZdZ dZ dZ d Z d Z y) ra 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 Nch||_||_|j|_t |_yr )_maxsize dispose_func ContainerCls _containerrlock)r maxsizer$s r __init__zRecentlyUsedContainer.__init__/s* (++-G rc|j5|jj|}||j|<|cdddS#1swYyxYwr )r'r&pop)r keyitems r __getitem__z!RecentlyUsedContainer.__getitem__6sC YY ??&&s+D#'DOOC    s ,AA ct}|j5|jj|t}||j|<t |j|j kDr|jj d\}}ddd|jr|tur|j|yyy#1swY1xYw)NF)last)_Nullr'r&getlenr#popitemr$)r r,value evicted_value_keys r __setitem__z!RecentlyUsedContainer.__setitem__=s YY J OO//U;M#(DOOC 4??#dmm3&*oo&=&=5&=&I#m J   e!;   m ,"<  J Js A1B44B=c|j5|jj|}ddd|jr|jyy#1swY(xYwr )r'r&r+r$)r r,r5s r __delitem__z!RecentlyUsedContainer.__delitem__LsP YY -OO'',E -      e $  - -s AAcp|j5t|jcdddS#1swYyxYwr )r'r3r&r s r __len__zRecentlyUsedContainer.__len__Ss* YY (t' ( ( (s,5ctd)Nz7Iteration over this class is unlikely to be threadsafe.)NotImplementedErrorr s r __iter__zRecentlyUsedContainer.__iter__Ws! E  rc|j5tt|j}|jj ddd|j rD]}|j |yy#1swY/xYwr )r'listrr&clearr$)r valuesr5s r rBzRecentlyUsedContainer.clear\sn YY $*T__56F OO ! ! # $    )!!%( )   $ $s 9A44A=c|j5tt|jcdddS#1swYyxYwr )r'rArr&r s r keyszRecentlyUsedContainer.keysfs/ YY 312 3 3 3s5>) N)rrr__doc__rr%r)r.r8r:r<r?rBrEr rr rrs6 L -%( )3rceZdZdZdfd ZdZdZdZdZdZ dZ e jre jZe jZeZd Zd Zefd Zd Zd ZdZefdZeZeZeZeZdZdZdZdZ dZ!dZ"e#dZ$xZ%S)r ap :param headers: An iterable of field-value pairs. Must not contain multiple field names when compared case-insensitively. :param kwargs: Additional field-value pairs to pass in to ``dict.update``. A ``dict`` like container for storing HTTP Headers. Field names are stored and compared case-insensitively in compliance with RFC 7230. Iteration provides the first case-sensitive key seen for each case-insensitive pair. Using ``__setitem__`` syntax overwrites fields that compare equal case-insensitively in order to maintain ``dict``'s api. For fields that compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add`` in a loop. If multiple fields that are equal case-insensitively are passed to the constructor or ``.update``, the behavior is undefined and some will be lost. >>> 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' c tt| t|_|3t |tr|j |n|j||r|j|yyr )superr r)rr& isinstance _copy_fromextend)r headerskwargs __class__s r r)zHTTPHeaderDict.__init__sU nd,.%-  '>2( G$  KK  rcz||g|j|j<|j|jSr r&lowerr r,vals r r8zHTTPHeaderDict.__setitem__s/(+Sz $syy{++rcd|j|j}dj|ddS)N, rr&rSjoinrTs r r.zHTTPHeaderDict.__getitem__s+oociik*yyQR!!rc:|j|j=yr rRr r,s r r:zHTTPHeaderDict.__delitem__s OOCIIK (rc:|j|jvSr )rSr&r[s r __contains__zHTTPHeaderDict.__contains__syy{doo--rc t|ts t|dsyt|t|st||}t d|j Dt d|j Dk(S)NrEFc3FK|]\}}|j|fywr rS.0kvs r z(HTTPHeaderDict.__eq__..sAtq!QWWYNA!c3FK|]\}}|j|fywr r`ras r rez(HTTPHeaderDict.__eq__..s%J #q!QWWYNJ rf)rKrhasattrtypedict itermergedr others r __eq__zHTTPHeaderDict.__eq__su%)'%2H%d,DJu%EAt/@AATJ ','7'7'9J F   rc&|j| Sr )rnrls r __ne__zHTTPHeaderDict.__ne__s;;u%%%rc,t|jSr )r3r&r s r r<zHTTPHeaderDict.__len__s4??##rc#XK|jjD] }|d yw)Nr)r&rC)r valss r r?zHTTPHeaderDict.__iter__s+OO**, Dq'M s(*cX ||}||=|S#t$r||jur|cYSwxYw)zD.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. )KeyError_HTTPHeaderDict__marker)r r,defaultr5s r r+zHTTPHeaderDict.popsC IE S L  $--'N s  ))c* ||=y#t$rYywxYwr )rur[s r discardzHTTPHeaderDict.discards  S    s  c|j}||g}|jj||}||ur|j|yy)zAdds 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' N)rSr& setdefaultappend)r r,rU key_lowernew_valsrss r addzHTTPHeaderDict.addsGIIK :)))X> 4  KK  rcZt|dkDr#tdjt|t|dk\r|dnd}t|tr+|j D]\}}|j ||nt|tr|D]}|j |||nSt|dr+|jD]}|j |||n|D]\}}|j |||jD]\}}|j ||y)zGeneric 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__ rz9extend() takes at most 1 positional arguments ({0} given)rr rEN) r3 TypeErrorformatrKr iteritemsrrrhrEitems)r argsrOrmr,rUr5s r rMzHTTPHeaderDict.extends  t9q=((.s4y(9 t9>Qr e^ ,!OO- #Sc" # w ' *eCj) * UF #zz| *eCj) *$ % Ue$ %!,,. !JC HHS%  !rc |j|j}|ddS#t$r||jurgcYS|cYSwxYw)zmReturns a list of all the values for the named field. Returns an empty list if the key doesn't exist.rN)r&rSrurv)r r,rwrss r getlistzHTTPHeaderDict.getlistsO ??399;/D 8O  $--' N s$AAAcft|jdt|jdS)N())rirrjrkr s r __repr__zHTTPHeaderDict.__repr__s#:..T__5F0GHHrc|D]O}|j|}t|tr t|}|g|z|j|j <Qyr )rrKrAr&rS)r rmr,rUs r rLzHTTPHeaderDict._copy_fromsL 7C--$C#t$3i,/53;DOOCIIK (  7rcHt|}|j||Sr )rirL)r clones r copyzHTTPHeaderDict.copy"s"T   rc#zK|D]2}|j|j}|ddD] }|d|f 4yw)z8Iterate over all header lines, including duplicate ones.rNrrR)r r,rsrUs r rzHTTPHeaderDict.iteritems'sL #C??399;/DABx #1gsl" # #s9;c#K|D]:}|j|j}|ddj|ddf<yw)z:Iterate over all headers, merging duplicate ones together.rrWrNrXrTs r rkzHTTPHeaderDict.itermerged.sG -C//#))+.Ca&$))CG,, , -sAAc4t|jSr )rArr s r rzHTTPHeaderDict.items4sDNN$%%rc2d}g}|jD]}}|j|r4|std|z|d\}}||dz|jzf|d<H|j dd\}}|j ||jf||S)z4Read headers from a Python 2 httplib message object.)  z/Header continuation with no previous header: %sr:r)rN startswithrstripsplitr|)clsmessageobs_fold_continued_leadersrNliner,r5s r from_httplibzHTTPHeaderDict.from_httplib7s &1"OO 1D9:(IDP")JC#& djjl(B"CGBKC+JC NNC/ 0 1"7|rr )&rrrrGr)r8r.r:r]rnrprPY2rrrobjectrvr<r?r+ryrrMr getheadersgetallmatchingheadersigetget_allrrLrrrkr classmethodr __classcell__)rPs@r r r ksB  ,"). & ww!**#.. xH$ ("  !8$, J# DGI7 #- &rN) __future__rcollections.abcrr ImportError collections threadingrr exceptionsrpackagesr packages.sixrr__all__rr1rr r rr rs&47 $%. "$4 5 I3NI3Xf^fM4334s"AA& A#"A#&A87A8