
    $TXg"              	         d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 ddl
mZ e	rddlmZ d/d0d	Zd1d
Zd2dZd3dZ ej$                  dej&                        Zd3dZ ej$                  dej&                        Zd4dZ ej0                  ddd ej$                  dej&                        d        eddd      d3d       Zd/d0dZ ej$                  dej&                        Zd3dZ ej0                  ddded        ej0                  ddded         ej$                  d!ej&                        Zd3d"Z ej0                  ddd#ed$        ej0                  ddd%ed&        ej$                  d'ej&                        Zd5d(Z  ej0                  ddd)ed*        ej0                  ddd+e d,       d6d-Z!d7d.Z"y)8    )annotationsN)partial)TYPE_CHECKING   )
deprecated   )PathTypec                   t        j                  |       } rt        j                        ndt        j                  | v rGt        j                  j                  fd| j                  t        j                        D              S | s| S d}t        j                  |       s| dv rrUt        j                  |       }| d   dv r|t        j                  z  }t              j                  t        |      \  }}|r|} |st        j                  t        |       \  } }|s%t        j!                  t#        t$              |       } t'        | t        j                        S )a:  
    A fallback implementation of `cygpath --unix`.

    Args:
        path: The path to convert.
        prefix: The Windows style prefix directory to use for the conversion.
              If not provided, no checks for root paths will be made.
        cygdrive: Whether to use the Cygwin-style drive prefix.
    Nc              3  @   K   | ]  }t        |      xr  y wN)nt_to_posix).0path	convertedcygdriveprefixs     :lib/python3.12/site-packages/conda/common/path/_cygpath.py	<genexpr>znt_to_posix.<locals>.<genexpr>    s-      &
2(vx@@	@ 2s   r   )zC:zc:z/\)r   )osfspathntpathpathsep	posixpathjoinsplitisabsnormpathsep_get_RE_WIN_ROOTsubn_to_unix_rootRE_WIN_MOUNT_to_unix_mountRE_WIN_DRIVEsubr   _to_unix_drive_resolve_path)r   r   r   subs	norm_pathr   s    ``  @r   r   r      s"    99T?D"(RYYvdF~~  %% &


6>>2&
 
 	
 " D ||DT\1-IBx5 VZZ'	.v6;;M9UOIt  %**>4@JD$ ##GNX$NPTUDy}}--    c                X    t        j                  |       } t        j                  | d      S )NLibrary)r   r   r   )r   s    r   	_get_rootr.   V   s#    __V$F ;;vy))r+   c                    t        |       }t        j                  dt        j                  |       dt        j                        S )Nz
        ^
        z)
        (?P<path>.*)?
        $
        flags)r.   recompileescapeVERBOSE)r   roots     r   r    r    d   sC    VD::		4 		 jj r+   c                ,    | j                  d      xs dS )Nr   /groupmatchs    r   r"   r"   q   s    ;;v%#%r+   zW
    ^
    [/\\]{2}(
        (?P<mount>[^/\\]+)
        (?P<path>.*)?
    )?
    $
    r0   c                d    | j                  d      xs d}| j                  d      xs d}d| | S )Nmount r   //r9   r<   r>   r   s      r   r$   r$      s9    KK &BE;;v$"Dwtfr+   zB
    ^
    (?P<drive>[A-Za-z]):
    (?P<path>[/\\]+.*)?
    $
    c                    | j                  d      j                         }| j                  d      xs d}|rdnd d| | S )Ndriver   r?   z	/cygdriver8   )r:   lower)r<   r   rC   r   s       r   r'   r'      sF    KK &&(E;;v$"D%k2.awtf==r+   z25.3z25.9RE_UNIXzZ
        (?P<drive>[A-Za-z]:)?
        (?P<path>[\/\\]+(?:[^:*?\"<>|;]+[\/\\]*)*)
        z6Use `conda.common.path._cygpath.RE_WIN_DRIVE` instead.)addendumz8Use `conda.common.path._cygpath._to_unix_drive` instead.c                    d| j                  d      xs dj                         | j                  d      z   j                  dd      j                  dd      j                  dd      j                  d      z   S )Nr8   rC   r?   r   \:r@   )r:   rD   replacerstripr;   s    r   translate_unixrL      sf     
++g

$"	+	+	-F0C	C	s		b		s		 r+   c                V   t        j                  |       } rt        j                        ndt        j                  | v rEt        j                  j                  fd| j                  t        j                        D              S | syt        j                  |       rrd}t        j                  t        |       \  } }|st        j                  t        |       \  } }r2|s0t              }t        j                  t!        t"        |      |       } t%        | t        j&                        S )aT  
    A fallback implementation of `cygpath --windows`.

    Args:
        path: The path to convert.
        prefix: The Windows style prefix directory to use for the conversion.
              If not provided, no checks for root paths will be made.
        cygdrive: Unused. Present to keep the signature consistent with `nt_to_posix`.
    Nc              3  6   K   | ]  }t        |        y wr   )posix_to_nt)r   r   r   s     r   r   zposix_to_nt.<locals>.<genexpr>   s      #
