##// END OF EJS Templates
Merge pull request #887 from ipython/qtconsole-menu...
Merge pull request #887 from ipython/qtconsole-menu Major improvements to the Qt console with menubar and tabs. - Menu support for all actions previously available only via keybindings or right-click menus. - Help menu giving quick access to information magics and online docs. - Magic menu with top-level access to common magics and full access to all. - Edit menu with common editing actions. - View menu for font size, full-screen, etc. - tabs: you can run multiple tabs either pointing to the same kernel or to separate kernels.

File last commit:

r3917:03c097c7
r5151:78f4efff merge
Show More
refbug.py
47 lines | 1.5 KiB | text/x-python | PythonLexer
"""Minimal script to reproduce our nasty reference counting bug.
The problem is related to https://github.com/ipython/ipython/issues/141
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.
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 2011-05-29,
test_run.py calls it.
"""
#-----------------------------------------------------------------------------
# Module imports
#-----------------------------------------------------------------------------
import sys
from IPython.core import ipapi
#-----------------------------------------------------------------------------
# Globals
#-----------------------------------------------------------------------------
# This needs to be here because nose and other test runners will import
# this module. Importing this module has potential side effects that we
# want to prevent.
if __name__ == '__main__':
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()