File: //lib/python3.10/wsgiref/__pycache__/headers.cpython-310.pyc
o
p̦i� � @ sF d Z ddlZe�d�Ze�d�Ze�d�Zddd�ZG d d
� d
�ZdS )z�Manage 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 C sR |dur't |�dkr'|st�|�r!|�dd��dd�}d| |f S d| |f 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.
Nr �\z\\�"z\"z%s="%s"z%s=%s)�len� tspecials�search�replace)�param�value�quote� r �&/usr/lib/python3.10/wsgiref/headers.py�_formatparam s r c @ s� e Zd ZdZd%dd�Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dd� Zd%dd�Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd � Zd!d"� Zd#d$� ZdS )&�Headersz,Manage a collection of HTTP response headersNc C sZ |d ur|ng }t |�turtd��|| _ |D ]\}}| j|dd� | j|dd� qd S )Nz+Headers must be a list of name/value tuplesT��nameF)�type�list� TypeError�_headers�_convert_string_type)�self�headers�k�vr r r
�__init__$ s �zHeaders.__init__c C s@ t |�tu r|r
tnt}|�|�rtd��|S td�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 �
ValueError�AssertionError�format�repr)r r
r �regexr r r
r . s
�zHeaders._convert_string_typec C s
t | j�S )z9Return the total number of headers, including duplicates.)r r �r r r r
�__len__8 s
zHeaders.__len__c C s. | |= | j �| j|dd�| j|dd�f� dS )zSet the value of a header.Tr FN)r �appendr )r r �valr r r
�__setitem__<