[PATCH 1/4] folder: IMAP: improve style of comments

Nicolas Sebrecht nicolas.s-dev at laposte.net
Tue Jun 28 23:04:44 BST 2016


Signed-off-by: Nicolas Sebrecht <nicolas.s-dev at laposte.net>
---

The following changes since commit 3293b75c9c735f054eb267afcc6f3f9713e6c1aa:

  release.sh: get_git_who(): remove unnecessary blank line (2016-06-27 16:11:44 +0200)

are available in the git repository at:

  https://github.com/nicolas33/offlineimap.git ns/uids

for you to fetch changes up to 9ff4b153a80aae025549bd0d6a3161e0de0894a3:

  learn to not download UIDs defined by the user (2016-06-29 00:01:39 +0200)

Nicolas Sebrecht (4):
      folder: IMAP: improve style of comments
      minor: improve "Copy message" output
      folder: IMAP: fix wrong comment
      learn to not download UIDs defined by the user

 offlineimap.conf                 | 11 +++++
 offlineimap/folder/Base.py       |  8 ++++
 offlineimap/folder/IMAP.py       | 96 +++++++++++++++++++++-------------------
 offlineimap/repository/IMAP.py   | 15 +++++++
 offlineimap/ui/Curses.py         |  6 ++-
 offlineimap/ui/Machine.py        | 12 +++--
 offlineimap/ui/Noninteractive.py |  8 ++--
 offlineimap/ui/UIBase.py         | 18 +++++---
 8 files changed, 116 insertions(+), 58 deletions(-)
----------------------------------------------------------------

 offlineimap/folder/IMAP.py | 87 +++++++++++++++++++++++-----------------------
 1 file changed, 44 insertions(+), 43 deletions(-)

diff --git a/offlineimap/folder/IMAP.py b/offlineimap/folder/IMAP.py
index 11a3a2a..5b76405 100644
--- a/offlineimap/folder/IMAP.py
+++ b/offlineimap/folder/IMAP.py
@@ -52,7 +52,7 @@ class IMAPFolder(BaseFolder):
         self.root = None # imapserver.root
         self.imapserver = imapserver
         self.randomgenerator = random.Random()
-        #self.ui is set in BaseFolder
+        # self.ui is set in BaseFolder.
         self.imap_query = ['BODY.PEEK[]']
 
         fh_conf = self.repository.account.getconf('filterheaders', '')
