Show More
@@ -1366,7 +1366,7 def test_hold_trait_notifications(): | |||
|
1366 | 1366 | nt.assert_equal(t.a, 4) |
|
1367 | 1367 | nt.assert_equal(changes, []) |
|
1368 | 1368 | |
|
1369 |
nt.assert_equal(changes, [( |
|
|
1369 | nt.assert_equal(changes, [(0, 4)]) | |
|
1370 | 1370 | # Test roll-back |
|
1371 | 1371 | try: |
|
1372 | 1372 | with t.hold_trait_notifications(): |
@@ -597,24 +597,23 class HasTraits(py3compat.with_metaclass(MetaHasTraits, object)): | |||
|
597 | 597 | yield |
|
598 | 598 | return |
|
599 | 599 | else: |
|
600 | self._cross_validation_lock = True | |
|
601 | 600 | cache = {} |
|
602 | notifications = {} | |
|
603 | 601 | _notify_trait = self._notify_trait |
|
604 | 602 | |
|
605 | def cache_values(*a): | |
|
606 | cache[a[0]] = a | |
|
607 | ||
|
608 | def hold_notifications(*a): | |
|
609 | notifications[a[0]] = a | |
|
603 | def merge(previous, current): | |
|
604 | """merges notifications of the form (name, old, value)""" | |
|
605 | if previous is None: | |
|
606 | return current | |
|
607 | else: | |
|
608 | return (current[0], previous[1], current[2]) | |
|
610 | 609 | |
|
611 | self._notify_trait = cache_values | |
|
610 | def hold(*a): | |
|
611 | cache[a[0]] = merge(cache.get(a[0]), a) | |
|
612 | 612 | |
|
613 | 613 | try: |
|
614 | self._notify_trait = hold | |
|
615 | self._cross_validation_lock = True | |
|
614 | 616 | yield |
|
615 | finally: | |
|
616 | try: | |
|
617 | self._notify_trait = hold_notifications | |
|
618 | 617 |
|
|
619 | 618 |
|
|
620 | 619 |
|
@@ -627,7 +626,6 class HasTraits(py3compat.with_metaclass(MetaHasTraits, object)): | |||
|
627 | 626 |
|
|
628 | 627 |
|
|
629 | 628 |
|
|
630 | notifications = {} | |
|
631 | 629 |
|
|
632 | 630 |
|
|
633 | 631 |
|
@@ -638,8 +636,9 class HasTraits(py3compat.with_metaclass(MetaHasTraits, object)): | |||
|
638 | 636 |
|
|
639 | 637 |
|
|
640 | 638 |
|
|
639 | ||
|
641 | 640 |
|
|
642 |
|
|
|
641 | for v in cache.values(): | |
|
643 | 642 |
|
|
644 | 643 | |
|
645 | 644 | def _notify_trait(self, name, old_value, new_value): |
General Comments 0
You need to be logged in to leave comments.
Login now