[tor-commits] [bridgedb/master] Remove old buffer handling

phw at torproject.org phw at torproject.org
Wed Feb 19 18:26:37 UTC 2020


commit 131ed04840bc002b8c6e50cd03465c0cbbff2aca
Author: Damian Johnson <atagar at torproject.org>
Date:   Fri Jan 10 14:40:21 2020 -0800

    Remove old buffer handling
    
    Honestly I'm confused what isis was attempting to do here. This has something
    to do with old python version compatability so it's likely moot.
    
    Python 3.x replaced buffer() with memoryview()...
    
      https://stackoverflow.com/questions/50160187/buffer-function-for-python-3
    
    ... so we could likely could make that replacement. But instead lets try to
    simply rip this out.
    
      Traceback (most recent call last):
        File "/usr/local/lib/python3.5/dist-packages/twisted/trial/runner.py", line 823, in loadByName
          return self.suiteFactory([self.findByName(name, recurse=recurse)])
        ...
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/bridgerequest.py", line 27, in <module>
          from bridgedb.crypto import getHMACFunc
        File "/home/atagar/Desktop/tor/bridgedb/bridgedb/crypto.py", line 74, in <module>
          io.BytesIO(buffer('test'))
      builtins.NameError: name 'buffer' is not defined
    
    This didn't change test outcome...
    
      before: FAILED (skips=1, failures=7, errors=48, successes=256)
      after:  FAILED (skips=1, failures=7, errors=48, successes=256)
---
 bridgedb/crypto.py                           | 20 --------------------
 bridgedb/distributors/email/autoresponder.py | 15 ++-------------
 2 files changed, 2 insertions(+), 33 deletions(-)

diff --git a/bridgedb/crypto.py b/bridgedb/crypto.py
index ee9d099..b39c659 100644
--- a/bridgedb/crypto.py
+++ b/bridgedb/crypto.py
@@ -57,29 +57,9 @@ from Crypto.PublicKey import RSA
 from twisted.internet import ssl
 from twisted.python.procutils import which
 
-
 #: The hash digest to use for HMACs.
 DIGESTMOD = hashlib.sha1
 
-# Test to see if we have the old or new style buffer() interface. Trying
-# to use an old-style buffer on Python2.7 prior to version 2.7.5 will produce:
-#
-#     TypeError: 'buffer' does not have the buffer interface
-#
-#: ``True`` if we have the new-style `buffer`_ interface; ``False`` otherwise.
-#:
-#: .. _buffer: https://docs.python.org/2/c-api/buffer.html
-NEW_BUFFER_INTERFACE = False
-try:
-    io.BytesIO(buffer('test'))
-except TypeError:  # pragma: no cover
-    logging.warn(
-        "This Python version is too old! "\
-        "It doesn't support new-style buffer interfaces: "\
-        "https://mail.python.org/pipermail/python-dev/2010-October/104917.html")
-else:
-    NEW_BUFFER_INTERFACE = True
-
 
 class PKCS1PaddingError(Exception):
     """Raised when there is a problem adding or removing PKCS#1 padding."""
diff --git a/bridgedb/distributors/email/autoresponder.py b/bridgedb/distributors/email/autoresponder.py
index b00feeb..bc1c7b9 100644
--- a/bridgedb/distributors/email/autoresponder.py
+++ b/bridgedb/distributors/email/autoresponder.py
@@ -51,7 +51,6 @@ from twisted.python import failure
 from bridgedb import strings
 from bridgedb import metrics
 from bridgedb import safelog
-from bridgedb.crypto import NEW_BUFFER_INTERFACE
 from bridgedb.distributors.email import dkim
 from bridgedb.distributors.email import request
 from bridgedb.distributors.email import templates
@@ -183,22 +182,12 @@ class EmailResponse(object):
         the email.)
 
 
-    :vartype _buff: :any:`unicode` or :any:`buffer`
-    :var _buff: Used internally to write lines for the response email into the
-        ``_mailfile``. The reason why both of these attributes have two
-        possible types is for the same Python-buggy reasons which require
-        :data:`~bridgedb.crypto.NEW_BUFFER_INTERFACE`.
-    :vartype mailfile: :class:`io.StringIO` or :class:`io.BytesIO`
-    :var mailfile: An in-memory file-like object for storing the formatted
-        headers and body of the response email.
     :var str delimiter: Delimiter between lines written to the
         :data:`mailfile`.
     :var bool closed: ``True`` if :meth:`close` has been called.
     :vartype to: :api:`twisted.mail.smtp.Address`
     :var to: The client's email address, to which this response should be sent.
     """
-    _buff = buffer if NEW_BUFFER_INTERFACE else unicode
-    mailfile = io.BytesIO if NEW_BUFFER_INTERFACE else io.StringIO
 
     def __init__(self, gpgSignFunc=None):
         """Create a response to an email we have recieved.
@@ -212,7 +201,7 @@ class EmailResponse(object):
             obtaining a pre-configured **gpgSignFunc**.
         """
         self.gpgSign = gpgSignFunc
-        self.mailfile = self.mailfile()
+        self.mailfile = io.StringIO()
         self.delimiter = '\n'
         self.closed = False
         self.to = None
@@ -281,7 +270,7 @@ class EmailResponse(object):
             self.writelines(line)
         else:
             line += self.delimiter
-            self.mailfile.write(self._buff(line.encode('utf8')))
+            self.mailfile.write(line.encode('utf8'))
             self.mailfile.flush()
 
     def writelines(self, lines):





More information about the tor-commits mailing list