+
    :1j                       R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ R	IHtHtHt ^ R
IHt ^ RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RI!H"t" ^RI#H$t$ ^RI%H&t&H't'H(t( ^RI)H*t* ^RI+H,t,H-t- ^RI.H/t/H0t0 ^RI1H2t2H3t3 ^RI4H5t5 ^RI6H7t7H8t8 ]'       d   ^ RIH9t9 ]! ]:4      t;R t<R t=R R lt>R t?R t@R  tAR! tBR" tCR# tDR$ tER% tFR& tGR' tHR# )(z@Disk utility functions for reading and processing file contents.)annotationsN)	b64encode)
namedtuple)ENOENT)partial)chain)	getLogger)isdirisfilejoin)Path)TYPE_CHECKING)first)shlex_split_unicode)dals)PREFIX_PLACEHOLDER)	open_utf8)json)CondaUpgradeErrorCondaVerificationErrorPathNotFoundError)Channel)FileModePathEnum)PackageInfoPackageMetadata)
PathDataV1	PathsData)TemporaryDirectory)islinklexists)Literalc                N    \        R  \        P                  ! V 4       4       4      # )c              3  8   "   T F  qP                   x  K  	  R # 5iN)name).0entrys   & 8lib/python3.14/site-packages/conda/gateways/disk/read.py	<genexpr><lambda>.<locals>.<genexpr>&   s     ?   )listosscandir)ds   &r(   <lambda>r0   &   s    D?A??    c              #    "    \        V 4      p V P                  4       ;_uu_ 4       pV F:  pVP                  4       pV'       g   K  VP                  R4      '       d   K6  Vx  K<  	  RRR4       R#   + '       g   i     R# ; i  \         d     R# \
         d"   pTP                  \        8X  d    Rp?R# h Rp?ii ; i5i)zGenerator function for lines in file.  Empty generator if path does not exist.

Args:
    path (str): path to file

Returns:
    iterator: each line in file, not starting with '#'