2O$Kf%2O   .r   )r6   )r   r   r   r   r   r   r   r   RE_UNIX_DRIVEr!   _to_win_driveRE_UNIX_MOUNT_to_win_mountr.   RE_UNIX_ROOTr&   r   _to_win_rootr(   r   )r   r   r   r)   r6   s    `   r   rO   rO      s     99T?D"(RYYvdFD ~~"" #
26**Y=N=N2O#
 
 	

 " t #''t<
d &++M4@JD$ $V$D##GLt$DdKDvzz**r+   zR
    ^
    (/cygdrive)?
    /(?P<drive>[A-Za-z])
    (/+(?P<path>.*)?)?
    $
    c                x    | j                  d      j                         }| j                  d      xs d}| d| S )NrC   r   r?   z:\)r:   upper)r<   rC   r   s      r   rS   rS      s=    KK &&(E;;v$"DWCvr+   RE_DRIVEz7Use `conda.common.path._cygpath.RE_UNIX_DRIVE` instead.translation_drivez7Use `conda.common.path._cygpath._to_win_drive` instead.zS
    ^
    /{2}(
        (?P<mount>[^/]+)
        (?P<path>/+.*)?
    )?
    $
    c                d    | j                  d      xs d}| j                  d      xs d}d| | S )Nr>   r?   r   z\\r9   rA   s      r   rU   rU     s9    KK &BE;;v$"D%r+   RE_MOUNTz7Use `conda.common.path._cygpath.RE_UNIX_MOUNT` instead.translation_mountz7Use `conda.common.path._cygpath._to_win_mount` instead.z#
    ^
    (?P<path>/.*)
    $
    c                0    | j                  d      }| | S )Nr   r9   )r<   r6   r   s      r   rW   rW   >  s    ;;vDVD6?r+   RE_ROOTz6Use `conda.common.path._cygpath.RE_UNIX_ROOT` instead.translation_rootz6Use `conda.common.path._cygpath._to_win_root` instead.c                    d}t        j                  d|       x}r|j                         \  }} t        j                  |      }t        j                  d||      t        j                  d||       z   S )Nr?   z^([/\\]+)(.*)$z[/\\]z[/\\]+)r2   r<   groupsr4   r&   )r   r   leadingr<   s       r   r(   r(   S  s_    G*D11u1
))C.C66(C)BFF9c4,HHHr+   c                V    |j                  fd| j                  |      D              S )Nc              3  6   K   | ]  }t        |        y wr   )r(   )r   r   r   s     r   r   z resolve_paths.<locals>.<genexpr>\  s     R=QTdC0=QrP   )r   r   )pathsr   r   s     `r   resolve_pathsrh   [  s!    <<RU[[=QRRRr+   )F)r   r	   r   zPathType | Noner   boolreturnstr)r   rk   rj   rk   )r   rk   rj   z
re.Pattern)r<   re.Matchrj   rk   )r<   rl   r   ri   rj   rk   )r<   rl   r6   rk   rj   rk   )r   rk   r   rk   rj   rk   )rg   rk   r   rk   r   rk   rj   rk   )#
__future__r   r   r   r   r2   	functoolsr   typingr   deprecationsr   r?   r	   r   r.   r    r"   r3   r5   r#   r$   r%   r'   constantrL   rO   rR   rS   rT   rU   rV   rW   r(   rh    r+   r   <module>rs      s+   #  	  	    &A.H*
& rzz **
 rzz **> 
  

BJJ	 jj F 

G

5+p 

 **	 
  

F 
  

F 

 **
  
  

F 
  

F rzz
 **
 
  

E 
  

EISr+   