
    =2g                        d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ ej                  rddl
mZ dd	lmZ ndxZZdd
lmZ ddgZ G d d      Z G d d      Zd ZddZy)z
Adapt s3 to package_streaming
    )annotationsN)closing)Any   )package_streaming)Client)GetObjectOutputTypeDef)conda_reader_for_urlstream_conda_infoconda_reader_for_s3c                  B    e Zd ZddZd Zed        Zed        ZddZy)	ResponseFacadec                &    || _         |d   | _        y )NBody)responseraw)selfr   s     :lib/python3.12/site-packages/conda_package_streaming/s3.py__init__zResponseFacade.__init__   s      (    c                     y N r   s    r   raise_for_statuszResponseFacade.raise_for_status   s    r   c                &    | j                   d   d   S )NResponseMetadataHTTPStatusCoder   r   s    r   status_codezResponseFacade.status_code!   s    }}/01ABBr   c                &    | j                   d   d   S )Nr   HTTPHeadersr   r   s    r   headerszResponseFacade.headers%   s     }}/0??r   c                &     t         fdd      S )Nc                 :    j                   j                         S r   )r   read)nr   s   r   <lambda>z-ResponseFacade.iter_content.<locals>.<lambda>+   s    DHHMM!,r   r   )iter)r   r'   s   ``r   iter_contentzResponseFacade.iter_content*   s    ,c22r   N)r   r	   )r'   int)	__name__
__module____qualname__r   r   propertyr    r#   r*   r   r   r   r   r      s=    ) C C @ @3r   r   c                  (    e Zd ZdZddZdddddZy)	SessionFacadezU
    Make s3 client look just enough like a requests.session for LazyZipOverHTTP
    c                .    || _         || _        || _        y r   )clientbucketkey)r   r3   r4   r5   s       r   r   zSessionFacade.__init__3   s    r   NT)r#   streamc                  |rDd|v r@| j                   j                  | j                  | j                  |d         }t	        |      S | j                   j                  | j                  | j                        }t	        |      S )NRange)BucketKeyr8   )r9   r:   )r3   
get_objectr4   r5   r   )r   urlr#   r6   r   s        r   getzSessionFacade.get8   st    w'){{--{{8H . H
 h'' {{--T[[dhh-OHh''r   r3   r   r4   strr5   r?   )r#   zdict | None)r,   r-   r.   __doc__r   r=   r   r   r   r1   r1   .   s    
 26d (r   r1   c              #     K   t        | ||      \  }}t        |      5  t        j                  ||      E d{    ddd       y7 # 1 sw Y   yxY ww)zc
    Yield (tar, member) for conda package.

    Just "info/" for .conda, all members for tar.
    N)r   r   r   r   )r3   r4   r5   filenamecondas        r   r   r   B   sI      *&&#>OHe	$66xGGG 
G 
s+   AAAA	AAAAc                4    t        | ||      }t        ||      S )zF
    Return (name, file_like) suitable for package_streaming APIs
    )r1   r
   )r3   r4   r5   sessions       r   r   r   N   s     !5GW--r   r>   )r@   
__future__r   typing
contextlibr   r    r   TYPE_CHECKINGmypy_boto3_s3r   mypy_boto3_s3.type_defsr	   r<   r
   __all__r   r1   r   r   r   r   r   <module>rN      sb    #    	$>&**F# % 5
63 3,( ((	H.r   