
    <Bh<                       S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSK	J
r
JrJrJrJrJr  SSKJr  SSKJr  SS	KJr  S
SKJr  S
SKJr  SSKJr  SSKJrJrJrJ r   SSK!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)  SSK*J+r+J,r,J-r-J.r.J/r/  \(       a%  SSK0J1r1  SSKJ2r2  \2\3\Rh                  \3   4   r5\1\5   r6/ SQr7\" \85      r9Sr:Sr;\Rx                  " SSS\"SS9  C"S r=S r>S r?\S  5       r@\(       a  S!OS"rA\" SSS#S9S$ 5       rBS/S% jrC\" SS5      S& 5       rD\" SS5      S' 5       rES( rFS) rG\Rx                  " SSS*\S+S9  CS0S, jrHS- rIS1S. jrJg)2zCommon path utilities.    )annotationsN)cache)	getLogger)abspathbasename
expanduser
expandvarsnormcasesplit)which)TYPE_CHECKING)urlsplit   )
CondaError)
deprecated   )on_win   )explode_directoriesget_all_directoriesget_leaf_directoriestokenized_startswith)_VERSION_REGEXget_major_minor_versionget_python_noarch_target_pathget_python_short_path#get_python_site_packages_short_pathmissing_pyc_filesparse_entry_point_defpyc_path)unix_path_to_winwin_path_backoutwin_path_double_escapewin_path_okwin_path_to_unix)Iterable)Union)r   r   r   r   r   r   r   r   r   r    r   r!   r"   r#   r$   r%   z#\./|\.\.|~|/|[a-zA-Z]:[/\\]|\\\\|//).conda.tar.bz2z.jsonz.jlapz	.json.zstz25.3z25.9r   z6Use `conda.common.path.python._VERSION_REGEX` instead.)addendumc                F    SU ;   a  g[         R                  " [        U 5      $ )Nz://F)rematchPATH_MATCH_REGEX)values    :lib/python3.13/site-packages/conda/common/path/__init__.pyis_pathr1   f   s    ~88$e,,    c                <    [        [        [        U 5      5      5      $ N)r   r   r	   paths    r0   expandr7   l   s    :j./00r2   c                    [         (       a)  [        [        U 5      5      [        [        U5      5      :H  $ [        U 5      [        U5      :H  $ )zB
Examples:
    >>> paths_equal('/a/b/c', '/a/b/c/d/..')
    True

)r   r
   r   )path1path2s     r0   paths_equalr;   p   s9     v'8GEN+CCCu~//r2   c                t   [        U 5      (       a  U $ U R                  S5      (       d  [        SU  S35      e[        U 5      u  pn  nSSKJn  U" U5      nUS;  a  UR                  S5      (       d  SU-   nX#-   $ S	n[        R                  " S
U[        R                  5      (       a  US   S-   USS -   nX#-   $ )zdConvert a file:// URL to a path.

Relative file URLs (i.e. `file:relative/path`) are not supported.
zfile://z6You can only turn absolute file: urls into paths (not )r   )percent_decode) 	localhostz	127.0.0.1z::1z\\z//r?   z^/([a-z])[:|]r   :r   N)	r1   
startswithr   r   urlr>   r,   r-   I)rC   _netlocr6   r>   s        r0   url_to_pathrG   }   s     s||
>>)$$DSEK
 	
 %SMAtQ$$D::  ((F]F =	 88OT244007S=48+D=r2   Scriptsbinz.Use `conda.common.path.BIN_DIRECTORY` instead.c                     [         $ r4   )BIN_DIRECTORY r2   r0   get_bin_directory_short_pathrM      s    r2   c                T    U (       a  U S   U S   s=:X  a  U:X  a   U $   OU $ U U  U 3$ )z

Examples:
    >>> ensure_pad('conda')
    '_conda_'
    >>> ensure_pad('_conda')
    '__conda_'
    >>> ensure_pad('')
    ''

r   rL   )namepads     r0   
ensure_padrR      s=     47d2h-#- .tfSE""r2   c                J    U =(       a    U S   U S   s=:H  =(       a    S:H  $ s  $ )zm

