##// END OF EJS Templates
Reset the interactive namespace __warningregistry__ before executing code...
Nathaniel J. Smith -
Show More
@@ -874,6 +874,8 b' class InteractiveShell(SingletonConfigurable):'
874 def init_events(self):
874 def init_events(self):
875 self.events = EventManager(self, available_events)
875 self.events = EventManager(self, available_events)
876
876
877 self.events.register("pre_execute", self._clear_warning_registry)
878
877 def register_post_execute(self, func):
879 def register_post_execute(self, func):
878 """DEPRECATED: Use ip.events.register('post_run_cell', func)
880 """DEPRECATED: Use ip.events.register('post_run_cell', func)
879
881
@@ -883,6 +885,13 b' class InteractiveShell(SingletonConfigurable):'
883 "ip.events.register('post_run_cell', func) instead.")
885 "ip.events.register('post_run_cell', func) instead.")
884 self.events.register('post_run_cell', func)
886 self.events.register('post_run_cell', func)
885
887
888 def _clear_warning_registry(self):
889 # clear the warning registry, so that different code blocks with
890 # overlapping line number ranges don't cause spurious suppression of
891 # warnings (see gh-6611 for details)
892 if "__warningregistry__" in self.user_global_ns:
893 del self.user_global_ns["__warningregistry__"]
894
886 #-------------------------------------------------------------------------
895 #-------------------------------------------------------------------------
887 # Things related to the "main" module
896 # Things related to the "main" module
888 #-------------------------------------------------------------------------
897 #-------------------------------------------------------------------------
@@ -843,3 +843,17 b' class TestSyntaxErrorTransformer(unittest.TestCase):'
843
843
844
844
845
845
846 def test_warning_suppression():
847 ip.run_cell("import warnings")
848 try:
849 with tt.AssertPrints("UserWarning: asdf", channel="stderr"):
850 ip.run_cell("warnings.warn('asdf')")
851 # Here's the real test -- if we run that again, we should get the
852 # warning again. Traditionally, each warning was only issued once per
853 # IPython session (approximately), even if the user typed in new and
854 # different code that should have also triggered the warning, leading
855 # to much confusion.
856 with tt.AssertPrints("UserWarning: asdf", channel="stderr"):
857 ip.run_cell("warnings.warn('asdf')")
858 finally:
859 ip.run_cell("del warnings")
General Comments 0
You need to be logged in to leave comments. Login now