
    si=/                     <   S r SSK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Jr  SSK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  \" \ 5      r! " S S\5      r" " S S\
5      r#S\$S\$4S jr%S\$S\&\$\$4   4S jr' " S S\	\#S9r(S r)g)z/(Legacy) Low-level implementation of a Channel.    N)	getLogger)
NamedTuple   )
CondaError)Entity
EntityTypeIntegerFieldStringField)DEFAULTS_CHANNEL_NAMEUNKNOWN_CHANNEL)context)ensure_text_type)NULL)has_platformis_urljoin_url   )Channel)PackageInfo)PackageRecordc                   R    \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   Srg	)
DistDetails   nameversionbuild_stringbuild_number	dist_namefmt N)__name__
__module____qualname____firstlineno__str__annotations____static_attributes__r        1lib/python3.13/site-packages/conda/models/dist.pyr   r      s"    
ILN	Hr(   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )DistType#   c                 R  > [        U5      S:X  Ga  U(       Gd  US   nU[        R                  ;   a  [        R                  U   $ [        U[        5      (       a  UnGO%[        U[        5      (       a3  [        R                  UR                  UR                  R                  S9nO[        US5      (       a,  [        UR                  [        5      (       a  UR                  nO[        U[        5      (       a=  [        R                  UR                  R                  UR                  R                  S9nON[        U[        5      (       a$  [        R                  UR                  5       5      nO[        R                  U5      nU[        R                  U'   U$ [         TU ]D  " U0 UD6$ )Nr   r   )channel_overridedist)lenDist_cache_
isinstancer   from_stringfnchannelcanonical_namehasattrr/   r   repodata_recordr   from_urlurlsuper__call__)clsargskwargsvaluer/   	__class__s        r)   r=   DistType.__call__$   s<   t9>&GE$||E**E4((E=11''HHu}}/K/K (  ''Juzz4,H,HzzE;//'')),,%*]]%A%A (  E7++}}UYY[1''."&DLLK7#T4V44r(   r    )r!   r"   r#   r$   r=   r'   __classcell__rB   s   @r)   r+   r+   #   s    5 5r(   r+   original_distreturnc                 p    [         R                  R                  U 5      =n(       a  U S [        U5      *  $ U $ Nr   plugin_managerhas_package_extensionr0   rF   exts     r)   strip_extensionrO   A   s7    $$::=IIsI[Cy))r(   c                 x    [         R                  R                  U 5      =n(       a  U S [        U5      *  U4$ U S4$ )N rJ   rM   s     r)   split_extensionrR   H   sA    $$::=IIsI[Cy)3.."r(   c                     ^  \ rS rSr0 rSr\" SSSS9r\" SS9r\" SS9r	\" SS9r
\" SS9r\" SS9r\" SS9r\" SSSS9r\" SSSS9r        S%U 4S jjrS r\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       rS r\S 5       r\S 5       rS&S jrS rS r\\ 4S j5       r!\"S 5       r#\S 5       r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S'S jr.S'S  jr/S! r0S" r1\S# 5       r2S$r3U =r4$ )(r1   N   TF)requirednullable	immutable)rW   c
                 0   > [         T
U ]  UUUUUUUUU	S9	  g )N)	r6   r   r   r   r   r   base_urlplatformr   )r<   __init__)selfr6   r   r   r   r   r   rY   rZ   r   rB   s             r)   r[   Dist.__init__^   s2     	%% 	 
	
r(   c           	          [        U R                  U R                  U R                  U R                  U R
                  U R                  S9$ )N)r6   subdirr   r   buildr   )r   r6   rZ   r   r   r   r   r\   s    r)   to_package_refDist.to_package_refv   s=    LL==LL##**
 	
