a 5i@s8ddlZedZedZd ddZGdddZdS) Nz[ \(\)<>@,;:\\"/\[\]\?=]z[\x00-\x1F\x7F]cCsX|durPt|dkrP|s"t|rB|dddd}d||fSd||fSn|SdS)Nr\z\\"z\"z%s="%s"z%s=%s)len tspecialssearchreplace)Zparamvaluequoter '/usr/lib64/python3.9/wsgiref/headers.py _formatparams  r c@seZdZd$ddZddZddZdd Zd d Zd d ZddZ ddZ d%ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#ZdS)&HeadersNcCs.|dur |ng}t|tur$td||_dS)Nz+Headers must be a list of name/value tuples)typelist TypeError_headers)selfZheadersr r r __init__ s  zHeaders.__init__cCs8t|tur"t|rtd|Stdt|dS)Nz)Control characters not allowed in headersz1Header names/values must be of type str (got {0}))rstr_control_chars_rer ValueErrorAssertionErrorformatrepr)rr r r r _convert_string_type*s  zHeaders._convert_string_typecCs t|jSN)rrrr r r __len__3szHeaders.__len__cCs&||=|j||||fdSr)rappendr)rnamevalr r r __setitem__7szHeaders.__setitem__cs0|fdd|jD|jdd<dS)Ncs g|]}|dkr|qS)rlower.0Zkvr r r Cz'Headers.__delitem__..rr$rrr r r'r __delitem__=szHeaders.__delitem__cCs ||Srgetr+r r r __getitem__Es zHeaders.__getitem__cCs||duSrr-r+r r r __contains__PszHeaders.__contains__cs"|fdd|jDS)Ncs$g|]}|dkr|dqS)rrr#r%r'r r r(^r)z#Headers.get_all..r*r+r r'r get_allUszHeaders.get_allcCs6||}|jD]\}}||kr|Sq|Srr*)rr defaultkvr r r r.as   z Headers.getcCsdd|jDS)NcSsg|] \}}|qSr r r&r3r4r r r r(rr)z Headers.keys..rrr r r keysjsz Headers.keyscCsdd|jDS)NcSsg|] \}}|qSr r r5r r r r(|r)z"Headers.values..r6rr r r valuestszHeaders.valuescCs|jddSrr6rr r r items~sz Headers.itemscCsd|jj|jfS)Nz%s(%r)) __class____name__rrr r r __repr__szHeaders.__repr__cCsddd|jDddgS)Nz cSsg|] }d|qS)z%s: %sr r%r r r r(r)z#Headers.__str__..)joinrrr r r __str__szHeaders.__str__cCst|dS)Nz iso-8859-1)rencoderr r r __bytes__szHeaders.__bytes__cCs:||}|dur2|j||||f|S|SdSr)r.rrr)rr r resultr r r setdefaults zHeaders.setdefaultcKsg}|dur ||}|||D]P\}}||}|durV||ddq(||}|t|dd|q(|j||d|fdS)N_-z; )rrr9rr rr>)r_name_valueZ_paramspartsr3r4r r r add_headers    zHeaders.add_header)N)N)r; __module__ __qualname__rrrr"r,r/r0r1r.r7r8r9r<r?rArCrIr r r r rs"        r)Nr)recompilerrr rr r r r  s