
    $TXg*                     $   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   ee!      Z" G d de      Z# G d de
      Z$d Z%d Z& G d de	e$      Z'd Z(y)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   )Channel)PackageInfo)PackageRecordc                   J    e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   y)DistDetailsnameversionbuild_stringbuild_number	dist_namefmtN)__name__
__module____qualname__str__annotations__     1lib/python3.12/site-packages/conda/models/dist.pyr   r      s"    
ILN	Hr&   r   c                        e Zd Z fdZ xZS )DistTypec                    t        |      dk(  rh|se|d   }|t        j                  v rt        j                  |   S t        |t              r|}nt        |t              r6t        j                  |j                  |j                  j                        }nt        |d      r't        |j                  t              r|j                  }nt        |t              r@t        j                  |j                  j                  |j                  j                        }nIt        |t              r$t        j                  |j                               }nt        j                  |      }|t        j                  |<   |S t!        | D  |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__%   s*   t9>&GE$||E**E4(E=1''HHu}}/K/K (  'Juzz4,HzzE;/'')),,%*]]%A%A (  E7+}}UYY[1''."&DLLK7#T4V44r&   )r    r!   r"   r:   __classcell__r?   s   @r'   r)   r)   $   s    5 5r&   r)   c                 ^    t         D ]#  }| j                  |      s| d t        |        } % | S N)r   endswithr-   )original_distexts     r'   strip_extensionrG   A   s4    '!!#&)+SXI6M ( r&   c                 8    t        |       }|| t        |      d  fS rC   )rG   r-   )rE   strippeds     r'   split_extensionrJ   H   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 )&r.   TF)requirednullable	immutable)rN   c
                 6    t         
|   |||||||||		       y )N)	r3   r   r   r   r   r   base_urlplatformr   )r9   __init__)selfr3   r   r   r   r   r   rP   rQ   r   r?   s             r'   rR   zDist.__init__]   s2     	%% 	 
	
r&   c                     t        | j                  | j                  | j                  | j                  | j
                  | j                        S )N)r3   subdirr   r   buildr   )r   r3   rQ   r   r   r   r   rS   s    r'   to_package_refzDist.to_package_refu   s=    LL==LL##**
 	
r&   c                 "    | j                         S rC   )__str__rW   s    r'   	full_namezDist.full_name   s    ||~r&   c                     | j                   S rC   )r   rW   s    r'   rV   z
Dist.build   s       r&   c                     | j                   S rC   )rQ   rW   s    r'   rU   zDist.subdir   s    }}r&   c                 B    | j                   xs t        | j                  fS rC   )r3   r   r   rW   s    r'   pairz	Dist.pair   s    ||44dnnDDr&   c                     | j                   j                  dd      ddgz   }|d   |d   |d   | j                  xs t        fS )N-r    r   r   )r   rsplitr3   r   )rS   partss     r'   quadz	Dist.quad   sH     %%c1-R8Qxq58T\\-R=RRRr&   c                 h    | j                   r| j                    d| j                   S | j                  S N::r3   r   rW   s    r'   rZ   zDist.__str__   s+    6:ll$,,r$..!12VVr&   c                 8    | j                   j                  d      S )N@)r   rD   rW   s    r'   is_feature_packagezDist.is_feature_package   s    ~~&&s++r&   c                 H    t        | j                  xr | j                        S rC   )boolrP   rQ   rW   s    r'   
is_channelzDist.is_channel   s    DMM3dmm44r&   c                 d    | j                   r| j                  S | j                  | j                  z   S rC   )rl   r   r   )rS   	extensions     r'   to_filenamezDist.to_filename   s(    "">>!>>DHH,,r&   c                 >    dj                  | j                  d d       S )N    )joinre   rW   s    r'   to_matchspeczDist.to_matchspec   s    xx		"1&&r&   c                     ddl m} dj                  | j                  d d       } || j                  r| j                   d|       S |      S )Nr   )	MatchSpec=ru   rh   )
match_specry   rv   re   r3   )rS   ry   bases      r'   to_match_speczDist.to_match_spec   sE    )xx		"1&dllDLL>D62MMMMr&   c           	         t        |      }t        |      r|t        k(  r| j                  |      S |j	                  d      r | d|ddd|      S d}t        j                  ||      j                         \  }}}t        |      \  }}|t        k7  r|}|st        }| j                  |      } | ||j                  |j                  |j                  |j                  ||      S )Nrk   rb   r   )r3   r   r   r   r   r   z8(?:([^\s\[\]]+)::)?([^\s\[\]]+)(?:\[([a-zA-Z0-9_-]+)\])?)r3   r   r   r   r   r   r   )r#   r   r   r7   rD   researchgroupsrJ   r   parse_dist_namer   r   r   r   )	r;   stringr+   	REGEX_STRr3   rE   w_f_dr   dist_detailss	            r'   r1   zDist.from_string   s    V&>.$6<<''??3  ) 	
 )+		)V(D(K(K(M%,];st#&G%G **=9"" ((%22%22#
 	
r&   c                    | }	 t        |       } t        |       \  }}d|v r|j                  dd      d   }n|j                  dd      d   }|j                  dd      }|d   }|d   }t        |      dk\  r|d   nd	}d	j	                  t        d
 |r|j                  d      d   nd            }	|	rt        |	      nd}
