##// END OF EJS Templates
Finish fixing the at-exit spurious failures....
Matthias Bussonnier -
Show More
@@ -3771,6 +3771,22 b' class InteractiveShell(SingletonConfigurable):'
3771 raise TypeError("%s is neither a string nor a macro." % target,
3771 raise TypeError("%s is neither a string nor a macro." % target,
3772 codeobj)
3772 codeobj)
3773
3773
3774 def _atexit_once(self):
3775 """
3776 At exist operation that need to be called at most once.
3777 Second call to this function per instance will do nothing.
3778 """
3779
3780 if not getattr(self, "_atexit_once_called", False):
3781 self._atexit_once_called = True
3782 # Clear all user namespaces to release all references cleanly.
3783 self.reset(new_session=False)
3784 # Close the history session (this stores the end time and line count)
3785 # this must be *before* the tempfile cleanup, in case of temporary
3786 # history db
3787 self.history_manager.end_session()
3788 self.history_manager = None
3789
3774 #-------------------------------------------------------------------------
3790 #-------------------------------------------------------------------------
3775 # Things related to IPython exiting
3791 # Things related to IPython exiting
3776 #-------------------------------------------------------------------------
3792 #-------------------------------------------------------------------------
@@ -3785,13 +3801,7 b' class InteractiveShell(SingletonConfigurable):'
3785 code that has the appropriate information, rather than trying to
3801 code that has the appropriate information, rather than trying to
3786 clutter
3802 clutter
3787 """
3803 """
3788 # Clear all user namespaces to release all references cleanly.
3804 self._atexit_once()
3789 self.reset(new_session=False)
3790 # Close the history session (this stores the end time and line count)
3791 # this must be *before* the tempfile cleanup, in case of temporary
3792 # history db
3793 self.history_manager.end_session()
3794 del self.history_manager
3795
3805
3796 # Cleanup all tempfiles and folders left around
3806 # Cleanup all tempfiles and folders left around
3797 for tfile in self.tempfiles:
3807 for tfile in self.tempfiles:
@@ -146,8 +146,16 b' def test_import_pylab():'
146 nt.assert_true('plt' in ns)
146 nt.assert_true('plt' in ns)
147 nt.assert_equal(ns['np'], np)
147 nt.assert_equal(ns['np'], np)
148
148
149 from traitlets.config import Config
150
151
149 class TestPylabSwitch(object):
152 class TestPylabSwitch(object):
150 class Shell(InteractiveShell):
153 class Shell(InteractiveShell):
154 def init_history(self):
155 """Sets up the command history, and starts regular autosaves."""
156 self.config.HistoryManager.hist_file = ":memory:"
157 super().init_history()
158
151 def enable_gui(self, gui):
159 def enable_gui(self, gui):
152 pass
160 pass
153
161
@@ -179,6 +187,7 b' class TestPylabSwitch(object):'
179 matplotlib.rcParamsOrig = self._saved_rcParamsOrig
187 matplotlib.rcParamsOrig = self._saved_rcParamsOrig
180
188
181 def test_qt(self):
189 def test_qt(self):
190
182 s = self.Shell()
191 s = self.Shell()
183 gui, backend = s.enable_matplotlib(None)
192 gui, backend = s.enable_matplotlib(None)
184 nt.assert_equal(gui, 'qt')
193 nt.assert_equal(gui, 'qt')
@@ -615,6 +615,13 b' class TerminalInteractiveShell(InteractiveShell):'
615
615
616 self.restore_term_title()
616 self.restore_term_title()
617
617
618 # try to call some at-exit operation optimistically as some things can't
619 # be done during interpreter shutdown. this is technically inaccurate as
620 # this make mainlool not re-callable, but that should be a rare if not
621 # in existent use case.
622
623 self._atexit_once()
624
618
625
619 _inputhook = None
626 _inputhook = None
620 def inputhook(self, context):
627 def inputhook(self, context):
General Comments 0
You need to be logged in to leave comments. Login now