[Python-checkins] bpo-32680 add default "sock" on SMTP objects (#5345)
Giampaolo Rodola
webhook-mailer at python.org
Tue Oct 9 10:32:00 EDT 2018
https://github.com/python/cpython/commit/7b313971805ca9b53f181f7b97e5376d0b89dc06
commit: 7b313971805ca9b53f181f7b97e5376d0b89dc06
branch: master
author: Romuald Brunet <romuald at chivil.com>
committer: Giampaolo Rodola <g.rodola at gmail.com>
date: 2018-10-09T16:31:55+02:00
summary:
bpo-32680 add default "sock" on SMTP objects (#5345)
By default the smtplib.SMTP objects did not have a sock attribute, it
was only created during connect()
files:
A Misc/NEWS.d/next/Library/2018-10-09-14-25-36.bpo-32680.z2FbOp.rst
M Lib/smtplib.py
M Lib/test/test_smtplib.py
diff --git a/Lib/smtplib.py b/Lib/smtplib.py
index 5e1bc0b198ed..acfc3586e1c0 100755
--- a/Lib/smtplib.py
+++ b/Lib/smtplib.py
@@ -216,6 +216,8 @@ class SMTP:
method called 'sendmail' that will do an entire mail transaction.
"""
debuglevel = 0
+
+ sock = None
file = None
helo_resp = None
ehlo_msg = "ehlo"
@@ -344,7 +346,7 @@ def send(self, s):
"""Send `s' to the server."""
if self.debuglevel > 0:
self._print_debug('send:', repr(s))
- if hasattr(self, 'sock') and self.sock:
+ if self.sock:
if isinstance(s, str):
# send is used by the 'data' command, where command_encoding
# should not be used, but 'data' needs to convert the string to
diff --git a/Lib/test/test_smtplib.py b/Lib/test/test_smtplib.py
index 0c863ed7e203..07d760bd01fd 100644
--- a/Lib/test/test_smtplib.py
+++ b/Lib/test/test_smtplib.py
@@ -602,6 +602,13 @@ def testNonnumericPort(self):
self.assertRaises(OSError, smtplib.SMTP,
"localhost:bogus")
+ def testSockAttributeExists(self):
+ # check that sock attribute is present outside of a connect() call
+ # (regression test, the previous behavior raised an
+ # AttributeError: 'SMTP' object has no attribute 'sock')
+ with smtplib.SMTP() as smtp:
+ self.assertIsNone(smtp.sock)
+
class DefaultArgumentsTests(unittest.TestCase):
diff --git a/Misc/NEWS.d/next/Library/2018-10-09-14-25-36.bpo-32680.z2FbOp.rst b/Misc/NEWS.d/next/Library/2018-10-09-14-25-36.bpo-32680.z2FbOp.rst
new file mode 100644
index 000000000000..afe16b627c8f
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-10-09-14-25-36.bpo-32680.z2FbOp.rst
@@ -0,0 +1 @@
+:class:`smtplib.SMTP` objects now always have a `sock` attribute present
More information about the Python-checkins
mailing list