ruạṛ
3 AL�i� � . @ s� d Z ddlmZmZmZmZ ddlmZmZm Z m Z ddlmZ ddl mZ ddl mZ ddlmZ ddlZddlZddlZdd lmZ ddlZdd lmZ er�ddlmZ nddlmZ dd ddddddddddddddgZdZ dZ!dZ"dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2d/Z3d0Z4d1Z5d2Z6d3Z7d4Z8d5Z9d6Z:d7Z;d8Z<d9Z=d:Z>d;Z?d<Z@d=ZAd>ZBd?ZCd@ZDdAZEdBZFdCZGdDZHdEZIdFZJdGZKdHZLdIZMdJZNdKZOdLZPdMZQdNZRdOZSdPZTdQZUdRZVdSZWdTZXdUZYdVZZdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dd�d�d�d�d��-Z[d�Z\d�Z]d"Z^G d�d�� d�ej_�Z`e`fd�d��Zaeb� ZcG d�d� dejd�ZeG d�d � d eb�ZfyddlgZgdd�lgmhZh W n eik �r� Y nX G d�d�� d�ef�Zjejkd�� G d�d� del�ZmG d�d� dem�ZnG d�d� dem�ZoG d�d� dem�ZpG d�d� dem�ZqG d�d� dem�ZrG d�d� dem�ZsG d�d� dem�ZtG d�d� det�ZuG d�d� det�ZvG d�d� det�ZwG d�d� dem�ZxG d�d�� d�em�ZyemZzdS )�aD HTTP/1.1 client library A backport of the Python 3.3 http/client.py module for python-future. <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 | | response = getresponse() v Unread-response [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> � )�absolute_import�division�print_function�unicode_literals)�bytes�int�str�super)�PY2)�parser)�message)�create_connectionN)�urlsplit)�array)�Iterable�HTTPResponse�HTTPConnection� HTTPException�NotConnected�UnknownProtocol�UnknownTransferEncoding�UnimplementedFileMode�IncompleteRead� InvalidURL�ImproperConnectionState�CannotSendRequest�CannotSendHeader�ResponseNotReady� BadStatusLine�error� responses�P i� �UNKNOWN�IdlezRequest-startedzRequest-sent�d �e �f �� �� �� �� �� �� �� �� �� i, i- i. i/ i0 i1 i3 i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� i� �ContinuezSwitching Protocols�OK�Created�AcceptedzNon-Authoritative Informationz No Contentz Reset ContentzPartial ContentzMultiple ChoiceszMoved Permanently�Foundz See OtherzNot Modifiedz Use Proxyz(Unused)zTemporary RedirectzBad Request�UnauthorizedzPayment Required� Forbiddenz Not FoundzMethod Not AllowedzNot AcceptablezProxy Authentication RequiredzRequest Timeout�Conflict�GonezLength RequiredzPrecondition FailedzRequest Entity Too LargezRequest-URI Too LongzUnsupported Media TypezRequested Range Not SatisfiablezExpectation FailedzPrecondition RequiredzToo Many RequestszRequest Header Fields Too LargezInternal Server ErrorzNot ImplementedzBad GatewayzService UnavailablezGateway TimeoutzHTTP Version Not SupportedzNetwork Authentication Required)-r$ r% r'