Open 82d5d3e7-0df6-496f-8325-d2e5a662bf01 opened 13 years ago
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.
Hi! Thanks for the report and patch. Are your two requests related? If not, it would be best to open two reports.
Nah, they're both unrelated. I'll separate the changes and remake the patches. (I'll keep this entry for the beautification part.)
OK, so here is the patch for just the new algorithm.
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
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).
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.
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: ```python assignee = None closed_at = None created_at =
labels = ['type-feature', 'library']
title = 'textwrap.wrap: new argument for more pleasing output'
updated_at =
user = 'https://bugs.python.org/parent5446'
```
bugs.python.org fields:
```python
activity =
actor = 'wiggin15'
assignee = 'none'
closed = False
closed_date = None
closer = None
components = ['Library (Lib)']
creation =
creator = 'parent5446'
dependencies = []
files = ['22626', '38978']
hgrepos = []
issue_num = 12485
keywords = ['patch', 'needs review']
message_count = 7.0
messages = ['139731', '139785', '139825', '139827', '139880', '140170', '240827']
nosy_count = 6.0
nosy_names = ['georg.brandl', 'eric.araujo', 'r.david.murray', 'wiggin15', 'parent5446', 'gavanderlinden']
pr_nums = []
priority = 'normal'
resolution = None
stage = 'test needed'
status = 'open'
superseder = None
type = 'enhancement'
url = 'https://bugs.python.org/issue12485'
versions = ['Python 3.5']
```