forked from selectel/pyte
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
323 lines (254 loc) · 11.7 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
pyte Changelog
==============
Here you can see the full list of changes between each pyte release.
Version 0.8.2
-------------
Technical release, released on November 13th 2023.
- Added py.typed to the source archive and wheel files.
Version 0.8.1
-------------
Released on April 10th 2022.
- 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.
- Dropped Python 2.X support. The minimal required version of Python is
now 3.7.
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 <https://github.com/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 setup.py.
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 <https://github.com/jquast/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 http://www.vt100.net/docs/vt510-rm/DECAWM and issue #20
on GitHub for details.
Version 0.4.7
-------------
Bugfix release, released on March 28th 2013
- Updated ``pyte`` and tests suite to work under Python 3.3.
- Changed ``Screen`` so that `LNM` mode is reset by default,
see http://www.vt100.net/docs/vt510-rm/LNM and issue #11 on GitHub for
details.
Version 0.4.6
-------------
Bugfix release, released on February 29th 2012
Version 0.4.5
-------------
Technical release, released on September 1st 2011
- Added MANIFEST.in 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.