t        ||||
||      S #  t        d|       xY w)Nrh   r   /ra   r   r   ru   rb   c                 "    | j                         S rC   )isdigit)xs    r'   <lambda>z&Dist.parse_dist_name.<locals>.<lambda>   s
    aiikr&   _0z(dist_name is not a valid conda package: )	r   rJ   rc   r-   rv   filterintr   r   )r   original_stringno_fmt_stringr   r   rd   r   r   r   build_number_as_stringr   s              r'   r   zDist.parse_dist_name   s    	%f-F!0!8M3 }$)00q9"=	)00a8<	$$S!,E8DAhG'*5zQ58BL%'WW)5A\((-b1s&" ;Q356VWLg|\9c 	:?:KL s   C	C Cc                    t              sJ        t        fdt        D              sdvrt        d d      | j	                        }dv rNj                  dd      d   }t        j                  }|j                  d      d   }t        t        |            }nej                  dd      d   }t        |t        j                        }|r|j                  dd      d   n|}|rt        |      j                  nt        } | ||j                  |j                   |j"                  |j$                  |j&                  |||j(                  	      S )	Nc              3   @   K   | ]  }j                  |        y wrC   )rD   ).0rF   r8   s     r'   	<genexpr>z Dist.from_url.<locals>.<genexpr>  s     J1I#CLL%1Is   rh   zurl 'z' is not a conda packager   r   r   )	r3   r   r   r   r   r   rP   rQ   r   )r   anyr   r   r   rc   r   rU   splitr#   r   r   known_subdirsr4   r   r   r   r   r   r   r   )r;   r8   r   url_no_tarballrQ   rP   r3   s    `     r'   r7   zDist.from_url   s:   c{C{J1IJJC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                     | j                   sy | j                  | j                  z   }| j                  r!t	        | j                   | j                  |      S t	        | j                   |      S rC   )rP   r   r   rQ   r   )rS   filenames     r'   to_urlzDist.to_url  sW    }}>>DHH, }} T]]DMM8<	
 $--2	
r&   c                 2    | j                   | j                  fS rC   ri   rW   s    r'   __key__zDist.__key__(  s    ||T^^++r&   c                 t    t        || j                        sJ | j                         |j                         k  S rC   r0   r?   r   rS   others     r'   __lt__zDist.__lt__+  -    %000||~//r&   c                 t    t        || j                        sJ | j                         |j                         kD  S rC   r   r   s     r'   __gt__zDist.__gt__/  r   r&   c                 t    t        || j                        sJ | j                         |j                         k  S rC   r   r   s     r'   __le__zDist.__le__3  -    %000||~00r&   c                 t    t        || j                        sJ | j                         |j                         k\  S rC   r   r   s     r'   __ge__zDist.__ge__7  r   r&   c                 L    t        | j                         | j                  f      S rC   )hashr   r   rW   s    r'   __hash__zDist.__hash__;  s     T\\^TXX.//r&   c                 t    t        || j                        xr! | j                         |j                         k(  S rC   r   r   s     r'   __eq__zDist.__eq__@  s)    %0VT\\^u}}5VVr&   c                 &    | j                  |       S rC   )r   r   s     r'   __ne__zDist.__ne__C  s    ;;u%%%r&   c                 r    |dk(  sJ | j                   r| j                   | j                  gS | j                  gS rg   ri   )rS   sepmaxsplits      r'   r   z
Dist.splitH  s3    d{{15dnn-SDNNCS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 )Nra   r   rh   r   r   )r3   re   )rS   r   r   r   s       r'   rc   zDist.rsplitL  sd    czz1}}48LL$,,r$))A,0diiPQlTYYq\499Q<//r&   c                 8    | j                   j                  |      S rC   )r   
startswith)rS   matchs     r'   r   zDist.startswithR  s    ~~((//r&   c                 N    t        t        |            }|| j                         v S rC   )rG   r   rZ   )rS   items     r'   __contains__zDist.__contains__U  s#    /56t||~%%r&   c                 "    | j                         S rC   )rr   rW   s    r'   r2   zDist.fnY  s    !!r&   )NNNNNNNz.tar.bz2rC   )Nr   )3r    r!   r"   r/   _lazy_validater
   r3   r   r   r   r   r   r	   r   rP   rQ   rR   rX   propertyr[   rV   rU   r_   re   rZ   rl   ro   rr   rw   r}   classmethodr   r1   staticmethodr   r7   r   r   r   r   r   r   r   r   r   r   rc   r   r   r2   r@   rA   s   @r'   r.   r.   M   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&   r.   )	metaclassc                     t        |       } d| v r| j                  dd      \  }} nt        }| j                  dd      \  }}}||||fS )Nrh   r   ra   r   )rG   r   r   rc   )dist_strchannel_strr   r   rV   s        r'   dist_str_to_quadr   ^  sT    x(Hx (tQ 7X%#??32D'5%,,r&   ))__doc__r   loggingr   typingr   rb   r   auxlib.entityr   r   r	   r
   base.constantsr   r   r   base.contextr   common.compatr   common.constantsr   
common.urlr   r   r   r3   r   package_infor   recordsr   r    logr   r)   rG   rJ   r.   r   r%   r&   r'   <module>r      s    6 	    I I 
 # , # 7 7  % "* 5z 5:4
N"6X N"b-r&   