From e015edfb49dfebd47147d7df393dfa17285f709c 2015-04-02 19:51:35 From: Thomas Kluyver Date: 2015-04-02 19:51:35 Subject: [PATCH] Merge pull request #8228 from minrk/rm-doctestreload remove utils.doctestreload --- diff --git a/IPython/utils/doctestreload.py b/IPython/utils/doctestreload.py deleted file mode 100644 index 0daac62..0000000 --- a/IPython/utils/doctestreload.py +++ /dev/null @@ -1,80 +0,0 @@ -# encoding: utf-8 -""" -A utility for handling the reloading of doctest. -""" - -#----------------------------------------------------------------------------- -# Copyright (C) 2008-2011 The IPython Development Team -# -# Distributed under the terms of the BSD License. The full license is in -# the file COPYING, distributed as part of this software. -#----------------------------------------------------------------------------- - -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- - -import sys - -#----------------------------------------------------------------------------- -# Code -#----------------------------------------------------------------------------- - -def dhook_wrap(func,*a,**k): - """Wrap a function call in a sys.displayhook controller. - - Returns a wrapper around func which calls func, with all its arguments and - keywords unmodified, using the default sys.displayhook. Since IPython - modifies sys.displayhook, it breaks the behavior of certain systems that - rely on the default behavior, notably doctest. - """ - - def f(*a,**k): - - dhook_s = sys.displayhook - sys.displayhook = sys.__displayhook__ - try: - out = func(*a,**k) - finally: - sys.displayhook = dhook_s - - return out - - f.__doc__ = func.__doc__ - return f - - -def doctest_reload(): - """Properly reload doctest to reuse it interactively. - - This routine: - - - imports doctest but does NOT reload it (see below). - - - resets its global 'master' attribute to None, so that multiple uses of - the module interactively don't produce cumulative reports. - - - Monkeypatches its core test runner method to protect it from IPython's - modified displayhook. Doctest expects the default displayhook behavior - deep down, so our modification breaks it completely. For this reason, a - hard monkeypatch seems like a reasonable solution rather than asking - users to manually use a different doctest runner when under IPython. - - Notes - ----- - - As of Python 2.6.6, 2.7.1 and 3.2, this monkeypatching is no longer required. - doctest now takes care of resetting sys.displayhook itself. This function - remains for now in case anyone has to work with older versions, but it's - no longer called during IPython startup. - - This function *used to* reload doctest, but this has been disabled because - reloading doctest unconditionally can cause massive breakage of other - doctest-dependent modules already in memory, such as those for IPython's - own testing system. The name wasn't changed to avoid breaking people's - code, but the reload call isn't actually made anymore.""" - - import doctest - doctest.master = None - doctest.DocTestRunner.run = dhook_wrap(doctest.DocTestRunner.run) -