Examples:
    >>> is_private_env_name("_conda")
    False
    >>> is_private_env_name("_conda_")
    True

r   rO   rE   rL   )env_names    r0   is_private_env_namerU      s*     :x|::s::::r2   c                Z    U b(  [        U 5      u  p[        U5      S:w  a  g[        U5      $ g)z

Examples:
    >>> is_private_env_path('/some/path/to/envs/_conda_')
    True
    >>> is_private_env_path('/not/an/envs_dir/_conda_')
    False

envsF)r   r   rU   )env_pathenvs_directoryrT   s      r0   is_private_env_pathrZ      s4     #(? N#v-"8,,r2   c                t    U R                  [        R                  5      (       a  U $ U [        R                  -   $ r4   )endswithossepr5   s    r0   right_pad_os_sepr_      s'    ==((4;dRVVm;r2   c                J    [        U 5      u  pSU;   a  U=(       d    S U4$ U S 4$ )N.)r   )path_or_urldnfns      r0   split_filenamere      s-    ;FB"byBJ$A{D.AAr2   r   z#Use builtin `shutil.which` instead.c                v    [          H,  nU R                  U5      (       d  M  U S[        U5      *  U4s  $    U S4$ )aF  
Examples:
    >>> strip_pkg_extension("/path/_license-1.1-py27_1.tar.bz2")
    ('/path/_license-1.1-py27_1', '.tar.bz2')
    >>> strip_pkg_extension("/path/_license-1.1-py27_1.conda")
    ('/path/_license-1.1-py27_1', '.conda')
    >>> strip_pkg_extension("/path/_license-1.1-py27_1")
    ('/path/_license-1.1-py27_1', None)
N)KNOWN_EXTENSIONSr\   len)r6   	extensions     r0   strip_pkg_extensionrj      sB     &	==##)3y>/*I55 & :r2   c                0    U SS S:H  =(       d    U SS S:H  $ )z
Examples:
    >>> is_package_file("/path/_license-1.1-py27_1.tar.bz2")
    True
    >>> is_package_file("/path/_license-1.1-py27_1.conda")
    True
    >>> is_package_file("/path/_license-1.1-py27_1")
    False
iNr(   ir)   rL   r5   s    r0   is_package_filerl      s%     9 ;DI$;;r2   c                    U c  g [        U [        [        R                  45      (       a  [        R                  R                  U 5      $ [        S U 5       5      $ )Nc              3  `   #    U  H$  n[         R                  R                  U5      v   M&     g 7fr4   )r]   r6   normpath).0r6   s     r0   	<genexpr> path_identity.<locals>.<genexpr>  s"     >RWW%%d++s   ,.)
isinstancestrr]   PathLiker6   ro   tuple)pathss    r0   path_identityrx     sF    }	EC-	.	.ww&&>>>>r2   )rE   )r6   rt   )rw   zPathType | PathsType | Nonereturnzstr | tuple[str, ...] | None)K__doc__
__future__r   r]   r,   	functoolsr   loggingr   os.pathr   r   r   r	   r
   r   shutilr   typingr   urllib.parser   r?   r   deprecationsr   compatr   directoriesr   r   r   r   pythonr   r   r   r   r   r   r   r    windowsr!   r"   r#   r$   r%   collections.abcr&   r'   rt   ru   PathType	PathsType__all____name__logr.   rg   constantr1   r7   r;   rG   rK   rM   rR   rU   rZ   r_   re   rj   rl   rx   rL   r2   r0   <module>r      s    " 	 	       !  &  	 	 	  (S"++c**+H"I&   I  
  

E -1
0  6 $	 FF%UV W#$ FF
; 
; FF $<B
   

	2 
$<?r2   