Show More
@@ -700,4 +700,22 b' class TestView(ClusterTestCase, ParametricTestCase):' | |||||
700 | drank = amr.get(5) |
|
700 | drank = amr.get(5) | |
701 | self.assertEqual(drank, [ r*2 for r in ranks ]) |
|
701 | self.assertEqual(drank, [ r*2 for r in ranks ]) | |
702 |
|
702 | |||
|
703 | def test_nested_getitem_setitem(self): | |||
|
704 | """get and set with view['a.b']""" | |||
|
705 | view = self.client[-1] | |||
|
706 | view.execute('\n'.join([ | |||
|
707 | 'class A(object): pass', | |||
|
708 | 'a = A()', | |||
|
709 | 'a.b = 128', | |||
|
710 | ]), block=True) | |||
|
711 | ra = pmod.Reference('a') | |||
|
712 | ||||
|
713 | r = view.apply_sync(lambda x: x.b, ra) | |||
|
714 | self.assertEqual(r, 128) | |||
|
715 | self.assertEqual(view['a.b'], 128) | |||
|
716 | ||||
|
717 | view['a.b'] = 0 | |||
703 |
|
718 | |||
|
719 | r = view.apply_sync(lambda x: x.b, ra) | |||
|
720 | self.assertEqual(r, 0) | |||
|
721 | self.assertEqual(view['a.b'], 0) |
@@ -229,21 +229,24 b' def interactive(f):' | |||||
229 | @interactive |
|
229 | @interactive | |
230 | def _push(**ns): |
|
230 | def _push(**ns): | |
231 | """helper method for implementing `client.push` via `client.apply`""" |
|
231 | """helper method for implementing `client.push` via `client.apply`""" | |
232 | globals().update(ns) |
|
232 | user_ns = globals() | |
|
233 | tmp = '_IP_PUSH_TMP_' | |||
|
234 | while tmp in user_ns: | |||
|
235 | tmp = tmp + '_' | |||
|
236 | try: | |||
|
237 | for name, value in ns.iteritems(): | |||
|
238 | user_ns[tmp] = value | |||
|
239 | exec "%s = %s" % (name, tmp) in user_ns | |||
|
240 | finally: | |||
|
241 | user_ns.pop(tmp, None) | |||
233 |
|
242 | |||
234 | @interactive |
|
243 | @interactive | |
235 | def _pull(keys): |
|
244 | def _pull(keys): | |
236 | """helper method for implementing `client.pull` via `client.apply`""" |
|
245 | """helper method for implementing `client.pull` via `client.apply`""" | |
237 | user_ns = globals() |
|
|||
238 | if isinstance(keys, (list,tuple, set)): |
|
246 | if isinstance(keys, (list,tuple, set)): | |
239 | for key in keys: |
|
247 | return map(lambda key: eval(key, globals()), keys) | |
240 | if key not in user_ns: |
|
|||
241 | raise NameError("name '%s' is not defined"%key) |
|
|||
242 | return map(user_ns.get, keys) |
|
|||
243 | else: |
|
248 | else: | |
244 | if keys not in user_ns: |
|
249 | return eval(keys, globals()) | |
245 | raise NameError("name '%s' is not defined"%keys) |
|
|||
246 | return user_ns.get(keys) |
|
|||
247 |
|
250 | |||
248 | @interactive |
|
251 | @interactive | |
249 | def _execute(code): |
|
252 | def _execute(code): |
General Comments 0
You need to be logged in to leave comments.
Login now