}BFjtdZddlZddlmZddlmZddlmZddl m Z ddl m Z m Z Gdd ZGd d eZdS) aThis module contains classes - NamedFileInTemporaryDirectory, TemporaryWorkingDirectory. These classes add extra features such as creating a named file in temporary directory and creating a context manager for the working directory which is also temporary. N)BufferedWriter)Path)TemporaryDirectory) TracebackType)OptionalTypec eZdZddedededefdZdZeZd e fd Z d e e e d e e d e efdZdS)NamedFileInTemporaryDirectoryFfilenamemodebufsizeadd_to_syspathc tdi||_t|jj|z }d|vrdnd}t |||||_dS)aN Open a file named `filename` in a temporary directory. This context manager is preferred over `NamedTemporaryFile` in stdlib `tempfile` when one needs to reopen the file. Arguments `mode` and `bufsize` are passed to `open`. Rest of the arguments are passed to `TemporaryDirectory`. bNzutf-8)encoding)r_tmpdirrnameopenfile)selfr r rrkwdspathrs CC:\PYTHON\_runtimes\venv\Lib\site-packages\IPython/utils/tempdir.py__init__z&NamedFileInTemporaryDirectory.__init__s]*11D11 DL%&&1$;;44GtWx@@@ cj|j|jdSN)rclosercleanuprs rr!z%NamedFileInTemporaryDirectory.cleanup s.  rreturnc|jSr)rr"s r __enter__z'NamedFileInTemporaryDirectory.__enter__&s yrtypevalue tracebackc.|dSr)r!)rr&r'r(s r__exit__z&NamedFileInTemporaryDirectory.__exit__)s rN)r F)__name__ __module__ __qualname__strintboolrr!__del__rr%rr BaseExceptionrr*rrrr r sAAACA#ARVAAAA G>Xd=&9:8MCZgop}g~rr cteZdZdZdeffd Zdeeedeedee ddffd Z xZ S) TemporaryWorkingDirectoryz Creates a temporary directory and sets the cwd to that directory. Automatically reverts to previous cwd upon cleanup. Usage example: with TemporaryWorkingDirectory() as tmpdir: ... r#ctj|_tj|jt t|Sr) rcwdold_wd_oschdirrsuperr4r%)r __class__s rr%z#TemporaryWorkingDirectory.__enter__7s?hjj  $).55??AAArexcr'tbNctj|jtt||||Sr)r8r9r7r:r4r*)rr<r'r=r;s rr*z"TemporaryWorkingDirectory.__exit__<s8 $+.55>>sE2NNNr) r+r,r-__doc__r.r%rrr2rr* __classcell__)r;s@rr4r4-sB3BBBBBB OHT-%89O(=BYO_ghu_vO{OOOOOOOOOOrr4)r?osr8iorpathlibrtempfilertypesrtypingrrr r4rrrrGs ''''''!!!!!!!!<OOOOO 2OOOOOr