diff --git a/IPython/core/interactiveshell.py b/IPython/core/interactiveshell.py index e1eb17d..a1c15bf 100644 --- a/IPython/core/interactiveshell.py +++ b/IPython/core/interactiveshell.py @@ -2623,10 +2623,10 @@ class InteractiveShell(SingletonConfigurable): stb = self.InteractiveTB.get_exception_only(etype, evalue) exc_info = { - u'status' : 'error', - u'traceback' : stb, - u'ename' : etype.__name__, - u'evalue' : py3compat.safe_unicode(evalue), + "status": "error", + "traceback": stb, + "ename": etype.__name__, + "evalue": py3compat.safe_unicode(evalue), } return exc_info diff --git a/IPython/core/magics/script.py b/IPython/core/magics/script.py index 7148b00..15b6362 100644 --- a/IPython/core/magics/script.py +++ b/IPython/core/magics/script.py @@ -16,7 +16,6 @@ from IPython.core.magic import ( Magics, magics_class, line_magic, cell_magic ) from IPython.lib.backgroundjobs import BackgroundJobManager -from IPython.utils import py3compat from IPython.utils.process import arg_split from traitlets import List, Dict, default diff --git a/IPython/core/tests/test_inputtransformer.py b/IPython/core/tests/test_inputtransformer.py index 147a8e4..be8209e 100644 --- a/IPython/core/tests/test_inputtransformer.py +++ b/IPython/core/tests/test_inputtransformer.py @@ -2,7 +2,6 @@ import tokenize import nose.tools as nt from IPython.testing import tools as tt -from IPython.utils import py3compat from IPython.core import inputtransformer as ipt diff --git a/IPython/utils/py3compat.py b/IPython/utils/py3compat.py index 62bcc91..654195e 100644 --- a/IPython/utils/py3compat.py +++ b/IPython/utils/py3compat.py @@ -55,72 +55,6 @@ def safe_unicode(e): return u'Unrecoverably corrupt evalue' -# shutil.which from Python 3.4 -def _shutil_which(cmd, mode=os.F_OK | os.X_OK, path=None): - """Given a command, mode, and a PATH string, return the path which - conforms to the given mode on the PATH, or None if there is no such - file. - - `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result - of os.environ.get("PATH"), or can be overridden with a custom search - path. - - This is a backport of shutil.which from Python 3.4 - """ - # Check that a given file can be accessed with the correct mode. - # Additionally check that `file` is not a directory, as on Windows - # directories pass the os.access check. - def _access_check(fn, mode): - return (os.path.exists(fn) and os.access(fn, mode) - and not os.path.isdir(fn)) - - # If we're given a path with a directory part, look it up directly rather - # than referring to PATH directories. This includes checking relative to the - # current directory, e.g. ./script - if os.path.dirname(cmd): - if _access_check(cmd, mode): - return cmd - return None - - if path is None: - path = os.environ.get("PATH", os.defpath) - if not path: - return None - path = path.split(os.pathsep) - - if sys.platform == "win32": - # The current directory takes precedence on Windows. - if not os.curdir in path: - path.insert(0, os.curdir) - - # PATHEXT is necessary to check on Windows. - pathext = os.environ.get("PATHEXT", "").split(os.pathsep) - # See if the given file matches any of the expected path extensions. - # This will allow us to short circuit when given "python.exe". - # If it does match, only test that one, otherwise we have to try - # others. - if any(cmd.lower().endswith(ext.lower()) for ext in pathext): - files = [cmd] - else: - files = [cmd + ext for ext in pathext] - else: - # On other platforms you don't have things like PATHEXT to tell you - # what file suffixes are executable, so just pass on cmd as-is. - files = [cmd] - - seen = set() - for dir in path: - normdir = os.path.normcase(dir) - if not normdir in seen: - seen.add(normdir) - for thefile in files: - name = os.path.join(dir, thefile) - if _access_check(name, mode): - return name - return None - -PY3 = True - # keep reference to builtin_mod because the kernel overrides that value # to forward requests to a frontend. def input(prompt=''): @@ -129,16 +63,6 @@ def input(prompt=''): builtin_mod_name = "builtins" import builtins as builtin_mod - -which = shutil.which - -def isidentifier(s, dotted=False): - if dotted: - return all(isidentifier(a) for a in s.split(".")) - return s.isidentifier() - -getcwd = os.getcwd - MethodType = types.MethodType def execfile(fname, glob, loc=None, compiler=None): @@ -147,7 +71,6 @@ def execfile(fname, glob, loc=None, compiler=None): compiler = compiler or compile exec(compiler(f.read(), fname, 'exec'), glob, loc) -PY2 = not PY3 PYPY = platform.python_implementation() == "PyPy" # Cython still rely on that as a Dec 28 2019 diff --git a/IPython/utils/text.py b/IPython/utils/text.py index 14405ed..194107a 100644 --- a/IPython/utils/text.py +++ b/IPython/utils/text.py @@ -15,7 +15,6 @@ import textwrap from string import Formatter from pathlib import Path -from IPython.utils import py3compat # datetime.strftime date format for ipython if sys.platform == 'win32':