pyte Changelog

Here you can see the full list of changes between each pyte release.

Version 0.8.1-dev

  • Yet another fix of Screen.set_margins for the case of CSI with no arguments. See issue #61 on GitHub.
  • Changed Screen.erase_in_display to accept additional positional arguments as some some clear implementations include a ; after the first parameter causing pyte to assume a 0 second parameter.
  • Changed Stream FSM to reinit on error when parsing control sequence.
  • Added support for blink to the SGR handler. See PR #120 on GitHub. Thanks to @eight04!
  • Changed Stream to skip XTerm-specific ESC]...$[a-z] sequences. See issue #117 on GitHub.

Version 0.8.0

Released on April 6th, 2018.

This release is NOT backward compatible with 0.7.X branch!

  • Modified the logic around tracking position in the HistoryScreen, allowing the full history to be accessed. See PR #96 on GitHub.
  • Send C0 encoded CSI instead of C1, avoiding compatibility issues with unicode. See issue #99 on GitHub.
  • Changed Stream to really ignore SI in UTF-8 mode. See PR #106 on GitHub. Thanks to @jwodder!
  • Fixed DECSCNM handling bug. The attributes of Screen.default_char were not reversed leaving all blank characters as-is. See PR #102 on GitHub. Thanks to @zblz!
  • Correctly terminate OSC mode in Stream on receipt of a C0 encoded ST character.
  • Allowed resetting cursor attributes in the middle of the SGR sequence. See PR#109 on GiHub. Thanks @andreivasiliu!
  • On exit from DECCOLM mode, restore the terminal width from before entering DECCOLM mode.
  • Changed Screen.select_graphic_rendition to ignore malformed 256/24bit colours. See issue #115 on GitHub.

Version 0.7.0

Released on October 7th 2017.

This release is NOT backward compatible with 0.6.X branch!

  • Removed deprecated only parameter of Stream.attach.
  • Removed deprecated encoding parameter of ByteStream.
  • Fixed how == 3 handling in DiffScreen.erase_in_display.
  • Deprecated DiffScreen. Its functionality has been backported to the base Screen class.
  • Fixed a bug in DiffScreen.draw which incorrectly handled the case when the input of draw required several lines.
  • Fixed a bug in Screen which did not ignore ESC ( argument in UTF8 mode. See issue #88 on GitHub.
  • Changed Screen.resize to do nothing if the requested size matches the current one.
  • Disallowed private mode for Screen.report_device_attributes. This was causing an infinite loop in Emacs and Vim. See issue #81 on GitHub.
  • Fixed a bug in OSC parsing, which caused Stream to hang upon receiving a palette reset request ESC ] R.
  • Changed Screen.reset not to reset DECOM. See discussion in issue #95 on Github.
  • Changed the first tabstop to be at the 9-th column. See PR #98 on GitHub. Thanks to @gordon-quad!

Version 0.6.0

Released on May 28th 2017

