Format: application/x-python-code
⬇ Download File (5.4 KB)
   1  o
   2  
   3  .'h�'�@s�ddlZddlmZmZmZmZmZmZmZm	Z	ddl
   4  mZmZddl
   5  mZmZmZer2ddlmZzddlmZWneyIddlmZYnwe�d�Ze�e�d	��Ze�e�d	��ZGd
   6  d�deeeef�Ze	eeeefeeeefeeeefeeeeffZeded
   7  eddefdd��Zeded
   8  eddefdd��Ze	d de	eefd
   9  e defdd��Z	d de	eefd
  10  e defdd�Zdededeefdd�Z!dededeedefdd�Z"ddde fdd�Z#dS)!�N)�AnyStr�cast�List�overload�Sequence�Tuple�
  11  TYPE_CHECKING�Union�)�
  12  field_name�field_value)�bytesify�LocalProtocolError�validate)�Request)�Literals[0-9]+�asciic@s�eZdZdZdZdeeeeefddfdd�Zde	fdd	�Z
  13  d
  14  ede	fdd�Zde
  15  fd
  16  d�Zdefdd�Zde
  17  deeeffdd�Zdeeeeffdd�ZdS)�Headersa�
  18      A list-like interface that allows iterating over headers as byte-pairs
  19      of (lowercased-name, value).
  20  
  21      Internally we actually store the representation as three-tuples,
  22      including both the raw original casing, in order to preserve casing
  23      over-the-wire, and the lowercased name, for case-insensitive comparisions.
  24  
  25      r = Request(
  26          method="GET",
  27          target="/",
  28          headers=[("Host", "example.org"), ("Connection", "keep-alive")],
  29          http_version="1.1",
  30      )
  31      assert r.headers == [
  32          (b"host", b"example.org"),
  33          (b"connection", b"keep-alive")
  34      ]
  35      assert r.headers.raw_items() == [
  36          (b"Host", b"example.org"),
  37          (b"Connection", b"keep-alive")
  38      ]
  39      �_full_items�
  40  full_items�returnNcCs
  41  ||_dS�N�r)�selfr�r�BC:\Users\shubh\Videos\agent\nova\Lib\site-packages\h11/_headers.py�__init__f�
  42  zHeaders.__init__cC�
  43  t|j�Sr)�boolr�rrrr�__bool__irzHeaders.__bool__�othercCst|�t|�kSr)�list)rr"rrr�__eq__l�zHeaders.__eq__cCrr)�lenrr rrr�__len__orzHeaders.__len__cCsdtt|��S)Nz
  44  <Headers(%s)>)�reprr#r rrr�__repr__rr%zHeaders.__repr__�idxcCs|j|\}}}||fSrr)rr*�_�name�valuerrr�__getitem__uszHeaders.__getitem__cCsdd�|jD�S)NcSsg|]	\}}}||f�qSrr)�.0�raw_namer+r-rrr�
  45  <listcomp>zsz%Headers.raw_items.<locals>.<listcomp>rr rrr�	raw_itemsyr%zHeaders.raw_items)�__name__�
  46  __module__�__qualname__�__doc__�	__slots__rr�bytesrrr!�objectr$�intr'�strr)r.r2rrrrrKs r�headers�_parsedTrcC�dSrr�r<r=rrr�normalize_and_validate��r@FcCr>rrr?rrrr@�rAcCr>rrr?rrrr@�sc	CsHg}d}d}|D]�\}}|s$t|�}t|�}tt|d|�tt|d|�t|t�s+J�t|t�s2J�|}|��}|dkrrdd�|�d�D�}t|�dkrPt	d	��|�
  47  �}tt|d
  48  �|duri|}|�|||f�q||krqt	d	��q|dkr�|r~t	dd
  49  d��|��}|dkr�t	dd
  50  d��d}|�|||f�q|�|||f�qt
  51  |�S)NFzIllegal header name {!r}zIllegal header value {!r}scontent-lengthcSsh|]}|���qSr)�strip)r/�lengthrrr�	<setcomp>�sz)normalize_and_validate.<locals>.<setcomp>�,r
  52  z"conflicting Content-Length headerszbad Content-Lengthstransfer-encodingz"multiple Transfer-Encoding headersi�)Zerror_status_hintschunkedz,Only Transfer-Encoding: chunked is supportedT)r
  53  r�_field_name_re�_field_value_re�
  54  isinstancer8�lower�splitr&r�pop�_content_length_re�appendr)	r<r=�new_headersZseen_content_lengthZsaw_transfer_encodingr,r-r0�lengthsrrrr@�sP���r,cCsPg}|jD] \}}}||kr%|��}|�d�D]
  55  }|��}|r$|�|�qq|S)NrE)rrIrJrBrM)r<r,�outr+�
  56  found_name�found_raw_valueZfound_split_valuerrr�get_comma_header�s$
  57  �rS�
  58  new_valuescCsPg}|jD]\}}}||kr|�||f�q|D]}|�|��|f�qt|�Sr)rrM�titler@)r<r,rTrNZfound_raw_namerQrR�	new_valuerrr�set_comma_header�s
  59  �rW�requestrcCs"|jdkrdSt|jd�}d|vS)Ns1.1Fsexpects100-continue)�http_versionrSr<)rX�expectrrr�has_expect_100_continues
  60  r[)F)$�re�typingrrrrrrrr	Z_abnfrrZ_utilr
  61  rrZ_eventsrr�ImportErrorZtyping_extensions�compilerL�encoderFrGr8rr;ZHeaderTypesr@rrSrWr[rrrr�<module>s\(�
  62  :2���
  63  ����
  64  ��
  65  �7/