
    wBf+                     ^   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jL                  ddde"d        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)
deprecated   )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   z24.3z24.9IndexRecordz1Use `conda.models.records.PackageRecord` instead.)addendumc                        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__rB   s   @r(   r,   r,   .   s    5 5r'   r,   c                 ^    t         D ]#  }| j                  |      s| d t        |        } % | S N)r   endswithr0   )original_distexts     r(   strip_extensionrJ   K   s9    ' 7!!#&)+SXI6M7 r'   c                 8    t        |       }|| t        |      d  fS rF   )rJ   r0   )rH   strippeds     r(   split_extensionrM   R   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   c
                 6    t         
|   |||||||||		       y )N)	r6   r   r   r   r   r   base_urlplatformr    )r<   __init__)selfr6   r   r   r   r   r   rS   rT   r    rB   s             r(   rU   zDist.__init__g   s2     	%% 	 
	
r'   c                     t        | j                  | j                  | j                  | j                  | j
                  | j                        S )N)r6   subdirr   r   buildr   )r   r6   rT   r   r   r   r   rV   s    r(   to_package_refzDist.to_package_ref   s=    LL==LL##**
 	
r'   c                 "    | j                         S rF   )__str__rZ   s    r(   	full_namezDist.full_name   s    ||~r'   c                     | j                   S rF   )r   rZ   s    r(   rY   z
Dist.build   s       r'   c                     | j                   S rF   )rT   rZ   s    r(   rX   zDist.subdir   s    }}r'   c                 B    | j                   xs t        | j                  fS rF   )r6   r   r   rZ   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   rsplitr6   r   )rV   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::r6   r   rZ   s    r(   r]   zDist.__str__   s+    6:ll$,,r$..!12VVr'   c                 8    | j                   j                  d      S )N@)r   rG   rZ   s    r(   is_feature_packagezDist.is_feature_package   s    ~~&&s++r'   c                 H    t        | j                  xr | j                        S rF   )boolrS   rT   rZ   s    r(   
is_channelzDist.is_channel   s    DMM3dmm44r'   c                 d    | j                   r| j                  S | j                  | j                  z   S rF   )ro   r   r    )rV   	extensions     r(   to_filenamezDist.to_filename   s(    "">>!>>DHH,,r'   c                 >    dj                  | j                  d d       S )N    )joinrh   rZ   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=rx   rk   )
match_specr|   ry   rh   r6   )rV   r|   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 )Nrn   re   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<<''??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|z        xY w)Nrk   r   /rd   r   r   rx   re   c                 "    | j                         S rF   )isdigit)xs    r(   <lambda>z&Dist.parse_dist_name.<locals>.<lambda>   s    aiik r'   _0z*dist_name is not a valid conda package: %s)	r   rM   rf   r0   ry   filterintr   r   )r   original_stringno_fmt_stringr    r   rg   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 	<N s   C	C Cc                    t              sJ        t        fdt        D              sdvrt        dz        | 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rF   )rG   ).0rI   r;   s     r(   	<genexpr>z Dist.from_url.<locals>.<genexpr>  s     J#CLL%Js   rk   zurl '%s' is not a conda packager   r   r   )	r6   r   r   r   r   r   rS   rT   r    )r   anyr   r   r   rf   r   rX   splitr$   r   r   known_subdirsr7   r   r   r   r   r   r   r    )r>   r;   r   url_no_tarballrT   rS   r6   s    `     r(   r:   zDist.from_url  s6   c{C{J1IJJC>DEE**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 rF   )rS   r   r    rT   r   )rV   filenames     r(   to_urlzDist.to_url(  sW    }}>>DHH, }} T]]DMM8<	
 $--2	
r'   c                 2    | j                   | j                  fS rF   rl   rZ   s    r(   __key__zDist.__key__2  s    ||T^^++r'   c                 t    t        || j                        sJ | j                         |j                         k  S rF   r3   rB   r   rV   others     r(   __lt__zDist.__lt__5  -    %000||~//r'   c                 t    t        || j                        sJ | j                         |j                         kD  S rF   r   r   s     r(   __gt__zDist.__gt__9  r   r'   c                 t    t        || j                        sJ | j                         |j                         k  S rF   r   r   s     r(   __le__zDist.__le__=  -    %000||~00r'   c                 t    t        || j                        sJ | j                         |j                         k\  S rF   r   r   s     r(   __ge__zDist.__ge__A  r   r'   c                 L    t        | j                         | j                  f      S rF   )hashr   r    rZ   s    r(   __hash__zDist.__hash__E  s     T\\^TXX.//r'   c                 t    t        || j                        xr! | j                         |j                         k(  S rF   r   r   s     r(   __eq__zDist.__eq__J  s)    %0VT\\^u}}5VVr'   c                 &    | j                  |       S rF   )r   r   s     r(   __ne__zDist.__ne__M  s    ;;u%%%r'   c                 r    |dk(  sJ | j                   r| j                   | j                  gS | j                  gS rj   rl   )rV   sepmaxsplits      r(   r   z
Dist.splitR  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 )Nrd   r   rk   r   r   )r6   rh   )rV   r   r   r   s       r(   rf   zDist.rsplitV  sd    czz1}}48LL$,,r$))A,0diiPQlTYYq\499Q<//r'   c                 8    | j                   j                  |      S rF   )r   
startswith)rV   matchs     r(   r   zDist.startswith\  s    ~~((//r'   c                 N    t        t        |            }|| j                         v S rF   )rJ   r   r]   )rV   items     r(   __contains__zDist.__contains___  s#    /56t||~%%r'   c                 "    | j                         S rF   )ru   rZ   s    r(   r5   zDist.fnc  s    !!r'   )NNNNNNNz.tar.bz2rF   )Nr   )3r!   r"   r#   r2   _lazy_validater
   r6   r   r   r    r   r   r	   r   rS   rT   rU   r[   propertyr^   rY   rX   rb   rh   r]   ro   rr   ru   rz   r   classmethodr   r4   staticmethodr   r:   r   r   r   r   r   r   r   r   r   r   rf   r   r   r5   rC   rD   s   @r(   r1   r1   W   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                     t        |       } d| v r| j                  dd      \  }} nt        }| j                  dd      \  }}}||||fS )Nrk   r   rd   r   )rJ   r   r   rf   )dist_strchannel_strr   r   rY   s        r(   dist_str_to_quadr   h  sT    x(Hx (tQ 7X%#??32D'5%,,r'   ),__doc__r   loggingr   typingr   re   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      s    6 	    I I 
 # , # 7 7 %  % "*  
  

@5z 5:4
N"6X N"b-r'   