U
    aÊ¹j…
  ã                   @  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   úO/var/www/html/bwave/python/venv/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')
    Ú
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   Zmore_itertoolsr   Útyping_extensionsr   r   ÚPathLiker   Ú__annotations__r   r   r   Úcontextmanagerr+   r   r   r   r   Ú<module>   s    