invasive patch to drop support for Python 2.5, part 03/03

Stephen Gildea <[email protected]> Thu, 04 Nov 2021 01:37:43 -0700
Newsgroups gmane.mail.getmail.user
Message-ID <1687832.1636015063@pental>
03-getmail-except-as-2of2.patch (text/x-diff, 21.5 KB)
diff -ur getmail-5.16-for-python-2.6/getmailcore/message.py getmail-5.16-except-as-and-2.6/getmailcore/message.py
--- getmail-5.16-for-python-2.6/getmailcore/message.py	2021-11-03 09:49:03.140267922 -0700
+++ getmail-5.16-except-as-and-2.6/getmailcore/message.py	2021-11-01 23:04:17.819304012 -0700
@@ -19,10 +19,10 @@
 from email.Generator import Generator
 try:
     from email.header import Header
-except ImportError, o:
+except ImportError as o:
     try:
         from email.Header import Header
-    except ImportError, o:
+    except ImportError as o:
         # Python < 2.5
         from email import Header
 
@@ -111,19 +111,19 @@
         if fromlines:
             try:
                 self.__msg = parser.parsestr(os.linesep.join(fromlines))
-            except email.Errors.MessageError, o:
+            except email.Errors.MessageError as o:
                 self.__msg = corrupt_message(o, fromlines=fromlines)
             self.__raw = os.linesep.join(fromlines)
         elif fromstring:
             try:
                 self.__msg = parser.parsestr(fromstring)
-            except email.Errors.MessageError, o:
+            except email.Errors.MessageError as o:
                 self.__msg = corrupt_message(o, fromstring=fromstring)
             self.__raw = fromstring
         elif fromfile:
             try:
                 self.__msg = parser.parse(fromfile)
-            except email.Errors.MessageError, o:
+            except email.Errors.MessageError as o:
                 # Shouldn't happen
                 self.__msg = corrupt_message(o, fromstring=fromfile.read())
             # fromfile is only used by getmail_maildir, getmail_mbox, and
@@ -191,7 +191,7 @@
                 strmsg = RE_FROMLINE.sub(r'>\1', strmsg)
             return (fromline + rpline + dtline + receivedline 
                     + os.linesep.join(strmsg.splitlines() + ['']))
-        except TypeError, o:
+        except TypeError as o:
             # email module chokes on some badly-misformatted messages, even
             # late during flatten().  Hope this is fixed in Python 2.4.
             if self.__raw is None:
diff -ur getmail-5.16-for-python-2.6/getmailcore/_pop3ssl.py getmail-5.16-except-as-and-2.6/getmailcore/_pop3ssl.py
--- getmail-5.16-for-python-2.6/getmailcore/_pop3ssl.py	2021-11-03 09:49:03.140267922 -0700
+++ getmail-5.16-except-as-and-2.6/getmailcore/_pop3ssl.py	2021-11-01 23:04:17.819304012 -0700
@@ -99,7 +99,7 @@
                     log.trace('end of loop\n')
             log.trace('returning line "%r"\n' % line)
             return line
-        except (socket.sslerror, socket.error), o:
+        except (socket.sslerror, socket.error) as o:
             raise getmailOperationError(
                 'socket/ssl error while reading from server (%s)' % o
             )
@@ -130,7 +130,7 @@
                     self.sock = sslsocket(self.rawsock, keyfile, certfile)
                 else:
                     self.sock = sslsocket(self.rawsock)
-            except socket.error, msg:
+            except socket.error as msg:
                 if self.rawsock:
                     self.rawsock.close()
                 self.rawsock = None
