MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / Observable

Class Observable

tests_python/resources/_debugger_case1.py:11–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9
10
11class Observable(object):
12 def __init__(self):
13 self.observers = []
14
15 def add_observer(self, observer):
16 sys.stdout.write( 'observer %s\n' % (observer,))
17 ref = weakref.ref(observer)
18 self.observers.append(ref)
19 sys.stdout.write('weakref: %s\n' % (ref(),))
20
21 def Notify(self):
22 for o in self.observers:
23 o = o()
24
25
26 try:
27 import gc
28 except ImportError:
29 o = None #some jython does not have gc, so, there's no sense testing this in it
30 else:
31 try:
32 gc.get_referrers(o)
33 except:
34 o = None #jython and ironpython do not have get_referrers
35
36 if o is not None:
37 sys.stdout.write('still observing %s\n' % (o,))
38 sys.stdout.write('number of referrers: %s\n' % len(gc.get_referrers(o)))
39 frame = gc.get_referrers(o)[0]
40 frame_referrers = gc.get_referrers(frame)
41 sys.stdout.write('frame referrer %s\n' % (frame_referrers,))
42 referrers1 = gc.get_referrers(frame_referrers[1])
43 sys.stdout.write('%s\n' % (referrers1,))
44 sys.stderr.write('TEST FAILED: The observer should have died, even when running in debug\n')
45 else:
46 sys.stdout.write('TEST SUCEEDED: observer died\n')
47
48 sys.stdout.flush()
49 sys.stderr.flush()
50
51class Observer(object):
52 pass

Callers 1

set_upFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected