
    tni-                        d dl Z d dl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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 d d	lmZ  ej        e          Z G d
 de          Zd dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dlm)Z) d dl*m+Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 e,Z3e4Z4e"Z5d Z6d Z7d=dZ8d>dZ9d dl:m;c m<Z= e=j>        Z?d dl@Z@d ZAeBd             ZCeBd             ZDeCe_C        eDe_D        d ZEd ZF	  ejG        d           dZHn# eIeJf$ r dZHY nw xY wd  ZKd?d!ZLd" ZMd# ZN	 d dlOZPejQ        R                    d$d%          ZSeST                                d&k     ZUn# eV$ r dZUY nw xY wd' ZWd@d(ZXd)ZY e
jZ        d*eYz   d+z             Z[d,Z\d-]                    e\eY.          Z^e\e^d/Z_g d0Z`d1Zad2d3b                    d4 e`D                       z   d5z   Zcd6eaz   d7z   Zdd8ecz   d2z   edz   d9z   Ze e
jZ        d*eez   d+z             Zf egd:          Zh	 d dliZidZjn# eV$ r dZjY nw xY weUr eWd;          rd d<lkmlZl dS dZldS )A    N)HTTPMessage)OrderedDict)MutableMapping)floor)six)MD5UnavailableError)tzlocal)
exceptionsc                       e Zd ZdS )HTTPHeadersN)__name__
__module____qualname__     L/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/botocore/compat.pyr   r   %   s        Dr   r   )
quote	urlencodeunquoteunquote_plusurlparseurlsplit
urlunspliturljoin	parse_qslparse_qs)HTTPResponse)IOBase)encodebytes)
formatdate)zip_longestc                 X    | j         j        j        j                            |           dS )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timeouts     r   set_socket_timeoutr*   @   s*     "--g66666r   c                 6    t          j        |           d         S )N   )inspectgetfullargspec)funcs    r   accepts_kwargsr0   H   s    !$''**r   c                     | S Nr   sencodingerrorss      r   ensure_unicoder7   K   s    Hr   utf-8strictc                     t          | t                    r|                     ||          S t          | t                    r| S t	          dt          |            d          )Nz Expected str or bytes, received .)
isinstancestrencodebytes
ValueErrortyper3   s      r   ensure_bytesrB   O   s_    !S *xx&)))!U 
BQBBB
C
CCr   c                  J    t          j        ddt          j        d           d S )Nignorez+A true SSLContext object is not available.*z.*urllib3\.util\.ssl_)messagecategorymodule)warningsfilterwarningsr
   InsecurePlatformWarningr   r   r   filter_ssl_warningsrK   ]   s5    =3'	     r   c                 X     |             }|                                 D ]
\  }}|||<   |S r2   )items)clsdnew_instancekeyvalues        r   	from_dictrS   g   s;    355Lggii " "
U!Sr   c                 4     |             }|D ]
\  }}|||<   |S r2   r   )rN   pairsrP   rQ   rR   s        r   
from_pairsrV   o   s3    355L " "
U!Sr   c                 .    t          j         |           }|S )zI
    This used to be a compat shim for 2.6 but is now just an alias.
    )copy)kwargscopy_kwargss     r   rZ   rZ   {   s     )F##Kr   c                 *    |                                  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)deltas    r   r\   r\      s        r   F)usedforsecurityTc                  N    t           rt          j        | i |S t                      )a:  
    Attempts to get an md5 hashing object.

    :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   )argsrY   s     r   get_md5rd      s-      ${D+F+++!###r   c                 p    |t           j        }|dk    rt          |           S t          j        |           S )Nwin32)sysplatform_windows_shell_splitshlexsplit)r4   rh   s     r   compat_shell_splitrl      s6    <7#A&&&{1~~r   c           
         | sg S g }g }d}d}| D ]}|dk    r|dz  }|dk    rw|dk    rX|                     dt          t          |dz                      z             |dz  }d}|dk    r|                     d           s| }|                     d           |dv rO|sM|dk    r|                     d|z             d}|r*|                     d                    |                     g }|dk    r|                     d|z             d}|                     |           |rt	          d	|            |dk    r|                     d|z             |r(|                     d                    |                     |S )
