
    2g                        d Z ddlm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mZ d
dlmZ 	 d	 	 	 	 	 	 	 ddZddZdddZy)z<
Exception-compatible adapter from conda_package_streaming.
    )annotationsN)redirect_stdout)TarError)	Generator)
BadZipFile)
exceptions)extract_streampackage_streaming   c              #    K   t        |       j                  d      r|dgk(  sJ 	 t        | d      5 }|D ]  }t        j                  | ||        	 d d d        y # 1 sw Y   y xY w# t
        j                  $ r}t        j                  | |      |d }~wt        t        t        f$ r(}t        j                  | dt        |             |d }~ww xY ww)Nz.tar.bz2pkgrb)	componentfailed with error: )strendswithopenr
   stream_conda_componentcps_exceptionsCaseInsensitiveFileSystemErrorr   OSErrorr   r   InvalidArchiveError)filename
componentsdest_dirfileobjr   es         @lib/python3.12/site-packages/conda_package_handling/streaming.py_stream_componentsr      s     
 8}j)eW$$$
^(D!W'	'>>g  ( "!! 88 S77(KQRRXz* ^,,X9LSQRVH7UV\]]^sW   #CA* "AA* CA'#A* &C'A* *C=BC+#CCCc           	        t        | ||      D ]  }	 t        ||        y# t        j                  $ r}t	        j                  | |      |d}~wt
        t        t        f$ r(}t	        j                  | dt        |             |d}~ww xY w)a  
    Extract .conda or .tar.bz2 package to dest_dir.

    If it's a conda package, components may be ["pkg", "info"]

    If it's a .tar.bz2 package, components must equal ["pkg"]

    Internal. Skip directly to conda-package-streaming if you don't need
    exception compatibility.
    )r   Nr   )
r   r	   r   r   r   r   r   r   r   r   )r   r   r   streamr   s        r   _extractr"   )   s     %XzHM	b68, N << 	W;;HhOUVV:. 	b00=PQTUVQWPX;YZ`aa	bs    "BAB##BBc                   t        j                         }t        | |      D ]B  }|D ];  \  }}t        |      5  |j	                  |       d d d        |j                          = D |j                  d       |rt        |j                         d       }nt        |j                               }t        dj                  |      d       y # 1 sw Y   xY w)N)verboser   c                ,    | j                  d d      d   S )N   )split)lines    r   <lambda>z_list.<locals>.<lambda>N   s    TZZa04    )key )end)ioStringIOr   r   listcloseseeksorted	readlinesprintjoin)r   r   r$   memfiler   tar_liness           r   _listr<   =   s    kkmG'*=	FC )) *
 OO   > LLO 5
 w((*+	"''%.b!# *)s   CC)r-   )r   r   r   	list[str]r   r   returnz=Generator[Generator[tuple[tarfile.TarFile, tarfile.TarInfo]]])r   r   r   r   r   r=   )T)r   r   r   r=   )__doc__
__future__r   r/   tarfile
contextlibr   r   typingr   zipfiler   conda_package_streaming.extractr   r   r	   r
   r-   r   r"   r<    r+   r   <module>rG      si    # 	  &    H M  ^^^ ^ C	^*b("r+   