ó
    ×çðiÝ0  ã                  óŠ  • S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	J
r
JrJrJrJr  SSKJr  SSKJr  SS	KJr  SS
KJrJrJr  SSKJr  SSKJr  SSKJrJrJ r   SSK!J"r"  SSK#J$r$J%r%  SSK&J'r'J(r(  SSK)J*r*  SSK+J,r,  SSK-J.r.J/r/J0r0J1r1J2r2  SSK3J4r4  SSK5J6r6J7r7J8r8  SSK9J:r:J;r;  SSK<J=r=  \(       a  SSK>J?r?J@r@  SSKJArA  SSKBJCrCJDrD  \" \E5      rFS,S jrG\,R�                  " SSS\R’                  " S5      S S!9  S-S" jrJS.S# jrK    S/             S0S$ jjrL S1     S2S% jjrMS3S& jrNS4S' jrOS5S( jrPS,S) jrQS6S* jrRS+ rSg)7z Miscellaneous utility functions.é    )ÚannotationsN)Ú	getLogger)ÚabspathÚdirnameÚisdirÚisfileÚjoinÚrelpath)ÚTYPE_CHECKINGé   )ÚEXPLICIT_MARKER)Úcontext)Úon_macÚon_winÚ	open_utf8)Údashlist)Úexpand)Úis_urlÚjoin_urlÚpath_to_url)ÚIndex)ÚPrefixSetupÚUnlinkLinkTransaction)ÚPackageCacheDataÚProgressiveFetchExtract)Ú
PrefixData)Ú
deprecated)ÚDisallowedPackageErrorÚ
DryRunExitÚPackagesNotFoundInChannelsErrorÚ
ParseErrorÚSpecNotFoundInPackageCache)Úrm_rf)ÚislinkÚreadlinkÚsymlink)ÚChannelMatchÚ	MatchSpec)ÚPrefixGraph)ÚIterableÚSequence)ÚAny)ÚPackageCacheRecordÚPackageRecordc           	     óÌ   • [        5       n[        U 5      R                  5        H<  nU(       a  SU;   a  M  UR                  [        UR	                  SS5      5      5        M>     U$ )zV
Return the set of files which have been installed (using conda) into
a given prefix.
Ú	file_hashÚfiles© )Úsetr   Úiter_recordsÚupdateÚget)ÚprefixÚexclude_self_buildÚresÚmetas       ÚLib\site-packages\conda\misc.pyÚconda_installed_filesr<   /   sS   € ô
 ‹%€CÜ˜6Ó"×/Ñ/Ö1ˆÞ +°Ó"5ÙØ�
‰
”3�t—x‘x ¨Ó,Ó-Ö.ñ 2ð €Jó    z26.9z27.3Úurl_patz„(?:(?P<url_p>.+)(?:[/\\]))?(?P<fn>[^/\\#]+(?:\.conda|\.tar\.bz2))(?:#((?P<md5>[0-9a-f]{32})|((sha256:)?(?P<sha256>[0-9a-f]{64}))))?$z,Use `conda.misc._get_url_pattern()` instead.)Úaddendumc                 óà   • [         R                  R                  5       R                  5       n SR	                  [        [        R                  U 5      5      n[        R                  " SU S35      $ )zEBuild URL pattern dynamically based on registered package extensions.Ú|z-(?:(?P<url_p>.+)(?:[/\\]))?(?P<fn>[^/\\#]+(?:zE))(?:#((?P<md5>[0-9a-f]{32})|((sha256:)?(?P<sha256>[0-9a-f]{64}))))?$)	r   Úplugin_managerÚget_package_extractorsÚkeysr	   ÚmapÚreÚescapeÚcompile)Ú
extensionsÚext_patterns     r;   Ú_get_url_patternrK   L   s]   € ä×'Ñ'×>Ñ>Ó@×EÑEÓG€JØ—(‘(œ3œrŸy™y¨*Ó5Ó6€KÜ�:Š:ð	Ø)˜]ð +ð	óð r=   c              #  óÀ  #   • [        5       nU  HÊ  nU[        :X  a  M  [        U5      (       d   [        [	        U5      5      nUR                  U5      nUc  [        SU 35      eUR                  S5      UR                  S5      pT[        XE5      n0 nUR                  S5      =n(       a  X‡S'   UR                  S5      =n	(       a  X—S'   [        U40 UD6v •  MÌ     g 7f)NzCould not parse explicit URL: Úurl_pÚfnÚmd5Úsha256)
rK   r   r   r   r   Úmatchr!   Úgroupr   r(   )
Úspecsr>   ÚspecÚmrM   rN   ÚurlÚ	checksumsrO   rP   s
             r;   Ú_match_specs_from_explicitrX   Z   sÖ   é € ÜÓ €GÛˆØ”?Ó"Ùä�d�|‰|ðô œv d›|Ó,ˆDð �M‰M˜$ÓˆØ‰9ÜÐ=¸d¸VÐDÓEÐEØ—G‘G˜GÓ$ a§g¡g¨d£mˆrÜ�uÓ!ˆàˆ	Ø—'‘'˜%“.Ð ˆ3Õ Ø"�eÑØ—W‘W˜XÓ&Ð&ˆ6Õ&Ø"(�hÑÜ˜Ñ)˜yÑ)Ô)ò9 ùs   ‚CCc                ó0   • [        U 5      n[        UUUS9  g )N)Úpackage_cache_recordsr7   Úrequested_specs)Ú!get_package_records_from_explicitÚinstall_explicit_packages)rS   r7   ÚverboseÚforce_extractÚindexr[   rZ   s          r;   Úexplicitra   {   s    € ô >¸eÓDÐÜØ3ØØ'ór=   c                ó¤  • [        S U  5       5      n/ n[        U5      n[        U5       H�  u  nu  px[        XxR                  S9n	X“U   S'   UR                  UR                  S5      n
U
(       d  MG  [        UR                  U	5      S5      (       a	  SX6   S'   Mp  UR                  U
5        Mƒ     U(       a  [        S U 5       5      nO[        S U 5       5      n[        UU[        S U 5       5      SUS5      n[        U5      n[        R                  (       d%  [        R                  (       d  UR                  5         UR                  5         g)	z.Install a list of PackageRecords into a prefixc              3  óD   #   • U  H  oR                  5       U/v •  M     g 7f©N)Úto_match_spec)Ú.0Úrecs     r;   Ú	<genexpr>Ú,install_explicit_packages.<locals>.<genexpr>‘   s   é € ÐUÒ?T¸×+Ñ+Ó-¨sÕ3Ò?Tùs   ‚ ©Únamer   Nc              3  ó8   #   • U  H  n[        U5      v •  M     g 7frd   ©r(   ©rf   rT   s     r;   rh   ri   ¤   s   é € Ð(UÂ_¸T¬°4¯¨Â_ùó   ‚c              3  óB   #   • U  H  oS    (       d  M  US    v •  M     g7f)r   Nr2   ©rf   Úsps     r;   rh   ri   ¦   s   é € Ð(Oº°2ÈAÍ«¨¨A®ºùó   ‚“c              3  óB   #   • U  H  oS    (       d  M  US   v •  M     g7f)r   r   Nr2   rq   s     r;   rh   ri   «   s   é € Ð4šl˜°­e‹eˆb�Žešlùrs   r2   )Útupler   Ú	enumerater(   rk   r6   ÚnextÚqueryÚappendr   r   r   ÚjsonÚquietÚprint_transaction_summaryÚexecute)rZ   r7   r[   Úspecs_pcrecsÚprecs_to_removeÚprefix_dataÚqrT   ÚpcrecÚnew_specÚprecÚupdate_specs_for_historyÚstpÚtxns                 r;   r]   r]   ‹   s  € ô ÑUÑ?TÓUÓU€Là€OÜ˜VÓ$€KÜ% lÖ3Ñˆ‰=ˆDÜ˜T¯
©
Ñ3ˆØ%�Q‰˜Ñà�‰˜uŸz™z¨4Ó0ˆßˆ4ä�K×%Ñ% hÓ/°×6Ñ6Ø%)�‘ Ó"à×&Ñ& tÖ,ñ 4ö Ü#(Ñ(UÁ_Ó(UÓ#UÑ ä#(Ñ(O¹Ó(OÓ#OÐ ä
ØØÜÑ4™lÓ4Ó4Ø
Ø Ø
ó€Cô   Ó
$€CÜ�<�<¤§§Ø×%Ñ%Ô'Ø‡K�K…Mr=   c                ó@  • [        S U  5       5      nU VVs/ s H  u  p#Ub  M
  [        U5      PM     nnnU(       aB  [        U5      [        U5      :X  a  [        S5      eSR	                  U5      n[        SU 35      eU Vs/ s H  ofS   PM	     sn$ s  snnf s  snf )z{Given a list of specs, find the corresponding PackageCacheRecord. If
some PackageCacheRecords are missing, raise an error.
c              3  ód   #   • U  H&  o[        [        R                  " U5      S 5      /v •  M(     g 7frd   )rw   r   Ú	query_allrn   s     r;   rh   Ú1_get_package_record_from_specs.<locals>.<genexpr>»   s)   é € ð ÚINÀŒtÔ$×.Ò.¨tÓ4°dÓ;Õ<Êùs   ‚.0zNo package cache records foundz, z#Missing package cache records for: r   )ru   ÚstrÚlenr"   r	   )rS   r~   rT   r‚   Úspecs_with_missing_pcrecsÚmissing_precs_listrg   s          r;   Ú_get_package_record_from_specsr�   ·   s³   € ô ñ ÙINóó €Lñ &2ô!Ú%1‘k�d°U‹	ŒˆDŽ	¡\ð ñ !ö !ÜÐ(Ó)¬S°Ó->Ó>Ü,Ð-MÓNÐNà!%§¡Ð+DÓ!EÐÜ,Ø5Ð6HÐ5IÐJóð ñ +Ó+šl�s�ŒF™lÑ+Ð+ùó!ùò ,s   ˜	B¥BÂBc                ó´   • [        [        U 5      5      n[        R                  (       a
  [	        5       e[        U5      nUR                  5         [        U5      $ )zÁGiven the lines from an explicit.txt, create the PackageRecords for each of the
specified packages. This may require downloading the package, if it does not already
exist in the package cache.
)ÚlistrX   r   Údry_runr   r   r}   r�   )ÚlinesÚfetch_specsÚpfes      r;   r\   r\   Î   sE   € ô Ô1°%Ó8Ó9€Kä‡‡Ü‹lÐô " +Ó
.€CØ‡K�K„Mô *¨+Ó6Ð6r=   c                ó"  • [        5       n[        U 5      n 1 Skn1 Skn[        (       a  UR                  SS15        S [        R
                  " U 5       5        Hù  nU(       a  Xd;   a  M  [        [        X5      5      (       a  UR                  U5        M=  [        R                  " [        X5      5       H™  u  pxn	U=(       a    U[        U S5      :H  n
U	 H5  nU
(       a  Xµ;   a  M  UR                  [        [        X{5      U 5      5        M7     U H:  n[        X|5      n[        U5      (       d  M   UR                  [        XÐ5      5        M<     M›     Mû     [        (       a)  U(       a"  U Vs1 s H  oÝR                  SS5      iM     sn$ U$ s  snf )	z8Return the set of all files in a given prefix directory.>   ÚenvsÚinfoÚpkgsÚusersú.indexú.unionfsú	.nonadminú	conda-bldú
conda-metaú.conda_lockúLICENSE.txtúconda-recipes>   ÚcondaÚactivateÚ
deactivatez
python.appzLauncher.appc              3  ó8   #   • U  H  oR                   v •  M     g 7frd   rj   )rf   Úentrys     r;   rh   Úwalk_prefix.<locals>.<genexpr>ö   s   é € Ð:Ò'9˜e�zŽzÒ'9ùro   ÚbinÚ\Ú/)r3   r   r   r5   ÚosÚscandirr   r	   ÚaddÚwalkr
   r$   r   Úreplace)r7   Úignore_predefined_filesÚwindows_forward_slashesr9   ÚignoreÚ	binignorerN   ÚrootÚdirsr1   Úshould_ignoreÚfn2ÚdnÚpaths                 r;   Úwalk_prefixr¼   á   s6  € ä
‹%€CÜ�V‹_€Fò€Fò 4€Iß‚vØ�‰�| ^Ð4Ô5Ù:¤r§z¢z°&Ô'9Ö:ˆÞ" r£|ÙÜ”$�vÓ"×#Ñ#Ø�G‰G�BŒKÙÜ!#§¢¬¨fÓ)9Ö!:ÑˆD˜Ø3×S¸ÄÀVÈUÓ@SÑ8SˆMÛ�Þ  SÓ%5ÙØ—‘œ¤ T£°Ó8Ö9ñ ó �Ü˜D“~�Ü˜$—<“<Ø—G‘GœG DÓ1Ö2ó ó ";ñ ;÷" ‚vÖ)Ù47Ó8²C¨D—‘˜T 3Ö'±CÑ8Ð8àˆ
ùò 9s   Å,Fc                ó  • [        X5      n[        U 5      U-
   Vs1 s Ha  nUR                  S5      (       a  M  [        (       a  UR                  S5      (       a  M>  UR                  S5      (       a  USS U;   a  M_  UiMc     sn$ s  snf )z;Return (the set) of all untracked files for a given prefix.Ú~z	.DS_Storez.pycNéÿÿÿÿ)r<   r¼   Úendswithr   )r7   r8   Úconda_filesr»   s       r;   Ú	untrackedrÂ     s…   € ä'¨ÓC€Kô   Ó'¨+Ò5ó
â5ˆDà�M‰M˜#×ó 	÷ ŠvØ—‘˜k×*ó 	ð �}‰}˜V×$Ñ$Ø�S�b�	˜[Ñ(÷ 	Ù5ñ
ð 
ùò 
s   œBºBÁBÁ>Bc                óH  ^^• [        U 5      n[        U 5      R                  5        Vs1 s H  ofiM     nn0 nU Vs/ s H  ofR                  S5      (       a  M  UPM     n	n/ n
U	(       aú  U=(       d    0 nUR	                  S5      US'   [        S0 UD6nU	 HÊ  m[        TR                  TR                  TR                  S9m[        U4S jUR                  5        5       5      nU(       d  U
R                  T5        Mi  [        U5      S:”  a-  UR                  T5        UR                  [!        U5      5        M¥  UR                  T5        UR                  US   5        MÌ     U
(       a.  U(       a  UR                  S5      =(       d    SOSn[#        X¬5      e0 nU H  mTS   UT'   M     [        [%        U5      R&                  5      nU Vs/ s H  omU   PM	     nn[        S	 [(        R*                   5       5      nU H(  m[-        U4S
 jU 5       5      (       d  M  [/        T5      e   U(       a.  [1        S[        U5      -  5        [1        S[        U5      -  5        [(        R2                  (       a
  [5        5       eU GH4  n[7        X5      n[7        X5      n[9        U5      n[;        U5      (       d  [=        U5      (       a  [?        U5        [A        U5      (       d  [B        RD                  " U5        [;        U5      (       a  [G        [I        U5      U5        M�   [K        US5       nURM                  5       nSSS5         WRQ                  S5      nURS                  X5      nURU                  S5      n[K        US5       nURY                  W5        SSS5        [Z        R\                  " UU5        GM7     [_        UUU(       + USS9nUU4$ s  snf s  snf s  snf ! , (       d  f       N©= f! [N         a     GM}  f = f! [V         a     N–f = f! , (       d  f       N‚= f)z(Clone existing prefix1 into new prefix2.rV   Úchannel_urlsÚchannels)rk   ÚversionÚbuildc              3  óX   >#   • U  H  nTR                  U5      (       d  M  Uv •  M!     g 7frd   ©rQ   )rf   r„   rT   s     €r;   rh   Úclone_env.<locals>.<genexpr>-  s   øé € ÐNª> 4¸T¿Z¹ZÈ×=MŸ$™$ª>ùs   ƒ*¡	*r   r   r2   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7frd   rm   )rf   Úss     r;   rh   rÊ   D  s   é € ÐIÒ-H¨”y —|�|Ò-Hùro   c              3  óD   >#   • U  H  oR                  T5      v •  M     g 7frd   rÉ   )rf   Údr„   s     €r;   rh   rÊ   F  s   øé € Ð1¢j �w‰w�t�}ˆ}¢jùs   ƒ zPackages: %dz	Files: %dÚrbNzutf-8ÚwbF)r^   r`   r_   )0rÂ   r   r4   r6   Úpopr   r(   rk   rÆ   rÇ   ru   Úvaluesry   r�   Úremover¯   Ú_get_best_prec_matchr    r)   Úgraphr   Údisallowed_packagesÚanyr   Úprintr“   r   r	   r   r$   r   r#   r   r­   Úmakedirsr&   r%   r   ÚreadÚOSErrorÚdecoder±   ÚencodeÚUnicodeDecodeErrorÚwriteÚshutilÚcopystatra   )Úprefix1Úprefix2r^   r{   Ú
index_argsÚuntracked_filesr„   Údrecsr`   ÚunknownsÚnotfoundÚprecsrÄ   ÚurlsÚ
disallowedÚfÚsrcÚdstÚdst_dirÚfiÚdatarÌ   ÚfoÚactionsrT   s         `                 @r;   Ú	clone_envrô     sX  ù€ ä Ó(€OÜ(¨Ó1×>Ñ>Ô@ÓAÒ@�dŠTÑ@€EÐAð €EÙ!&Ó>¢˜¯h©h°u¯o—¡€HÐ>Ø€HÞØ×% 2ˆ
Ø!+§¡°Ó!?ˆ
�:ÑÜÑ#˜
Ñ#ˆãˆDÜ $§)¡)°T·\±\ÈÏÉÑTˆDÜÔN¨5¯<©<¬>ÓNÓNˆEÞØ—‘ Ö%Ü�U“˜a“Ø—‘˜TÔ"Ø—	‘	Ô.¨uÓ5Ö6à—‘˜TÔ"Ø—	‘	˜% ™(Ö#ñ ö ö >H˜
Ÿ™ zÓ2×8°bøÈRˆÜ-¨hÓEÐEð €DÛˆØ˜%‘[ˆˆT‹
ñ ô ”+˜dÓ#×)Ñ)Ó*€EÙ#(Ó)¢5˜4�ŒJ¡5€DÐ)äÑI¬W×-HÒ-HÓIÓI€JÛˆÜÔ1¡jÓ1×1Ó1Ü(¨Ó.Ð.ñ ö Üˆnœs 5›zÑ)Ô*ÜˆkœC Ó0Ñ0Ô1ä‡‡Ü‹lÐäˆÜ�7ÓˆÜ�7ÓˆÜ˜#“,ˆÜ�'�?‰?œf WŸo™oÜ�'ŒNÜ�W�~‰~Ü�KŠK˜Ô Ü�#�;‰;Ü”H˜S“M 3Ô'Ùð	Ü˜3 Ô%¨Ø—w‘w“y�÷ &ð
	Ø—‘˜GÓ$ˆAØ—	‘	˜'Ó+ˆAØ—8‘8˜GÓ$ˆDô �s˜DÔ! RØ�H‰H�TŒN÷ "ä�Š˜˜S×!ñ7 ô: ØØØ”	ØØñ€Gð �OÐ#Ð#ùòi Bùò ?ùò< *÷6 &Õ%ûäó 	Ûð	ûô "ó 	Ùð	ú÷ "Õ!úsd   ©O¼OÁOÇOÌ O1Ì,O Ì=O1Í3PÎPÏ 
O.	Ï*O1Ï.O1Ï1
P Ï?P Ð
PÐPÐ
P!	c                óô   ^• U (       d  [        S5      e[        R                   H,  n[        U5      m[	        U4S jU  5       5      nU(       d  M,    O   U n[
        R                  S[        U5      5        US   $ )Nz'precs' cannot be empty.c              3  ó€   >#   • U  H3  nTR                  UR                  R                  5      (       d  M/  Uv •  M5     g 7frd   )rQ   Úchannelrk   )rf   r„   Úchannel_matchers     €r;   rh   Ú'_get_best_prec_match.<locals>.<genexpr>|  s-   øé € ð 
Ú"�T o×&;Ñ&;¸D¿L¹L×<MÑ<M×&N�D‰DšUùs   ƒ.>µ	>zMultiple packages found: %sr   )Ú
ValueErrorr   rÅ   r'   ru   ÚlogÚwarningr   )ré   r÷   Úprec_matchesrø   s      @r;   rÔ   rÔ   w  sr   ø€ ÞÜÐ3Ó4Ð4Ü×#Ô#ˆÜ& wÓ/ˆÜô 
Ù"ó
ó 
ˆ÷ ˆ<Ùñ $ð ˆÜ‡K�KÐ-¬x¸Ó/EÔFØ˜‰?Ðr=   )F)Úreturnz
re.Pattern)rS   úIterable[str]rþ   zIterable[MatchSpec])FTNN)rS   rÿ   r7   rŒ   r^   Úboolr_   r   r`   r,   r[   úSequence[str] | Nonerþ   ÚNonerd   )rZ   zlist[PackageRecord]r7   rŒ   r[   r  )rS   ú	list[str]rþ   úIterable[PackageCacheRecord])r”   r  rþ   r  )TT)TFN)TÚ__doc__Ú
__future__r   r­   rF   rà   Úloggingr   Úos.pathr   r   r   r   r	   r
   Útypingr   Úbase.constantsr   Úbase.contextr   Úcommon.compatr   r   r   Ú	common.ior   Úcommon.pathr   Ú
common.urlr   r   r   Ú
core.indexr   Ú	core.linkr   r   Úcore.package_cache_datar   r   Úcore.prefix_datar   Údeprecationsr   Ú
exceptionsr   r   r    r!   r"   Úgateways.disk.deleter#   Úgateways.disk.linkr$   r%   r&   Úmodels.match_specr'   r(   Úmodels.prefix_graphr)   Úcollections.abcr*   r+   r,   Úmodels.recordsr-   r.   Ú__name__rû   r<   ÚconstantrH   rK   rX   ra   r]   r�   r\   r¼   rÂ   rô   rÔ   r2   r=   r;   Ú<module>r     sV  ðñ 'å "ã 	Û 	Û Ý ß B× BÝ  å +Ý !ß 4Ñ 4Ý Ý ß 5Ñ 5Ý ß 9ß NÝ (Ý $÷õ õ (ß 9Ñ 9ß 6Ý ,æß2ÝçAñ �Ó€ô
ð × Ò Ø
Ø
ØØ‡J‚Jð	óð <òô ô*ðH ØØØ,0ðØðàðð ðð ð	ð
 ðð *ðð 
õð& -1ð)Ø.ð)àð)ð *õ)ôX,ô.7ô&)ôXô W$ótr=   