]> git.notmuchmail.org Git - notmuch/blobdiff - bindings/python/notmuch/filenames.py
version: bump to 0.15.1
[notmuch] / bindings / python / notmuch / filenames.py
index 2079530f656ff3cd78c50a67e7d94e3d2b46843d..229f414de63224053b026a933a305d1ba9ad990b 100644 (file)
@@ -17,7 +17,7 @@ along with notmuch.  If not, see <http://www.gnu.org/licenses/>.
 Copyright 2010 Sebastian Spaeth <Sebastian@SSpaeth.de>
 """
 from ctypes import c_char_p
-from notmuch.globals import (
+from .globals import (
     nmlib,
     NotmuchMessageP,
     NotmuchFilenamesP,
@@ -32,29 +32,32 @@ from .errors import (
 class Filenames(Python3StringMixIn):
     """Represents a list of filenames as returned by notmuch
 
-    This object contains the Filenames iterator. The main function is
-    as_generator() which will return a generator so we can do a Filenamesth an
-    iterator over a list of notmuch filenames. Do note that the underlying
-    library only provides a one-time iterator (it cannot reset the iterator to
-    the start). Thus iterating over the function will "exhaust" the list of
-    tags, and a subsequent iteration attempt will raise a
-    :exc:`NotInitializedError`. Also note, that any function that uses
-    iteration (nearly all) will also exhaust the tags. So both::
+    Objects of this class implement the iterator protocol.
 
-      for name in filenames: print name
+    .. note::
 
-    as well as::
+        The underlying library only provides a one-time iterator (it
+        cannot reset the iterator to the start). Thus iterating over
+        the function will "exhaust" the list of tags, and a subsequent
+        iteration attempt will raise a
+        :exc:`NotInitializedError`. Also note, that any function that
+        uses iteration (nearly all) will also exhaust the tags. So
+        both::
 
-       number_of_names = len(names)
+           for name in filenames: print name
 
-    and even a simple::
+        as well as::
 
-       #str() iterates over all tags to construct a space separated list
-       print(str(filenames))
+           number_of_names = len(names)
 
-    will "exhaust" the Filenames. However, you can use
-    :meth:`Message.get_filenames` repeatedly to get fresh Filenames
-    objects to perform various actions on filenames.
+        and even a simple::
+
+           #str() iterates over all tags to construct a space separated list
+           print(str(filenames))
+
+        will "exhaust" the Filenames. However, you can use
+        :meth:`Message.get_filenames` repeatedly to get fresh
+        Filenames objects to perform various actions on filenames.
     """
 
     #notmuch_filenames_get
@@ -112,13 +115,10 @@ class Filenames(Python3StringMixIn):
     def __unicode__(self):
         """Represent Filenames() as newline-separated list of full paths
 
-        .. note:: As this iterates over the filenames, we will not be
-               able to iterate over them again (as in retrieve them)! If
-               the tags have been exhausted already, this will raise a
-               :exc:`NotInitializedError` on subsequent
-               attempts. However, you can use
-               :meth:`Message.get_filenames` repeatedly to perform
-               various actions on filenames.
+        .. note::
+
+            This method exhausts the iterator object, so you will not be able to
+            iterate over them again.
         """
         return "\n".join(self)
 
@@ -128,7 +128,7 @@ class Filenames(Python3StringMixIn):
 
     def __del__(self):
         """Close and free the notmuch filenames"""
-        if self._files_p is not None:
+        if self._files_p:
             self._destroy(self._files_p)
 
     def __len__(self):
@@ -136,15 +136,8 @@ class Filenames(Python3StringMixIn):
 
         .. note::
 
-            As this iterates over the files, we will not be able to
-            iterate over them again! So this will fail::
-
-                 #THIS FAILS
-                 files = Database().get_directory('').get_child_files()
-                 if len(files) > 0:  # this 'exhausts' msgs
-                     # next line raises
-                     # NotmuchError(:attr:`STATUS`.NOT_INITIALIZED)
-                     for file in files: print file
+            This method exhausts the iterator object, so you will not be able to
+            iterate over them again.
         """
         if not self._files_p:
             raise NotInitializedError()