Skip to content

Commit

Permalink
Merge pull request ipython#1458 from minrk/evalref
Browse files Browse the repository at this point in the history
use eval to uncan References

allows things like `Reference('obj.attr')` or `Reference('obj[item]')`
  • Loading branch information
minrk committed Mar 1, 2012
2 parents 20adbb4 + fd804d5 commit a593a77
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
14 changes: 14 additions & 0 deletions IPython/parallel/tests/test_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -490,4 +490,18 @@ def test_apply_reference(self):
result = v.apply_sync(rf, 5)
expected = [ 5*id for id in self.client.ids ]
self.assertEquals(result, expected)

def test_eval_reference(self):
v = self.client[self.client.ids[0]]
v['g'] = range(5)
rg = pmod.Reference('g[0]')
echo = lambda x:x
self.assertEquals(v.apply_sync(echo, rg), 0)

def test_reference_nameerror(self):
v = self.client[self.client.ids[0]]
r = pmod.Reference('elvis_has_left')
echo = lambda x:x
self.assertRaisesRemote(NameError, v.apply_sync, echo, r)


6 changes: 2 additions & 4 deletions IPython/utils/pickleutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,8 @@ def __repr__(self):
def getObject(self, g=None):
if g is None:
g = globals()
try:
return g[self.name]
except KeyError:
raise NameError("name %r is not defined"%self.name)

return eval(self.name, g)


class CannedFunction(CannedObject):
Expand Down

0 comments on commit a593a77

Please sign in to comment.