r(   c                 "    U R                  5       $ rI   )__str__ra   s    r)   	full_nameDist.full_name   s    ||~r(   c                     U R                   $ rI   )r   ra   s    r)   r`   
Dist.build   s       r(   c                     U R                   $ rI   )rZ   ra   s    r)   r_   Dist.subdir   s    }}r(   c                 L    U R                   =(       d    [        U R                  4$ rI   )r6   r   r   ra   s    r)   pair	Dist.pair   s    ||44dnnDDr(   c                     U R                   R                  SS5      SS/-   nUS   US   US   U R                  =(       d    [        4$ )N-r   rQ   r   r   )r   rsplitr6   r   )r\   partss     r)   quad	Dist.quad   sH     %%c1-R8Qxq58T\\-R=RRRr(   c                 r    U R                   (       a  U R                    SU R                   3$ U R                  $ )N::r6   r   ra   s    r)   re   Dist.__str__   s+    6:ll$,,r$..!12VVr(   c                 8    U R                   R                  S5      $ )N@)r   endswithra   s    r)   is_feature_packageDist.is_feature_package   s    ~~&&s++r(   c                 R    [        U R                  =(       a    U R                  5      $ rI   )boolrY   rZ   ra   s    r)   
is_channelDist.is_channel   s    DMM3dmm44r(   c                 n    U R                   (       a  U R                  $ U R                  U R                  -   $ rI   )r|   r   r   )r\   	extensions     r)   to_filenameDist.to_filename   s(    "">>!>>DHH,,r(   c                 >    SR                  U R                  S S 5      $ )N    )joinrs   ra   s    r)   to_matchspecDist.to_matchspec   s    xx		"1&&r(   c                     SSK Jn  SR                  U R                  S S 5      nU" U R                  (       a  U R                   SU 35      $ U5      $ )Nr   )	MatchSpec=r   rv   )
match_specr   r   rs   r6   )r\   r   bases      r)   to_match_specDist.to_match_spec   sE    )xx		"1&dllDLL>D62MMMMr(   c           
         [        U5      n[        U5      (       a  U[        :X  a  U R                  U5      $ UR	                  S5      (       a  U " SUSSSUS9$ Sn[
        R                  " X15      R                  5       u  pEn[        U5      u  pWU[        :w  a  UnU(       d  [        nU R                  U5      nU " UUR                  UR                  UR                  UR                  UUS9$ )Nrz   rQ   r   )r6   r   r   r   r   r   z8(?:([^\s\[\]]+)::)?([^\s\[\]]+)(?:\[([a-zA-Z0-9_-]+)\])?)r6   r   r   r   r   r   r   )r%   r   r   r:   r{   researchgroupsrR   r   parse_dist_namer   r   r   r   )	r>   stringr.   	REGEX_STRr6   rF   w_f_dr   dist_detailss	            r)   r4   Dist.from_string   s    V&>>.$6<<''??3  ) 	
 )+		)(D(K(K(M%,];t#&G%G **=9"" ((%22%22#
 	
r(   c                    U n [        U 5      n [        U 5      u  p#SU;   a  UR                  SS5      S   nOUR                  SS5      S   nUR                  SS5      nUS   nUS   n[        U5      S:  a  US   OS	nS	R	                  [        S
 U(       a  UR                  S5      S   OS5      5      n	U	(       a  [        U	5      OSn
[        XgXXC5      $ !   [        SU 35      e= f)Nrv   r   /rp   r   r   r   rQ   c                 "    U R                  5       $ rI   )isdigit)xs    r)   <lambda>&Dist.parse_dist_name.<locals>.<lambda>   s
    aiikr(   _0z(dist_name is not a valid conda package: )	r   rR   rq   r0   r   filterintr   r   )r   original_stringno_fmt_stringr   r   rr   r   r   r   build_number_as_stringr   s              r)   r   Dist.parse_dist_name   s    	%f-F!0!8M }$)00q9"=	)00a8<	$$S!,E8DAhG'*5zQ58BL%'WW)5A\((-b1s&" ;Q356VWL|9 	:?:KL s   CC C'c                    [        U5      (       d  [        S5      e[        R                  R	                  U5      (       d  SU;  a  [        SU S35      eU R                  U5      nSU;   aN  UR                  SS5      S   n[        R                  nUR                  S5      S   n[        [        U5      5      nOoUR                  SS5      S   n[        U[        R                  5      nU(       a  UR                  SS5      S   OUnU(       a  [        U5      R                  O[        nU " UUR                   UR"                  UR$                  UR&                  UR(                  UUUR*                  S9	$ )	Nz''{url}' does not seem to be a valid URLrv   zurl 'z' is not a conda packager   r   r   )	r6   r   r   r   r   r   rY   rZ   r   )r   
ValueErrorr   rK   rL   r   r   rq   r_   splitr%   r   r   known_subdirsr7   r   r   r   r   r   r   r   )r>   r;   r   url_no_tarballrZ   rY   r6   s          r)   r:   Dist.from_url   sE   c{{FGG%%;;C@@TQT_uSE)ABCC**3/3; ZZa03N~~H%++D1!4H'(+,G ZZQ/2N#NG4I4IJH;C~,,S!4Q7H:Bgh'66G"" ((%22%22",,  

 
	
r(   c                     U R                   (       d  g U R                  U R                  -   nU R                  (       a!  [	        U R                   U R                  U5      $ [	        U R                   U5      $ rI   )rY   r   r   rZ   r   )r\   filenames     r)   to_urlDist.to_url  sW    }}>>DHH, }} T]]DMM8<	
 $--2	
r(   c                 2    U R                   U R                  4$ rI   rw   ra   s    r)   __key__Dist.__key__'  s    ||T^^++r(   c                     [        XR                  5      (       d#  [        S[        U 5       S[        U5       35      eU R	                  5       UR	                  5       :  $ Nz=Can only compare with objects of the same type. Left side is z, and right side is r3   rB   	TypeErrortyper   r\   others     r)   __lt__Dist.__lt__*  V    %00  $T
|+?U}N  ||~//r(   c                     [        XR                  5      (       d#  [        S[        U 5       S[        U5       35      eU R	                  5       UR	                  5       :  $ r   r   r   s     r)   __gt__Dist.__gt__2  r   r(   c                     [        XR                  5      (       d#  [        S[        U 5       S[        U5       35      eU R	                  5       UR	                  5       :*  $ r   r   r   s     r)   __le__Dist.__le__:  V    %00  $T
|+?U}N  ||~00r(   c                     [        XR                  5      (       d#  [        S[        U 5       S[        U5       35      eU R	                  5       UR	                  5       :  $ r   r   r   s     r)   __ge__Dist.__ge__B  r   r(   c                 L    [        U R                  5       U R                  45      $ rI   )hashr   r   ra   s    r)   __hash__Dist.__hash__J  s     T\\^TXX.//r(   c                 |    [        XR                  5      =(       a!    U R                  5       UR                  5       :H  $ rI   )r3   rB   r   r   s     r)   __eq__Dist.__eq__O  s'    %0VT\\^u}}5VVr(   c                 .    U R                  U5      (       + $ rI   )r   r   s     r)   __ne__Dist.__ne__R  s    ;;u%%%r(   c                     US:w  a  [        S5      eU R                  (       a  U R                  U R                  /$ U R                  /$ )Nrv   z'sep' can only be '::')r   r6   r   )r\   sepmaxsplits      r)   r   
Dist.splitW  s:    $;56615dnn-SDNNCSSr(   c                     US:w  a  [        S5      eUS:w  a  [        S5      eU R                  (       a  U R                   SU R                  S    3OU R                  S   nX0R                  S   U R                  S   4$ )Nrp   z'sep' can only be '-'r   z'maxsplit' can only be 2rv   r   r   )r   r6   rs   )r\   r   r   r   s       r)   rq   Dist.rsplit\  sp    #:455q=78848LL$,,r$))A,0diiPQlYYq\499Q<//r(   c                 8    U R                   R                  U5      $ rI   )r   
startswith)r\   matchs     r)   r   Dist.startswithd  s    ~~((//r(   c                 N    [        [        U5      5      nXR                  5       ;   $ rI   )rO   r   re   )r\   items     r)   __contains__Dist.__contains__g  s!    /56||~%%r(   c                 "    U R                  5       $ rI   )r   ra   s    r)   r5   Dist.fnk  s    !!r(   r    )NNNNNNNz.tar.bz2rI   )Nr   )5r!   r"   r#   r$   r2   _lazy_validater
   r6   r   r   r   r   r   r	   r   rY   rZ   r[   rb   propertyrf   r`   r_   rm   rs   re   r|   r   r   r   r   classmethodr   r4   staticmethodr   r:   r   r   r   r   r   r   r   r   r   r   rq   r   r   r5   r'   rD   rE   s   @r)   r1   r1   N   s   GN544HGd+I&D

%CD)G.L$/LEDDIHEDDIH
 
0
   ! !   E E S S
W , , 5 5-'N 26 (
 (
T    D 
 
<
,00110
W&
T
00& " "r(   r1   )	metaclassc                     [        U 5      n SU ;   a  U R                  SS5      u  pO[        nU R                  SS5      u  p#nX#XA4$ )Nrv   r   rp   r   )rO   r   r   rq   )dist_strchannel_strr   r   r`   s        r)   dist_str_to_quadr   p  sN    x(Hx (tQ 7X%#??32D5%,,r(   )*__doc__r   loggingr   typingr   rQ   r   auxlib.entityr   r   r	   r
   base.constantsr   r   base.contextr   common.compatr   common.constantsr   
common.urlr   r   r   r6   r   package_infor   recordsr   r!   logr   r+   r%   rO   tuplerR   r1   r   r    r(   r)   <module>r      s    6 	    I I # , # 7 7  % "* 5z 5<3 3 3 5c? _"6X _"D	-r(   