##// END OF EJS Templates
Python3 compat layer cleanup
Matthias Bussonnier -
Show More
@@ -2623,10 +2623,10 b' class InteractiveShell(SingletonConfigurable):'
2623 stb = self.InteractiveTB.get_exception_only(etype, evalue)
2623 stb = self.InteractiveTB.get_exception_only(etype, evalue)
2624
2624
2625 exc_info = {
2625 exc_info = {
2626 u'status' : 'error',
2626 "status": "error",
2627 u'traceback' : stb,
2627 "traceback": stb,
2628 u'ename' : etype.__name__,
2628 "ename": etype.__name__,
2629 u'evalue' : py3compat.safe_unicode(evalue),
2629 "evalue": py3compat.safe_unicode(evalue),
2630 }
2630 }
2631
2631
2632 return exc_info
2632 return exc_info
@@ -16,7 +16,6 b' from IPython.core.magic import ('
16 Magics, magics_class, line_magic, cell_magic
16 Magics, magics_class, line_magic, cell_magic
17 )
17 )
18 from IPython.lib.backgroundjobs import BackgroundJobManager
18 from IPython.lib.backgroundjobs import BackgroundJobManager
19 from IPython.utils import py3compat
20 from IPython.utils.process import arg_split
19 from IPython.utils.process import arg_split
21 from traitlets import List, Dict, default
20 from traitlets import List, Dict, default
22
21
@@ -2,7 +2,6 b' import tokenize'
2 import nose.tools as nt
2 import nose.tools as nt
3
3
4 from IPython.testing import tools as tt
4 from IPython.testing import tools as tt
5 from IPython.utils import py3compat
6
5
7 from IPython.core import inputtransformer as ipt
6 from IPython.core import inputtransformer as ipt
8
7
@@ -55,72 +55,6 b' def safe_unicode(e):'
55
55
56 return u'Unrecoverably corrupt evalue'
56 return u'Unrecoverably corrupt evalue'
57
57
58 # shutil.which from Python 3.4
59 def _shutil_which(cmd, mode=os.F_OK | os.X_OK, path=None):
60 """Given a command, mode, and a PATH string, return the path which
61 conforms to the given mode on the PATH, or None if there is no such
62 file.
63
64 `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result
65 of os.environ.get("PATH"), or can be overridden with a custom search
66 path.
67
68 This is a backport of shutil.which from Python 3.4
69 """
70 # Check that a given file can be accessed with the correct mode.
71 # Additionally check that `file` is not a directory, as on Windows
72 # directories pass the os.access check.
73 def _access_check(fn, mode):
74 return (os.path.exists(fn) and os.access(fn, mode)
75 and not os.path.isdir(fn))
76
77 # If we're given a path with a directory part, look it up directly rather
78 # than referring to PATH directories. This includes checking relative to the
79 # current directory, e.g. ./script
80 if os.path.dirname(cmd):
81 if _access_check(cmd, mode):
82 return cmd
83 return None
84
85 if path is None:
86 path = os.environ.get("PATH", os.defpath)
87 if not path:
88 return None
89 path = path.split(os.pathsep)
90
91 if sys.platform == "win32":
92 # The current directory takes precedence on Windows.
93 if not os.curdir in path:
94 path.insert(0, os.curdir)
95
96 # PATHEXT is necessary to check on Windows.
97 pathext = os.environ.get("PATHEXT", "").split(os.pathsep)
98 # See if the given file matches any of the expected path extensions.
99 # This will allow us to short circuit when given "python.exe".
100 # If it does match, only test that one, otherwise we have to try
101 # others.
102 if any(cmd.lower().endswith(ext.lower()) for ext in pathext):
103 files = [cmd]
104 else:
105 files = [cmd + ext for ext in pathext]
106 else:
107 # On other platforms you don't have things like PATHEXT to tell you
108 # what file suffixes are executable, so just pass on cmd as-is.
109 files = [cmd]
110
111 seen = set()
112 for dir in path:
113 normdir = os.path.normcase(dir)
114 if not normdir in seen:
115 seen.add(normdir)
116 for thefile in files:
117 name = os.path.join(dir, thefile)
118 if _access_check(name, mode):
119 return name
120 return None
121
122 PY3 = True
123
124 # keep reference to builtin_mod because the kernel overrides that value
58 # keep reference to builtin_mod because the kernel overrides that value
125 # to forward requests to a frontend.
59 # to forward requests to a frontend.
126 def input(prompt=''):
60 def input(prompt=''):
@@ -129,16 +63,6 b" def input(prompt=''):"
129 builtin_mod_name = "builtins"
63 builtin_mod_name = "builtins"
130 import builtins as builtin_mod
64 import builtins as builtin_mod
131
65
132
133 which = shutil.which
134
135 def isidentifier(s, dotted=False):
136 if dotted:
137 return all(isidentifier(a) for a in s.split("."))
138 return s.isidentifier()
139
140 getcwd = os.getcwd
141
142 MethodType = types.MethodType
66 MethodType = types.MethodType
143
67
144 def execfile(fname, glob, loc=None, compiler=None):
68 def execfile(fname, glob, loc=None, compiler=None):
@@ -147,7 +71,6 b' def execfile(fname, glob, loc=None, compiler=None):'
147 compiler = compiler or compile
71 compiler = compiler or compile
148 exec(compiler(f.read(), fname, 'exec'), glob, loc)
72 exec(compiler(f.read(), fname, 'exec'), glob, loc)
149
73
150 PY2 = not PY3
151 PYPY = platform.python_implementation() == "PyPy"
74 PYPY = platform.python_implementation() == "PyPy"
152
75
153 # Cython still rely on that as a Dec 28 2019
76 # Cython still rely on that as a Dec 28 2019
@@ -15,7 +15,6 b' import textwrap'
15 from string import Formatter
15 from string import Formatter
16 from pathlib import Path
16 from pathlib import Path
17
17
18 from IPython.utils import py3compat
19
18
20 # datetime.strftime date format for ipython
19 # datetime.strftime date format for ipython
21 if sys.platform == 'win32':
20 if sys.platform == 'win32':
General Comments 0
You need to be logged in to leave comments. Login now