File: //usr/lib64/python3.11/http/__pycache__/client.cpython-311.pyc
�
.�i�� � �R � d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Zddlm
Z
g d�ZdZdZdZdZd Zd
Z e� � � ej j � � d� ej j � � � D � � ZdZd
ZdZ ej d� � j Z ej d� � j! Z" ej d� � Z# ej d� � Z$h d�Z%d?d�Z&de'de'fd�Z( G d� dej) j* � � Z+d� Z,e+fd�Z- G d� dej. � � Z/ G d� d � � Z0 ddl1Z1 G d!� d"e0� � Z2e�3 d"� � n# e4$ r Y nw xY w G d#� d$e5� � Z6 G d%� d&e6� � Z7 G d'� d(e6� � Z8 G d)� d*e6� � Z9 G d+� d,e6� � Z: G d-� d.e6� � Z; G d/� d0e6� � Z< G d1� d2e6� � Z= G d3� d4e=� � Z> G d5� d6e=� � Z? G d7� d8e=� � Z@ G d9� d:e6� � ZA G d;� d<e6� � ZB G d=� d>eCeA� � ZDe6ZEdS )@a�
HTTP/1.1 client library
<intro stuff goes here>
<other stuff, too>
HTTPConnection goes through a number of "states", which define when a client
may legally make another request or fetch the response for a particular
request. This diagram details these state transitions:
(null)
|
| HTTPConnection()
v
Idle
|
| putrequest()
v
Request-started
|
| ( putheader() )* endheaders()
v
Request-sent
|\_____________________________
| | getresponse() raises
| response = getresponse() | ConnectionError
v v
Unread-response Idle
[Response-headers-read]
|\____________________
| |
| response.read() | putrequest()
v v
Idle Req-started-unread-response
______/|
/ |
response.read() | | ( putheader() )* endheaders()
v v
Request-started Req-sent-unread-response
|
| response.read()
v
Request-sent
This diagram presents the following rules:
-- a second request may not be started until {response-headers-read}
-- a response [object] cannot be retrieved until {request-sent}
-- there is no differentiation between an unread response body and a
partially read response body
Note: this enforcement is applied by the HTTPConnection class. The
HTTPResponse class does not enforce this state machine, which
implies sophisticated clients may accelerate the request/response
pipeline. Caution should be taken, though: accelerating the states
beyond the above pattern may imply knowledge of the server's
connection-close behavior for certain requests. For example, it
is impossible to tell whether the server will close the connection
UNTIL the response headers have been read; this means that further
requests cannot be placed into the pipeline until it is known that
the server will NOT be closing the connection.
Logical State __state __response
------------- ------- ----------
Idle _CS_IDLE None
Request-started _CS_REQ_STARTED None
Request-sent _CS_REQ_SENT None
Unread-response _CS_IDLE <response_class>
Req-started-unread-response _CS_REQ_STARTED <response_class>
Req-sent-unread-response _CS_REQ_SENT <response_class>
� N)�urlsplit)�HTTPResponse�HTTPConnection�
HTTPException�NotConnected�UnknownProtocol�UnknownTransferEncoding�UnimplementedFileMode�IncompleteRead�
InvalidURL�ImproperConnectionState�CannotSendRequest�CannotSendHeader�ResponseNotReady�
BadStatusLine�LineTooLong�RemoteDisconnected�error� responses�P i� �UNKNOWN�IdlezRequest-startedzRequest-sentc � � i | ]
}||j ��S � )�phrase)�.0�vs �$/usr/lib64/python3.11/http/client.py�
<dictcomp>r l s � �G�G�G�Q�Q���G�G�G� i �d i s [^:\s][^:\r\n]*s \n(?![ \t])|\r(?![ \t\n])z[ - ]z[ -]> �PUT�POST�PATCH�datac
� � | � d� � S # t $ r[}t |j |j |j |j |� � � �d| |j |j � d�d|�d�� � d�d}~ww xY w)z<Call data.encode("latin-1") but show a better error message.�latin-1z (z.20z) is not valid Latin-1. Use z9.encode('utf-8') if you want to send it encoded in UTF-8.N)�encode�UnicodeEncodeError�encoding�object�start�end�title)r% �name�errs r �_encoder1 � s� � �
E��{�{�9�%�%�%��� E� E� E� ��L��J��I��G� �Z�Z�\�\�\�\�4�� �#�'� 1�2�2�2�2�D�D�D�
:�;� ;� AE� E�����E���s � �
A<�AA7�7A<�enc_name�returnc � � | � d� � \ } }}|r$| � d� � s
J | � � �| dz
} | S )z)Remove interface scope from IPv6 address.� %� [� ])� partition�
startswith)r2 �percent�_s r �_strip_ipv6_ifacer<