#N)r   openstrip
startswithFileNotFoundErrorOSErrorerrnor   )pathflinees   &   r(   yield_linesr>   )   s     DzYY[[Azz|4 4 4J  [[[
   77f	su   C#B A2A2 A2(B 0C2B	=B CB B?CB?B?B:3C9B::B??Cc               $    V ^8  d   QhRRRRRR/# )   r:   zstr | os.PathLikealgozLiteral['md5', 'sha256']returnstr )formats   "r(   __annotate__rF   C   s#     
 
' 
/G 
C 
r1   c                   \        V 4      p V P                  4       '       g   \        V 4      h\        P                  ! V4      pV P                  R 4      ;_uu_ 4       p\        \        VP                  R4      R4       F  pVP                  V4       K  	  RRR4       VP                  4       #   + '       g   i     TP                  4       # ; i)rbi    r1   N)r   is_filer   hashlibnewr4   iterr   readupdate	hexdigest)r:   rA   hasherfhchunks   &&   r(   compute_sumrS   C   s    :D<<>>%% [[F	4B'"''40#6EMM%  7 
  
 s   9B--C	c                    VP                   p\        V4      p\        V4      p\        V4      p\	        TVP
                  \        V P                  ;'       g    V P                  4      V VP                  VVVR 7      # ))extracted_package_dirpackage_tarball_full_pathchannelrepodata_recordurlicondatapackage_metadata
paths_data)
rU   read_icondataread_package_metadataread_paths_jsonr   rV   r   channel_namerW   rY   )recordpackage_cache_recordepdrZ   r[   r\   s   &&    r(   read_package_inford   U   st    

4
4CS!H,S1 %J!"6"P"P++==v~~> $$)	 	r1   c                    \        \        V R R4      4      ;_uu_ 4       p\        P                  ! V4      uuRRR4       #   + '       g   i     R# ; i)info
index.jsonNr   r   r   loadextracted_package_directoryfis   & r(   read_index_jsonrm   g   s4    	43V\J	K	Kryy} 
L	K	K	K   A  A	c           	     D   ^ RI p\        4       ;_uu_ 4       pVP                  P                  WR4       \	        \        VRR4      4      ;_uu_ 4       p\        P                  ! V4      pRRR4       RRR4       X#   + '       g   i     L; i  + '       g   i     X# ; i)    Nrf   rg   )conda_package_handling.apir   apiextractr   r   r   ri   )rV   conda_package_handlingtmpdirr;   	json_datas   &    r(   read_index_json_from_tarballrw   l   sv    %			""**+DfUtFFL9::a		!I ; 
  ;: 
	 s#   ;BA;	)B;BBB	c                    \        \        V R R4      4      ;_uu_ 4       p\        P                  ! V4      uuRRR4       #   + '       g   i     R# ; i)rf   zrepodata_record.jsonNrh   rj   s   & r(   read_repodata_jsonry   v   s@    	(&2HI
 
	yy}
 
 
 
rn   c                    \        V R R4      p\        V4      '       dH   \        VR4      ;_uu_ 4       pVP                  4       pRRR4       \	        X4      P                  R4      # R#   + '       g   i     L,; i)rf   zicon.pngrH   Nzutf-8)r   r
   r   rM   r   decode)rk   icon_file_pathr;   datas   &   r(   r]   r]   }   s\    5vzJNn~t,,668D -%%g..	 -,s   A((A8	c                f  a  V 3R  lp\        V! 4       \        R7      pV'       g   R# \        V4      ;_uu_ 4       p\        P                  ! VP                  4       4      pVP                  R4      ^8w  d   \        \        R4      4      h RRR4       \        R/ XB pV#   + '       g   i     L; i)c               3  L   <"   \        S R R4      x  \        S R R4      x  R# 5i)rf   z	link.jsonzpackage_metadata.jsonN)r   )rk   s   r(   _paths%read_package_metadata.<locals>._paths   s'     .DD.8OPPs   !$)keyNpackage_metadata_versionz
                The current version of conda is too old to install this package. (This version
                only supports link.json schema version 1.)  Please update conda to install
                this package.
                rD   )
r   r
   r   r   loadsrM   getr   r   r   )rk   r   r:   r;   r}   r[   s   f     r(   r^   r^      s    Q v&Dt__::affh'Dxx23q8'  9  +2T2 _s   AB  B0	c                  a aaa	 \        S R 4      o\        SR4      p\        V4      '       dz   \        V4      ;_uu_ 4       p\        P                  ! V4      pRRR4       XP                  R4      ^8w  d   \        \        R4      4      h\        ^R VR,           4       R7      pV# \        \        SR4      4      o\        S4      o	V VVV	3R	 lp\        V! 4       4      p\        ^ VR7      pV#   + '       g   i     L; i)
rf   z
paths.jsonNpaths_versionz
            The current version of conda is too old to install this package. (This version
            only supports paths.json schema version 1.)  Please update conda to install
            this package.c              3  8   "   T F  p\        R/ VB x  K  	  R # 5i)NrD   )r   )r&   r;   s   & r(   r)   "read_paths_json.<locals>.<genexpr>   s     :Mq:??Mr+   paths)r   r   
has_prefixc               3    <"   \        SR 4      p R R \        V 4       4        4        F  pRV/pVSP                  4       9   d'   SV,          ^ ,          VR&   SV,          ^,          VR&   VS9   d   RVR&   \        \        SV4      4      '       d   \        P
                  VR&   M\        P                  VR&   \        R
