
    si                        S r SSKJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJr  S
SKJrJrJr  \	(       a  S
SKJr  \" \5      r\" \" S5      \" SS9S9r " S S\5      rg)zADefines S3 transport adapter for CondaSession (requests.Session).    )annotations)LoggerAdapter	getLogger)SpooledTemporaryFile)TYPE_CHECKING   )ensure_binary)json)url_to_s3_info   )BaseAdapterCaseInsensitiveDictResponse)PreparedRequestzconda.stderrlog
)
terminator)extrac                  \    \ rS rSr     S             S	S jjrS rS
S jrS rSrg)	S3Adapter   Nc                    [        5       nSUl        UR                  Ul         U R                  Xq5      $ ! [         a!    [
        R                  S5        SUl        Us $ f = f)N   z
Error: boto3 is required for S3 channels. Please install with `conda install boto3`
Make sure to run `conda deactivate` if you are in a conda environment.
  )r   status_codeurl_send_boto3ImportError	stderrloginfo)selfrequeststreamtimeoutverifycertproxiesresps           Elib/python3.13/site-packages/conda/gateways/connection/adapters/s3.pysendS3Adapter.send   sc     z;;
	##D22 	NN0  #DK	s   5 (A A c                    g N )r    s    r(   closeS3Adapter.close1   s        c                |  ^ SSK Jn  SSKJnJn  [        UR                  5      u  pgU" 5       nUR                  S5      n	U	R                  XgSS  5      n
 U
R                  5       nUS
   S   n[        UR                  SS5      US   US   S.5      Ul        U R                  U
R"                  5      Ul        UR                  R                  Ul        U$ ! XE4 aa  nSUl
        SUR                  [        U5      S.mU R                  U4S	 j5      Ul        UR                  R                  Ul        Us S nA$ S nAff = f)Nr   )Session)BotoCoreErrorClientErrors3   r   zerror downloading file from s3)errorpath	exceptionc                `   > U R                  [        [        R                  " T5      5      5      $ r,   )writer	   r
   dumps)xmessages    r(   <lambda>'S3Adapter._send_boto3.<locals>.<lambda>K   s    !''-

70C"DEr0   ResponseMetadataHTTPHeaderszcontent-typez
text/plainzcontent-lengthzlast-modified)zContent-TypezContent-LengthzLast-Modified)boto3.sessionr2   botocore.exceptionsr3   r4   r   r   resourceObjectgetr   repr_write_tempfilerawr.   r   headersdownload_fileobj)r    r'   r!   r2   r3   r4   bucket_name
key_stringsessionr5   keyresponseekey_headersr>   s                 @r(   r   S3Adapter._send_boto34   s)   )B"0"= )d#ii^4	wwyH 12=A* + M"-.>"?!,_!=
 ''(<(<=XX^^
3 + 	"D9!!WG
 ++EDH DJK	s   C D;AD60D;6D;c                L    [        5       nU" U5        UR                  S5        U$ )Nr   )r   seek)r    writer_callablefhs      r(   rI   S3Adapter._write_tempfile^   s"    !#

	r0   r-   )FNTNN)r!   r   r"   boolr#   z7None | float | tuple[float, float] | tuple[float, None]r$   z
bool | strr%   z4None | bytes | str | tuple[bytes | str, bytes | str]r&   zdict[str, str] | Nonereturnr   )r'   r   r!   r   r[   r   )	__name__
__module____qualname____firstlineno__r)   r.   r   rI   __static_attributes__r-   r0   r(   r   r      sn     KO!EI)-   I	
  C ' 
2(Tr0   r   N)__doc__
__future__r   loggingr   r   tempfiler   typingr   common.compatr	   common.serializer
   
common.urlr    r   r   r   r   r\   logdictr   r   r-   r0   r(   <module>rl      s[    H " , )   + % ) 9 9")$56dd>ST	K Kr0   