֦i d Z ddlZ ej d Z ej d Z ej d Zd dZ G d d Zy) zManage HTTP Response Headers Much of this module is red-handedly pilfered from email.message in the stdlib, so portions are Copyright (C) 2001,2002 Python Software Foundation, and were written by Barry Warsaw. Nz[ \(\)<>@,;:\\"/\[\]\?=]z[\x00-\x1F\x7F]z[\x00-\x08\x0A-\x1F\x7F]c |Vt | dkD rH|st j | r*|j dd j dd }| d|dS | d|S | S )z~Convenience function to format and return a key=value pair. This will quote the value if needed or if quote is true. r \z\\"z\"z="=)len tspecialssearchreplace)paramvaluequotes (/usr/lib64/python3.12/wsgiref/headers.py_formatparamr s\ SZ!^I$$U+MM$/77UCE %u--#U++ c z e Zd ZdZddZd Zd Zd Zd Zd Z d Z d ZddZd Z d Zd Zd Zd Zd Zd Zd Zy)Headersz,Manage a collection of HTTP response headersNc ||ng }t | t urt d || _ |D ]+ \ }}| j |d | j |d - y )Nz+Headers must be a list of name/value tuplesTnameF)typelist TypeError_headers_convert_string_type)selfheaderskvs r __init__zHeaders.__init__$ sd $0'b=$IJJ 1))!$)7))!%)8 r c t | t u r,|rt nt }|j | rt d |S t dj t | )zConvert/check value type.z)Control characters not allowed in headersz1Header names/values must be of type str (got {0})) r str_name_disallowed_re_value_disallowed_rer ValueErrorAssertionErrorformatrepr)r r r regexs r r zHeaders._convert_string_type. sV ;#,0(6JE||E" !LMML %%+VDK%8: :r c , t | j S )z9Return the total number of headers, including duplicates.)r r r s r __len__zHeaders.__len__8 s 4==!!r c | |= | j j | j |d | j |d f y)zSet the value of a header.Tr FN)r appendr )r r vals r __setitem__zHeaders.__setitem__<