/ VB x  K  	  R	# 5i)filesc              3  8   "   T F  q'       g   K  Vx  K  	  R # 5ir$   rD   )r&   lns   & r(   r)   ;read_paths_json.<locals>.read_files_file.<locals>.<genexpr>   s      OrSUOs   	
c              3  @   "   T F  qP                  4       x  K  	  R # 5ir$   r5   )r&   r<   s   & r(   r)   r      s     O7Ntjjll7Ns   _pathprefix_placeholder	file_modeTno_link	path_typeNrD   )r   r>   keysr   r   softlinkhardlinkr   )
files_pathr;   	path_infork   has_prefix_filesinfo_dirr   s      r(   read_files_file(read_paths_json.<locals>.read_files_file   s     h0JO{:7NO %aL	(--//6Fq6I!6LI23-=a-@-CIk*<+/Ii($:A>??-5->->Ik*-5->->Ik* -9--s   C	C)r   r
   r   r   ri   r   r   r   r   read_has_prefixread_no_linktuple)
rk   paths_json_path
paths_jsonr}   r\   r   r   r   r   r   s
   f      @@@r(   r_   r_      s    /8H8\2Oo'':99Z(D (88O$)#  :DM:

< 3 +4,+GHx(	. 	." o'(

 S ('s   C//C?	c                   a aa \        RR4      oVV 3R loV3R l\        S 4       4       pV Uu/ uF%  q"P                  VP                  VP                  3bK'  	  up# u upi )zReads `has_prefix` file and return dict mapping filepaths to tuples(placeholder, FileMode).

A line in `has_prefix` contains one of:
  * filepath
  * placeholder mode filepath

Mode values are one of:
  * text
  * binary
ParseResultc                z  < \         ;QJ d    . R  \        V RR7       4       F  NK  	  5M! R  \        V RR7       4       4      p\        V4      ^8X  d$   S! \        \        P
                  V^ ,          4      # \        V4      ^8X  d)   S! V^ ,          \	        V^,          4      V^,          4      # \        RS 24      h)c              3  B   "   T F  qP                  R 4      x  K  	  R# 5i)z"'Nr   )r&   xs   & r(   r)   6read_has_prefix.<locals>.parse_line.<locals>.<genexpr>   s     U.Tggenn.Ts   F)posixz!Invalid has_prefix file at path: )r   r   lenr   r   textr   )r<   partsr   r:   s   & r(   
parse_line#read_has_prefix.<locals>.parse_line   s    U.A$e.TUU.A$e.TUUu:?18==%(KKZ1_uQx%();U1XFF(+LTF)STTr1   c              3  4   <"   T F  pS! V4      x  K  	  R # 5ir$   rD   )r&   r<   r   s   & r(   r)   "read_has_prefix.<locals>.<genexpr>   s     C1BJt$$1Bs   )placeholderfilemodefilepath)r   r>   r   r   r   )r:   parsed_linesprr   r   s   f  @@r(   r   r      sV     ],STKU DT1BCLAMN2KK".."++66NNNs   +Ac                x    \        \        \        \        V R 4      4      \        \        V R4      4      4      4      # )r   no_softlink)setr   r>   r   )r   s   &r(   r   r      s5    Xy12X}56	
 r1   c                h   a  \         ;QJ d    . V 3R  lV 4       F  NK  	  5# ! V 3R  lV 4       4      # )c              3  b   <"   T F$  p\        \        SV4      4      '       g   K   Vx  K&  	  R # 5ir$   )r   r   )r&   r;   rk   s   & r(   r)   "read_soft_links.<locals>.<genexpr>   s"     REqVD1La,P%QEs   /
/)r   )rk   r   s   f&r(   read_soft_linksr      s%    5RER5R5RERRRr1   )I__doc__
__future__r   rJ   r-   base64r   collectionsr   r9   r   	functoolsr   	itertoolsr   loggingr   os.pathr	   r
   r   pathlibr   typingr   auxlib.collectionr   auxlib.compatr   
auxlib.ishr   base.constantsr   common.compatr   common.serializer   
exceptionsr   r   r   models.channelr   models.enumsr   r   models.package_infor   r   models.recordsr   r   creater   linkr   r    r!   __name__loglistdirr>   rS   rd   rm   rw   ry   r]   r^   r_   r   r   r   rD   r1   r(   <module>r      s    G "  	  "     ' '    & 0  0 & $ V V % . ? 3 & !
?4
$$
 2-`O6Sr1   