You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
textwrap.wrap: new argument for more pleasing output #56694
Issue12485.v2.patch: Addition of beautiful algorithm to textwrap.py with tests
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=Nonecreated_at=<Date2011-07-04.02:13:01.255>labels= ['type-feature', 'library']
title='textwrap.wrap: new argument for more pleasing output'updated_at=<Date2015-05-17.21:58:40.646>user='https://bugs.python.org/parent5446'
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.
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.
changed the title [-]textwrap.wrap: add control for custom length and orphans[/-][+]textwrap.wrap: new argument for more pleasing output[/+]on Jul 5, 2011
parent5446 commented on Jul 12, 2011
parent5446mannequin
MannequinAuthor
More actions
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).
gavanderlinden commented on Apr 14, 2015
gavanderlindenmannequin
Mannequin
More actions
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.
Activity
parent5446 commentedon Jul 4, 2011
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.
merwok commentedon Jul 4, 2011
Hi! Thanks for the report and patch. Are your two requests related? If not, it would be best to open two reports.
[-]Improvement of textwrap module[/-][+]textwrap.wrap: add control for custom length and orphans[/+]parent5446 commentedon Jul 5, 2011
Nah, they're both unrelated. I'll separate the changes and remake the patches. (I'll keep this entry for the beautification part.)
parent5446 commentedon Jul 5, 2011
OK, so here is the patch for just the new algorithm.
merwok commentedon Jul 5, 2011
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
[-]textwrap.wrap: add control for custom length and orphans[/-][+]textwrap.wrap: new argument for more pleasing output[/+]parent5446 commentedon Jul 12, 2011
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).
gavanderlinden commentedon Apr 14, 2015
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.