HEX
Server: Apache
System: Linux vps35971 6.8.0-79-generic #79~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 15 16:54:53 UTC 2 x86_64
User: haitiopendh (6209306)
PHP: 8.1.32
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/botocore/__pycache__/compat.cpython-310.pyc
o

YZ�a�.�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlZddlm
Z
ddlmZddlmZe�e�Zejr�ddlmZGdd�dej�Zdd	lmZdd
lmZddlmZddlmZdd
lmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddl%m&Z&ddl'm(Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/e)Z0e1Z1eZ2dd�Z3dd�Z4dFdd�Z5dGd d!�Z6n�dd	l7mZdd
l7mZddl7mZddl7mZdd
lmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$dd"l8m9Z9ddl:m-Z-e;Z0dd#l.m<Z1dd$l.m=Z/ddl>m&Z&dd%l*m?Z+Gd&d�de9�ZdHd'd(�Z2d)d�Z3d*d�Z4dGd+d�Z5dGd,d!�Z6dd-l@mAZAzddlBmCmDZEWneF�yoddlGmCmHZEYnweEjIZJddlKZKd.d/�ZLeMd0d1��ZNeMd2d3��ZOeNe_NeOe_Od4d5�ZPd6d7�ZQze�R�d8ZSWneT�y�d9ZSYnwd:d;�ZUdId<d=�ZVd>d?�ZWd@dA�ZXzddBlYmZZZWneF�y�ddBl@mZZZYnwzddl[Z\ej]�^dCdD�Z_e_�`�dEkZaWdSeF�y�d9ZaYdSw)J�N)�floor)�MD5UnavailableError)�tzlocal)�
exceptions)�http_clientc@seZdZdS)�HTTPHeadersN)�__name__�
__module__�__qualname__�rr�1/usr/lib/python3/dist-packages/botocore/compat.pyr$sr)�quote)�	urlencode)�unquote)�unquote_plus)�urlparse)�urlsplit)�
urlunsplit)�urljoin)�	parse_qsl)�parse_qs)�HTTPResponse)�IOBase)�encodebytes)�
formatdate)�zip_longestcCs|jjjj�|�dS�z�Set the timeout of the socket from an HTTPResponse.

        :param http_response: An instance of ``httplib.HTTPResponse``

        N)�_fp�fp�raw�_sock�
settimeout��
http_response�timeoutrrr�set_socket_timeout>sr%cC�t�|�dS�N�)�inspect�getfullargspec��funcrrr�accepts_kwargsFsr-cCs|S�Nr��s�encoding�errorsrrr�ensure_unicodeKsr3�utf-8�strictcC�4t|t�r|�||�St|t�r|Stdt|���)Nz#Expected str or bytes, received %s.)�
isinstance�str�encode�bytes�
ValueError�typer/rrr�ensure_bytesO�


r=)�Message)�izip)�izip_longest)�encodestringc@seZdZdd�ZdS)rccs�|jD]\}}|VqdSr.)�_headers)�self�field�valuerrr�__iter__ms��zHTTPHeaders.__iter__N)rr	r
rGrrrrriscCs|�|�}t|��|�Sr.)r9r�decode)rFr1�byte_stringrrr�unquote_strqs
rJcCs|jjj�|�dSr)rrr r!r"rrrr%{scCr&r')r)�
getargspecr+rrrr-�scCst|tj�r|St|||�Sr.)r7�six�	text_type�unicoder/rrrr3�scCr6)Nz%Expected str or unicode, received %s.)r7rNr9r8r;r<r/rrrr=�r>)�OrderedDictcCstjddtjdd�dS)N�ignorez+A true SSLContext object is not available.*z.*urllib3\.util\.ssl_)�message�category�module)�warnings�filterwarningsr�InsecurePlatformWarningrrrr�filter_ssl_warnings�s
�rWcCs$|�}|��D]\}}|||<q|Sr.)�items)�cls�d�new_instance�keyrFrrr�	from_dict�s
r]cCs |�}|D]\}}|||<q|Sr.r)rY�pairsr[r\rFrrr�
from_pairs�s
r_cCst�|�}|S)zI
    This used to be a compat shim for 2.6 but is now just an alias.
    )�copy)�kwargs�copy_kwargsrrrrb�s
rbcCs|��S)z�
    Returns the total seconds in a ``datetime.timedelta``.

    This used to be a compat shim for 2.6 but is now just an alias.

    :param delta: The timedelta object
    :type delta: ``datetime.timedelta``
    )�
total_seconds)�deltarrrrc�s	rcTFcOstr
tj|i|��St��)a�
    Attempts to get an md5 hashing object.

    :param raise_error_if_unavailable: raise an error if md5 is unavailable on
        this system. If False, None will be returned if it is unavailable.
    :type raise_error_if_unavailable: bool
    :param args: Args to pass to the MD5 constructor
    :param kwargs: Key word arguments to pass to the MD5 constructor
    :return: An MD5 hashing object if available. If it is unavailable, None
        is returned if raise_error_if_unavailable is set to False.
    )�
MD5_AVAILABLE�hashlib�md5r)�argsrarrr�get_md5�sricCs(|durtj}|dkrt|�St�|�S)N�win32)�sys�platform�_windows_shell_split�shlex�split)r0rlrrr�compat_shell_split�s

rpcCs2|sgSg}g}d}d}|D]k}|dkr|d7}q|dkrG|dkr>|�dtt|d���|d}d}|dkr>|�d�q|}|�d�q|dvrg|sg|dkrZ|�d|�d}|rf|�d�|��g}q|dkrt|�d|�d}|�|�q|r�td	|��|dkr�|�d|�|r�|�d�|��|S)
aSplits up a windows command as the built-in command parser would.

    Windows has potentially bizarre rules depending on where you look. When
    spawning a process via the Windows C runtime (which is what python does
    when you call popen) the rules are as follows:

    https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments

    To summarize:

    * Only space and tab are valid delimiters
    * Double quotes are the only valid quotes
    * Backslash is interpreted literally unless it is part of a chain that
      leads up to a double quote. Then the backslashes escape the backslashes,
      and if there is an odd number the final backslash escapes the quote.

    :param s: The command string to split up into parts.
    :return: A list of command components.
    Fr�\��"r(�)� �	z"No closing quotation in string: %s)�append�intr�joinr;)r0�
components�buff�	is_quoted�num_backslashes�	character�	remainderrrrrm�sL

�rmcCs$tjdkrddlm}t|fStfS)Nrjr��
tzwinlocal)rkrl�dateutil.tzr�rr�rrr�get_tzinfo_optionsRs
r�)�MutableMapping�BOTO_DISABLE_CRT�false�true)NN)r4r5)r4r.)br`�datetimerkr)rTrf�loggingrn�os�mathrrL�botocore.exceptionsrr�r�urllib3r�	getLoggerr�logger�PY3�	six.movesr�HTTPMessager�urllib.parser
rrrrrrrrr�http.clientr�ior�_IOBase�base64r�email.utilsr�	itertoolsr�	file_type�ziprJr%r-r3r=�urllib�
email.messager?�email.Utils�filer@rA�httplibrB�collectionsrO�xml.etree.cElementTree�etree�cElementTree�ETree�ImportError�xml.etree.ElementTree�ElementTree�
ParseError�
XMLParseError�jsonrW�classmethodr]r_rbrcrgrer;rirprmr��collections.abcr��awscrt.auth�awscrt�environ�get�disabled�lower�HAS_CRTrrrr�<module>s�






�	

�

^�
