textwrap3

textwrap from Python 3.6 backport (plus a few tweaks)


Keywords
text, wrap, fill, textwrap
License
PSF-2.0
Install
pip install textwrap3==0.9.2

Documentation

textwrap3 is a compatibility back-port of Python 3.6's textwrap module that supports Python 2.6 forward. (Though honestly, if you're not already using at least 2.7, you're way behind the times!)

This makes a few new APIs such as shorten and the max_lines parameter available in a compatible way to all Python versions typically in current use.

Import and use it like you would textwrap from the standard library:

from textwrap3 import wrap

text = 'long text here...'
print(wrap(text, 40))

The standard textwrap documentation is the best reference material.

Bias and Tweaks

By design, Python 3 sensibilities and expectations rule. Especially when processing text that includes Unicode characters, textwrap3's results may differ a bit from those of the textwrap of the underlying Python version (esp. 2.x). In particular, textwrap3 uses the re.UNICODE flag so that non-ASCII characters such as accented letters are considered legitimate word characters.

It also adds one tweak, considering the Unicode em-dash ('\N{EM DASH}' or u'\u2014') identical to the simulated ASCII em-dash '--'.

Notes

  • See CHANGES.yml for the Change Log.
  • This module is almost entirely the work of Gregory P. Ward (textwrap's original author) plus enhancements from the Python community. This separate packaging is just a delivery and compatibility vehicle. It contributes cross-Python version compatibility shims, a few additional tests, and better handling of real em-dashes. The vast majority of functionality still comes from the standard textwrap code base, as of the Python 3.6 release.

Installation

To install or upgrade to the latest version:

pip install -U textwrap3

You may need to prefix these with sudo to authorize installation. In environments without super-user privileges, you may want to use pip's --user option, to install only for a single user, rather than system-wide. Depending on your system configuration, you may also need to use separate pip2 and pip3 programs to install for Python 2 and 3 respectively.