grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a s>> 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' Nc sPtt|ƒ ¡tƒ|_|dur>t|tƒr4| |¡n | |¡|rL| |¡dSr)Úsuperrr"rrÚ isinstanceÚ _copy_fromÚextend)r ÚheadersÚkwargs©Ú __class__rr r"�s   zHTTPHeaderDict.__init__cCs ||g|j| ¡<|j| ¡Sr©rÚlower©r r$Úvalrrr r-˜szHTTPHeaderDict.__setitem__cCs |j| ¡}d |dd…¡S)Nú, r©rr@ÚjoinrArrr r&œszHTTPHeaderDict.__getitem__cCs|j| ¡=dSrr?©r r$rrr r. szHTTPHeaderDict.__delitem__cCs| ¡|jvSr)r@rrFrrr Ú __contains__£szHTTPHeaderDict.__contains__cCs^t|tƒst|dƒsdSt|t|ƒƒs2t|ƒ|ƒ}tdd„| ¡Dƒƒtdd„| ¡DƒƒkS)Nr5Fcss|]\}}| ¡|fVqdSr)r@)Ú.0ÚkÚvrrr Ú «óz(HTTPHeaderDict.__eq__..)r8rÚhasattrÚtypeÚdictÚ itermerged©r Úotherrrr Ú__eq__¦s ÿzHTTPHeaderDict.__eq__cCs | |¡ Sr)rSrQrrr Ú__ne__¯szHTTPHeaderDict.__ne__cCs t|jƒSr)r*rrrrr r/¸szHTTPHeaderDict.__len__ccs|j ¡D]}|dVq dS)Nr)rr4)r Úvalsrrr r1»szHTTPHeaderDict.__iter__cCs>z ||}Wn"ty.||jur&‚|YS0||=|SdS)z§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)ÚKeyErrorÚ_HTTPHeaderDict__marker)r r$Údefaultr,rrr r#Às    zHTTPHeaderDict.popcCs"z ||=WntyYn0dSr)rVrFrrr ÚdiscardÑs  zHTTPHeaderDict.discardcCs4| ¡}||g}|j ||¡}||ur0| |¡dS)zâ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' N)r@rÚ setdefaultÚappend)r r$rBZ key_lowerZnew_valsrUrrr Úadd×s zHTTPHeaderDict.addcOsìt|ƒdkrtd t|ƒ¡ƒ‚t|ƒdkr2|dnd}t|tƒr`| ¡D]\}}| ||¡qHnjt|tƒr†|D]}| |||¡qnnDt|dƒr°|  ¡D]}| |||¡q˜n|D]\}}| ||¡q´|  ¡D]\}}| ||¡qÒdS)zÀ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__ rz9extend() takes at most 1 positional arguments ({0} given)rrr5N) r*Ú TypeErrorÚformatr8rÚ iteritemsr\rrMr5Úitems)r Úargsr<rRr$rBr,rrr r:çs( ÿÿ     zHTTPHeaderDict.extendcCsLz|j| ¡}Wn(ty:||jur2gYS|YS0|dd…SdS)zmReturns a list of all the values for the named field. Returns an empty list if the key doesn't exist.rN)rr@rVrW)r r$rXrUrrr Úgetlists   zHTTPHeaderDict.getlistcCs gd¢}|D]}| |¡q |S)z– Remove content-specific header fields before changing the request method to GET or HEAD according to RFC 9110, Section 15.4. )zContent-EncodingzContent-LanguagezContent-Locationz Content-TypezContent-LengthZDigestz Last-Modified)rY)r Zcontent_specific_headersÚheaderrrr Ú_prepare_for_method_changes  z)HTTPHeaderDict._prepare_for_method_changecCsdt|ƒjt| ¡ƒfS)Nz%s(%s))rNrrOrPrrrr Ú__repr__)szHTTPHeaderDict.__repr__cCs>|D]4}| |¡}t|tƒr$t|ƒ}|g||j| ¡<qdSr)rbr8r2rr@)r rRr$rBrrr r9,s   zHTTPHeaderDict._copy_fromcCst|ƒƒ}| |¡|Sr)rNr9)r Zclonerrr Úcopy4s  zHTTPHeaderDict.copyccs<|D]2}|j| ¡}|dd…D]}|d|fVq"qdS)z8Iterate over all header lines, including duplicate ones.rNrr?)r r$rUrBrrr r_9szHTTPHeaderDict.iteritemsccs8|D].}|j| ¡}|dd |dd…¡fVqdS)z:Iterate over all headers, merging duplicate ones together.rrCrNrDrArrr rP@szHTTPHeaderDict.itermergedcCs t| ¡ƒSr)r2r_rrrr r`FszHTTPHeaderDict.itemscCs€d}g}|jD]h}| |¡rT|s.td|ƒ‚n&|d\}}||d| ¡f|d<q| dd¡\}}| || ¡f¡q||ƒS)z4Read headers from a Python 2 httplib message object.)ú ú z/Header continuation with no previous header: %séÿÿÿÿrgú:r)r;Ú startswithrÚstripÚsplitr[)ÚclsÚmessageZobs_fold_continued_leadersr;Úliner$r,rrr Ú from_httplibIs  ÿ zHTTPHeaderDict.from_httplib)N)'rrrr6r"r-r&r.rGrSrTrZPY2rrrÚobjectrWr/r1r#rYr\r:rbrdZ getheadersZgetallmatchingheadersZigetZget_allrer9rfr_rPr`Ú classmethodrqÚ __classcell__rrr=r rks@!    N)Z __future__rÚcollections.abcrrÚ ImportErrorÚ collectionsÚ threadingrrÚ exceptionsrZpackagesrZ packages.sixrrÚ__all__rrr(rrrrrr Ús      L