[New-bugs-announce] [issue23497] textwrap.dedent doesn't work properly with embedded strings containing linefeeds

Myles Dear report at bugs.python.org
Sun Feb 22 01:57:55 CET 2015


New submission from Myles Dear:

The textwrap.dedent function does not work when the string to dedent itself contains embedded strings that contain newline characters.

https://docs.python.org/3.4/library/textwrap.html?highlight=dedent#textwrap.dedent states that this function "can be used to make triple-quoted strings line up with the left edge of the display".

It just so happens that my triple-quoted string itself contains a single-quoted string with newline characters.  I would have expected textwrap.dedent to ignore these newline characters inside single or double quoted strings contained in the larger triple-quoted string.


The semantics of this bug may be slightly different than https://bugs.python.org/issue19479 "textwrap.dedent doesn't work properly with strings containing CRLF", so I'm raising a new issue.

I am seeing this in a module I'm writing that emits synthetic python code that is subsequently passed back into the interpreter via "exec".

Python 3.4.1 (default, Nov 12 2014, 13:34:29) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from textwrap import dedent
>>> s = '''
...     'my_key' : r'my value which contains \n character'
... '''
>>> s
"\n    'my_key' : r'my value which contains \n character'\n"
>>> dedent(s)
"\n   'my_key' : r'my value which contains \ncharacter'\n"
>>>

----------
messages: 236396
nosy: mdear
priority: normal
severity: normal
status: open
title: textwrap.dedent doesn't work properly with embedded strings containing linefeeds

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue23497>
_______________________________________


More information about the New-bugs-announce mailing list