
    si                        S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	  SSK
Jr  \" \5      rS rS	 rS
 rSS jrS r\R&                  " S5      rSSS jjrS rg)z&Common Python specific path utilities.    )annotationsN)	getLogger)joinsplitsplitext   )on_winc                    UR                  SS5      nUR                  S5      (       a  U S-   $ [        U 5      u  p4[        U5      u  pVSU SU U S3-   nU(       a  SR	                  USU5      $ U$ )	z
This must not return backslashes on Windows as that will break
tests and leads to an eventual need to make url_to_path return
backslashes too and that may end up changing files on disc or
to the result of comparisons with the contents of them.
. 2cz__pycache__/z	.cpython-z{}{}{}/)replace
startswithr   r   format)py_pathpython_major_minor_versionpyver_string	directorypy_filebasename_root	extensionpyc_files           8lib/python3.13/site-packages/conda/common/path/python.pypyc_pathr      s     .55c2>Ls##}"7^	#+G#4 ]O9\N9+UV"WW 	 =Fxy#x8S8S    c                ^   ^ ^ S T 5       nU 4S jU 5       n[        U4S jU 5       5      nU$ )Nc              3  T   #    U  H  oR                  S 5      (       d  M  Uv   M      g7f)z.pyN)endswith).0fs     r   	<genexpr>$missing_pyc_files.<locals>.<genexpr>%   s     65aJJu$55s   (	(c              3  >   >#    U  H  o[        UT5      4v   M     g 7fN)r   )r!   r   r   s     r   r#   r$   &   s       PXW(7$>?@PXs   c              3  <   >#    U  H  oS    T;  d  M  Uv   M     g7f)   N )r!   matchfiless     r   r#   r$   )   s     KkU1XU5J55ks   	)tuple)r   r+   py_filespyc_matchesresults   ``   r   missing_pyc_filesr0   #   s3    656HPXK KkKKFMr   c                    U R                  SS5      u  pUR                  SS5      u  p4UR                  5       UR                  5       UR                  5       p$nX4U4$ )N:r(   =)rsplitstrip)ep_definitioncmd_modfunccommandmodules        r   parse_entry_point_defr;   -   sP    !((a0MGnnS!,OG#MMOV\\^TZZ\TGD  r   c                    [         (       a  gU (       a  SU ;  a  SR                  U 5      n [        SSU =(       d    S-  5      $ )Nz
python.exer   binzpython%sr   )r	   r   )python_versions    r   get_python_short_pathr?   4   s9    v#^3.1z^%9r:;;r   c                D    U c  g [         (       a  g[        U 5      nSU S3$ )NzLib/site-packages
lib/pythonz/site-packages)r	   get_major_minor_version)r>   py_vers     r   #get_python_site_packages_short_pathrD   <   s,    	"(8F8>22r   z[0-9]+\.[0-9]+c                \   [        U [        5      (       d  [        S5      eU R                  S5      (       a?  U R	                  S5      S   n[        S5      n[        U5      US-   :  a  g X#   X#S-   S  4nGO
U R                  S5      (       a[  U R	                  S5      S   n[        S5      n[        U5      US-   :  a  g X#S-      S	:X  d  [        S
US-    S	35      eX#   X#S-   S  4nO[        R                  U 5      nU(       a+  UR                  S5      R	                  S	5      nUS   US   4nORSR                  U  Vs/ s H  owR                  5       (       d  M  UPM     sn5      n[        U5      S:  a  g US   USS  4nU(       a  S	R                  U5      $ SR                  U5      $ s  snf )NzArgument must be a string.rA   r   r(   pythonr   z
bin/python   r   z<Unrecognized version component. Expected period at position r   r   )
isinstancestr	TypeErrorr   r   len
ValueError_VERSION_REGEXr*   groupr   isdigit)	stringwith_dot	pythonstrstartmaj_minr*   versionr   digitss	            r   rB   rB   I   s    fc""455&&LL%a(	Hy>EAI%"Iaik$::			<	(	(LL%a(	Hy>EAI%#s*NuWXykYZ[  "Iaik$::$$V,kk!n**3/Gaj'!*,GWW?A99;a?@F6{QQi+G (388G>bggg.>> @s   =F)F)c                    U R                  S5      (       a  UnU R                  SUS5      $ U R                  S5      (       a  SSKJn  U R                  SUS5      $ U $ )Nzsite-packages/zsite-packagesr(   zpython-scripts/)BIN_DIRECTORYzpython-scripts)r   r   r   rX   )source_short_pathtarget_site_packages_short_pathsp_dirrX   s       r   get_python_noarch_target_pathr\   q   s_    ##$4550 ((&!DD		%	%&7	8	8# (()9=!LL  r   r&   )T)rP   rI   returnrI   )__doc__
__future__r   reloggingr   os.pathr   r   r   compatr	   __name__logr   r0   r;   r?   rD   compilerM   rB   r\   r)   r   r   <module>rg      s\    - " 	  ) ) T&!<3 -.%?P	!r   