U
    X7h
                     @  s   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 d dlm	Z	 ernd dl
mZ eeeje f Zded< neeejf Zded< dd	 Zddd
dddZdddddZejdd ZdS )    )annotationsN)TYPE_CHECKINGUnion)unique_everseen)	TypeAliasr   StrPathc                 C  s   t j| }t j|dd dS )z1Ensure that the parent directory of `path` existsT)exist_okN)ospathdirnamemakedirs)r
   r    r   J/var/www/formularioweb/env/lib/python3.8/site-packages/setuptools/_path.pyensure_directory   s    r   bool)p1p2returnc                 C  s   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)r   r   r   r   r   	same_path   s    r   str)filenamer   c                 C  s6   t jdkrtj| n| }tjtjtj|S )z2Normalize a file/dir name for comparison purposes.cygwin)sysplatformr	   r
   abspathnormcaserealpathr   )r   filer   r   r   r   ,   s    r   c              
   c  s   t  }tjd|}tjdd}zBtjt| }td||g}tj|}|r\|tjd< dV  W 5 ||kr~tjdd n
|tjd< X dS )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')
    Z
PYTHONPATH N)	objectr	   environgetpoppathsepjoinr   filter)pathsZnothingZorig_pythonpathZcurrent_pythonpathprefixZto_joinnew_pathr   r   r   paths_on_pythonpath3   s    

r*   )
__future__r   
contextlibr	   r   typingr   r   more_itertoolsr   Ztyping_extensionsr   r   PathLiker   __annotations__r   r   r   contextmanagerr*   r   r   r   r   <module>   s    