This release is NOT backward compatible with 0.5.X branch!

  • Optimized Stream.feed for plain-text input. The code was backported from pymux project by Jonathan Slenders.
  • Optimized Screen by changing Screen.buffer to dict-of-dicts. The idea was borrowed from pymux project by Jonathan Slenders. The implementation was done by @istarion.
  • Further optimized Stream._parser_fsm by forcing static binding between Stream events and Screen methods. The code was backported from pmux project by Jonathan Slenders.
  • Restricted Stream to a single listener and deprecated attach and detach. The old logic can be emulated by a fanout proxy, forwarding events to a list of its listeners.
  • Replaced DebugStream with DebugScreen to workaround the single listener limitation (previsouly DebugStream implicitly added a listener when instantiated). Unlike other screens DebugScreen does not maintain any state.
  • Changed DebugScreen to emit JSON instead of custom text format.
  • Removed overly generic Screen.__before__ and Screen.__after__.
  • Renamed Screen.set_charset to a more appropriate Screen.define_charset.
  • Added support for ECMA-035 DOCS command to ByteStream which no longer accepts encoding as an argument and instead sets it as instructed by DOCS. The default encoding is assumed to be UTF-8.
  • Added support for OSC sequences allowing to set terminal title and icon name.
  • Allowed 256 and 24bit colours in Screen.select_graphic_rendition.
  • Added support for aixterm colours in Screen.select_graphic_rendition, see issue #57 on GitHub.
  • Changed Screen.select_graphic_rendition to ignore 0 if it is given along with other attributes, ie "0;1;2" is now equivalent to "1;2".
  • Fixed rendering of multicolumn characters at ``Screen` boundaries. Thanks to @shaform! See PR #55 on GitHub.
  • Fixed Screen.display in the case of multicolumn characters. See issue #52 on GitHub.
  • Fixed DECSTBM handling in case of missing arguments. See issue #61 on GitHub.
  • Fixed the way Screen.cursor_up and Screen.cursor_down interact with the scrolling region. See #63 on GitHub.
  • Added a minimal web terminal example by @demiurg906. For a faster and more fully-featured version, see demiurg906/pyte_gui.
  • Fixed Screen.cursor_back when called after the draw in the last column.
  • Fixed Screen.inser_characters when called with an argument larger than the number of columns. Thanks to @istarion! See PR #74 on GitHub.
  • Fixed Screen.erase_in_display which did not handle all values supported by TERM=linux. See #80 on GitHub.

Version 0.5.2

Pi Day bugfix release, released on March 14th, 2016

  • Fixed a bug in handling DA request. See issue #46 on GitHub.

Version 0.5.1

Bugfix release, released on January 10th 2015

  • Fixed dependencies in

Version 0.5.0

Released on January 10th 2015

  • Deprecated Stream.consume in favour of Stream.feed. The latter allows for a more efficient implementation because it operates on the whole input string.
  • Improved Stream performance by converting FSM to a coroutine as suggested by Jonathan Slenders in issue #41 on GitHub.
  • Added support for DA (device attributes) and DSR (device status report). The implementation is based on the code by Jonathan Slenders. See issue #41 on GitHub.
  • Screen.draw now properly handles full/ambiguous-width characters. Thanks to the excellent wcwidth library by Jeff Quast.
  • Removed re-exports of abbreviated modules (e.g. mo as a synonym for modes) from pyte.
  • Removed Screen.size which misleadingly returned constructor arguments in reverse order. Please use Screen.columns and Screen.lines instead.
  • Fixed a bug in ByteStream which suppressed the exception if all of the decoders failed to process the input.

Version 0.4.10

Bugfix release, released on August 4th 2015

  • Fixed a bug in DiffScreen.draw which marked the wrong line as changed when DECAWM was enabled.
  • Stream now recognizes ESC % sequences for selecting control character set. However, these operations are no-op in the current version in a sense that ByteStream does not handle them to change encoding.

Version 0.4.9

Bugfix release, released on December 3rd 2014

  • Fixed a bug in Char initialization, see issue #24 on GitHub for details.
  • Updated error message in Stream, referencing str is relevant for Python 3, but not Python 2.

Version 0.4.8

Released on January 13th 2014

  • Screen does NOT inherit from builtin list, use Screen.buffer to access individual characters directly. This is a backward INCOMPATIBLE change.
  • Char._asdict was broken on Python 3.3 because of the changes in namedtuple implementation.
  • LAT1_MAP was an iterator because of the change in map semantics in Python 3.
  • Changed Screen to issues a CR in addition to LF when DECAWM mode is set and the cursor is at the right border of the screen. See and issue #20 on GitHub for details.

Version 0.4.7

Bugfix release, released on March 28th 2013

Version 0.4.6

Bugfix release, released on February 29th 2012

Version 0.4.5

Technical release, released on September 1st 2011

  • Added and CenOS spec file

Version 0.4.4

Bugfix release, released on July 17th 2011

  • Removed pdb calls, left from HistoryScreen debugging – silly, I know :)

Version 0.4.3

Bugfix release, released on July 12th 2011

  • Fixed encoding issues in DebugStream – Unicode was not converted to bytes properly.
  • Fixed G0-1 charset handling and added VAX42 charset for the ancient stuff to work correctly.

Version 0.4.2

Bugfix release, released on June 27th 2011

  • Added a tiny debugging helper: python -m pyte your escape codes
  • Added Screen.__{before,after}__() hooks to Screen – now subclasses can extend more than one command easily.
  • Fixed HistoryScreen – now not as buggy as it used to be: and allows for custom ratio aspect when browsing history, see HistoryScreen documentation for details.
  • Fixed DECTCEM private mode handling – when the mode is reset Screen.cursor.hidden is True otherwise it’s False.

Version 0.4.1

Bugfix release, released on June 21st 2011

  • Minor examples and documentation update before the first public release.

Version 0.4.0

Released on June 21st 2011

  • Improved cursor movement – Screen passes all but one tests in vttest.
  • Changed the way Stream interacts with Screen – event handlers are now implicitly looked up in screen’s __dict__, not connected manually.
  • Changed cursor API – cursor position and attributes are encapsulated in a separate Cursor class.
  • Added support for DECSCNM – toggle screen-wide reverse-video mode.
  • Added a couple of useful Screen subclasses: HistoryScreen which allows screen pagination and DiffScreen which tracks the changed lines.

Version 0.3.9

Released on May 31st 2011

  • Added initial support for G0-1 charsets (mappings taken from tty kernel driver) and SI, SO escape sequences.
  • Changed ByteStream to support fallback encodings – it now takes a list of (encoding, errors) pairs and traverses it left to right on feed().
  • Switched to unicode_literals – one step closer to Python3.

Version 0.3.8

Released on May 23rd 2011

  • Major rewrite of Screen internals – highlights: inherits from list; each character is represented by namedtuple which also holds SGR data.
  • Numerous bugfixes, especially in methods, dealing with manipulating character attributes.

Version 0.3.7

First release after the adoption – skipped a few version to reflect that. Released on May 16th 2011

  • Added support for ANSI color codes, as listed in man console_codes. Not implemented yet: setting alternate font, setting and resetting mappings, blinking text.
  • Added a couple of trivial usage examples in the examples/ dir.