
    nd                        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dS )z
Adapt s3 to package_streaming
    )annotationsN)closing)Any   )package_streaming)Client)GetObjectOutputTypeDef)conda_reader_for_urlstream_conda_infoconda_reader_for_s3c                  P    e Zd ZddZd Zed             Zed             Zdd	Zd
S )ResponseFacaderesponser	   c                .    || _         |d         | _        d S )NBody)r   raw)selfr   s     :lib/python3.11/site-packages/conda_package_streaming/s3.py__init__zResponseFacade.__init__   s      (    c                    d S 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   nintc                .     t           fdd          S )Nc                 8    j                                        S r   )r   read)r$   r   s   r   <lambda>z-ResponseFacade.iter_content.<locals>.<lambda>+   s    DHMM!,, r   r   )iter)r   r$   s   ``r   iter_contentzResponseFacade.iter_content*   s!    ,,,,,c222r   N)r   r	   )r$   r%   )	__name__
__module____qualname__r   r   propertyr    r#   r+   r   r   r   r   r      s        ) ) ) )   C C XC @ @ X@3 3 3 3 3 3r   r   c                  *    e Zd ZdZddZdd	d
ddZdS )SessionFacadezU
    Make s3 client look just enough like a requests.session for LazyZipOverHTTP
    clientr   bucketstrkeyc                0    || _         || _        || _        d S r   )r2   r3   r5   )r   r2   r3   r5   s       r   r   zSessionFacade.__init__3   s    r   NT)r#   streamr#   dict | Nonec                   |r2d|v r.| j                             | j        | j        |d                   }n&| j                             | j        | j                  }t	          |          S )NRange)BucketKeyr:   )r;   r<   )r2   
get_objectr3   r5   r   )r   urlr#   r7   r   s        r   getzSessionFacade.get8   sq     	Pw')){--{8H .  HH {--T[dh-OOHh'''r   r2   r   r3   r4   r5   r4   )r#   r8   )r,   r-   r.   __doc__r   r?   r   r   r   r1   r1   .   sW            
 26d ( ( ( ( ( ( ( (r   r1   c              #     K   t          | ||          \  }}t          |          5  t          j        ||          E d{V  ddd           dS # 1 swxY w Y   dS )zc
    Yield (tar, member) for conda package.

    Just "info/" for .conda, all members for tar.
    N)r   r   r   r   )r2   r3   r5   filenamecondas        r   r   r   B   s       *&&#>>OHe	 H H$6xGGGGGGGGGH H H H H H H H H H H H H H H H H Hs   AAAr2   r   r3   r4   r5   c                D    t          | ||          }t          ||          S )zF
    Return (name, file_like) suitable for package_streaming APIs
    )r1   r
   )r2   r3   r5   sessions       r   r   r   N   s%     !55GW---r   r@   )rA   
__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>rO      s<    # " " " " "                   	 +$$$$$$>>>>>>>&**F# % % % % % % 5
63 3 3 3 3 3 3 3,( ( ( ( ( ( ( ((	H 	H 	H. . . . . .r   