From 59ab72174daaf94579a68f3e338fd49c4386403c 2024-08-30 09:15:49 From: Stavros Ntentos <133706+stdedos@users.noreply.github.com> Date: 2024-08-30 09:15:49 Subject: [PATCH] `AssertionError`: `assert _xterm_term_title_saved` In some (unknown) situation, it is possible that the `_xterm_term_title_saved` is unset, but the code would make a call to `_restore_term_title_xterm`, resulting in `AssertionError`. At least on replicatable reproduction is returning from `ipython` to `pudb` via `^D^D` on an empty cell. See more details in https://github.com/ipython/ipython/pull/14480 Signed-off-by: Stavros Ntentos <133706+stdedos@users.noreply.github.com> --- diff --git a/IPython/utils/terminal.py b/IPython/utils/terminal.py index b09cfe0..10d73fc 100644 --- a/IPython/utils/terminal.py +++ b/IPython/utils/terminal.py @@ -80,7 +80,13 @@ def _set_term_title_xterm(title): def _restore_term_title_xterm(): # Make sure the restore has at least one accompanying set. global _xterm_term_title_saved - assert _xterm_term_title_saved + if not _xterm_term_title_saved: + warnings.warn( + "Expecting xterm_term_title_saved to be True, but is not; will not restore terminal title.", + stacklevel=1, + ) + return + sys.stdout.write('\033[23;0t') _xterm_term_title_saved = False