[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月09日T16: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

AltStyle によって変換されたページ (->オリジナル) /