
    DIe+                     t   d 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	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 ddlmZ ddl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"  ee#          Z$ G d de          Z% ej&        ddde"d            G d de
          Z'd Z(d Z) G d de	e'          Z*d  Z+dS )!z/(Legacy) Low-level implementation of a Channel.    N)	getLogger)
NamedTuple   )
CondaError)Entity
EntityTypeIntegerFieldStringField)CONDA_PACKAGE_EXTENSIONSDEFAULTS_CHANNEL_NAMEUNKNOWN_CHANNEL)context)ensure_text_type)NULL)has_platformis_urljoin_url)
deprecated   )Channel)PackageInfo)PackageRecordc                   L    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   dS )DistDetailsnameversionbuild_stringbuild_number	dist_namefmtN)__name__
__module____qualname__str__annotations__     1lib/python3.11/site-packages/conda/models/dist.pyr   r      sL         
IIILLLNNN	HHHHHr'   r   z24.3z24.9IndexRecordz1Use `conda.models.records.PackageRecord` instead.)addendumc                        e Zd Z fdZ xZS )DistTypec                 2   t          |          dk    rj|sg|d         }|t          j        v rt          j        |         S t          |t                    r|}nt          |t                    r,t                              |j        |j        j                  }nt          |d          r"t          |j
        t                    r|j
        }nt          |t                    r1t                              |j        j        |j        j                  }n\t          |t                    r-t                              |                                          }nt                              |          }|t          j        |<   |S  t!                      j        |i |S )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=   zDistType.__call__.   sj   t99>>&>GE$$|E**E4(( /E=11 /''Hu}/K (   '' 
/Juz4,H,H 
/zE;// /''),%*]%A (   E7++ /}}UYY[[11''.."&DLK#577#T4V444r'   )r!   r"   r#   r=   __classcell__rB   s   @r(   r,   r,   -   s8        5 5 5 5 5 5 5 5 5r'   r,   c                 t    t           D ]/}|                     |          r| d t          |                    } 0| S N)r   endswithr0   )original_distexts     r(   strip_extensionrJ   J   sD    ' 7 7!!#&& 	7)+SXXI+6Mr'   c                 R    t          |           }|| t          |          d          fS rF   )rJ   r0   )rH   strippeds     r(   split_extensionrM   Q   s)    }--H]3x==??333r'   c                       e Zd Zi ZdZ eddd          Z ed          Z ed          Z ed          Z	 ed          Z
 ed          Z ed          Z eddd          Z eddd          Z	 	 	 	 	 	 	 	 d& fd	Zd Zed	             Zed
             Zed             Zed             Zed             Zd Zed             Zed             Zd'dZd Zd Zeefd            Z e!d             Z"ed             Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d(d!Z-d(d"Z.d# Z/d$ Z0ed%             Z1 xZ2S ))r1   TF)requirednullable	immutable)rQ   N.tar.bz2c
                 \    t                                          |||||||||		  	         d S )N)	r6   r   r   r   r   r   base_urlplatformr    )r<   __init__)selfr6   r   r   r   r   r   rT   rU   r    rB   s             r(   rV   zDist.__init__f   sK     	%% 	 
	
 
	
 
	
 
	
 
	
r'   c                 h    t          | j        | j        | j        | j        | j        | j                  S )N)r6   subdirr   r   buildr   )r   r6   rU   r   r   r   r   rW   s    r(   to_package_refzDist.to_package_ref~   s9    L=L#*
 
 
 	
r'   c                 *    |                                  S rF   )__str__r[   s    r(   	full_namezDist.full_name   s    ||~~r'   c                     | j         S rF   )r   r[   s    r(   rZ   z
Dist.build   s      r'   c                     | j         S rF   )rU   r[   s    r(   rY   zDist.subdir   s
    }r'   c                 ,    | j         pt          | j        fS rF   )r6   r   r   r[   s    r(   pairz	Dist.pair   s    |44dnDDr'   c                     | j                             dd          ddgz   }|d         |d         |d         | j        pt          fS )N-r    r   r   )r   rsplitr6   r   )rW   partss     r(   quadz	Dist.quad   sG     %%c1--R8Qxq58T\-R=RRRr'   c                 @    | j         r| j          d| j         n| j        S N::r6   r   r[   s    r(   r^   zDist.__str__   s(    6:lV$,22$.222Vr'   c                 6    | j                             d          S )N@)r   rG   r[   s    r(   is_feature_packagezDist.is_feature_package   s    ~&&s+++r'   c                 8    t          | j        o| j                  S rF   )boolrT   rU   r[   s    r(   
is_channelzDist.is_channel   s    DM3dm444r'   c                 <    | j         r| j        S | j        | j        z   S rF   )rp   r   r    )rW   	extensions     r(   to_filenamezDist.to_filename   s$    " 	->!>DH,,r'   c                 F    d                     | j        d d                   S )N    )joinri   r[   s    r(   to_matchspeczDist.to_matchspec   s    xx	"1"&&&r'   c                     ddl m} d                    | j        d d                   } || j        r| j         d| n|          S )Nr   )	MatchSpec=ry   rl   )
match_specr}   rz   ri   r6   )rW   r}   bases      r(   to_match_speczDist.to_match_spec   s[    ))))))xx	"1"&&ydlLDL22D222MMMr'   c           	         t          |          }t          |          r |t          k    r|                     |          S |                    d          r | d|ddd|          S d}t          j        ||                                          \  }}}t          |          \  }}|t          k    r|}|st          }| 
                    |          } | ||j        |j        |j        |j        ||          S )Nro   rf   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:   rG   researchgroupsrM   r   parse_dist_namer   r   r   r   )	r>   stringr.   	REGEX_STRr6   rH   w_f_dr    dist_detailss	            r(   r4   zDist.from_string   s%   V&>> 	(.$66<<'''??3 	3    ) 	
 )+	)V(D(D(K(K(M(M%,];;st##&G 	&%G **=99s" (%2%2#
 
 
 	
r'   c                 H   | }	 t          |           } t          |           \  }}d|v r|                    dd          d         }n|                    dd          d         }|                    dd          }|d         }|d         }t          |          dk    r|d         nd	}d	                    t          d
 |r|                    d          d         nd                    }	|	rt          |	          nd}
t          ||||
||          S #  t          d|z            xY w)Nrl   r   /re   r   r   ry   rf   c                 *    |                                  S rF   )isdigit)xs    r(   <lambda>z&Dist.parse_dist_name.<locals>.<lambda>   s    aiikk r'   _0z*dist_name is not a valid conda package: %s)	r   rM   rg   r0   rz   filterintr   r   )r   original_stringno_fmt_stringr    r   rh   r   r   r   build_number_as_stringr   s              r(   r   zDist.parse_dist_name   sU    	%f--F!0!8!8M3 }$$)00q99"=		)00a88<	$$S!,,E8DAhG'*5zzQ588BL%'WW))5AJ\((--b11s & &" ;QW35666VWLg|\9c  	<N  s   DD D!c                    t                    s
J             t          fdt          D                       sdvrt          dz            |                               }dv r`                    dd          d         }t          j        }|                    d          d         }t          t          |                    }ns                    dd          d         }t          |t          j                  }|r|                    dd          d         n|}|rt          |          j        nt          } | ||j        |j        |j        |j        |j        |||j        	  	        S )Nc              3   B   K   | ]}                     |          V  d S rF   )rG   ).0rI   r;   s     r(   	<genexpr>z Dist.from_url.<locals>.<genexpr>
  s/      JJ#CLL%%JJJJJJr'   rl   zurl '%s' is not a conda packager   r   r   )	r6   r   r   r   r   r   rT   rU   r    )r   anyr   r   r   rg   r   rY   splitr$   r   r   known_subdirsr7   r   r   r   r   r   r   r    )r>   r;   r   url_no_tarballrU   rT   r6   s    `     r(   r:   zDist.from_url  sy   c{{CJJJJ1IJJJJJ	FC>DEEE**3//3;; ZZa003N~H%++D11!4H'(++,,GG ZZQ//2N#NG4IJJH;CW~,,S!44Q77H:BWgh''66Gs" (%2%2", 

 

 

 
	
r'   c                     | j         sd S | j        | j        z   }| j        rt	          | j         | j        |          nt	          | j         |          S rF   )rT   r   r    rU   r   )rW   filenames     r(   to_urlzDist.to_url'  sT    } 	4>DH, }3HT]DM8<<<$-22	
r'   c                     | j         | j        fS rF   rm   r[   s    r(   __key__zDist.__key__1  s    |T^++r'   c                     t          || j                  sJ |                                 |                                k     S rF   r3   rB   r   rW   others     r(   __lt__zDist.__lt__4  5    %00000||~~//r'   c                     t          || j                  sJ |                                 |                                k    S rF   r   r   s     r(   __gt__zDist.__gt__8  r   r'   c                     t          || j                  sJ |                                 |                                k    S rF   r   r   s     r(   __le__zDist.__le__<  5    %00000||~~00r'   c                     t          || j                  sJ |                                 |                                k    S rF   r   r   s     r(   __ge__zDist.__ge__@  r   r'   c                 R    t          |                                 | j        f          S rF   )hashr   r    r[   s    r(   __hash__zDist.__hash__D  s!     T\\^^TX.///r'   c                     t          || j                  o)|                                 |                                k    S rF   r   r   s     r(   __eq__zDist.__eq__I  s.    %00VT\\^^u}}5VVr'   c                 .    |                      |           S rF   )r   r   s     r(   __ne__zDist.__ne__L  s    ;;u%%%%r'   r   c                 L    |dk    sJ | j         r| j         | j        gn| j        gS rk   rm   )rW   sepmaxsplits      r(   r   z
Dist.splitQ  s/    d{{{{15Sdn--DNCSSr'   c                     |dk    sJ |dk    sJ | j         r| j          d| j        d          n| j        d         }|| j        d         | j        d         fS )Nre   r   rl   r   r   )r6   ri   )rW   r   r   r   s       r(   rg   zDist.rsplitU  sc    czzzz1}}}}48LR$,00$)A,000diPQlTYq\49Q<//r'   c                 6    | j                             |          S rF   )r   
startswith)rW   matchs     r(   r   zDist.startswith[  s    ~((///r'   c                 f    t          t          |                    }||                                 v S rF   )rJ   r   r^   )rW   items     r(   __contains__zDist.__contains__^  s+    /5566t||~~%%r'   c                 *    |                                  S rF   )rv   r[   s    r(   r5   zDist.fnb  s    !!!r'   )NNNNNNNrR   rF   )Nr   )3r!   r"   r#   r2   _lazy_validater
   r6   r   r   r    r   r   r	   r   rT   rU   rV   r\   propertyr_   rZ   rY   rc   ri   r^   rp   rs   rv   r{   r   classmethodr   r4   staticmethodr   r:   r   r   r   r   r   r   r   r   r   r   rg   r   r   r5   rC   rD   s   @r(   r1   r1   V   ss       GNk544HHHGd+++I;&&&D
+
%
%
%CkD)))G;...L<$///L{EDDIIIH{EDDIIIH
 
 
 
 
 
 
0
 
 
   X ! ! X!   X E E XE S S XS
W W W , , X, 5 5 X5- - - -' ' 'N N N 26 (
 (
 (
 [(
T     \ D 
 
 [
@
 
 
, , ,0 0 00 0 01 1 11 1 10 0 0
W W W& & &
T T T T0 0 0 00 0 0& & & " " X" " " " "r'   r1   )	metaclassc                     t          |           } d| v r|                     dd          \  }} nt          }|                     dd          \  }}}||||fS )Nrl   r   re   r   )rJ   r   r   rg   )dist_strchannel_strr   r   rZ   s        r(   dist_str_to_quadr   g  sb    x((Hx (tQ 7 7XX%#??322D'5%,,r'   ),__doc__r   loggingr   typingr   rf   r   auxlib.entityr   r   r	   r
   base.constantsr   r   r   base.contextr   common.compatr   common.constantsr   
common.urlr   r   r   deprecationsr   r6   r   package_infor   recordsr   r!   logr   constantr,   rJ   rM   r1   r   r&   r'   r(   <module>r      sB   6 5 				                   I I I I I I I I I I I I         
 # " " " " " , , , , , , # # # # # # 7 7 7 7 7 7 7 7 7 7 % % % % % %       % % % % % % " " " " " "i    *    
 

@   5 5 5 5 5z 5 5 5:  4 4 4
N" N" N" N" N"6X N" N" N" N"b- - - - -r'   