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 |
|
|
2626 | "status": "error", | |
2627 |
|
|
2627 | "traceback": stb, | |
2628 |
|
|
2628 | "ename": etype.__name__, | |
2629 |
|
|
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