
    Wh#                         d dl Z ddlmZmZ ddlmZmZmZ  e j        d          Z	 e j         ej
        d                    Z e j         ej
        d                    Z G d d          Zdd
Zd Zd Zd ZdS )    N   )
field_namefield_value)bytesifyLocalProtocolErrorvalidates   [0-9]+asciic                   F    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )Headersa  
    A list-like interface that allows iterating over headers as byte-pairs
    of (lowercased-name, value).

    Internally we actually store the representation as three-tuples,
    including both the raw original casing, in order to preserve casing
    over-the-wire, and the lowercased name, for case-insensitive comparisions.

    r = Request(
        method="GET",
        target="/",
        headers=[("Host", "example.org"), ("Connection", "keep-alive")],
        http_version="1.1",
    )
    assert r.headers == [
        (b"host", b"example.org"),
        (b"connection", b"keep-alive")
    ]
    assert r.headers.raw_items() == [
        (b"Host", b"example.org"),
        (b"Connection", b"keep-alive")
    ]
    _full_itemsc                     || _         d S Nr   )self
full_itemss     R/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/h11/_headers.py__init__zHeaders.__init__\   s    %    c              #   2   K   | j         D ]\  }}}||fV  d S r   r   )r   _namevalues       r   __iter__zHeaders.__iter___   s;      ". 	 	NAtU+	 	r   c                 *    t          | j                  S r   )boolr   r   s    r   __bool__zHeaders.__bool__c   s    D$%%%r   c                 B    t          |           t          |          k    S r   )list)r   others     r   __eq__zHeaders.__eq__f   s    DzzT%[[((r   c                 *    t          | j                  S r   )lenr   r   s    r   __len__zHeaders.__len__i   s    4#$$$r   c                 @    dt          t          |                     z  S )Nz<Headers(%s)>)reprr   r   s    r   __repr__zHeaders.__repr__l   s    d4jj!1!111r   c                 ,    | j         |         \  }}}||fS r   r   )r   idxr   r   r   s        r   __getitem__zHeaders.__getitem__o   s    )#.4e}r   c                 $    d | j         D             S )Nc                     g | ]
\  }}}||fS  r-   ).0raw_namer   r   s       r   
<listcomp>z%Headers.raw_items.<locals>.<listcomp>t   s$    MMM&8h55!MMMr   r   r   s    r   	raw_itemszHeaders.raw_itemss   s    MMD<LMMMMr   N)__name__
__module____qualname____doc__	__slots__r   r   r   r!   r$   r'   r*   r1   r-   r   r   r   r   A   s         0 I& & &  & & &) ) )% % %2 2 2  N N N N Nr   r   Fc                 B   g }d }d}| D ]\  }}|sLt          |          }t          |          }t          t          |d|           t          t          |d|           |}|                                }|dk    rd |                    d          D             }t          |          dk    rt          d          |                                }t          t          |d	           ||}|
                    |||f           ||k    rt          d          |d
k    rZ|rt          dd          |                                }|dk    rt          dd          d}|
                    |||f           o|
                    |||f           t          |          S )NFzIllegal header name {!r}zIllegal header value {!r}s   content-lengthc                 6    h | ]}|                                 S r-   )strip)r.   lengths     r   	<setcomp>z)normalize_and_validate.<locals>.<setcomp>   s     FFF&v||~~FFFr      ,r   z"conflicting Content-Length headerszbad Content-Lengths   transfer-encodingz"multiple Transfer-Encoding headersi  )error_status_hints   chunkedz,Only Transfer-Encoding: chunked is supportedT)r   r   _field_name_re_field_value_relowersplitr#   r   pop_content_length_reappendr   )	headers_parsednew_headersseen_content_lengthsaw_transfer_encodingr   r   r/   lengthss	            r   normalize_and_validaterK   w   s   K! *8 *8e  	QD>>DUOOE^T+EtLLL_e-H%PPPzz||$$$FFEKK4E4EFFFG7||q  ()MNNNKKMME'0DEEE"*&+#""HdE#:;;;;$--()MNNN .)))
 % (8C   
 KKMME
""(B&)    %)!$67777$67777;r   c                     g }| j         D ]c\  }}}||k    rW|                                }|                    d          D ]-}|                                }|r|                    |           .d|S )Nr<   )r   r@   rA   r9   rD   )rE   r   outr   
found_namefound_raw_valuefound_split_values          r   get_comma_headerrQ      s    H C*1*= 2 2&:-3355O%4%:%:4%@%@ 2 2!$5$;$;$=$=!$ 2JJ0111Jr   c                     g }| j         D ]#\  }}}||k    r|                    ||f           $|D ]+}|                    |                                |f           ,t          |          S r   )r   rD   titlerK   )rE   r   
new_valuesrG   found_raw_namerN   rO   	new_values           r   set_comma_headerrW      s     K7>7J B B3
O@AAA 6 6	DJJLL)45555!+...r   c                 N    | j         dk     rdS t          | j        d          }d|v S )Ns   1.1Fs   expects   100-continue)http_versionrQ   rE   )requestexpects     r   has_expect_100_continuer\      s3     f$$ugoy99Ff$$r   )F)re_abnfr   r   _utilr   r   r   compilerC   encoder>   r?   r   rK   rQ   rW   r\   r-   r   r   <module>rb      s   				 * * * * * * * * 9 9 9 9 9 9 9 9 9 9p  RZ
++ -J-g6677"*/[/88993N 3N 3N 3N 3N 3N 3N 3Nl/  /  /  / d, , ,^/ / /&% % % % %r   