
    YHh                       U d dl mZ d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
 erd dlmZ eeej                  e   f   Zded<    edeeej                  e   f   	      Zd
 ZddZddZddZej,                  d        Zy)    )annotationsN)TYPE_CHECKINGTypeVarUnion)unique_everseen)	TypeAliasr   StrPathStrPathT)boundc                p    t         j                  j                  |       }t        j                  |d       y)z1Ensure that the parent directory of `path` existsT)exist_okN)ospathdirnamemakedirs)r   r   s     I/var/www/html/planif/env/lib/python3.12/site-packages/setuptools/_path.pyensure_directoryr      s"    ggood#GKK$'    c                0    t        |       t        |      k(  S )a  Differs from os.path.samefile because it does not require paths to exist.
    Purely string based (no comparison between i-nodes).
    >>> same_path("a/b", "./a/b")
    True
    >>> same_path("a/b", "a/./b")
    True
    >>> same_path("a/b", "././a/b")
    True
    >>> same_path("a/b", "./a/b/c/..")
    True
    >>> same_path("a/b", "../a/b/c")
    False
    >>> same_path("a", "a/b")
    False
    )normpath)p1p2s     r   	same_pathr      s      B<8B<''r   c                j    t         j                  dk(  rt        j                  j	                  |       S | S )a  
    Contrary to POSIX 2008, on Cygwin, getcwd (3) contains
    symlink components. Using
    os.path.abspath() works around this limitation. A fix in os.getcwd()
    would probably better, in Cygwin even more so, except
    that this seems to be by design...
    cygwin)sysplatformr   r   abspathfilenames    r   _cygwin_patchr!   *   s'     ),(@277??8$NhNr   c           	         t         j                  j                  t         j                  j                  t         j                  j	                  t        |                         S )z2Normalize a file/dir name for comparison purposes.)r   r   normcaserealpathr   r!   r   s    r   r   r   5   s:    77BGG,,RWW-=-=mH>U-VWXXr   c              #  h  K   t               }t        j                  j                  d|      }t        j                  j                  dd      }	 t        j                  j                  t        |             }t        d||g      }t        j                  j                  |      }|r|t        j                  d<   d ||u r!t        j                  j                  dd       y|t        j                  d<   y# ||u r!t        j                  j                  dd       w |t        j                  d<   w xY ww)a  
    Add the indicated paths to the head of the PYTHONPATH environment
    variable so that subprocesses will also see the packages at
    these paths.

    Do this in a context that restores the value on exit.

    >>> getfixture('monkeypatch').setenv('PYTHONPATH', 'anything')
    >>> with paths_on_pythonpath(['foo', 'bar']):
    ...     assert 'foo' in os.environ['PYTHONPATH']
    ...     assert 'anything' in os.environ['PYTHONPATH']
    >>> os.environ['PYTHONPATH']
    'anything'

    >>> getfixture('monkeypatch').delenv('PYTHONPATH')
    >>> with paths_on_pythonpath(['foo', 'bar']):
    ...     assert 'foo' in os.environ['PYTHONPATH']
    >>> os.environ.get('PYTHONPATH')
    
PYTHONPATH N)	objectr   environgetpathsepjoinr   filterpop)pathsnothingorig_pythonpathcurrent_pythonpathprefixto_joinnew_paths          r   paths_on_pythonpathr6   :   s     * hGjjnn\7;Ob97!78(:;<::??7+'/BJJ|$g%JJNN<.'6BJJ|$ g%JJNN<.'6BJJ|$s   AD2A.C5 <9D25:D//D2)r   r	   r   r	   returnbool)r    r	   )r    r	   r7   str)
__future__r   
contextlibr   r   typingr   r   r   more_itertoolsr   typing_extensionsr   r9   PathLiker	   __annotations__r
   r   r   r!   r   contextmanagerr6    r   r   <module>rC      s    "  	 
 0 0 *+3C 001 1:U3C0@+@%AB((&OY
 "7 "7r   