
    wBff-                        d Z ddl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
mZ ddlmZ ddlmZmZmZmZ dd	lmZmZmZmZ dd
lmZmZ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( ddl)m*Z* ddl)m+Z, ddl)m-Z. ddl/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlBmDZE ddlFmGZG ddlHmIZI ddlJmKZKmLZL ddlJmMZN dd lOmPZP dd!lQmRZRmSZS dd"lTmUZUmVZV dd#lWmXZXmYZY dd$lZm[Z[ dd%l\m]Z]m^Z^ dd&l_m`Z` dd'lambZbmcZc dd(lmdZe dd)lmfZfmgZgmhZhmiZi dd*ljmkZkmlZlmmZmmnZn dd+lompZpmqZqmrZr  e        emxZsZteZud, ZvexZwZxej                  Zyej                  Z{ej                  Z|ej                  Z}ej                  Z~ej                  Zej                   Zej                  Zej                  Zej                  Zej
                  Zej                  Zd- Zd. Zd/ Ze?Z?e=Z=e<Z<e@Z e9j                  d0d1d2e`d34       d5ZeZeZd6 Z G d7 d8      Z G d9 d:      ZdJd;ZMdZdZd< Zd= Z	 dKd>Zd	 	 	 	 	 	 	 dLd?Z- e9d0d1d@4      dMdA       Z+dB ZdNdCZdD Ze$rdE ZdOdFZdOdGZdH Z	 	 	 	 	 	 dPdIZDy)Qz#Backported exports for conda-build.    N)input)StringIO   )
CondaErrorplan)EntityEncoder)DEFAULT_CHANNELSDEFAULT_CHANNELS_UNIXDEFAULT_CHANNELS_WINPREFIX_PLACEHOLDER)contextnon_x86_machinesreset_contextsys_rc_path)spec_from_linespecs_from_argsspecs_from_url)ArgumentParser)add_parser_channelsadd_parser_prefix)compat)on_win)win_path_to_unix)	_toposort)dist_str_in_index)fetch_index)	get_index)ProgressiveFetchExtract
rm_fetched)delete_prefix_from_linked_data)Solver)cache_fn_url)
deprecated)CondaHTTPErrorCondaOSError	LinkError	LockErrorPaddingErrorPathNotFoundErrorUnsatisfiableError)TmpDownload)download)CondaSession)TemporaryDirectory)delete_trashmove_to_trash)rm_rf)lchmod)ACTIVE_SUBPROCESSESsubprocess_call)	untrackedwalk_prefix)Channelget_conda_build_local_urlDist)FileModePathType)PackageRecord)VersionOrdernormalized_version)display_actions)execute_actionsexecute_instructionsexecute_planinstall_actions)	MatchSpecResolveResolvePackageNotFoundUnsatisfiable)human_bytesunix_path_to_winurl_pathc                      t         S N)r	        -lib/python3.12/site-packages/conda/exports.py<lambda>rQ   W   s    + rO   c                  4    t        t        j                        S rM   )listr   channelsrN   rO   rP   rQ   rQ   e   s    d7++, rO   c                  0    t        t                     xs g S rM   )rS   r8   rN   rO   rP   rQ   rQ   f   s    79:@b rO   c                     t        | g      S rM   )r   )fns    rP   rQ   rQ   g   s    -- rO   z24.3z24.9IndexRecordz1Use `conda.models.records.PackageRecord` instead.)addendumTc                 8    t         | j                  di |      S )NrN   )iteritems)dkws     rP   	iteritemsr_   z   s    "rO   c                       e Zd Zd Zd Zd Zy)	Completerc                 "    | j                         S rM   )
_get_itemsselfs    rP   	get_itemszCompleter.get_items   s      rO   c                      y)NTrN   )re   items     rP   __contains__zCompleter.__contains__   s    rO   c                 4    t        | j                               S rM   )r[   rf   rd   s    rP   __iter__zCompleter.__iter__   s    DNN$%%rO   N)__name__
__module____qualname__rf   ri   rk   rN   rO   rP   ra   ra   ~   s    !&rO   ra   c                       e Zd Zy)InstalledPackagesN)rl   rm   rn   rN   rO   rP   rp   rp      s    rO   rp   c                 4    t        | ||       t        |        y rM   )_rm_rfr    )pathmax_retriestrashs      rP   r1   r1      s    
4e$"4(rO   c                      y rM   rN   _s    rP   	hash_filery      s    rO   c                      y)NFrN   rw   s    rP   verifyr{      s    rO   c                 2   d| v r| d   D cg c]  }||   	 c}| d<   d| v r| d   D cg c]  }||   	 c}| d<   d| v r| d   D cg c]  }||   	 c}| d<   |j                         D ci c]  }|| }}t        | ||||      S c c}w c c}w c c}w c c}w )NFETCHLINKUNLINK)values_display_actions)actionsindexshow_channel_urlsspecs_to_removespecs_to_addr]   precs          rP   r@   r@      s     '.5g.>?E!H?-4V_=58=7/6x/@A!U1XA$)LLN3DT4Z3E3)?L  @=A3s   BB
B*
Bc           	      ~    t        | ||||||      }|j                         D ci c]  }t        |      | c}S c c}w rM   )
_get_indexr   r:   )	channel_urlsprependplatform	use_local	use_cacheunknownprefixr   r   s	            rP   r   r      sB     gxIwE */8DJ888s   :z+Use `conda.core.index.fetch_index` instead.c                 v    t        | ||      }|j                         D ci c]  }t        |      | c}S c c}w rM   )_fetch_indexr   r:   )r   r   r   r   s       rP   r   r      s3    y%8E).8DJ888s   6c                  6    ddl m  G fdd      }  |        S )Nr   PackageCacheDatac                   ,    e Zd Z fdZ fdZ fdZy)$package_cache.<locals>.package_cachec                     t        j                         j                  t        |      j	                         d             S rM   )boolfirst_writablegetr:   to_package_refre   distr   s     rP   ri   z1package_cache.<locals>.package_cache.__contains__   s7     //155d4j6O6O6QSWX rO   c                 N    d j                         j                         D        S )Nc              3   2   K   | ]  }t        |        y wrM   r9   ).0vs     rP   	<genexpr>z<package_cache.<locals>.package_cache.keys.<locals>.<genexpr>   s     PDGPs   )r   r   )re   r   s    rP   keysz)package_cache.<locals>.package_cache.keys   s!    P%5%D%D%F%M%M%OPPrO   c                 r    j                         j                  t        |      j                                y rM   )r   remover:   r   r   s     rP   __delitem__z0package_cache.<locals>.package_cache.__delitem__   s'    ++-44T$Z5N5N5PQrO   N)rl   rm   rn   ri   r   r   r   s   rP   package_cacher      s    	
	Q	RrO   r   )core.package_cache_datar   )r   r   s    @rP   r   r      s    9
R 
R ?rO   c                    t        dt        j                         t        j                  j                  t        j                  j                  |             t        j                  j                  t        j                  j                  |            v ry t        rd}t        j                  t        |      }nd}t        j                  }t        j                  j                  t        j                  j                  | |            s3t        j                  t        j                  j                  | |             t        | |||       y )Nz'WARNING: symlink_conda() is deprecated.)filecondabin)shellbin)printsysstderrosrs   normcasenormpathr   	functoolspartialwin_conda_bat_redirectsymlinkisdirjoinmakedirs_symlink_conda_hlp)r   root_dirr   where
symlink_fns        rP   symlink_condar      s    	
3#**E 
ww((01RWW5E5E
"6  	&&'=UK
ZZ
77==fe45
BGGLL/0vx
;rO   c                    g d}t         j                  j                  | |      }t         j                  j                  |      st        j                  |       |D ]  }t         j                  j                  |||      }t         j                  j                  ||      }	 t         j                  j                  |      rt        |       t         j                  j                  |      s	 |||        y # t        $ rv}	t         j                  j                  |      rK|	j                  t        j                  t        j                  t        j                  t        j                  fv rn Y d }	~	d }	~	ww xY w)N)condaactivate
deactivate)r   rs   r   r   r   lexistsr1   OSErrorerrnoEPERMEACCESEROFSEEXIST)
r   r   r   r   scriptsprefix_wheref	root_fileprefix_filees
             rP   r   r      s    1G77<<.L77==&
L! GGLL5!4	ggll<3	ww{+k"77??;/9k2  	ww{+EKKu{{ELLQQ  	s    AC55	E4>A+E//E4c                    ddl m} 	 t        j                  t        j                  j                  |             t        j                  j                  |dz         s,t        |dz   d      5 }|j                  d| z         ddd       |sd}t        j                  j                  |      st        |d      5 }|j                  d       | j                  d	      r$|j                  d
 ||   d   | dz         z         n |j                  d ||   d   |       z         ddd       t        j                  |      j                  }||dz  dz	  z  }t        j                   ||       yy# t        $ rf}|j                  t        j                  k(  r=t        j                  j                  t        j                  j                  |            rn Y d}~d}~ww xY w# 1 sw Y   \xY w# 1 sw Y   xY w)a-  Special function for Windows XP where the `CreateSymbolicLink`
        function is not available.

        Simply creates a `.bat` file at `dst` which calls `src` together with
        all command line arguments.

        Works of course only with callable files, e.g. `.bat` or `.exe` files.
        r   )shellsNz.batwz@echo off
call "%s" %%*
zbash.exez#!/usr/bin/env bash 
r   z%s "$@"path_toz.exezsource %s "$@"i$     )utilsr   r   r   rs   dirnamer   r   r   r   isfileopenwriteendswithstatst_modechmod)srcdstr   r   excr   modes          rP   r   r     s    	"	KK,- ww~~cFl+cFlC( <A4s:;< E ww~~c"c3 N101<<(GGI(@ui(@v(NNOGG,/Gve}Y/G/LLMN 773<''DTCZA%%DHHS$ #'  	yyELL(RWW]]277??3;O-P 	< <N Ns1   2E( +G7A'G'(	G1AGGG$'G0c                     ddl m} ddlm}  ||       }|j                  j                         D ci c]  } ||      | c}S c c}w )z5Return a dictionary of the linked packages in prefix.r   
PrefixDatar9   )core.prefix_datar   models.distr:   _prefix_recordsr   )r   ignore_channelsr   r:   pdprefix_records         rP   linked_datar   3  sM    ,!	F	B  //668 	]]*  s   Ac                     ddl m} |j                         }t        | |      j	                         }|D ch c]  \  }}|j
                  |v r| c}}S c c}}w )z.Return the Dists of linked packages in prefix.r   )PackageType)r   )models.enumsr   conda_package_typesr   r\   package_type)r   r   r   r   ldr   
prefix_recs          rP   linkedr   ?  s^    )%99;	V_	=	C	C	EB !#D*""&99 	  s   Ac                     ddl m}  ||       }|j                  |j                  d      }|yt	        |      j                  |      r|S y)z
    Return the install metadata for a linked package in a prefix, or None
    if the package is not linked in the prefix.
    r   r   N)r   r   r   namerE   match)r   r   r   r   r   s        rP   	is_linkedr   M  sI     -	F	BFF499d+M	4		}	-rO   c                 "    t        | ||||      S )N)md5sha256size)	_download)urldst_pathsessionmd5sumurlstxtretriesr   r   s           rP   r,   r,   _  s     S(vDIIrO   )   T)NrN   rN   )rN   TNFFNN)FNrM   )F)NNF   NN)__doc__r   r   r   r   builtinsr   ior    r   r   auxlib.entityr   base.constantsr	   r
   r   r   base.contextr   r   r   r   
cli.commonr   r   r   cli.conda_argparser   cli.helpersr   r   commonr   common.compatr   common.pathr   common.toposortr   
core.indexr   r   r   r   r   r   r   r   r   r    
core.solver!   core.subdir_datar"   deprecationsr#   
exceptionsr$   r%   r&   r'   r(   r)   r*   gateways.connection.downloadr+   r,   r   gateways.connection.sessionr-   gateways.disk.creater.   gateways.disk.deleter/   r0   r1   rr   gateways.disk.linkr2   gateways.subprocessr3   r4   miscr5   r6   models.channelr7   r8   r   r:   r   r;   r<   models.recordsr=   models.versionr>   r?   r@   r   rA   rB   rC   rD   resolverE   rF   rG   rH   r   rI   rJ   rK   NoPackagesFoundNoPackagesFoundErrornon_x86_linux_machinesget_default_urls_PREFIX_PLACEHOLDERprefix_placeholder	arch_nameanaconda_uploadbinstar_uploadbitsdefault_prefixdefault_python	envs_dirs	pkgs_dirsr   root_prefixr   root_writablesubdirconda_buildget_rc_urlsget_local_urlsload_condarcCondaFileNotFoundErrorconstantPY3strstring_types	text_typer_   ra   rp   KEYSKEYS_DIRry   r{   r   r   r   r   r   r   r   rN   rO   rP   <module>rB     s   *   	 
    (   H G .  ! ) & ) 3 / H <  * $   6 ? 5 4 = 1 & E ( >  , ) < 5   ; :  *@ ?&) + += = (	((||''''		%%	!!,@-	*  
  

@ 	& &	 	) 
 NP  9 FF%RS9 T9
$<&2 
+ \	
* 	
JrO   