refbug.py
41 lines
| 1.2 KiB
| text/x-python
|
PythonLexer
Fernando Perez
|
r1916 | """Minimal script to reproduce our nasty reference counting bug. | ||
The problem is related to https://bugs.launchpad.net/ipython/+bug/269966 | ||||
Fernando Perez
|
r1922 | The original fix for that appeared to work, but John D. Hunter found a | ||
matplotlib example which, when run twice in a row, would break. The problem | ||||
were references held by open figures to internals of Tkinter. | ||||
Fernando Perez
|
r1916 | |||
Fernando Perez
|
r1922 | This code reproduces the problem that John saw, without matplotlib. | ||
This script is meant to be called by other parts of the test suite that call it | ||||
via %run as if it were executed interactively by the user. As of 2009-04-13, | ||||
test_magic.py calls it. | ||||
Fernando Perez
|
r1916 | """ | ||
#----------------------------------------------------------------------------- | ||||
# Module imports | ||||
#----------------------------------------------------------------------------- | ||||
import sys | ||||
Brian Granger
|
r2027 | from IPython.core import ipapi | ||
Fernando Perez
|
r1916 | |||
#----------------------------------------------------------------------------- | ||||
# Globals | ||||
#----------------------------------------------------------------------------- | ||||
ip = ipapi.get() | ||||
if not '_refbug_cache' in ip.user_ns: | ||||
ip.user_ns['_refbug_cache'] = [] | ||||
aglobal = 'Hello' | ||||
def f(): | ||||
return aglobal | ||||
cache = ip.user_ns['_refbug_cache'] | ||||
cache.append(f) | ||||
def call_f(): | ||||
for func in cache: | ||||
print 'lowercased:',func().lower() | ||||