U
    ڲgC                     @  s  d Z ddlmZ ddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZmZmZ ddlmZmZ ddlmZmZmZ ddlmZmZ ddlmZ ddl m!Z! ddl"m#Z# zddl$Z$W n e%k
r   Y nHX e$j&'ds"e(de$j&de	j) ne$j*dk r@e%de$j&ddZ+dZ,eZdZ-e.e/0e  ej1fdddddZ2[ej3de	j4dd  ej3d!e	j5dd  e	j6fd"d#d$d%d&Z7e Z8dddddddd'dd(	d)d)d*d+d,d-d-d-d.d/d0d1d2d3d4Z9ej:d5krdd6l;m<Z< e<  dS )7ze
Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more
    )annotationsN)NullHandler   )
exceptions)
_TYPE_BODY)HTTPHeaderDict)__version__)HTTPConnectionPoolHTTPSConnectionPoolconnection_from_url)_TYPE_FIELDSencode_multipart_formdata)PoolManagerProxyManagerproxy_from_url)BaseHTTPResponseHTTPResponse)make_headers)Retry)TimeoutzOpenSSL zUurllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with z5. See: https://github.com/urllib3/urllib3/issues/3020)r   r   r   z5. See: https://github.com/urllib3/urllib3/issues/2168z(Andrey Petrov (andrey.petrov@shazow.net)MIT)r	   r   r
   r   r   r   r   r   add_stderr_loggerr   disable_warningsr   r   r   requestr   intz$logging.StreamHandler[typing.TextIO])levelreturnc                 C  sF   t t}t  }|t d || ||  |dt |S )z
    Helper for quickly adding a StreamHandler to the logger. Useful for
    debugging.

    Returns the handler after adding it.
    z%%(asctime)s %(levelname)s %(message)sz,Added a stderr logging handler to logger: %s)	logging	getLogger__name__StreamHandlersetFormatter	Formatter
addHandlersetLeveldebug)r   loggerhandler r(   4/tmp/pip-unpacked-wheel-iesne49d/urllib3/__init__.pyr   J   s    


r   alwaysT)appenddefaultztype[Warning]None)categoryr   c                 C  s   t d|  dS )z<
    Helper for quickly disabling all urllib3 warnings.
    ignoreN)warningssimplefilter)r.   r(   r(   r)   r   k   s    r      	bodyfieldsheaderspreload_contentdecode_contentredirectretriestimeoutjsonstrz_TYPE_BODY | Nonez_TYPE_FIELDS | Noneztyping.Mapping[str, str] | Nonezbool | NonezRetry | bool | int | NonezTimeout | float | int | Noneztyping.Any | Noner   )methodurlr4   r5   r6   r7   r8   r9   r:   r;   r<   r   c       	         C  s    t j| |||||||||	|
dS )a	  
    A convenience, top-level request method. It uses a module-global ``PoolManager`` instance.
    Therefore, its side effects could be shared across dependencies relying on it.
    To avoid side effects create a new ``PoolManager`` instance and use it instead.
    The method does not accept low-level ``**urlopen_kw`` keyword arguments.

    :param method:
        HTTP request method (such as GET, POST, PUT, etc.)

    :param url:
        The URL to perform the request on.

    :param body:
        Data to send in the request body, either :class:`str`, :class:`bytes`,
        an iterable of :class:`str`/:class:`bytes`, or a file-like object.

    :param fields:
        Data to encode and send in the request body.

    :param headers:
        Dictionary of custom headers to send, such as User-Agent,
        If-None-Match, etc.

    :param bool preload_content:
        If True, the response's body will be preloaded into memory.

    :param bool decode_content:
        If True, will attempt to decode the body based on the
        'content-encoding' header.

    :param redirect:
        If True, automatically handle redirects (status codes 301, 302,
        303, 307, 308). Each redirect counts as a retry. Disabling retries
        will disable redirect, too.

    :param retries:
        Configure the number of retries to allow before raising a
        :class:`~urllib3.exceptions.MaxRetryError` exception.

        If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a
        :class:`~urllib3.util.retry.Retry` object for fine-grained control
        over different types of retries.
        Pass an integer number to retry connection errors that many times,
        but no other types of errors. Pass zero to never retry.

        If ``False``, then retries are disabled and any exception is raised
        immediately. Also, instead of raising a MaxRetryError on redirects,
        the redirect response will be returned.

    :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

    :param timeout:
        If specified, overrides the default timeout for this one
        request. It may be a float (in seconds) or an instance of
        :class:`urllib3.util.Timeout`.

    :param json:
        Data to encode and send as JSON with UTF-encoded in the request body.
        The ``"Content-Type"`` header will be set to ``"application/json"``
        unless specified otherwise.
    r3   )_DEFAULT_POOLr   )r>   r?   r4   r5   r6   r7   r8   r9   r:   r;   r<   r(   r(   r)   r   u   s    Lr   Z
emscripten)inject_into_urllib3)=__doc__
__future__r   r   systypingr0   r    r   Z_base_connectionr   _collectionsr   _versionr   connectionpoolr	   r
   r   filepostr   r   poolmanagerr   r   r   responser   r   Zutil.requestr   Z
util.retryr   Zutil.timeoutr   sslImportErrorOPENSSL_VERSION
startswithwarnZNotOpenSSLWarningOPENSSL_VERSION_INFO
__author____license____all__r   r   r#   DEBUGr   r1   SecurityWarningInsecurePlatformWarningHTTPWarningr   r@   r   platformZcontrib.emscriptenrA   r(   r(   r(   r)   <module>   sn   ([