
    8xd                    R   d dl mZ d dl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mZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZmZ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$ d dlm%Z% d dlm&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZO d dlPmQZQ d dlRmSZSmTZT ejU        ZUejV        ZVejW        ZW eXejY                  ZYejZ        Z[ej\        Z\ej]        Z]ej^        Z^ej_        Z_d Z` eee          Za ebed          rejc        ni Zde&je        Zfdejg        d<    e              G d d          Zh G d dei          Zjd Zkd Zld Zmejg        n                    d d          ZodS )!    )annotationsN)partial)import_module)__version__)_get_version_from_git_tag)contextdetermine_target_prefix)non_x86_machines)reset_context)ProgressiveFetchExtract)
CondaErrorCondaHTTPError	LinkError	LockErrorNoPackagesFoundErrorPaddingErrorUnsatisfiableError)ArgumentParser)CondaSession)EntityEncoder)VersionOrder)	_toposort)	get_index)*Channel	CompleterFileModeInstalledPackages	MatchSpecNoPackagesFoundPathTypeResolveStringIOTemporaryDirectoryTmpDownloadUnsatisfiableadd_parser_channelsadd_parser_prefixdisplay_actionsdownloadexecute_actionsexecute_planhandle_proxy_407hashsum_filehuman_bytesinputinstall_actions	is_linkedlchmodlinkedlinked_datamd5_filememoizednormalized_versionpackage_cacheprefix_placeholderrm_rfspec_from_linespecs_from_argsspecs_from_urlsymlink_condaunix_path_to_win	untrackedurl_pathwalk_prefixwin_path_to_unix)get_conda_build_local_url)DistIndexRecordc                 4    t          t          j                  S N)listr   channels     ;lib/python3.11/site-packages/conda_build/conda_interface.py<lambda>rN   \   s    d7+,, rL   conda_buildfalseCONDA_ALLOW_SOFTLINKSc                  .    e Zd ZddZedd            ZdS )	CrossPlatformStLinkpathstr | os.PathLikereturnintc                ,    |                      |          S rH   )st_nlink)selfrT   s     rM   __call__zCrossPlatformStLink.__call__h   s    }}T"""rL   c                h    t          j        dt                     t          j        |          j        S )Nz`conda_build.conda_interface.CrossPlatformStLink` is pending deprecation and will be removed in a future release. Please use `os.stat().st_nlink` instead.)warningswarnPendingDeprecationWarningosstatrY   )clsrT   s     rM   rY   zCrossPlatformStLink.st_nlinkk   s2    G%	
 	
 	

 wt}}%%rL   N)rT   rU   rV   rW   )__name__
__module____qualname__r[   classmethodrY   rK   rL   rM   rS   rS   g   sH        # # # # & & & [& & &rL   rS   c                      e Zd ZdS )SignatureErrorN)rc   rd   re   rK   rL   rM   rh   rh   u   s        DrL   rh   c              #     K   ddl mm              t                     t	          d z            t                    D ]:}t          |          }t           fd|d         D                       r|V  ;dS )z
    Given the path (of a (presumably) conda installed file) iterate over
    the conda packages the file came from.  Usually the iteration yields
    only one package.
    r   )abspathjoinNz)could not determine conda prefix from: %sc              3  J   K   | ]}  |                    k    V  d S rH   rK   ).0frj   rk   rT   prefixs     rM   	<genexpr>z which_package.<locals>.<genexpr>   s<      GGAwwttFA''4/GGGGGGrL   files)os.pathrj   rk   which_prefixRuntimeErrorr3   r1   any)rT   distmetarj   rk   ro   s   `  @@@rM   which_packagerx   z   s       &%%%%%%%74==D$F~FMNNNv  &&GGGGGGGgGGGGG 	JJJ rL   c                    ddl m}m}m}m}  ||           }d}|dk     r> | ||d                    rn(| ||          k    rd}n ||          }|dz  }|dk     >|S )z
    Given the path (to a (presumably) conda installed file) return the
    environment prefix in which the file in located
    r   )rj   dirnameisdirrk      z
conda-metaN   )rr   rj   rz   r{   rk   )rT   rj   rz   r{   rk   ro   	iterations          rM   rs   rs      s    
 655555555555WT]]FI
b..5fl++,, 	WWV__$$FQ	 b.. MrL   c                    ddl m}  ||          }t          |           }i }|D ]0fd|D             }t          |          dk    r|d         nd|<   1|S )zy
    Primarily used by conda-forge, but may be useful in general for checking when
    a package needs to be updated
    r   )ensure_listc                    g | ]r}|                     d d          d                             dd          d         k    <|                     d d          d                             dd          d         sS )z::r}   -   r   )splitrsplit)rm   rv   pkgs     rM   
<listcomp>z)get_installed_version.<locals>.<listcomp>   s~     
 
 
zz$""2&--c155a8C?? JJtQ#**32215???rL   r}   N)conda_build.utilsr   r3   len)ro   pkgsr   linked_pkgsversions	vers_instr   s         @rM   get_installed_versionr      s    
 .-----;tD..KH F F
 
 
 
#
 
 
	
 ),I!(;(;	!OrL   CONDA_PATH_BACKUP)p
__future__r   configparserr`   r]   	functoolsr   	importlibr   condar   CONDA_VERSIONconda.auxlib.packagingr   get_version_from_git_tagconda.base.contextr   r	   r
   non_x86_linux_machinesr   conda.core.package_cacher   conda.exceptionsr   r   r   r   r   r   r   conda.exportsr   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   conda.models.channelrD   conda.models.distrE   rF   binstar_uploaddefault_python	envs_dirsrI   	pkgs_dirsplatformcc_platformroot_dirroot_writablesubdircreate_default_packagesget_rc_urls
get_prefixhasattrrO   cc_conda_build
from_valueget_conda_channelenvironrS   	Exceptionrh   rx   rs   r   getenv_path_backup_var_existsrK   rL   rM   <module>r      s   # " " " " "     				        # # # # # # . . . . . .      @ ? ? ? ? ? ? ? I I I I I I , , , , , , < < < < < <                  ) ( ( ( ( ( & & & & & & ' ' ' ' ' ' & & & & & & # # # # # # # # # # # #+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +X ; : : : : : / / / / / / / / ''	D"##	%	!9 ,,W,g66
(/(G(GO$$R&  '.
" # & & & & & & & &	 	 	 	 	Y 	 	 	
  $  ,  ,  Z^^,?FF   rL   