ANN: Urwid 1.1.0 - Usability and Documentation

Ian Ward ian at excess.org
Tue Oct 23 22:19:39 CEST 2012


Announcing Urwid 1.1.0
----------------------

Urwid home page:
  http://excess.org/urwid/

Manual:
  http://excess.org/urwid/docs/

Package:
  http://pypi.python.org/pypi/urwid/1.1.0


About this release:
===================

This is a major feature release for Urwid.

The first focus for this release has been on improving the usability of
container widgets by building a common API that works on all containers.
This API allows reading and updating the focus, contents and options across
most containers.  Urwid's container widgets have grown organically over
the years and many lack an API for updating their contents at all.  These
changes deprecate a number of existing methods and attributes, but continue
to support them.  Read about the new API here:

  http://excess.org/urwid/docs/manual/widgets.html#container-widgets

The second focus has been improving Urwid's documentation.  Urwid's
Tutorial, Manual and Reference have been converted from HTML and wiki pages
to Sphinx reStructured text.  The tutorial has been largely rewritten.
It now covers many more aspects of the library including common patterns
and the new container API.  The Manual has been heavily edited and most of
the class and function docstrings have been updated to look their best in
the new Reference.  The new documentation is available here:

  http://excess.org/urwid/docs/

See "New in 1.1.0" below for other changes.


Planned changes:
================

Urwid currently supports Python versions 2.4, 2.5, 2.6, 2.7, 3.2 and 3.3.
That's just too many versions.  I plan to drop support for Python 2.4 and
2.5 in the 1.2.x series to clean up some of the Python 3 compatibility code
and start taking advantage of the futuristic language features from the
year 2008.

I will make a greater effort than usual to back port fixes to the 1.1.x
series to support users that choose to continue using old versions of
Python.


New in 1.1.0:
=============

 * New common container API: focus, focus_position, contents,
   options(), get_focus_path(), set_focus_path(), __getitem__,
   __iter__(), __reversed__() implemented across all included
   container widgets

   A full description doesn't fit here, see the Container Widgets
   section in the manual for details

 * New Sphinx-based documentation now included in source:
   Tutorial rewritten, manual revised and new reference based
   on updated docstrings (by Marco Giusti, Patrick Totzke)

 * New list walker SimpleFocusListWalker like SimpleListWalker but
   updates focus position as items are inserted or removed

 * New decoration widget WidgetDisable to disable interaction
   with the widgets it wraps

 * SelectableIcon selectable text widget used by button widgets is
   now documented (available since 0.9.9)

 * Columns widget now tries to keep column in focus visible, hiding
   columns on the left when necessary

 * Padding widget now defaults to ('relative', 100) instead of
   'pack' so that left and right parameters are more useful and more
   child widgets are supported

 * New list walker "API Version 2" that is simpler for many list
   walker uses; "API Version 1" will still continue to be supported

 * List walkers may now allow iteration from the absolute top or
   bottom of the list if they provide a positions() method

 * raw_display now erases to the end of the line with EL escape
   sequence to improve copy+paste behavior for some terminals

 * Filler now has top and bottom parameters like Padding's left and
   right parameters and accepts 'pack' instead of None as a height
   value for widgets that calculate their own number of rows

 * Pile and Columns now accepts 'pack' instead of 'flow' for widgets
   that calculate their own number of rows or columns

 * Pile and Columns now accept 'given' instead of 'fixed' for
   cases where the number of rows or columns are specified by the
   container options

 * Pile and Columns widgets now accept any iterable to their
   __init__() methods

 * Widget now has a default focus_position property that raises
   an IndexError when read to be consistent with new common container
   API

 * GridFlow now supports multiple cell widths within the same widget

 * BoxWidget, FlowWidget and FixedWidget are deprecated, instead
   use the sizing() function or _sizing attribute to specify the
   supported sizing modes for your custom widgets

 * Some new shift+arrow and numpad input sequences from RXVT and
   xterm are now recognized

 * Fix for alarms when used with a screen event loop (e.g.
   curses_display)

 * Fix for raw_display when terminal width is 1 column

 * Fixes for a Columns.get_cursor_coords() regression and a
   SelectableIcon.get_cursor_coords() bug

 * Fixes for incorrect handling of box columns in a number of
   Columns methods when that column is selectable

 * Fix for Terminal widget input handling with Python 3


About Urwid
===========

Urwid is a console UI library for Python. It features fluid interface
resizing, Unicode support, multiple text layouts, simple attribute
markup, powerful scrolling list boxes and flexible interface design.

Urwid is released under the GNU LGPL.


More information about the Python-announce-list mailing list