File: //opt/saltstack/salt/lib/python3.10/site-packages/tornado/__pycache__/httputil.cpython-310.pyc
o
;jJ� � @ s� d Z ddlZddlZddlZddlZddlZddlZddl m
Z
ddlmZ ddl
ZddlZddlmZ ddlZddlZddlmZmZmZmZ ddlmZmZmZmZ ddlmZm Z e ddl!Z!dd l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, e!j-r�dd
l!m.Z. ddl/m0Z0 ddl1Z1ej2j3e4e4f Z5nej2j3Z5dZ6e�7d
�Z8G dd� d�Z9e
d�de4de4fdd��Z:G dd� de5�Z;G dd� d�Z<G dd� de=�Z>G dd� de=�Z?G dd� d�Z@G dd � d �ZAG d!d"� d"�ZBd#e4d$e(de'e4e4f e$e"e4e4f e"e"e4e4f d%f f de4fd&d'�ZCG d(d)� d)e�ZDd*e4de)e"e)eE e)eE f fd+d,�ZFd-e)eE d.e)eE d/eEde4fd0d1�ZGd2e4de)eE fd3d4�ZHejIG d5d6� d6��ZJejIG d7d8� d8��ZKeK� aLd9eKddfd:d;�ZM dsdd<�d=e4d>eNd?e'e4e$eN f d@e'e4e$eD f dAe)e; d9e)eK ddfdBdC�ZOdd<�dDeNdEeNd?e'e4e$eN f d@e'e4e$eD f d9e)eJ ddfdFdG�ZPdHe(eEeQeRejSejf de4fdIdJ�ZTG dKdL� dLe!jU�ZVdMe4deVfdNdO�ZWG dPdQ� dQe!jU�ZXdMe4deXfdRdS�ZYdTe4de+e4ddf fdUdV�ZZdMe4de"e4e'e4e4f f fdWdX�Z[dYe4dZe'e4e4f de4fd[d\�Z\d]e(e4eNf d^e(e4eNf deNfd_d`�Z]dadb� Z^e�7dc�Z_dde4de"e4e)eE f fdedf�Z`dge'e4e$e, f de#e"e4e,f fdhdi�Zae�7dj�jbZcdkejdde4fdldm�ZedTe4de4fdndo�Zfdpe4de'e4e4f fdqdr�ZgdS )tz�HTTP utility code shared by clients and servers.
This module also defines the `HTTPServerRequest` class which is exposed
via `tornado.web.RequestHandler.request`.
� N)� lru_cache)� responses)�SSLError)� urlencode�urlparse�
urlunparse� parse_qsl)�
native_str�parse_qs_bytes�utf8�
to_unicode)�
ObjectDict�unicode_type)�Tuple�Iterable�List�Mapping�Iterator�Dict�Union�Optional� Awaitable� Generator�AnyStr)�Deque)�Futurez z[\x00-\x08\x0A-\x1F\x7F]c
@ s� e Zd ZdZe�d�Ze�d�Ze�d�Ze�dej � dej � dej � d��Z
e�d�Ze�d �Ze�d
�Z
e�dej � de
j � d��Ze�dej � dej � dej � d
ej � ��Ze�d�Ze�ej � d��ZeZeZe�de
j � dej � d��Ze�d�Ze�dej � de
j � d��Ze�ej � d��Ze�dej � dej � dej � d��Ze�d�Ze�dej � dej � dej � d��ZdS )�_ABNFa} Class that holds a subset of ABNF rules from RFC 9110 and friends.
Class attributes are re.Pattern objects, with the same name as in the RFC
(with hyphens changed to underscores). Currently contains only the subset
we use (which is why this class is not public). Unfortunately the fields
cannot be alphabetized as they are in the RFCs because of dependencies.
z[A-Za-z0-9\-._~]z
[!$&'()*+,;=]z%[0-9A-Fa-f]{2}z(?:[\[\]:]|�|z)*z[0-9]*z[\x21-\x7E]z[\x80-\xFF]z(?:�)z| |\t)*z[!#$%&'*+\-.^_`|~0-9A-Za-z]�+z)(?::z)?zHTTP/[0-9]\.[0-9]z (?:[\t ]|z)+�(z) (z[0-9]{3}N)�__name__�
__module__�__qualname__�__doc__�re�compileZuri_unreservedZuri_sub_delimsZuri_pct_encoded�patternZuri_hostZuri_portZVCHARZobs_textZfield_vchar�field_valueZtchar�token�
field_name�method�hostZHTTP_versionZ
reason_phraseZrequest_target�request_lineZstatus_code�status_line� r/ r/ �D/opt/saltstack/salt/lib/python3.10/site-packages/tornado/httputil.pyr O sL
�
�����
�
�r i� �name�returnc C s d� dd� | �d�D ��S )ziMap a header name to Http-Header-Case.
>>> _normalize_header("coNtent-TYPE")
'Content-Type'
�-c S s g | ]}|� � �qS r/ )�
capitalize)�.0�wr/ r/ r0 �
<listcomp>� s z%_normalize_header.<locals>.<listcomp>)�join�split)r1 r/ r/ r0 �_normalize_header� s r: c @ s� e Zd ZdZejdeeee f ddfdd��Z ejdeeef ddfdd��Z ejde
eef ddfd d��Z ejd
eddfdd��Z dejd
eddfdd�Z d
d�dedededdfdd�Z
dedee fdd�Zdee
eef fdd�Zd
d�dededdfdd�Zed
d�dededd fdd��Zdededdfdd�Zdedefd d!�Zdedefd"d#�Zdeddfd$d%�Zdefd&d'�Zdeej fd(d)�Zd.d*d+�ZeZdefd,d-�ZeZ dS )/�HTTPHeadersa� A dictionary that maintains ``Http-Header-Case`` for all keys.
Supports multiple values per key via a pair of new methods,
`add()` and `get_list()`. The regular dictionary interface
returns a single value per key, with multiple values joined by a
comma.
>>> h = HTTPHeaders({"content-type": "text/html"})
>>> list(h.keys())
['Content-Type']
>>> h["Content-Type"]
'text/html'
>>> h.add("Set-Cookie", "A=B")
>>> h.add("Set-Cookie", "C=D")
>>> h["set-cookie"]
'A=B,C=D'
>>> h.get_list("set-cookie")
['A=B', 'C=D']
>>> for (k,v) in sorted(h.get_all()):
... print('%s: %s' % (k,v))
...
Content-Type: text/html
Set-Cookie: A=B
Set-Cookie: C=D
�_HTTPHeaders__argr2 Nc C � d S �Nr/ ��selfr<