
    <Bh                        S r SSKJr  SSK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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).    )annotationsN)LoggerAdapter	getLogger)SpooledTemporaryFile)TYPE_CHECKING   )ensure_binary)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	   jsondumps)xmessages    r'   <lambda>'S3Adapter._send_boto3.<locals>.<lambda>K   s    !''-

70C"DEr/   ResponseMetadataHTTPHeaderszcontent-typez
text/plainzcontent-lengthzlast-modified)zContent-TypezContent-LengthzLast-Modified)boto3.sessionr1   botocore.exceptionsr2   r3   r
   r   resourceObjectgetr   repr_write_tempfilerawr-   r   headersdownload_fileobj)r   r&   r    r1   r2   r3   bucket_name
key_stringsessionr4   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"    !#

	r/   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,   r/   r'   r   r      sn     KO!EI)-   I	
  C ' 
2(Tr/   r   )__doc__
__future__r   r;   loggingr   r   tempfiler   typingr   common.compatr	   
common.urlr
    r   r   r   r   r\   logdictr   r   r,   r/   r'   <module>rk      s[    H "  , )   + ) 9 9")$56dd>ST	K Kr/   