a  Splits 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: )appendintr   joinr@   )r4   
componentsbuff	is_quotednum_backslashes	character	remainders          r   ri   ri      s   (  	JDIO 1# 1#	
 q OO#"" D3u_q-@'A'A#B#BBCCC+a/	"#>> KK$$$ &I KKOOOO+%%i% ""D?2333"#  !!"''$--000 ""D?2333"#KK	""""  A?A??@@@ D?*+++  )"''$--(((r   c                  P    t           j        dk    rddlm}  t          | fS t          fS )Nrf   r   
tzwinlocal)rg   rh   dateutil.tzr   r	   r~   s    r   get_tzinfo_optionsr     s6     |w******$$zr   BOTO_DISABLE_CRTfalsetruec                     t           sdS t          j        }	 t          t          |                    d                    }t          |          }n# t          t          f$ r Y dS w xY w|| k    S )z&Not intended for use outside botocore.Fr;   )	HAS_CRTawscrt__version__mapru   rk   tuple	TypeErrorr@   )minimum_versioncrt_version_strcrt_version_intscrt_version_tuples       r   has_minimum_crt_versionr   &  s     u(OsO$9$9#$>$>??!"233z"   uu //s   7A A$#A$c                     t           j                             t           j        j                  }| r|                    d          }|S )zKRetrieve the current timezone in UTC, with or without an explicit timezone.N)tzinfo)datetimenowtimezoneutcreplace)remove_tzinfodatetime_nows     r   get_current_datetimer   5  sB    $(():)>??L 9#++4+88r   z(?:[0-9]{1,3}\.){3}[0-9]{1,3}^$z[0-9A-Fa-f]{1,4}z(?:{hex}:{hex}|{ipv4}))hexipv4)r   ls32)	z(?:%(hex)s:){6}%(ls32)sz::(?:%(hex)s:){5}%(ls32)sz%(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)sz2(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)sz6(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)sz/(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)sz'(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)sz&(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)sz(?:(?:%(hex)s:){0,6}%(hex)s)?::zDABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._!\-~z(?:|c                 "    g | ]}|t           z  S r   )_subs).0xs     r   
<listcomp>r   `  s    <<<1QY<<<r   )z(?:%25|%)(?:[z]|%[a-fA-F0-9]{2})+z\[z)?\]z	
)r         )EC)NN)r8   r9   r2   )T)mrX   r   rg   r-   rH   ra   http.clientr   loggingrj   reoscollectionsr   collections.abcr   mathr   botocore.vendoredr   botocore.exceptionsr   r   r	   urllib3r
   	getLoggerr   loggerr   urllib.parser   r   r   r   r   r   r   r   r   r   r   ior   _IOBasebase64r   email.utilsr    	itertoolsr!   	file_typezipunquote_strr*   r0   r7   rB   xml.etree.ElementTreeetreeElementTreeETree
ParseErrorXMLParseErrorjsonrK   classmethodrS   rV   rZ   r\   rb   r`   AttributeErrorr@   rd   rl   ri   r   awscrt.authr   environgetdisabledlowerr   ImportErrorr   r   IPV4_PATcompileIPV4_REHEX_PATformatLS32_PATr   _variationsUNRESERVED_PATrv   IPV6_PATZONE_ID_PATIPV6_ADDRZ_PATIPV6_ADDRZ_RE	frozensetUNSAFE_URL_CHARSgzipHAS_GZIPawscrt.cryptor   r   r   r   <module>r      sw     



    # # # # # #   				 				 # # # # # # * * * * * *       ! ! ! ! ! ! 3 3 3 3 3 3            		8	$	$	 	 	 	 	+ 	 	 	                        % $ $ $ $ $                   " " " " " " ! ! ! ! ! !		 7 7 7+ + +   D D D D & % % % % % % % %           " #   	! 	! 	!GK&&&&MM
#   MMM$ $ $   [ [ [|	 	 	 z~~0'::H..""f,,GG   GGG0 0 0    ,
"*S8^c)
*
*
#**wX*FF**  , L  388<<<<<===C.1FF!F*[87B
3/#566 9X&& KKKHH   HHH  &&z22         	BBBs6   D 	D#"D#48E- -E76E7H! !H+*H+