o 0i @ sD d dl Z e dZe dZe dZd ddZG dd d ZdS ) Nz[ \(\)<>@,;:\\"/\[\]\?=]z[\x00-\x1F\x7F]z[\x00-\x08\x0A-\x1F\x7F] c C sT |d ur(t |dkr(|st|r"|dddd}d| |f S d| |f S | S )Nr \z\\"z\"z%s="%s"z%s=%s)len tspecialssearchreplace)ZparamvalueZquote r 6/opt/alt/python310/lib64/python3.10/wsgiref/headers.py_formatparam s r c @ s e Zd Z d$ddZdd Zdd Zdd Zd d Zdd Zdd Z dd Z d$ddZdd Zdd Z dd Zdd Zdd Zdd Zd d! Zd"d# ZdS )%HeadersNc C s. |d ur|ng }t |turtd|| _d S )Nz+Headers must be a list of name/value tuples)typelist TypeError_headers_convert_string_type)selfZheaderskvr r r __init__$ s zHeaders.__init__c C sB t |tu r|rtnt}||rtd|S tdt|)Nz)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 nameZregexr r r r . s zHeaders._convert_string_typec C s t | jS N)r r r r r r __len__8 s zHeaders.__len__c C s0 | |= | j | j|dd| j|ddf d S NTr F)r appendr )r r valr r r __setitem__<