NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1407 most downloaded on PyPI
A full-featured console (xterm et al.) user interface library
Last release 3 days ago
01 Oct 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
14 years old
112 releases · first in 2012
Fix Text.pack() wrapping a line after a tab stop by @penguinolog in #1364
Full Changelog: 4.2.3...4.2.4
2026-10-01
Fix Text.pack() wrapping a line after a tab stop by @penguinolog in https://github.com/urwid/urwid/pull/1364
Fix ListBox focus restore on a shrunk body by @penguinolog in https://github.com/urwid/urwid/pull/1365
Full Changelog: https://github.com/urwid/urwid/compare/4.2.3...4.2.4
One column per quarter.
Fix Pile, Columns and GridFlow selectable flag caching by @penguinolog in #1362
Full Changelog: 4.2.2...4.2.3
2026-09-30
Fix Pile, Columns and GridFlow selectable flag caching by @penguinolog in https://github.com/urwid/urwid/pull/1362
Full Changelog: https://github.com/urwid/urwid/compare/4.2.2...4.2.3
Fix Edit wrapping on full len by @penguinolog in #1356
AttrMap setters to accept parameters like constructor does by @penguinolog in #1357Full Changelog: 4.2.1...4.2.2
2026-09-30
Fix Edit wrapping on full len by @penguinolog in https://github.com/urwid/urwid/pull/1356
Simplify AttrMap setters to accept parameters like constructor does by @penguinolog in https://github.com/urwid/urwid/pull/1357
Type palette names as Hashable and the optional fields as Optional by @penguinolog in https://github.com/urwid/urwid/pull/1358
Fix attributes defined outside of init by @penguinolog in https://github.com/urwid/urwid/pull/1359
Full Changelog: https://github.com/urwid/urwid/compare/4.2.1...4.2.2
Fix: Empty Text render fail and 0 is valid tab size by @penguinolog in #1354
Text render fail and 0 is valid tab size by @penguinolog in #1354Full Changelog: 4.2.0...4.2.1
2026-09-29
Fix: Empty Text render fail and 0 is valid tab size by @penguinolog in https://github.com/urwid/urwid/pull/1354
Full Changelog: https://github.com/urwid/urwid/compare/4.2.0...4.2.1
Deprecate monkeypatch of displays by HtmlGenerator by @penguinolog in #1352
Full Changelog: 4.1.7...4.2.0
2026-09-29
Handle tabs by StandardTextLayout by @penguinolog in https://github.com/urwid/urwid/pull/1349
HTML fragment can use all colours and styles like web display by @penguinolog in https://github.com/urwid/urwid/pull/1350
Deprecate monkeypatch of displays by HtmlGenerator by @penguinolog in https://github.com/urwid/urwid/pull/1352
Deprecate GLibEventLoop by @penguinolog in https://github.com/urwid/urwid/pull/1340
Add minimal docstrings to all classes by @penguinolog in https://github.com/urwid/urwid/pull/1346
Add minimal docstrings to all public methods by @penguinolog in https://github.com/urwid/urwid/pull/1347
Add last docstrings to class initialisers by @penguinolog in https://github.com/urwid/urwid/pull/1348
Full Changelog: https://github.com/urwid/urwid/compare/4.1.7...4.2.0
Make Text's line translation cache safe for concurrent readers by @penguinolog in #1338
Full Changelog: 4.1.6...4.1.7
2026-09-23
Make Text's line translation cache safe for concurrent readers by @penguinolog in https://github.com/urwid/urwid/pull/1338
Full Changelog: https://github.com/urwid/urwid/compare/4.1.6...4.1.7
Implement synchronised output by @penguinolog in #1333
Full Changelog: 4.1.5...4.1.6
2026-09-23
Implement synchronised output by @penguinolog in https://github.com/urwid/urwid/pull/1333
Preserve focus when deleting negative-step slices by @jakezwang in https://github.com/urwid/urwid/pull/1329
Fix screenshot generation and re-generate screenshots by @penguinolog in https://github.com/urwid/urwid/pull/1326
Switch screenshots generation to 2x size and no antialiasing by @penguinolog in https://github.com/urwid/urwid/pull/1327
Optimise signals emit path by @penguinolog in https://github.com/urwid/urwid/pull/1331
@jakezwang made their first contribution in https://github.com/urwid/urwid/pull/1329
Full Changelog: https://github.com/urwid/urwid/compare/4.1.5...4.1.6
Support async callbacks set via MainLoop if backend support by @penguinolog in #1314
Full Changelog: 4.1.4...4.1.5
2026-09-18
Support async callbacks set via MainLoop if backend support by @penguinolog in https://github.com/urwid/urwid/pull/1314
Support async callbacks in ZMQEventLoop, make ZMQEventLoop async by @penguinolog in https://github.com/urwid/urwid/pull/1315
Add full palette and AttrSpec support for WEB display by @penguinolog in https://github.com/urwid/urwid/pull/1316
Add capital letters to thin 4x3 font by @penguinolog in https://github.com/urwid/urwid/pull/1323
Announce removal of old display import aliases by @penguinolog in https://github.com/urwid/urwid/pull/1312
Fix screen redraw on window resize for curses display by @penguinolog in https://github.com/urwid/urwid/pull/1317
Implement nested popups support by @penguinolog in https://github.com/urwid/urwid/pull/1320
Optimise code and extend test coverage for Canvas classes by @penguinolog in https://github.com/urwid/urwid/pull/1313
Optimise BarGraph logic by @penguinolog in https://github.com/urwid/urwid/pull/1321
Full Changelog: https://github.com/urwid/urwid/compare/4.1.4...4.1.5
Clarify deprecation warnings by @penguinolog in #1310
Frame.contents.iter() / len(Frame.contents) by @penguinolog in #1303Full Changelog: 4.1.3...4.1.4
2026-09-17
Support async callbacks in AsyncioEventLoop by @penguinolog in https://github.com/urwid/urwid/pull/1299
Support async callbacks in TornadoEventLoop by @penguinolog in https://github.com/urwid/urwid/pull/1300
Clarify deprecation warnings by @penguinolog in https://github.com/urwid/urwid/pull/1310
Fix: close file descriptors on stop / exception by @penguinolog in https://github.com/urwid/urwid/pull/1297
Fix Frame.contents.iter() / len(Frame.contents) by @penguinolog in https://github.com/urwid/urwid/pull/1303
Fix "CanvasError: Canvas text is wider than the maxcol specified" by @penguinolog in https://github.com/urwid/urwid/pull/1302
Fix overlay top widget setting via contents by @penguinolog in https://github.com/urwid/urwid/pull/1307
Strip redundant type explanation from docstrings by @penguinolog in https://github.com/urwid/urwid/pull/1301
Refactoring: get rid of oneliner / one-use local helpers by @penguinolog in https://github.com/urwid/urwid/pull/1298
Full Changelog: https://github.com/urwid/urwid/compare/4.1.3...4.1.4
Fix: Overlay top widget or bottom widget replace should trigger invalidation by @penguinolog in #1294
Full Changelog: 4.1.2...4.1.3
2026-09-11
Fix: Overlay top widget or bottom widget replace should trigger invalidation by @penguinolog in https://github.com/urwid/urwid/pull/1294
Documentation: force theme override to fix readability on wide screen by @penguinolog in https://github.com/urwid/urwid/pull/1288
Speed up the widget render hot paths by @penguinolog in https://github.com/urwid/urwid/pull/1290
Full Changelog: https://github.com/urwid/urwid/compare/4.1.2...4.1.3
Restore terminal palette if was modified by @penguinolog in #1278
raises to docstrings by @penguinolog in #1286Full Changelog: 4.1.1...4.1.2
2026-09-07
Restore terminal palette if was modified by @penguinolog in https://github.com/urwid/urwid/pull/1278
Handle issue with shard calculation inconsistency with shard_tail by @penguinolog in https://github.com/urwid/urwid/pull/1280
Documentation: fix typo in widget classes doc by @penguinolog in https://github.com/urwid/urwid/pull/1277
Fix docstring for "draw_string" by @penguinolog in https://github.com/urwid/urwid/pull/1279
Documentation: fix docstrings to follow PEP257 by @penguinolog in https://github.com/urwid/urwid/pull/1285
Documentation: mass-add raises to docstrings by @penguinolog in https://github.com/urwid/urwid/pull/1286
Full Changelog: https://github.com/urwid/urwid/compare/4.1.1...4.1.2
Fix SIGTSTP handler for POSIX RAW display and explain behaviour by @penguinolog in #1271
SIGTSTP handler for POSIX RAW display and explain behaviour by @penguinolog in #1271Full Changelog: 4.1.0...4.1.1
2026-09-03
Fix SIGTSTP handler for POSIX RAW display and explain behaviour by @penguinolog in https://github.com/urwid/urwid/pull/1271
Fix regression in treetools: handle wrapped widgets inside TreeWidget by @penguinolog in https://github.com/urwid/urwid/pull/1274
Stop CanvasCache._deps growing without bound by @afonsojanu in https://github.com/urwid/urwid/pull/1255
@afonsojanu made their first contribution in https://github.com/urwid/urwid/pull/1255
Full Changelog: https://github.com/urwid/urwid/compare/4.1.0...4.1.1
Feat: detect terminal properties not only for basic xterm by @penguinolog in #1258
ANSIText widget by @penguinolog in #1265ANSIText is a Text like widget containing parsed ANSI text including color/style information and basic flags as bel/leds/title.Full Changelog: 4.0.13...4.1.0
2026-09-02
Feat: detect terminal properties not only for basic xterm by @penguinolog in https://github.com/urwid/urwid/pull/1258
feat: extend faint text support to vterm and displays by @penguinolog in https://github.com/urwid/urwid/pull/1263
Feat: implement deque support for ListBox and ANSIText widget by @penguinolog in https://github.com/urwid/urwid/pull/1265 ANSIText is a Text like widget containing parsed ANSI text including color/style information and basic flags as bel/leds/title.
Count the real ellipsis width in trimmed layout segments by @dylanpulver in https://github.com/urwid/urwid/pull/1261
Typing: fix ListBox typing protocol by @penguinolog in https://github.com/urwid/urwid/pull/1253
Tests: add missing tests for common use-cases by @penguinolog in https://github.com/urwid/urwid/pull/1257
Tests: extend canvas and event loop tests coverage by @penguinolog in https://github.com/urwid/urwid/pull/1259
Tests: fix windows side by @penguinolog in https://github.com/urwid/urwid/pull/1260
@dylanpulver made their first contribution in https://github.com/urwid/urwid/pull/1261
Full Changelog: https://github.com/urwid/urwid/compare/4.0.13...4.1.0
Display attributes: add faint text support by @ChrisJr404 in #1249
Full Changelog: 4.0.12...4.0.13
2026-08-25
Display attributes: add faint text support by @ChrisJr404 in https://github.com/urwid/urwid/pull/1249
Fix sizing related issues by @penguinolog in https://github.com/urwid/urwid/pull/1250
@ChrisJr404 made their first contribution in https://github.com/urwid/urwid/pull/1249
Full Changelog: https://github.com/urwid/urwid/compare/4.0.12...4.0.13
Text layout: do not crash when a wide character is clipped on both sides by @luantaraschi in #1241
Full Changelog: 4.0.11...4.0.12
2026-08-25
Text layout: do not crash when a wide character is clipped on both sides by @luantaraschi in https://github.com/urwid/urwid/pull/1241
Fix web display init by @penguinolog in https://github.com/urwid/urwid/pull/1243
Full Changelog: https://github.com/urwid/urwid/compare/4.0.11...4.0.12
Raw display: do not crash on a last row of a single wide grapheme by @luantaraschi in #1229
Padding in GridFlow by @penguinolog in #1231Full Changelog: 4.0.10...4.0.11
2026-08-19
Raw display: do not crash on a last row of a single wide grapheme by @luantaraschi in https://github.com/urwid/urwid/pull/1229
ScrollBar: decide the scrollbar hitbox before the event is passed on by @luantaraschi in https://github.com/urwid/urwid/pull/1234
GridFlow: keep the focus a callback set during keypress or mouse event by @luantaraschi in https://github.com/urwid/urwid/pull/1230
Typing: annotate ListBox by @penguinolog in https://github.com/urwid/urwid/pull/1236
Refactoring: stop with monkey-patching Padding in GridFlow by @penguinolog in https://github.com/urwid/urwid/pull/1231
@luantaraschi made their first contribution in https://github.com/urwid/urwid/pull/1229
Full Changelog: https://github.com/urwid/urwid/compare/4.0.10...4.0.11
Web display: handle invalid input with "window resize" by @penguinolog in #1220
ListWalker API in ListBox calls by @penguinolog in #1227Full Changelog: 4.0.9...4.0.10
2026-08-17
Web display: handle invalid input with "window resize" by @penguinolog in https://github.com/urwid/urwid/pull/1220
Typing: annotate bar_graph by @penguinolog in https://github.com/urwid/urwid/pull/1221
typing: handle internal mypy warnings by @penguinolog in https://github.com/urwid/urwid/pull/1224
typing: fix monitored list errors by @penguinolog in https://github.com/urwid/urwid/pull/1225
typing: fix part of listbox errors by @penguinolog in https://github.com/urwid/urwid/pull/1226
typing: early guard ListWalker API in ListBox calls by @penguinolog in https://github.com/urwid/urwid/pull/1227
Full Changelog: https://github.com/urwid/urwid/compare/4.0.9...4.0.10
Typing: fix WidgetContainerListContentsMixin typing by @penguinolog in #1210
WidgetContainerListContentsMixin typing by @penguinolog in #1210Full Changelog: 4.0.8...4.0.9
2026-08-14
Typing: fix WidgetContainerListContentsMixin typing by @penguinolog in https://github.com/urwid/urwid/pull/1210
Typing: simplify internal annotations by @penguinolog in https://github.com/urwid/urwid/pull/1211
Typing: explicit annotate enum literals for widget constants by @penguinolog in https://github.com/urwid/urwid/pull/1218
Refactoring: get rid of monkeypatching in monitored_list by @penguinolog in https://github.com/urwid/urwid/pull/1213
Full Changelog: https://github.com/urwid/urwid/compare/4.0.8...4.0.9
Fix MRO for SimpleFocusListWalker: wrong order causes delayed invalidate by @penguinolog in #1204
Full Changelog: 4.0.7...4.0.8
2026-07-26
Fix MRO for SimpleFocusListWalker: wrong order causes delayed invalidate by @penguinolog in https://github.com/urwid/urwid/pull/1204
Full Changelog: https://github.com/urwid/urwid/compare/4.0.7...4.0.8
Fix encoding handling by web display by @penguinolog in #1201
MainLoop and signals by @penguinolog in #1199ListBox expected widget API by @penguinolog in #1200treetools by @penguinolog in #1197Full Changelog: 4.0.6...4.0.7
2026-07-24
Fix encoding handling by web display by @penguinolog in https://github.com/urwid/urwid/pull/1201
Typing: annotate MainLoop and signals by @penguinolog in https://github.com/urwid/urwid/pull/1199
Typing: fix ListBox expected widget API by @penguinolog in https://github.com/urwid/urwid/pull/1200
Typing: partial annotation for treetools by @penguinolog in https://github.com/urwid/urwid/pull/1197
Full Changelog: https://github.com/urwid/urwid/compare/4.0.6...4.0.7
Implemented protocol base classes AbstractWidget and internal AbstractBoxWidget , AbstractFlowWidget and AbstractFixedWidget for protocol based typing
Implemented protocol base classes AbstractWidget and internal AbstractBoxWidget, AbstractFlowWidget and AbstractFixedWidget for protocol based typing.
All classes implementing AbstractWidget are considered valid widget (as all required APIs available).
Container widgets as Columns, Pile, GridFlow, Frame, Overlay and Padding now declare expected APIs from widgets depends on sizing parameter in __init__.
AbstractWidget abstract base class/protocol by @penguinolog in #1196Full Changelog: 4.0.5...4.0.6
2026-07-23
Implemented protocol base classes AbstractWidget and internal AbstractBoxWidget, AbstractFlowWidget and AbstractFixedWidget for protocol based typing. All classes implementing AbstractWidget are considered valid widget (as all required APIs available). Container widgets as Columns, Pile, GridFlow, Frame, Overlay and Padding now declare expected APIs from widgets depends on sizing parameter in __init__.
Fix web display broken by token_urlsafe session ids by @2018302345 in https://github.com/urwid/urwid/pull/1195
Typing: fix scrollable module annotations by @penguinolog in https://github.com/urwid/urwid/pull/1194
Typing: introduce AbstractWidget abstract base class/protocol by @penguinolog in https://github.com/urwid/urwid/pull/1196
@2018302345 made their first contribution in https://github.com/urwid/urwid/pull/1195
Full Changelog: https://github.com/urwid/urwid/compare/4.0.5...4.0.6
Copy signal handlers before emission by @Sanjays2402 in #1187
_scrollbar_layout and left click handling for Scrollable by @penguinolog in #1192Filler typing annotations by @penguinolog in #1183Edit widget to use WidgetWrap as base class and update methods by @penguinolog in #1180Full Changelog: 4.0.4...4.0.5
2026-07-20
Copy signal handlers before emission by @Sanjays2402 in https://github.com/urwid/urwid/pull/1187
Implement _scrollbar_layout and left click handling for Scrollable by @penguinolog in https://github.com/urwid/urwid/pull/1192
Fix rle_product for zero-len elements by @penguinolog in https://github.com/urwid/urwid/pull/1191
typing: fix Filler typing annotations by @penguinolog in https://github.com/urwid/urwid/pull/1183
typing: extend widget_decoration module typing coverage by @penguinolog in https://github.com/urwid/urwid/pull/1184
Typing: annotate and fix attr_map by @penguinolog in https://github.com/urwid/urwid/pull/1186
Migrate Edit widget to use WidgetWrap as base class and update methods by @penguinolog in https://github.com/urwid/urwid/pull/1180
@Sanjays2402 made their first contribution in https://github.com/urwid/urwid/pull/1187
Full Changelog: https://github.com/urwid/urwid/compare/4.0.4...4.0.5
urwid.Colmns: re-calculate column_widths only if pack widgets changed by @penguinolog in #1178
Full Changelog: 4.0.3...4.0.4
2026-07-13
urwid.Colmns: re-calculate column_widths only if pack widgets changed by @penguinolog in https://github.com/urwid/urwid/pull/1178
Fix IndexError in decompose_tagmarkup when a nested sublist is empty by @gaoflow in https://github.com/urwid/urwid/pull/1172
Typing: partially annotate examples and fix annotations by @penguinolog in https://github.com/urwid/urwid/pull/1173
urwid.WidgetContainerMixin: return use protocol base class by @penguinolog in https://github.com/urwid/urwid/pull/1181
@gaoflow made their first contribution in https://github.com/urwid/urwid/pull/1172
Full Changelog: https://github.com/urwid/urwid/compare/4.0.3...4.0.4
Deprecation: Deprecate content_delta as unused by @penguinolog in #1151
content_delta as unused by @penguinolog in #1151shard_body_row: falsy content_iter raises ValueError by @penguinolog in #1162Full Changelog: 4.0.2...4.0.3
2026-06-25
Deprecate content_delta as unused by @penguinolog in https://github.com/urwid/urwid/pull/1151
Fix shard_body_row: falsy content_iter raises ValueError by @penguinolog in https://github.com/urwid/urwid/pull/1162
Mass typing annotations fixes.
Full Changelog: https://github.com/urwid/urwid/compare/4.0.2...4.0.3
Initial typing support for urwid package by @penguinolog in #1144
urwid.display and urwid.event_loop by @penguinolog in #1138urwid.display by @penguinolog in #1139urwid.widget by @penguinolog in #1142urwid.widget.scrollable by @penguinolog in #1143Full Changelog: 4.0.1...4.0.2
2026-06-02
Initial typing support for urwid package by @penguinolog in https://github.com/urwid/urwid/pull/1144
Fix ListBoxError in _keypress_page_down when snapping to a widget above the top by @neutralinsomniac in https://github.com/urwid/urwid/pull/1133
Fix lazy_import of display modules if __package__ is not defined by @penguinolog in https://github.com/urwid/urwid/pull/1136
Adjust typing for urwid.display and urwid.event_loop by @penguinolog in https://github.com/urwid/urwid/pull/1138
Typing: extend typing information for urwid.display by @penguinolog in https://github.com/urwid/urwid/pull/1139
Typing: adjust event loop types by @penguinolog in https://github.com/urwid/urwid/pull/1140
Typing: adjust types for vterm, numedit and graphics by @penguinolog in https://github.com/urwid/urwid/pull/1141
Typing: adjust types for urwid.widget by @penguinolog in https://github.com/urwid/urwid/pull/1142
Feat: refactor urwid.widget.scrollable by @penguinolog in https://github.com/urwid/urwid/pull/1143
Web display: tighten security by using more complex identifiers by @penguinolog in https://github.com/urwid/urwid/pull/1137
@neutralinsomniac made their first contribution in https://github.com/urwid/urwid/pull/1133
Full Changelog: https://github.com/urwid/urwid/compare/4.0.1...4.0.2
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/4.0.0...4.0.1
Deprecation: Remove deprecated protected methods for version 4 by @penguinolog in https://github.com/urwid/urwid/pull/1078
<!-- Release notes generated using configuration in .github/release.yml at master -->
Filler.get_body and Filler.set_body by @penguinolog in https://github.com/urwid/urwid/pull/1117Full Changelog: https://github.com/urwid/urwid/compare/3.0.5...4.0.0
Un-deprecate user_arg for signals by @penguinolog in https://github.com/urwid/urwid/pull/1092
<!-- Release notes generated using configuration in .github/release.yml at master -->
user_arg for signals by @penguinolog in https://github.com/urwid/urwid/pull/1092Full Changelog: https://github.com/urwid/urwid/compare/3.0.4...3.0.5
Fix CheckBox DeprecationWarning: Use user_args instead of user_arg by @sawdmn in https://github.com/urwid/urwid/pull/1079
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/3.0.3...3.0.4
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/3.0.2...3.0.3
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/3.0.1...3.0.2
2025-05-07
Bugfix: Corner case: Scrollbar render for only 1 row height by @penguinolog in https://github.com/urwid/urwid/pull/1021
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
setup.py lead to wrong metadata and mark of release 3.0.0 as Python 3.7 compatible.
Since urwid is distribluted in the pre-packaged format (wheel),
missing setup.py will not affect old toolchain users except special cases (manually enforced sdist usage).AsyncioEventLoop by @penguinolog in https://github.com/urwid/urwid/pull/1019Full Changelog: https://github.com/urwid/urwid/compare/3.0.0...3.0.1
Drop deprecated __super property by @penguinolog in https://github.com/urwid/urwid/pull/956
<!-- Release notes generated using configuration in .github/release.yml at master -->
__super property by @penguinolog in https://github.com/urwid/urwid/pull/956FlowWidget, BoxWidget and FixedWidget widgets by @penguinolog in https://github.com/urwid/urwid/pull/955Canvas and AttrSpec by @penguinolog in https://github.com/urwid/urwid/pull/958bytes based fonts by @penguinolog in https://github.com/urwid/urwid/pull/961TermScroller by @penguinolog in https://github.com/urwid/urwid/pull/960_set_done from the ProgressBar by @penguinolog in https://github.com/urwid/urwid/pull/971CommandMap MutableMapping by @penguinolog in https://github.com/urwid/urwid/pull/969MetaSignals subclass ABCMeta by @penguinolog in https://github.com/urwid/urwid/pull/962MetaSuper should be the last base for classes by @penguinolog in https://github.com/urwid/urwid/pull/972Pile by @penguinolog in https://github.com/urwid/urwid/pull/1006Full Changelog: https://github.com/urwid/urwid/compare/2.6.16...3.0.0
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.6.15...2.6.16
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
ListBox.rows_max calculation for empty container by @penguinolog in https://github.com/urwid/urwid/pull/910Full Changelog: https://github.com/urwid/urwid/compare/2.6.14...2.6.15
2024-07-03
Fix ListBox.rows_max calculation for empty container by @penguinolog in https://github.com/urwid/urwid/pull/910
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.6.13...2.6.14
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
ExceptionGroup handling without an external library in python 3.11+ by @penguinolog in https://github.com/urwid/urwid/pull/894Full Changelog: https://github.com/urwid/urwid/compare/2.6.12...2.6.13
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.6.11...2.6.12
Do not use deprecated positioning in the code and examples by @penguinolog in https://github.com/urwid/urwid/pull/869
<!-- Release notes generated using configuration in .github/release.yml at master -->
Widget.rows annotation by @penguinolog in https://github.com/urwid/urwid/pull/874Full Changelog: https://github.com/urwid/urwid/compare/2.6.10...2.6.11
2024-04-22
Fix Widget.rows annotation by @penguinolog in https://github.com/urwid/urwid/pull/874
Do not use deprecated positioning in the code and examples by @penguinolog in https://github.com/urwid/urwid/pull/869
Docs: partial update of screenshots by @penguinolog in https://github.com/urwid/urwid/pull/873
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
ScrollBar: fully support __length_hint__ if not Sized by @penguinolog in https://github.com/urwid/urwid/pull/863Full Changelog: https://github.com/urwid/urwid/compare/2.6.9...2.6.10
2024-03-25
ScrollBar: fully support __length_hint__ if not Sized by @penguinolog in https://github.com/urwid/urwid/pull/863
Support PEP424 API as marker for limited size of ListBox body by @penguinolog in https://github.com/urwid/urwid/pull/861
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
ListBox by @penguinolog in https://github.com/urwid/urwid/pull/858
Absolute scrolling calculation is resource-hungry and can cause serious issues on the long lists.
This change also rework calculation allowing to use ScrollBar with TreeList (users should prevent infinite load cycle on lazy-load self).<shift> key reading for sgrmouse by @penguinolog in https://github.com/urwid/urwid/pull/859
Historically <shift> key reading was not implemented due to <shift><click> for buttons 1-3 is handled by the most GUI terminal emulators itself.TreeWidget: original widget can be overridden by @penguinolog in https://github.com/urwid/urwid/pull/860Full Changelog: https://github.com/urwid/urwid/compare/2.6.8...2.6.9
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.6.7...2.6.8
2024-03-04
Fix regression: Overlay not accepted relative positioning by @penguinolog in https://github.com/urwid/urwid/pull/854
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
MainLoop.watch_pipe regression for the callback outcome not False by @penguinolog in https://github.com/urwid/urwid/pull/848min in GridFlow.generate_display_widget by @penguinolog in https://github.com/urwid/urwid/pull/849Full Changelog: https://github.com/urwid/urwid/compare/2.6.6...2.6.7
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
__repr__ and rich repr for the sized containers by @penguinolog in https://github.com/urwid/urwid/pull/844Full Changelog: https://github.com/urwid/urwid/compare/2.6.5...2.6.6
2024-02-27
Fix Columns sizing and pack behavior by @penguinolog in https://github.com/urwid/urwid/pull/846
Extend __repr__ and rich repr for the sized containers by @penguinolog in https://github.com/urwid/urwid/pull/844
TreeWidget: do not use deprecated API in update_expanded_icon by @penguinolog in https://github.com/urwid/urwid/pull/832
<!-- Release notes generated using configuration in .github/release.yml at master -->
wcwidth to select unicode version by @penguinolog in https://github.com/urwid/urwid/pull/840TreeWidget: do not use deprecated API in update_expanded_icon by @penguinolog in https://github.com/urwid/urwid/pull/832monitored_list module to the widgets package by @penguinolog in https://github.com/urwid/urwid/pull/833listbox & treetools modules to the widgets by @penguinolog in https://github.com/urwid/urwid/pull/834Columns/Pile empty - use fallback sizing by @penguinolog in https://github.com/urwid/urwid/pull/843Full Changelog: https://github.com/urwid/urwid/compare/2.6.4...2.6.5
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
ListBox used for tree implementation. by @penguinolog in https://github.com/urwid/urwid/pull/829Full Changelog: https://github.com/urwid/urwid/compare/2.6.3...2.6.4
2024-02-21
Fix regression from 2.6.1: ListBox used for tree implementation. by @penguinolog in https://github.com/urwid/urwid/pull/829
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
float by @penguinolog in https://github.com/urwid/urwid/pull/827Full Changelog: https://github.com/urwid/urwid/compare/2.6.2...2.6.3
2024-02-21
Fix regression from 2.6.2: weight can be float by @penguinolog in https://github.com/urwid/urwid/pull/827
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Widget instance as Frame focus part in constructor by @penguinolog in https://github.com/urwid/urwid/pull/820EventLoop.run_in_executor should accept **kwargs by @penguinolog in https://github.com/urwid/urwid/pull/822Columns and Pile by @penguinolog in https://github.com/urwid/urwid/pull/825layout without pack by @penguinolog in https://github.com/urwid/urwid/pull/819ListBox render crash if empty elements in tail by @penguinolog in https://github.com/urwid/urwid/pull/824Full Changelog: https://github.com/urwid/urwid/compare/2.6.1...2.6.2
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.6.0...2.6.1
2024-02-16
Fix a scenario with ellipsis wrap not fit in screen columns by @penguinolog in https://github.com/urwid/urwid/pull/813
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Fix CI to upload wheel package.
Full Changelog: https://github.com/urwid/urwid/compare/2.6.0...2.6.0.post0
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
It became a blocker for the future correct Unicode support and caused pain for some of end users building package separately.
LineBox._w: should be a property by @penguinolog in https://github.com/urwid/urwid/pull/804MAX_LEFT/MAX_RIGHT report for keypress as unhandled by @penguinolog in https://github.com/urwid/urwid/pull/810Full Changelog: https://github.com/urwid/urwid/compare/2.5.3...2.6.0
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.5.2...2.5.3
2024-02-12
Fix render regression: khal Padding width > size by @penguinolog in https://github.com/urwid/urwid/pull/798
Update unicode table to the version 15.1.0 by @penguinolog in https://github.com/urwid/urwid/pull/744
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Text/Edit by @penguinolog in https://github.com/urwid/urwid/pull/793TextCanvas typing by @penguinolog in https://github.com/urwid/urwid/pull/794Full Changelog: https://github.com/urwid/urwid/compare/2.5.1...2.5.2
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Columns & Pile by @penguinolog in https://github.com/urwid/urwid/pull/778Widget inheritance in the LineBox by @penguinolog in https://github.com/urwid/urwid/pull/780Canvas.content by @penguinolog in https://github.com/urwid/urwid/pull/784WidgetWrap and WidgetDecoration Generic by @penguinolog in https://github.com/urwid/urwid/pull/777Full Changelog: https://github.com/urwid/urwid/compare/2.5.0...2.5.1
Update examples: reduce amount of deprecated parameters by @penguinolog in https://github.com/urwid/urwid/pull/769
<!-- Release notes generated using configuration in .github/release.yml at master -->
Scrollable and ScrollBar made by @rndusr with fixes from @markqvist was added to the urwid.ScrollBar to the ListBox widget.
While scrolling is done by the ListBox itself (as before), the ScrollBar can display progress.BOX_SYMBOLS, BAR_SYMBOLS, SHADE_SYMBOLS)
and exposed in several widgets via Symbols enum on the class level: Divider, LineBox and ScrollBar.Full Changelog: https://github.com/urwid/urwid/compare/2.4.6...2.5.0
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.4.5...2.4.6
2024-01-22
Special case: Columns PACK item not fit as FIXED and support FLOW by @penguinolog in https://github.com/urwid/urwid/pull/763
Documentation: get rid of deprecated code, typing by @penguinolog in https://github.com/urwid/urwid/pull/755
<!-- Release notes generated using configuration in .github/release.yml at master -->
Columns/Pile by @penguinolog in https://github.com/urwid/urwid/pull/757frame module by @penguinolog in https://github.com/urwid/urwid/pull/759Full Changelog: https://github.com/urwid/urwid/compare/2.4.4...2.4.5
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Full Changelog: https://github.com/urwid/urwid/compare/2.4.3...2.4.4
2024-01-18
Fix regression: Columns render incorrect BOX/FLOW widgets height by @penguinolog in https://github.com/urwid/urwid/pull/754
<!-- Release notes generated using configuration in .github/release.yml at master -->
<!-- Release notes generated using configuration in .github/release.yml at master -->
Overlay typing and proper repr by @penguinolog in https://github.com/urwid/urwid/pull/741repr and str for Canvas by @penguinolog in https://github.com/urwid/urwid/pull/740Overlay depends on options by @penguinolog in https://github.com/urwid/urwid/pull/743Columns accept focus widget as "focus_column" by @penguinolog in https://github.com/urwid/urwid/pull/747Filler can act as FLOW widget by @penguinolog in https://github.com/urwid/urwid/pull/749GridFlow constructor by @penguinolog in https://github.com/urwid/urwid/pull/752Columns support correct BOX render only if ALL BOX by @penguinolog in https://github.com/urwid/urwid/pull/746LineBox: make side only if side elements present, fix pack by @penguinolog in https://github.com/urwid/urwid/pull/748_web.js and _web.css by @Hook25 in https://github.com/urwid/urwid/pull/750ListBox.contents: it should return final entity by @penguinolog in https://github.com/urwid/urwid/pull/751Full Changelog: https://github.com/urwid/urwid/compare/2.4.2...2.4.3
Remove unused deprecated "test_suite" directive from setup.py by @penguinolog in https://github.com/urwid/urwid/pull/729
<!-- Release notes generated using configuration in .github/release.yml at master -->
Now it possible to quick check incomplete widgets prototypes without size counting like:
>>> import urwid
>>> grid = urwid.GridFlow(
...: (urwid.Button(tag, align=urwid.CENTER) for tag in ("OK", "Cancel", "Help")),
...: cell_width=10,
...: h_sep=1,
...: v_sep=1,
...: align=urwid.CENTER,
...: )
>>> body = urwid.Pile(
...: (
...: (urwid.Text("Window content text here and it should not touch line", align=urwid.CENTER)),
...: (urwid.PACK, grid),
...: )
...: )
>>> widget = urwid.LineBox(
...: urwid.Pile(
...: (
...: urwid.Text("Some window", align=urwid.CENTER),
...: urwid.Divider("─"),
...: urwid.Padding(body, width=urwid.PACK, left=1, right=1),
...: )
...: )
...: )
>>> print(b"\n".join(widget.render(()).text).decode("utf-8"))
┌───────────────────────────────────────────────────────┐
│ Some window │
│───────────────────────────────────────────────────────│
│ Window content text here and it should not touch line │
│ < OK > < Cancel > < Help > │
└───────────────────────────────────────────────────────┘
>>> widget.pack(())
(57, 6)
Full Changelog: https://github.com/urwid/urwid/compare/2.4.1...2.4.2
Your coding agent can read these notes before it upgrades. Set up the MCP server →