[kupfer] objects: Cache Sources with SavedIterator when not forced update



commit 4059a3cd97090410baccb552a8396da7b2cd9e5f
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Sun Nov 1 17:41:59 2009 +0100

    objects: Cache Sources with SavedIterator when not forced update
    
    The purpose is to let non-dynamic sources run free on the first run,
    while we still cache the result.

 kupfer/objects.py |   14 ++++++--------
 1 files changed, 6 insertions(+), 8 deletions(-)
---
diff --git a/kupfer/objects.py b/kupfer/objects.py
index 8f93d50..edcfeb6 100644
--- a/kupfer/objects.py
+++ b/kupfer/objects.py
@@ -15,8 +15,9 @@ from os import path
 import gobject
 import gio
 
-from kupfer import pretty
+from kupfer import datatools
 from kupfer import icons, launch, utils
+from kupfer import pretty
 from kupfer.utils import locale_sort
 from kupfer.helplib import PicklingHelperMixin, FilesystemWatchMixin
 from kupfer.kupferstring import tounicode, toutf8, tofolded
@@ -134,11 +135,7 @@ class KupferObject (object):
 		return "kupfer-object"
 
 def aslist(seq):
-	"""
-	Make lists from sequences that are not lists or tuples
-
-	For iterators, sets etc.
-	"""
+	"""Return a list out of @seq, or seq if it is a list"""
 	if not isinstance(seq, type([])) and not isinstance(seq, type(())):
 		seq = list(seq)
 	return seq
@@ -787,11 +784,12 @@ class Source (KupferObject, pretty.OutputMixin):
 			return sort_func(self.get_items())
 		
 		if self.cached_items is None or force_update:
-			self.cached_items = aslist(sort_func(self.get_items()))
+			cache_type = aslist if force_update else datatools.SavedIterable
+			self.cached_items = cache_type(sort_func(self.get_items()))
 			if force_update:
 				self.output_info("Loaded %d items" % len(self.cached_items))
 			else:
-				self.output_debug("Loaded %d items" % len(self.cached_items))
+				self.output_debug("Loaded items")
 		return self.cached_items
 
 	def has_parent(self):



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]