
    $TXgI/                     R   d 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.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ddl>m@ZA ddlBmCZC ddlDmEZE ddlFmGZG ddlFmHZI ddlJmKZK dd lLmMZMmNZN dd!lOmPZPmQZQ dd"lRmSZSmTZT dd#lUmVZV dd$lWmXZXmYZY dd%lZm[Z[m\Z\ dd&l
m]Z^ dd'l
m_Z_m`Z`maZambZb dd(lcmdZdmeZemfZfmgZg dd)lhmiZimjZjmkZk  e        efxZlZmeZnd* ZoexZpZqej                  Zrej                  Ztej                  Zuej                  Zvej                  Zwej                  Zxej                  Zyej                  Zzej                  Z|ej                  Z}ej                  Z~ej                  Zd+ Zd, Zd- Ze;Z;e9Z9e8Z8e<Zd.ZeZeZ e5j                  d/d0d1e%d23       [% e5j                  d/d0d4ejd53       [j e5d/d0d63      d7        Z e5d/d0d83       G d9 d:             Z e5d/d0d83       G d; d<             Z e5j                  d/d0d=eId>3       [IdOd?ZH e5j                  d/d0d@dd83        e5j                  d/d0dAdd83        e5d/d0d83      dB        Z e5d/d0d83      dC        Z	 dPdDZ]	 	 	 	 	 	 	 dQdEZ*dF Z e5d/d0dG3      dRdH       Z e5d/d0dG3      dI        Ze#r e5d/d0dG3      dJ        ZdSdKZdSdLZdM Z	 	 	 	 	 	 dTdNZ@y)Uz#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)	get_index)ProgressiveFetchExtract)delete_prefix_from_linked_data)Solver)cache_fn_url)
deprecated)CondaHTTPErrorCondaOSError	LinkError	LockErrorPaddingErrorPathNotFoundErrorUnsatisfiableError)TmpDownload)download)CondaSession)TemporaryDirectory)delete_trashrm_rf)lchmod)ACTIVE_SUBPROCESSESsubprocess_call)	untrackedwalk_prefix)Channelget_conda_build_local_urlDist)FileModePathType)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>rN   T   s    +rL   c                  4    t        t        j                        S rJ   )listr   channelsrK   rL   rM   rN   rN   b   s    d7++,rL   c                  0    t        t                     xs g S rJ   )rP   r6   rK   rL   rM   rN   rN   c   s    79:@b@rL   c                     t        | g      S rJ   )r   )fns    rM   rN   rN   d   s    --rL   Tz25.3z25.9r   z1Use `conda.common.path.win_path_to_unix` instead.)addendumrG   z1Use `conda.common.path.unix_path_to_win` instead.z#Use builtin `dict.items()` instead.c                 8    t         | j                  di |      S )NrK   )iteritems)dkws     rM   	iteritemsr[      s     "rL   zUnused.c                       e Zd Zd Zd Zd Zy)	Completerc                 "    | j                         S rJ   )
_get_itemsselfs    rM   	get_itemszCompleter.get_items   s      rL   c                      y)NTrK   )ra   items     rM   __contains__zCompleter.__contains__   s    rL   c                 4    t        | j                               S rJ   )rW   rb   r`   s    rM   __iter__zCompleter.__iter__   s    DNN$%%rL   N)__name__
__module____qualname__rb   re   rg   rK   rL   rM   r]   r]      s    !&rL   r]   c                       e Zd Zy)InstalledPackagesN)rh   ri   rj   rK   rL   rM   rl   rl      s    rL   rl   move_to_trashz/Use `conda.gateways.disk.delete.rm_rf` instead.c                 6    ddl m}  ||        t        |        y )Nr   r.   )gateways.disk.deleter/   r   )pathmax_retriestrashr/   s       rM   r/   r/      s    +	$K"4(rL   KEYSKEYS_DIRc                      y rJ   rK   _s    rM   	hash_filerx      s    rL   c                      y)NFrK   rv   s    rM   verifyrz      s    rL   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_addrY   precs          rM   r=   r=      s     '.5g.>?.>E!H.>?-4V_=_58_=7/6x/@A/@!U1X/@A$)LLN3NDT4ZNE3)?L  @=A3s   BB
B*
Bc           	      ~    t        | ||||||      }|j                         D ci c]  }t        |      | c}S c c}w rJ   )
_get_indexr   r8   )	channel_urlsprependplatform	use_local	use_cacheunknownprefixr   r   s	            rM   r   r      sF     gxIwE */8DJ888s   :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 rJ   )boolfirst_writablegetr8   to_package_refra   distr   s     rM   re   z1package_cache.<locals>.package_cache.__contains__   s7     //155d4j6O6O6QSWX rL   c                 N    d j                         j                         D        S )Nc              3   2   K   | ]  }t        |        y wrJ   r7   ).0vs     rM   	<genexpr>z<package_cache.<locals>.package_cache.keys.<locals>.<genexpr>   s     P%ODG%Os   )r   r   )ra   r   s    rM   keysz)package_cache.<locals>.package_cache.keys   s!    P%5%D%D%F%M%M%OPPrL   c                 r    j                         j                  t        |      j                                y rJ   )r   remover8   r   r   s     rM   __delitem__z0package_cache.<locals>.package_cache.__delitem__   s'    ++-44T$Z5N5N5PQrL   N)rh   ri   rj   re   r   r   r   s   rM   package_cacher      s    	
	Q	RrL   r   )core.package_cache_datar   )r   r   s    @rM   r   r      s    9
R 
R ?rL   zUse `conda.activate` instead.c                 ^   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 )Ncondabin)shellbin)osrp   normcasenormpathr   	functoolspartialwin_conda_bat_redirectsymlinkisdirjoinmakedirs_symlink_conda_hlp)r   root_dirr   where
symlink_fns        rM   symlink_condar      s     
ww((01RWW5E5E
"6  	&&'=UK
ZZ
77==fe45
BGGLL/0vx
;rL   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   rp   r   r   r   lexistsr/   OSErrorerrnoEPERMEACCESEROFSEEXIST)
r   r   r   r   scriptsprefix_wheref	root_fileprefix_filees
             rM   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|  d       ddd       |sd}t        j                  j                  |      st        |d      5 }|j                  d	       | j                  d
      r0|j                  dj                   ||   d   | dz                      n,|j                  dj                   ||   d   |                    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   tx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 "z" %*
zbash.exez#!/usr/bin/env bash 
r   z{} "$@"path_toz.exezsource {} "$@"i$     )utilsr   r   r   rp   dirnamer   r   r   r   isfileopenwriteendswithformatstatst_modechmod)srcdstr   r   excr   modes          rM   r   r     s    	#	KK,- ww~~cFl+cFlC(A+C578 ) E ww~~c"c3101<<(GGI,,-FWU^I-FsV|-TUVGG,334MGEN94Mc4RST   773<''DTCZA%%DHHS$ #'  	yyELL(RWW]]277??3;O-P 	 )(  s1   2F +G38A?H 	G0
AG++G03G= H	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   
PrefixDatar7   )core.prefix_datar   models.distr8   _prefix_recordsr   )r   ignore_channelsr   r8   pdprefix_records         rM   linked_datar   I  sR    ,!	F	B  //6688M 	]]*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   rX   package_type)r   r   r   r   ldr   
prefix_recs          rM   linkedr   U  sd    )%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   namerB   match)r   r   r   r   r   s        rM   	is_linkedr   c  sI     -	F	BFF499d+M	4		}	-rL   c                 "    t        | ||||      S )N)md5sha256size)	_download)urldst_pathsessionmd5sumurlstxtretriesr   r   s           rM   r*   r*   u  s     S(vDIIrL   )   T)NrK   rK   )rK   TNFFNNrJ   )F)NNF   NN)__doc__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   
core.solver   core.subdir_datar    deprecationsr!   
exceptionsr"   r#   r$   r%   r&   r'   r(   gateways.connection.downloadr)   r*   r   gateways.connection.sessionr+   gateways.disk.creater,   ro   r-   r/   rm   gateways.disk.linkr0   gateways.subprocessr1   r2   miscr3   r4   models.channelr5   r6   r   r8   r   r9   r:   models.versionr;   r<   r=   r   r>   r?   r@   rA   resolverB   rC   rD   rE   r   rF   rG   rH   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PY3strstring_types	text_typeconstantr[   r]   rl   rx   rz   r   r   r   r   r   r   r   rK   rL   rM   <module>r8     s   *   	    (   H G .  ! ) & ) / < <  * $   6 ? 5 4 . 8 & E ( >  , < 5   ; :  *@ ?&) + += = (	((||''''		%%	!!,@-	* 
	 
  

@  
  

@  

2

 FFY/& & 0& FFY/	 	 0	 
  

> ) 
  FFFD9 E 
  FFJy I FFY/ 0 FFY/ 0
 NP  9$ FF%DE< F<$ FF%DE F2 
)HI+  J+ \	
* 	
JrL   