syspathcontext.py
71 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2252 | # encoding: utf-8 | ||
""" | ||||
Context managers for adding things to sys.path temporarily. | ||||
Authors: | ||||
* Brian Granger | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r5390 | # Copyright (C) 2008-2011 The IPython Development Team | ||
Brian Granger
|
r2252 | # | ||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#----------------------------------------------------------------------------- | ||||
import sys | ||||
Matthias Bussonnier
|
r27504 | import warnings | ||
Brian Granger
|
r2252 | |||
Brian Granger
|
r2498 | |||
Brian Granger
|
r2252 | class appended_to_syspath(object): | ||
Matthias Bussonnier
|
r27504 | """ | ||
Deprecated since IPython 8.1, no replacements. | ||||
A context for appending a directory to sys.path for a second.""" | ||||
Brian Granger
|
r2252 | |||
def __init__(self, dir): | ||||
Matthias Bussonnier
|
r27504 | warnings.warn( | ||
"`appended_to_syspath` is deprecated since IPython 8.1, and has no replacements", | ||||
DeprecationWarning, | ||||
stacklevel=2, | ||||
) | ||||
Srinivas Reddy Thatiparthy
|
r23666 | self.dir = dir | ||
Brian Granger
|
r2252 | |||
def __enter__(self): | ||||
if self.dir not in sys.path: | ||||
sys.path.append(self.dir) | ||||
self.added = True | ||||
else: | ||||
self.added = False | ||||
def __exit__(self, type, value, traceback): | ||||
if self.added: | ||||
try: | ||||
sys.path.remove(self.dir) | ||||
except ValueError: | ||||
pass | ||||
# Returning False causes any exceptions to be re-raised. | ||||
return False | ||||
class prepended_to_syspath(object): | ||||
"""A context for prepending a directory to sys.path for a second.""" | ||||
def __init__(self, dir): | ||||
Srinivas Reddy Thatiparthy
|
r23666 | self.dir = dir | ||
Brian Granger
|
r2252 | |||
def __enter__(self): | ||||
if self.dir not in sys.path: | ||||
sys.path.insert(0,self.dir) | ||||
self.added = True | ||||
else: | ||||
self.added = False | ||||
def __exit__(self, type, value, traceback): | ||||
if self.added: | ||||
try: | ||||
sys.path.remove(self.dir) | ||||
except ValueError: | ||||
pass | ||||
# Returning False causes any exceptions to be re-raised. | ||||
return False | ||||