Commit b53319f5 authored by R David Murray's avatar R David Murray

#12818: remove escaping of () in quoted strings in formataddr

The quoting of ()s inside quoted strings is allowed by the RFC, but is not
needed.  There seems to be no reason to add needless escapes.
parent 345266aa
......@@ -55,7 +55,7 @@ CRLF = '\r\n'
TICK = "'"
specialsre = re.compile(r'[][\\()<>@,:;".]')
escapesre = re.compile(r'[][\\()"]')
escapesre = re.compile(r'[\\"]')
......
......@@ -2702,7 +2702,10 @@ class TestMiscellaneous(TestEmailBase):
def test_escape_dump(self):
self.assertEqual(
utils.formataddr(('A (Very) Silly Person', 'person@dom.ain')),
r'"A \(Very\) Silly Person" <person@dom.ain>')
r'"A (Very) Silly Person" <person@dom.ain>')
self.assertEqual(
utils.parseaddr(r'"A \(Very\) Silly Person" <person@dom.ain>'),
('A (Very) Silly Person', 'person@dom.ain'))
a = r'A \(Special\) Person'
b = 'person@dom.ain'
self.assertEqual(utils.parseaddr(utils.formataddr((a, b))), (a, b))
......@@ -2800,6 +2803,15 @@ class TestMiscellaneous(TestEmailBase):
self.assertEqual(('', 'merwok.wok.wok@xample.com'),
utils.parseaddr('merwok. wok . wok@xample.com'))
def test_formataddr_does_not_quote_parens_in_quoted_string(self):
addr = ("'foo@example.com' (foo@example.com)",
'foo@example.com')
addrstr = ('"\'foo@example.com\' '
'(foo@example.com)" <foo@example.com>')
self.assertEqual(utils.parseaddr(addrstr), addr)
self.assertEqual(utils.formataddr(addr), addrstr)
def test_multiline_from_comment(self):
x = """\
Foo
......
......@@ -24,6 +24,9 @@ Core and Builtins
Library
-------
- Issue #12818: format address no longer needlessly \ escapes ()s in names when
the name ends up being quoted.
- Issue #14062: BytesGenerator now correctly folds Header objects,
including using linesep when folding.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment