
    u*e                         d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 d dlm
Z  ee          Zd ZddZdd
ZddZddlmZmZmZmZmZ d ZdS )    N)ThreadPoolExecutorcontextmanager)CONDA_PACKAGE_EXTENSION_V1CONDA_PACKAGE_EXTENSION_V2CONDA_PACKAGE_EXTENSIONS)PLATFORM_DIRECTORIESc                  6    t           d             } |            S )Nc               3      K   dV  dS )zno-op logging contextN r       1lib/python3.11/site-packages/conda_index/utils.pylog_contextz#LoggingContext.<locals>.log_context   s       	r   r   )argskwargsr   s      r   LoggingContextr      s)      ^ ;==r      c                       t          t          |                      }t           fdd          D ]}|                    |           |                                S )Nc                  .                                    S )N)read)
buffersizefds   r   <lambda>z_checksum.<locals>.<lambda>   s    bggj11 r   r   )getattrhashlibiterupdate	hexdigest)r   	algorithmr   	hash_implblocks   ` `  r   	_checksumr"      sj    +++--I11111377       r      c                 x    t          | d          5 }t          |||          cddd           S # 1 swxY w Y   dS )zA
    Calculate a checksum for a filename (not an open file).
    rbN)openr"   )fnr   r   r   s       r   checksumr(   #   s     
b$ 42Y
334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   /33c                      t          t          |                    5  fd|D             }ddd           n# 1 swxY w Y   d |D             S )zB
    Calculate multiple checksums for a filename in parallel.
    )max_workersc                 J    g | ]}                     t          |           S r   )submitr(   ).0r   r   er'   s     r   
<listcomp>zchecksums.<locals>.<listcomp>1   s8     
 
 
>GAHHXr9j99
 
 
r   Nc                 6    g | ]}|                                 S r   )result)r-   r1   s     r   r/   zchecksums.<locals>.<listcomp>4   s     222FMMOO222r   )r   len)r'   
algorithmsr   resultsr.   s   ` ` @r   	checksumsr5   +   s     
J	8	8	8 
A
 
 
 
 
 
KU
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 32'2222s   >AA   )ensure_listget_lockmerge_or_update_dictmove_with_fallbacktry_acquire_locksc                 0    t          j        | |d          S )zA
    Return True if pathA and pathB have identical contents.
    F)shallow)filecmpcmp)pathApathBs     r   file_contents_matchrB   @   s    
 ;ueU3333r   )r   )r#   )r>   r   concurrent.futures.threadr   
contextlibr   conda.base.constantsr   r   r   r	   DEFAULT_SUBDIRSsetr   r"   r(   r5   utils_buildr7   r8   r9   r:   r;   rB   r   r   r   <module>rI      s;     8 8 8 8 8 8 % % % % % %         
 I H H H H H#o&&  ! ! ! !4 4 4 4	3 	3 	3 	3             4 4 4 4 4r   