classification
Title: textwrap.wrap: new argument for more pleasing output
Type: enhancement Stage: test needed
Components: Library (Lib) Versions: Python 3.3
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: eric.araujo, georg.brandl, parent5446, r.david.murray
Priority: normal Keywords: needs review, patch

Created on 2011-07-04 02:13 by parent5446, last changed 2011-11-24 17:17 by eric.araujo.

Files
File name Uploaded Description Edit
textwrap.py-beautiful-2011-07-11_22-01-31_r71296+.diff parent5446, 2011-07-12 02:09 Addition of beautiful algorithm to textwrap.py
Messages (6)
msg139731 - (view) Author: Tyler Romeo (parent5446) Date: 2011-07-04 02:12
Python's textwrap module can be helpful at times, but personally I think there are a couple of things that could be added.

First, when it comes to text wrapping, usually you're not dealing with a monospace font where each letter is the same size. If you're working with the Python Imaging Library for example, there is a function that you pass the text to in order to determine how wide (or tall) a font is. Therefore, it would be useful to have a parameter where the user can pass a function that gives a custom width for a set of text. The default for this parameter, of course, would be len.

Also, this module uses a rough and efficient algorithm for wrapping text, but the results are not always aesthetically pleasing (one word hanging off on a line). Sometimes the user may want something that is wrapped more beautifully, so to say, such as is found in TeX. So there should also be a beautiful option that goes back and redistributes the text so that it is more aesthetically pleasing.

This isn't exactly that important (minor improvements to a module that is probably not used much), but I figured I'd get it out there as I run into the problem all the time when trying to wrap text to be put in images of a set size.
msg139785 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-07-04 16:26
Hi!  Thanks for the report and patch.  Are your two requests related?  If not, it would be best to open two reports.
msg139825 - (view) Author: Tyler Romeo (parent5446) Date: 2011-07-05 02:40
Nah, they're both unrelated. I'll separate the changes and remake the patches. (I'll keep this entry for the beautification part.)
msg139827 - (view) Author: Tyler Romeo (parent5446) Date: 2011-07-05 02:53
OK, so here is the patch for just the new algorithm.
msg139880 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-07-05 15:42
xrange does not exist in Python 3, it’s called range.  You should have seen yesterday that I changed the versions: as a new feature, this cannot go into stable releases, only into the next one.

I’m adding Georg to nosy per http://docs.python.org/devguide/experts
msg140170 - (view) Author: Tyler Romeo (parent5446) Date: 2011-07-12 02:09
OK, sorry to get back so late, but here's the updated patch without xrange. I saw the version change but forgot that I used xrange in the function (old habits I guess).
History
Date User Action Args
2011-11-24 17:17:49eric.araujosetstage: patch review -> test needed
2011-07-12 13:01:05r.david.murraysetnosy: + r.david.murray
2011-07-12 02:09:45parent5446setfiles: - textwrap.py-new-algorithm-2011-07-04_22-45-53_r71219+.diff
2011-07-12 02:09:24parent5446setfiles: + textwrap.py-beautiful-2011-07-11_22-01-31_r71296+.diff

messages: + msg140170
2011-07-05 15:42:20eric.araujosetnosy: + georg.brandl

messages: + msg139880
title: textwrap.wrap: add control for custom length and orphans -> textwrap.wrap: new argument for more pleasing output
2011-07-05 03:04:36parent5446setfiles: - textwrap.py-improvement.diff
2011-07-05 02:53:23parent5446setfiles: + textwrap.py-new-algorithm-2011-07-04_22-45-53_r71219+.diff

messages: + msg139827
2011-07-05 02:40:05parent5446setmessages: + msg139825
2011-07-04 16:26:57eric.araujosettitle: Improvement of textwrap module -> textwrap.wrap: add control for custom length and orphans
components: + Library (Lib), - Extension Modules

keywords: + needs review
nosy: + eric.araujo
versions: + Python 3.3, - Python 2.7
messages: + msg139785
stage: patch review
2011-07-04 02:13:01parent5446create