@@ -165,7 +165,7 @@
         """
         try:
             resp = self._shortcmd('QUIT')
-        except (error_proto, socket.error), val:
+        except (error_proto, socket.error) as val:
             resp = val
         self.sock.close()
         del self.sock
diff -ur getmail-5.16-for-python-2.6/getmailcore/_retrieverbases.py getmail-5.16-except-as-and-2.6/getmailcore/_retrieverbases.py
--- getmail-5.16-for-python-2.6/getmailcore/_retrieverbases.py	2021-11-03 09:49:03.140267922 -0700
+++ getmail-5.16-except-as-and-2.6/getmailcore/_retrieverbases.py	2021-11-01 23:04:17.815303983 -0700
@@ -209,7 +209,7 @@
         
 try:
     from email.header import decode_header
-except ImportError, o:
+except ImportError as o:
     # python < 2.5
     from email.Header import decode_header
 
@@ -298,12 +298,12 @@
         try:
             self.conn = poplib.POP3(self.conf['server'], self.conf['port'])
             self.setup_received(self.conn.sock)
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailOperationError('POP error (%s)' % o)
         except socket.timeout:
             raise
             #raise getmailOperationError('timeout during connect')
-        except socket.gaierror, o:
+        except socket.gaierror as o:
             raise getmailOperationError(
                 'error resolving name %s during connect (%s)'
                 % (self.conf['server'], o)
@@ -338,7 +338,7 @@
             try:
                 self.sock = socket.socket(af, socktype, proto)
                 self.sock.connect(sa)
-            except socket.error, msg:
+            except socket.error as msg:
                 if self.sock:
                     self.sock.close()
                 self.sock = None
@@ -463,12 +463,12 @@
                         % actual_hash
                     )
 
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailOperationError('POP error (%s)' % o)
         except socket.timeout:
             #raise getmailOperationError('timeout during connect')
             raise
-        except socket.gaierror, o:
+        except socket.gaierror as o:
             raise getmailOperationError(
                 'error resolving name %s during connect (%s)'
                 % (self.conf['server'], o)
@@ -532,14 +532,14 @@
                 self.conn = POP3SSL(self.conf['server'], self.conf['port'])
 
             self.setup_received(self.conn.rawsock)
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailOperationError('POP error (%s)' % o)
         except socket.timeout:
             #raise getmailOperationError('timeout during connect')
             raise
-        except socket.gaierror, o:
+        except socket.gaierror as o:
             raise getmailOperationError('socket error during connect (%s)' % o)
-        except socket.sslerror, o:
+        except socket.sslerror as o:
             raise getmailOperationError(
                 'socket sslerror during connect (%s)' % o
             )
@@ -558,12 +558,12 @@
         try:
             self.conn = imaplib.IMAP4(self.conf['server'], self.conf['port'])
             self.setup_received(self.conn.sock)
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             raise getmailOperationError('IMAP error (%s)' % o)
         except socket.timeout:
             #raise getmailOperationError('timeout during connect')
             raise
-        except socket.gaierror, o:
+        except socket.gaierror as o:
             raise getmailOperationError('socket error during connect (%s)' % o)
 
         self.log.trace('IMAP connection %s established' % self.conn
@@ -701,12 +701,12 @@
                         % actual_hash
                     )
 
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             raise getmailOperationError('IMAP error (%s)' % o)
         except socket.timeout:
             #raise getmailOperationError('timeout during connect')
             raise
-        except socket.gaierror, o:
+        except socket.gaierror as o:
             errcode = o[0]
             if errcode in (EAI_NONAME, EAI_NODATA):
                 # No such DNS name
@@ -722,7 +722,7 @@
             else:
                 raise getmailOperationError('socket error during connect (%s)' 
                                             % o)
-        except socket.sslerror, o:
+        except socket.sslerror as o:
             raise getmailOperationError(
                 'socket sslerror during connect (%s)' % o
             )
@@ -948,7 +948,7 @@
             oldmailfile.close()
             self.log.moreinfo('wrote %i uids for %s%s'
                               % (wrote, logname, os.linesep))
-        except IOError, o:
+        except IOError as o:
             self.log.error('failed writing oldmail file for %s (%s)'
                            % (logname, o) + os.linesep)
             if oldmailfile:
@@ -1116,7 +1116,7 @@
                                    + os.linesep)
                     del self.oldmail[msgid]
 
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailOperationError(
                 'POP error (%s) - if your server does not support the UIDL '
                 'command, use BrokenUIDLPOP3Retriever instead'
@@ -1139,7 +1139,7 @@
                            % (response, octets) + os.linesep)
             msg = Message(fromlines=lines+[''])
             return msg
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailRetrievalError(
                 'failed to retrieve msgid %s; server said %s' 
                 % (msgid, o)
@@ -1198,7 +1198,7 @@
                     self.log.debug('removing vanished message id %s' % msgid
                                    + os.linesep)
                     del self.oldmail[msgid]
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailOperationError('POP error (%s)' % o)
 
     def abort(self):
@@ -1209,7 +1209,7 @@
         try:
             self.conn.rset()
             self.conn.quit()
-        except (poplib.error_proto, socket.error), o:
+        except (poplib.error_proto, socket.error) as o:
             pass
         self.conn = None
 
@@ -1220,7 +1220,7 @@
             return
         try:
             self.conn.quit()
-        except (poplib.error_proto, socket.error), o:
+        except (poplib.error_proto, socket.error) as o:
             raise getmailOperationError('POP error (%s)' % o)
         except AttributeError:
             pass
@@ -1261,7 +1261,7 @@
                 raise ValueError(self.conf['envelope_recipient'])
         except IndexError:
             pass
-        except ValueError, o:
+        except ValueError as o:
             raise getmailConfigurationError(
                 'invalid envelope_recipient specification format (%s)' % o
             )
@@ -1280,7 +1280,7 @@
 
         try:
             line = data[self.envrecipname][self.envrecipnum]
-        except (KeyError, IndexError), unused:
+        except (KeyError, IndexError) as unused:
             raise getmailConfigurationError(
                 'envelope_recipient specified header missing (%s)'
                 % self.conf['envelope_recipient']
@@ -1356,7 +1356,7 @@
         self.log.trace()
         try:
             result, resplist = getattr(self.conn, cmd)(*args)
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             if cmd == 'login':
                 # Percolate up
                 raise
@@ -1381,7 +1381,7 @@
         self.log.trace()
         try:
             result, resplist = self.conn.uid(cmd, *args)
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             if cmd == 'login':
                 # Percolate up
                 raise
@@ -1416,7 +1416,7 @@
                     raise ValueError
                 name = parts.pop(0).lower()
                 r[name] = parts.pop(0)
-        except (ValueError, IndexError, AttributeError), o:
+        except (ValueError, IndexError, AttributeError) as o:
             raise getmailOperationError(
                 'IMAP error (failed to parse attr response line "%s": %s)' 
                 % (line, o)
@@ -1445,7 +1445,7 @@
                 mailboxes.append(mailbox)
                 #log.debug(u'%20s : delimiter %s, attributes: %s',
                 #          mailbox, g['delimiter'], ', '.join(attributes))
-            except Exception, o:
+            except Exception as o:
                 raise getmailOperationError('error decoding mailbox "%s"' 
                                             % g['mailbox'])
         return mailboxes
@@ -1501,9 +1501,9 @@
             # use *last* EXISTS returned
             count = int(count[-1])
             uidvalidity = self.conn.response('UIDVALIDITY')[1][0]
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             raise getmailOperationError('IMAP error (%s)' % o)
-        except (IndexError, ValueError), o:
+        except (IndexError, ValueError) as o:
             raise getmailOperationError(
                 'IMAP server failed to return correct SELECT response (%s)'
                 % o
@@ -1553,7 +1553,7 @@
                                    + os.linesep)
                     del self.oldmail[msgid]
 
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             raise getmailOperationError('IMAP error (%s)' % o)
         self.gotmsglist = True
 
@@ -1576,7 +1576,7 @@
             response = self._parse_imapuidcmdresponse(
                 'STORE', uid, 'FLAGS', '(\Deleted \Seen)'
             )
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             raise getmailOperationError('IMAP error (%s)' % o)
 
     def _getmsgpartbyid(self, msgid, part):
@@ -1588,7 +1588,7 @@
                            + os.linesep)
             try:
                 response = self._parse_imapuidcmdresponse('FETCH', uid, part)
-            except (imaplib.IMAP4.error, getmailOperationError), o:
+            except (imaplib.IMAP4.error, getmailOperationError) as o:
                 # server gave a negative/NO response, most likely.  Bad server,
                 # no doughnut.
                 raise getmailRetrievalError(
@@ -1612,13 +1612,13 @@
             try:
                 try:
                     sbody = response[0][1]
-                except Exception, o:
+                except Exception as o:
                     sbody = None
                 if not sbody:
                     self.log.error('bad message from server!')
                     sbody = str(response)
                 msg = Message(fromstring=sbody)
-            except TypeError, o:
+            except TypeError as o:
                 # response[0] is None instead of a message tuple
                 raise getmailRetrievalError('failed to retrieve msgid %s' 
                                             % msgid)
@@ -1636,7 +1636,7 @@
 
             return msg
 
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             raise getmailOperationError('IMAP error (%s)' % o)
 
     def _getgmailmetadata(self, uid, msg):
@@ -1652,7 +1652,7 @@
             #   'separated) UID 167669)']
             response = self._parse_imapuidcmdresponse('FETCH', uid,
                 '(X-GM-LABELS X-GM-THRID X-GM-MSGID)')
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             self.log.warning('Could not fetch google imap extensions: %s' % o)
             return {}
 
@@ -1745,9 +1745,9 @@
                 else:
                     self._parse_imapcmdresponse('login', self.conf['username'],
                                                 self.conf['password'])
-            except imaplib.IMAP4.abort, o:
+            except imaplib.IMAP4.abort as o:
                 raise getmailLoginRefusedError(o)
-            except imaplib.IMAP4.error, o:
+            except imaplib.IMAP4.error as o:
                 if str(o).startswith('[UNAVAILABLE]'):
                     raise getmailLoginRefusedError(o)
                 else:
@@ -1792,7 +1792,7 @@
                 # Special value meaning all mailboxes in account
                 self.mailboxes = tuple(self.list_mailboxes())
 
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             raise getmailOperationError('IMAP error (%s)' % o)
 
     def abort(self):
@@ -1802,7 +1802,7 @@
             return
         try:
             self.quit()
-        except (imaplib.IMAP4.error, socket.error), o:
+        except (imaplib.IMAP4.error, socket.error) as o:
             pass
         self.conn = None
 
@@ -1848,7 +1848,7 @@
         try:
             aborted = None
             (readable, unused, unused) = select.select([sock], [], [], timeout)
-        except KeyboardInterrupt, o:
+        except KeyboardInterrupt as o:
             # Delay raising this until we've stopped IDLE mode
             aborted = o
 
@@ -1864,7 +1864,7 @@
             self.conn.untagged_responses = {}
             self.conn.send('DONE\r\n')
             self.conn._command_complete('IDLE', tag)
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             return False
 
         if aborted:
@@ -1880,7 +1880,7 @@
             if self.mailbox_selected is not False:
                 self.close_mailbox()
             self.conn.logout()
-        except imaplib.IMAP4.error, o:
+        except imaplib.IMAP4.error as o:
             #raise getmailOperationError('IMAP error (%s)' % o)
             self.log.warning('IMAP error during logout (%s)' % o + os.linesep)
         RetrieverSkeleton.quit(self)
@@ -1920,7 +1920,7 @@
                 raise ValueError(self.conf['envelope_recipient'])
         except IndexError:
             pass
-        except ValueError, o:
+        except ValueError as o:
             raise getmailConfigurationError(
                 'invalid envelope_recipient specification format (%s)' % o
             )
@@ -1940,7 +1940,7 @@
 
         try:
             line = data[self.envrecipname][self.envrecipnum]
-        except (KeyError, IndexError), unused:
+        except (KeyError, IndexError) as unused:
             raise getmailConfigurationError(
                 'envelope_recipient specified header missing (%s)'
                 % self.conf['envelope_recipient']
diff -ur getmail-5.16-for-python-2.6/getmailcore/retrievers.py getmail-5.16-except-as-and-2.6/getmailcore/retrievers.py
--- getmail-5.16-for-python-2.6/getmailcore/retrievers.py	2021-11-03 09:49:03.140267922 -0700
+++ getmail-5.16-except-as-and-2.6/getmailcore/retrievers.py	2021-11-01 23:04:17.819304012 -0700
@@ -157,7 +157,7 @@
                 self.msgid_by_msgnum[msgnum] = msgnum
                 self.msgsizes[msgnum] = msgsize
             self.sorted_msgnum_msgid = sorted(self.msgid_by_msgnum.items())
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailOperationError('POP error (%s)' % o)
         self.gotmsglist = True
 
@@ -355,7 +355,7 @@
         try:
             msgnum = self._getmsgnumbyid(msgid)
             resp, lines, octets = self.conn._longcmd('*ENV %i' % msgnum)
-        except poplib.error_proto, o:
+        except poplib.error_proto as o:
             raise getmailConfigurationError(
                 'server does not support *ENV (%s)' % o
             )
diff -ur getmail-5.16-for-python-2.6/getmailcore/utilities.py getmail-5.16-except-as-and-2.6/getmailcore/utilities.py
--- getmail-5.16-for-python-2.6/getmailcore/utilities.py	2021-11-03 09:49:03.140267922 -0700
+++ getmail-5.16-except-as-and-2.6/getmailcore/utilities.py	2021-11-01 23:04:17.819304012 -0700
@@ -49,7 +49,7 @@
 import errno
 try:
     import subprocess
-except ImportError, o:
+except ImportError as o:
     subprocess = None
 
 # hashlib only present in python2.5, ssl in python2.6; used together
@@ -115,7 +115,7 @@
     try:
         fd = os.open(path, os.O_RDWR | os.O_CREAT | os.O_EXCL, permissions)
         file = os.fdopen(fd, mode)
-    except OSError, o:
+    except OSError as o:
         raise getmailDeliveryError('failure opening %s (%s)' % (path, o))
     return file
 
@@ -333,7 +333,7 @@
         os.fsync(f.fileno())
         f.close()
 
-    except IOError, o:
+    except IOError as o:
         signal.alarm(0)
         raise getmailDeliveryError('failure writing file %s (%s)'
                                    % (fname_tmp, o))
@@ -391,14 +391,14 @@
 def gid_of_uid(uid):
     try:
         return pwd.getpwuid(uid).pw_gid
-    except KeyError, o:
+    except KeyError as o:
         raise getmailConfigurationError('no such specified uid (%s)' % o)
 
 #######################################
 def uid_of_user(user):
     try:
         return pwd.getpwnam(user).pw_uid
-    except KeyError, o:
+    except KeyError as o:
         raise getmailConfigurationError('no such specified user (%s)' % o)
 
 #######################################
@@ -414,7 +414,7 @@
             logger.debug('Getting GID for specified group %s\n' % _group)
         try:
             gid = grp.getgrnam(_group).gr_gid
-        except KeyError, o:
+        except KeyError as o:
             raise getmailConfigurationError('no such specified group (%s)' % o)
     if user:
         if logger:
@@ -440,7 +440,7 @@
                 if logger:
                     logger.debug('Setting euid to %d\n' % uid)
                 os.setreuid(uid, uid)
-    except OSError, o:
+    except OSError as o:
         raise getmailDeliveryError('change UID/GID to %s/%s failed (%s)'
                                    % (uid, gid, o))
 
@@ -455,13 +455,13 @@
         try:
             (lang, encoding) = lang.split('.')
             return s.decode(encoding)
-        except (UnicodeError, ValueError), o:
+        except (UnicodeError, ValueError) as o:
             pass
     # that failed; try well-formed in various common encodings next
     for encoding in ('ascii', 'utf-8', 'latin-1', 'utf-16'):
         try:
             return s.decode(encoding)
-        except UnicodeError, o:
+        except UnicodeError as o:
             continue
     # all failed - force it
     return s.decode('utf-8', 'replace')
@@ -737,7 +737,7 @@
 
     try:
         p = subprocess.Popen(cmd, stdout=stdout, stderr=stderr)
-    except OSError, o:
+    except OSError as o:
         if o.errno == errno.ENOENT:
             # no such file, command not found
             raise getmailConfigurationError('Program "%s" not found' % command)