Issue 12485: textwrap.wrap: new argument for more pleasing output (original) (raw)
Created on 2011-07-04 02:13 by parent5446, last changed 2022-04-11 14:57 by admin.
Messages (7)
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.
Author: Éric Araujo (eric.araujo) *
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.
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.)
Author: Tyler Romeo (parent5446)
Date: 2011-07-05 02:53
OK, so here is the patch for just the new algorithm.
Author: Éric Araujo (eric.araujo) *
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
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).
Author: Gijsbert Anthony van der Linden (gavanderlinden) *
Date: 2015-04-14 01:54
Updated the patch and added tests. Fixed a problem with the previous patch: result of map function was assumed to be list, however map in Python3 returns an interator. So I replaced it with a list comprehension.
History
Date
User
Action
Args
2022-04-11 14:57:19
admin
set
github: 56694
2015-05-17 21:58:40
wiggin15
set
nosy: + wiggin15
2015-04-14 01:54:14
gavanderlinden
set
files: + Issue12485.v2.patch
versions: + Python 3.5, - Python 3.3
nosy: + gavanderlinden
messages: +
2011-11-24 17:17:49
eric.araujo
set
stage: patch review -> test needed
2011-07-12 13:01:05
r.david.murray
set
nosy: + r.david.murray
2011-07-12 02:09:45
parent5446
set
files: - textwrap.py-new-algorithm-2011-07-04_22-45-53_r71219+.diff
2011-07-12 02:09:24
parent5446
set
files: + textwrap.py-beautiful-2011-07-11_22-01-31_r71296+.diff
messages: +
2011-07-05 15:42:20
eric.araujo
set
nosy: + georg.brandl
messages: +
title: textwrap.wrap: add control for custom length and orphans -> textwrap.wrap: new argument for more pleasing output
2011-07-05 03:04:36
parent5446
set
files: - textwrap.py-improvement.diff
2011-07-05 02:53:23
parent5446
set
files: + textwrap.py-new-algorithm-2011-07-04_22-45-53_r71219+.diff
messages: +
2011-07-05 02:40:05
parent5446
set
messages: +
2011-07-04 16:26:57
eric.araujo
set
title: 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: +
stage: patch review
2011-07-04 02:13:01
parent5446
create