
    eG                       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 d dl	m
Z
 d dlmZ ej                  dd       Zej                  	 d	 	 	 dd       Zej                  	 d	 	 	 dd	       Zej                  	 d	 	 	 dd
       ZdddZy)    )annotationsN)	GeneratorIterator)copy)Path)TextIOc              #    K   | xt         _        t         _        	 d t         j                  t         _        t         j                  t         _        y# t         j                  t         _        t         j                  t         _        w xY ww)z+Patch and subsequently reset a text stream.N)sysstderrstdout
__stderr__
__stdout__)outs    8/usr/lib/python3/dist-packages/pylint/testutils/utils.py_patch_streamsr      sM      "!CJ$^^
^^
 ^^
^^
s   BA 3B4BBc              #     K   t         j                  }	 | t        |       t         _        d  |t         _        y # |t         _        w xY wwN)r
   pathr   )replacement_sys_pathoriginal_paths     r   _test_sys_pathr      s:      HHM!+01CH =s   A
: A
AA
c              #     K   t        j                         }	 | t        j                  |        d  t        j                  |       y # t        j                  |       w xY wwr   )osgetcwdchdir)current_working_directoryoriginal_dirs     r   	_test_cwdr   (   sF      99;L$0HH./
s   A#A	 A#	A  A#c              #    K   t         j                  j                  d      }| r| t         j                  d<   n| |t         j                  d= 	 d  ||t         j                  d<   y dt         j                  v rt         j                  d= y y # ||t         j                  d<   w dt         j                  v rt         j                  d= w w xY ww)N
PYTHONPATH)r   environget)new_pythonpathoriginal_pythonpaths     r   _test_environ_pythonpathr%   5   s      **..6#1

< 		$7$CJJ|$)*':BJJ|$RZZ'

<( ( *':BJJ|$RZZ'

<( (s   ACB ;C<C		Cc                ,   t               t               }}| D ]  }t        j                  j                  ||      }t        j                  j	                  |      }|s|j                  |       V|j                  t        j                  j                  |             |j                  |        |D ]7  }t        j                  j                  |      r#t        j                  |       9 |D ]  }t        |dd      5  	 ddd        y# 1 sw Y   'xY w)a  Creates directories and files found in <path>.

    :param list paths: list of relative paths to files or directories
    :param str chroot: the root directory in which paths will be created

    >>> from os.path import isdir, isfile
    >>> isdir('/tmp/a')
    False
    >>> create_files(['a/b/foo.py', 'a/b/c/', 'a/b/c/d/e.py'], '/tmp')
    >>> isdir('/tmp/a')
    True
    >>> isdir('/tmp/a/b/c')
    True
    >>> isfile('/tmp/a/b/c/d/e.py')
    True
    >>> isfile('/tmp/a/b/foo.py')
    True
    wzutf-8)encodingN)
setr   r   joinbasenameadddirnameisdirmakedirsopen)pathschrootdirsfilesr   filenamedirpathfilepaths           r   create_filesr8   H   s    & %%D 	ww||FD)77##D)HHTN HHRWW__T*+IIdO	  !ww}}W%KK !  (C'2 		 		 	s   =D

D	)r   r   returnzIterator[None]r   )r   zlist[str] | Noner9   Generator[None, None, None])r   zstr | Path | Noner9   r:   )r#   z
str | Noner9   r:   ).)r1   z	list[str]r2   strr9   None)
__future__r   
contextlibr   r
   collections.abcr   r   r   pathlibr   typingr   contextmanagerr   r   r   r%   r8        r   <module>rF      s   
 #  	 
 /    $ $ -1	!*	! 	! 	! 37	0	 	 	 !%)) ) )$#rE   