##// END OF EJS Templates
Merge pull request #2302 from takluyver/i1878-again...
Thomas Kluyver -
r8226:289fc018 merge
parent child Browse files
Show More
@@ -2841,9 +2841,11 b' class InteractiveShell(SingletonConfigurable):'
2841 """
2841 """
2842 ns = self.user_ns.copy()
2842 ns = self.user_ns.copy()
2843 ns.update(sys._getframe(depth+1).f_locals)
2843 ns.update(sys._getframe(depth+1).f_locals)
2844 ns.pop('self', None)
2845 try:
2844 try:
2846 cmd = formatter.format(cmd, **ns)
2845 # We have to use .vformat() here, because 'self' is a valid and common
2846 # name, and expanding **ns for .format() would make it collide with
2847 # the 'self' argument of the method.
2848 cmd = formatter.vformat(cmd, args=[], kwargs=ns)
2847 except Exception:
2849 except Exception:
2848 # if formatter couldn't format, just let it go untransformed
2850 # if formatter couldn't format, just let it go untransformed
2849 pass
2851 pass
@@ -258,6 +258,18 b' class InteractiveShellTestCase(unittest.TestCase):'
258 ip.run_cell('makemacro()')
258 ip.run_cell('makemacro()')
259 nt.assert_in('macro_var_expand_locals', ip.user_ns)
259 nt.assert_in('macro_var_expand_locals', ip.user_ns)
260
260
261 def test_var_expand_self(self):
262 """Test variable expansion with the name 'self', which was failing.
263
264 See https://github.com/ipython/ipython/issues/1878#issuecomment-7698218
265 """
266 ip.run_cell('class cTest:\n'
267 ' classvar="see me"\n'
268 ' def test(self):\n'
269 ' res = !echo Variable: {self.classvar}\n'
270 ' return res[0]\n')
271 nt.assert_in('see me', ip.user_ns['cTest']().test())
272
261 def test_bad_var_expand(self):
273 def test_bad_var_expand(self):
262 """var_expand on invalid formats shouldn't raise"""
274 """var_expand on invalid formats shouldn't raise"""
263 # SyntaxError
275 # SyntaxError
General Comments 0
You need to be logged in to leave comments. Login now