##// END OF EJS Templates
Various Python 3 fixes in IPython.utils
Thomas Kluyver -
Show More
@@ -16,6 +16,9 b' import sys'
16 import types
16 import types
17 from datetime import datetime
17 from datetime import datetime
18
18
19 from IPython.utils import py3compat
20 next_attr_name = '__next__' if py3compat.PY3 else 'next'
21
19 #-----------------------------------------------------------------------------
22 #-----------------------------------------------------------------------------
20 # Globals and constants
23 # Globals and constants
21 #-----------------------------------------------------------------------------
24 #-----------------------------------------------------------------------------
@@ -134,7 +137,7 b' def json_clean(obj):'
134 return obj.decode(sys.getdefaultencoding(), 'replace')
137 return obj.decode(sys.getdefaultencoding(), 'replace')
135
138
136 if isinstance(obj, container_to_list) or (
139 if isinstance(obj, container_to_list) or (
137 hasattr(obj, '__iter__') and hasattr(obj, 'next')):
140 hasattr(obj, '__iter__') and hasattr(obj, next_attr_name)):
138 obj = list(obj)
141 obj = list(obj)
139
142
140 if isinstance(obj, list):
143 if isinstance(obj, list):
@@ -66,7 +66,7 b' def find_cmd(cmd):'
66 except OSError:
66 except OSError:
67 raise FindCmdError('command could not be found: %s' % cmd)
67 raise FindCmdError('command could not be found: %s' % cmd)
68 # which returns empty if not found
68 # which returns empty if not found
69 if path == '':
69 if path == b'':
70 raise FindCmdError('command could not be found: %s' % cmd)
70 raise FindCmdError('command could not be found: %s' % cmd)
71 return os.path.abspath(path)
71 return os.path.abspath(path)
72
72
@@ -31,17 +31,24 b' from IPython.testing import decorators as dec'
31 from IPython.testing.decorators import skip_if_not_win32, skip_win32
31 from IPython.testing.decorators import skip_if_not_win32, skip_win32
32 from IPython.testing.tools import make_tempfile
32 from IPython.testing.tools import make_tempfile
33 from IPython.utils import path, io
33 from IPython.utils import path, io
34 from IPython.utils import py3compat
34
35
35 # Platform-dependent imports
36 # Platform-dependent imports
36 try:
37 try:
37 import _winreg as wreg
38 import _winreg as wreg
38 except ImportError:
39 except ImportError:
39 #Fake _winreg module on none windows platforms
40 #Fake _winreg module on none windows platforms
40 import new
41 import types
41 sys.modules["_winreg"] = new.module("_winreg")
42 wr_name = "winreg" if py3compat.PY3 else "_winreg"
43 sys.modules[wr_name] = types.ModuleType(wr_name)
42 import _winreg as wreg
44 import _winreg as wreg
43 #Add entries that needs to be stubbed by the testing code
45 #Add entries that needs to be stubbed by the testing code
44 (wreg.OpenKey, wreg.QueryValueEx,) = (None, None)
46 (wreg.OpenKey, wreg.QueryValueEx,) = (None, None)
47
48 try:
49 reload
50 except NameError: # Python 3
51 from imp import reload
45
52
46 #-----------------------------------------------------------------------------
53 #-----------------------------------------------------------------------------
47 # Globals
54 # Globals
@@ -37,7 +37,7 b' def test_find_cmd_python():'
37 def test_find_cmd_ls():
37 def test_find_cmd_ls():
38 """Make sure we can find the full path to ls."""
38 """Make sure we can find the full path to ls."""
39 path = find_cmd('ls')
39 path = find_cmd('ls')
40 nt.assert_true(path.endswith('ls'))
40 nt.assert_true(path.endswith(b'ls'))
41
41
42
42
43 def has_pywin32():
43 def has_pywin32():
@@ -587,10 +587,10 b' class EvalFormatter(Formatter):'
587 --------
587 --------
588
588
589 In [1]: f = EvalFormatter()
589 In [1]: f = EvalFormatter()
590 In [2]: f.format('{n/4}', n=8)
590 In [2]: f.format('{n//4}', n=8)
591 Out[2]: '2'
591 Out[2]: '2'
592
592
593 In [3]: f.format('{range(3)}')
593 In [3]: f.format('{list(range(3))}')
594 Out[3]: '[0, 1, 2]'
594 Out[3]: '[0, 1, 2]'
595
595
596 In [4]: f.format('{3*2}')
596 In [4]: f.format('{3*2}')
@@ -882,7 +882,9 b' class CInt(Int):'
882 except:
882 except:
883 self.error(obj, value)
883 self.error(obj, value)
884
884
885 if not py3compat.PY3:
885 if py3compat.PY3:
886 Long, CLong = Int, CInt
887 else:
886 class Long(TraitType):
888 class Long(TraitType):
887 """A long integer trait."""
889 """A long integer trait."""
888
890
General Comments 0
You need to be logged in to leave comments. Login now