
    8xd                     b    d dl Z d dlZd dlmZmZ d dlmZmZ d Z G d d          Z	d Z
d ZdS )	    N)basenamenormpath)codecfilter_info_filesc                     |                      d          r
| d d         S |                      d          r
| d d         S t          d| z            )Nz.tarz.tar.bz2izdid not expect filename: %r)endswith	Exception)fns    4lib/python3.11/site-packages/conda_build/tarcheck.pydist_fnr   
   sX    	{{6 <#2#w	Z	 	  <#2#w5:;;;    c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TarCheckc                 h   t          j        |          | _        d | j                                        D             | _        t          t          |                    | _        | j                            dd          d         	                    dd          \  | _
        | _        | _        || _        d S )Nc                     h | ]	}|j         
S  )path.0ms     r   	<setcomp>z$TarCheck.__init__.<locals>.<setcomp>   s    :::af:::r   z::   -   )tarfileopent
getmemberspathsr   r   distsplitrsplitnameversionbuildconfig)selfr   r(   s      r   __init__zTarCheck.__init__   s    d##::df&7&7&9&9:::
HTNN++	.2ioodA.F.Fr.J.Q.Q/
 /
+	4< r   c                     | S Nr   )r)   s    r   	__enter__zTarCheck.__enter__   s    r   c                 8    | j                                          d S r,   )r   close)r)   e_typee_value	tracebacks       r   __exit__zTarCheck.__exit__    s    r   c                 |   d | j                             d                                          D             }t          |          }t	          |          t	          |          k    rt          d          d | j                                         D             }t          |d          }t          |          }t	          |          t	          |          k    rt          d          ||k    rd S t          ||z            D ].}||vrt          d|z             ||vrt          d|z             /t          d          )	Nc                 v    g | ]6}t          |                                                    d                     7S )utf-8)r   stripdecode)r   ps     r   
<listcomp>z'TarCheck.info_files.<locals>.<listcomp>$   sF     
 
 
 QWWYY%%g..//
 
 
r   z
info/fileszinfo/files: duplicatesc                 6    g | ]}t          |j                  S r   )r   r   r   s     r   r:   z'TarCheck.info_files.<locals>.<listcomp>,   s"    FFFQ((FFFr    zinfo_files: duplicate membersz%r not in info/filesz%r not in tarball)
r   extractfile	readlinessetlenr
   r    r   sortedprint)r)   listasetafiles_in_tarsetbr9   s         r   
info_fileszTarCheck.info_files#   sF   
 
V''55??AA
 
 
 5zzu::T""4555FF$&2C2C2E2EFFF(r::<  |D		));<<<4<<Ft$$ 	/ 	/A}},q0111}})A-...%%%r   c                    t          j        | j                            d                                                              d                    }dD ]T}||         t          | |          k    r8t          d                    |||         t          | |                              Ut          |d         t                    sJ d S )Ninfo/index.jsonr6   )r%   r&   z{}: {!r} != {!r}build_number)jsonloadsr   r=   readr8   getattrr
   format
isinstanceint)r)   infovarnames      r   
index_jsonzTarCheck.index_json;   s    z$&,,->??DDFFMMgVVWW( 	 	GG}g 6 666&--gg0F0F    7 $~.4444444r   c                 x   d }d| j                                         v r| j                             d                                          }|D ]m}	 |                                \  }}}n# t
          $ r Y (w xY wt          |d          r|                    t                    }|dk    rt          |          } nn|S )Nzinfo/has_prefixr8   binary)
r   getnamesr=   r>   r#   
ValueErrorhasattrr8   r   r@   )r)   prefix_lengthprefix_fileslineprefix	file_type_s          r   rZ   zTarCheck.prefix_lengthF   s     1 1116--.?@@JJLLL$ 
 
+/::<<(FIqq!   H9h// 8 ) 0 0 7 7I(($'KKME ) s   A((
A54A5c                 F   t          j        | j                            d                                                              d                    }|d         | j        j        d| j        j        fv s.J d	                    | j        j        |d                               d S )NrI   r6   subdirnoarchz@Inconsistent subdir in package - index.json expecting {}, got {})
rK   rL   r   r=   rM   r8   r(   host_subdirtarget_subdirrO   )r)   rR   s     r   correct_subdirzTarCheck.correct_subdirW   s    z$&,,->??DDFFMMgVVWWH~K#K%"
 
 
 

fT[4d8nEE
 
 
 
 
r   N)
__name__
__module____qualname__r*   r-   r3   rG   rT   rZ   re   r   r   r   r   r      s}              & & &0	5 	5 	5  "	
 	
 	
 	
 	
r   r   c                     t          | |          }|                                 |                                 |                                 |j                                         d S r,   )r   rG   rT   re   r   r/   )r   r(   xs      r   	check_allrk   c   sP    vALLNNNLLNNNCIIKKKKKr   c                 |    i }| D ]6}t          ||                                          }|r||j        k     r|||<   7|S r,   )r   rZ   )filesr(   lengthsflengths        r   check_prefix_lengthsrq   k   sU    G    !V$$2244 	 fv333GAJNr   )rK   r   os.pathr   r   conda_build.utilsr   r   r   r   rk   rq   r   r   r   <module>rt      s      & & & & & & & & 6 6 6 6 6 6 6 6< < <M
 M
 M
 M
 M
 M
 M
 M
`      r   