diff options
author | Vitja Makarov <vitja.makarov@gmail.com> | 2013-07-30 21:17:57 +0400 |
---|---|---|
committer | Vitja Makarov <vitja.makarov@gmail.com> | 2013-07-30 21:17:57 +0400 |
commit | 940f60fe5b0f7b14a6b29ca6d48179265aa85306 (patch) | |
tree | e2c1124e9116ee8826cc5891b760593e67063385 | |
parent | 14ba650504010facf9a9f342b3ca180cd4eb2d97 (diff) | |
download | blessings-940f60fe5b0f7b14a6b29ca6d48179265aa85306.tar.gz |
contextmanagers: Put state restore code into finally block
-rw-r--r-- | blessings/__init__.py | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/blessings/__init__.py b/blessings/__init__.py index 68212c2..276565b 100644 --- a/blessings/__init__.py +++ b/blessings/__init__.py @@ -235,24 +235,29 @@ class Terminal(object): self.stream.write(self.move_x(x)) elif y is not None: self.stream.write(self.move_y(y)) - yield - - # Restore original cursor position: - self.stream.write(self.restore) + try: + yield + finally: + # Restore original cursor position: + self.stream.write(self.restore) @contextmanager def fullscreen(self): """Return a context manager that enters fullscreen mode while inside it and restores normal mode on leaving.""" self.stream.write(self.enter_fullscreen) - yield - self.stream.write(self.exit_fullscreen) + try: + yield + finally: + self.stream.write(self.exit_fullscreen) @contextmanager def hidden_cursor(self): """Return a context manager that hides the cursor while inside it and makes it visible on leaving.""" self.stream.write(self.hide_cursor) - yield - self.stream.write(self.normal_cursor) + try: + yield + finally: + self.stream.write(self.normal_cursor) @property def color(self): |