@@ -99,11 +99,11 @@ class IMAPFolder(BaseFolder):
         :returns: The UIDVALIDITY as (long) number."""
 
         if hasattr(self, '_uidvalidity'):
-            # use cached value if existing
+            # Use cached value if existing.
             return self._uidvalidity
         imapobj = self.imapserver.acquireconnection()
         try:
-            # SELECT (if not already done) and get current UIDVALIDITY
+            # SELECT (if not already done) and get current UIDVALIDITY.
             self.__selectro(imapobj)
             typ, uidval = imapobj.response('UIDVALIDITY')
             assert uidval != [None] and uidval != None, \
@@ -123,12 +123,12 @@ class IMAPFolder(BaseFolder):
             retry = False
             imapobj = self.imapserver.acquireconnection()
             try:
-                # Select folder and get number of messages
+                # Select folder and get number of messages.
                 restype, imapdata = imapobj.select(self.getfullname(), True,
                                                    True)
                 self.imapserver.releaseconnection(imapobj)
             except OfflineImapError as e:
-                # retry on dropped connections, raise otherwise
+                # Retry on dropped connections, raise otherwise.
                 self.imapserver.releaseconnection(imapobj, True)
                 if e.severity == OfflineImapError.ERROR.FOLDER_RETRY:
                     retry = True
@@ -246,16 +246,15 @@ class IMAPFolder(BaseFolder):
             self.imapserver.releaseconnection(imapobj)
 
         for messagestr in response:
-            # looks like: '1 (FLAGS (\\Seen Old) UID 4807)' or None if no msg
+            # Looks like: '1 (FLAGS (\\Seen Old) UID 4807)' or None if no msg.
             # Discard initial message number.
             if messagestr == None:
                 continue
             messagestr = messagestr.split(' ', 1)[1]
             options = imaputil.flags2hash(messagestr)
             if not 'UID' in options:
-                self.ui.warn('No UID in message with options %s'% \
-                                          str(options),
-                                          minor = 1)
+                self.ui.warn('No UID in message with options %s'%
+                    str(options), minor=1)
             else:
                 uid = int(options['UID'])
                 self.messagelist[uid] = self.msglist_item_initializer(uid)
@@ -286,9 +285,10 @@ class IMAPFolder(BaseFolder):
 
         data = self._fetch_from_imap(str(uid), 2)
 
-        # data looks now e.g. [('320 (UID 17061 BODY[]
-        # {2565}','msgbody....')]  we only asked for one message,
-        # and that msg is in data[0]. msbody is in [0][1]
+        # Data looks now e.g.
+        # [('320 (UID 17061 BODY[] {2565}','msgbody....')]
+        # We only asked for one message, and that msg is in data[0]. msbody is
+        # in [0][1].
         data = data[0][1].replace(CRLF, "\n")
 
         if len(data)>200:
@@ -334,8 +334,8 @@ class IMAPFolder(BaseFolder):
         # mails with identical content, the randomness requirements are
         # not extremly critial though.
 
-        # compute unsigned crc32 of 'content' as unique hash
-        # NB: crc32 returns unsigned only starting with python 3.0
+        # Compute unsigned crc32 of 'content' as unique hash.
+        # NB: crc32 returns unsigned only starting with python 3.0.
         headervalue  = str( binascii.crc32(content) & 0xffffffff ) + '-'
         headervalue += str(self.randomgenerator.randint(0,9999999999))
         return (headername, headervalue)
@@ -394,8 +394,8 @@ class IMAPFolder(BaseFolder):
         self.ui.debug('imap', '__savemessage_fetchheaders called for %s: %s'% \
                  (headername, headervalue))
 
-        # run "fetch X:* rfc822.header"
-        # since we stored the mail we are looking for just recently, it would
+        # Run "fetch X:* rfc822.header".
+        # Since we stored the mail we are looking for just recently, it would
         # not be optimal to fetch all messages. So we'll find highest message
         # UID in our local messagelist and search from there (exactly from
         # UID+1). That works because UIDs are guaranteed to be unique and
@@ -404,12 +404,12 @@ class IMAPFolder(BaseFolder):
         if self.getmessagelist():
             start = 1 + max(self.getmessagelist().keys())
         else:
-            # Folder was empty - start from 1
+            # Folder was empty - start from 1.
             start = 1
 
         # Imaplib quotes all parameters of a string type. That must not happen
         # with the range X:*. So we use bytearray to stop imaplib from getting
-        # in our way
+        # in our way.
 
         result = imapobj.uid('FETCH', bytearray('%d:*'% start), 'rfc822.header')
         if result[0] != 'OK':
@@ -421,7 +421,7 @@ class IMAPFolder(BaseFolder):
         found = 0
         for item in result:
             if found == 0 and type(item) == type( () ):
-                # Walk just tuples
+                # Walk just tuples.
                 if re.search("(?:^|\\r|\\n)%s:\s*%s(?:\\r|\\n)"% (headername, headervalue),
                         item[1], flags=re.IGNORECASE):
                     found = 1
@@ -475,11 +475,11 @@ class IMAPFolder(BaseFolder):
         datetuple = time.localtime(rtime)
 
         try:
-            # Check for invalid dates
+            # Check for invalid dates.
             if datetuple[0] < 1981:
                 raise ValueError
 
-            # Check for invalid dates
+            # Check for invalid dates.
             datetuple_check = time.localtime(time.mktime(datetuple))
             if datetuple[:2] != datetuple_check[:2]:
                 raise ValueError
@@ -533,20 +533,20 @@ class IMAPFolder(BaseFolder):
 
         self.ui.savemessage('imap', uid, flags, self)
 
-        # already have it, just save modified flags
+        # Already have it, just save modified flags.
         if uid > 0 and self.uidexists(uid):
             self.savemessageflags(uid, flags)
             return uid
 
         content = self.deletemessageheaders(content, self.filterheaders)
 
-        # Use proper CRLF all over the message
+        # Use proper CRLF all over the message.
         content = re.sub("(?<!\r)\n", CRLF, content)
 
-        # get the date of the message, so we can pass it to the server.
+        # Get the date of the message, so we can pass it to the server.
         date = self.__getmessageinternaldate(content, rtime)
 
-        # Message-ID is handy for debugging messages
+        # Message-ID is handy for debugging messages.
         msg_id = self.getmessageheader(content, "message-id")
         if not msg_id:
             msg_id = '[unknown message-id]'
@@ -565,7 +565,7 @@ class IMAPFolder(BaseFolder):
                 use_uidplus = 'UIDPLUS' in imapobj.capabilities
 
                 if not use_uidplus:
-                    # insert a random unique header that we can fetch later
+                    # Insert a random unique header that we can fetch later.
                     (headername, headervalue) = self.__generate_randomheader(
                         content)
                     self.ui.debug('imap', 'savemessage: header is: %s: %s'%
@@ -580,7 +580,7 @@ class IMAPFolder(BaseFolder):
                     (date, dbg_output))
 
                 try:
-                    # Select folder for append and make the box READ-WRITE
+                    # Select folder for append and make the box READ-WRITE.
                     imapobj.select(self.getfullname())
                 except imapobj.readonly:
                     # readonly exception. Return original uid to notify that
@@ -588,7 +588,7 @@ class IMAPFolder(BaseFolder):
                     self.ui.msgtoreadonly(self, uid, content, flags)
                     return uid
 
-                #Do the APPEND
+                # Do the APPEND.
                 try:
                     (typ, dat) = imapobj.append(self.getfullname(),
                         imaputil.flagsmaildir2imap(flags), date, content)
@@ -606,18 +606,19 @@ class IMAPFolder(BaseFolder):
                             "Server responded: %s %s\n"% \
                             (msg_id, self, self.getrepository(), typ, dat)
                         raise OfflineImapError(msg, OfflineImapError.ERROR.REPO)
-                    retry_left = 0 # Mark as success
+                    retry_left = 0 # Mark as success.
                 except imapobj.abort as e:
-                    # connection has been reset, release connection and retry.
+                    # Connection has been reset, release connection and retry.
                     retry_left -= 1
                     self.imapserver.releaseconnection(imapobj, True)
                     imapobj = self.imapserver.acquireconnection()
                     if not retry_left:
                         six.reraise(OfflineImapError("Saving msg (%s) in folder '%s', "
-                              "repository '%s' failed (abort). Server responded: %s\n"
-                              "Message content was: %s"%
-                              (msg_id, self, self.getrepository(), str(e), dbg_output),
-                                               OfflineImapError.ERROR.MESSAGE), None, exc_info()[2])
+                            "repository '%s' failed (abort). Server responded: %s\n"
+                            "Message content was: %s"%
+                            (msg_id, self, self.getrepository(), str(e), dbg_output),
+                            OfflineImapError.ERROR.MESSAGE),
+                            None, exc_info()[2])
                     # XXX: is this still needed?
                     self.ui.error(e, exc_info()[2])
                 except imapobj.error as e: # APPEND failed
@@ -635,9 +636,9 @@ class IMAPFolder(BaseFolder):
             (typ,dat) = imapobj.check()
             assert(typ == 'OK')
 
-            # get the new UID, do we use UIDPLUS?
+            # Get the new UID, do we use UIDPLUS?
             if use_uidplus:
-                # get new UID from the APPENDUID response, it could look
+                # Get new UID from the APPENDUID response, it could look
                 # like OK [APPENDUID 38505 3955] APPEND completed with
                 # 38505 bein folder UIDvalidity and 3955 the new UID.
                 # note: we would want to use .response() here but that
@@ -654,11 +655,11 @@ class IMAPFolder(BaseFolder):
                         " we got no usable uid back. APPENDUID reponse was "
                         "'%s'"% str(resp))
             else:
-                # we don't support UIDPLUS
+                # We don't support UIDPLUS.
                 uid = self.__savemessage_searchforheader(imapobj, headername,
                     headervalue)
                 # See docs for savemessage in Base.py for explanation
-                # of this and other return values
+                # of this and other return values.
                 if uid == 0:
                     self.ui.debug('imap', 'savemessage: attempt to get new UID '
                         'UID failed. Search headers manually.')
@@ -669,7 +670,7 @@ class IMAPFolder(BaseFolder):
         finally:
             if imapobj: self.imapserver.releaseconnection(imapobj)
 
-        if uid: # avoid UID FETCH 0 crash happening later on
+        if uid: # Avoid UID FETCH 0 crash happening later on
             self.messagelist[uid] = self.msglist_item_initializer(uid)
             self.messagelist[uid]['flags'] = flags
 
@@ -690,7 +691,7 @@ class IMAPFolder(BaseFolder):
         imapobj = self.imapserver.acquireconnection()
         try:
             query = "(%s)"% (" ".join(self.imap_query))
-            fails_left = retry_num  ## retry on dropped connection
+            fails_left = retry_num  # Retry on dropped connection.
             while fails_left:
                 try:
                     imapobj.select(self.getfullname(), readonly = True)
@@ -727,7 +728,7 @@ class IMAPFolder(BaseFolder):
             if data == [None]:
                 # IMAP server did not find a message with this UID.
                 reason = "IMAP server '%s' does not have a message "\
-                    "with UID '%s'" % (self.getrepository(), uids)
+                    "with UID '%s'"% (self.getrepository(), uids)
             raise OfflineImapError(reason, severity)
 
         return data
@@ -832,7 +833,7 @@ class IMAPFolder(BaseFolder):
             self.messagelist[uid]['flags'] = imaputil.flagsimap2maildir(flagstr)
             try:
                 needupdate.remove(uid)
-            except ValueError:          # Let it slide if it's not in the list
+            except ValueError:  # Let it slide if it's not in the list.
                 pass
         for uid in needupdate:
             if operation == '+':
@@ -842,7 +843,7 @@ class IMAPFolder(BaseFolder):
 
 
     def __processmessagesflags(self, operation, uidlist, flags):
-        # Hack for those IMAP servers with a limited line length
+        # Hack for those IMAP servers with a limited line length.
         batch_size = 100
         for i in range(0, len(uidlist), batch_size):
             self.__processmessagesflags_real(operation,
-- 
2.7.4



More information about the OfflineIMAP-project mailing list