Revision: 2110
http://gtkpod.svn.sourceforge.net/gtkpod/?rev=2110&view=rev
Author: tmzullinger
Date: 2008-08-23 18:02:42 +0000 (Sat, 23 Aug 2008)
Log Message:
-----------
Python: Be more consistent with other container objects and classes
This enables testing whether a key exists in an object (e.g. "'title'
in track") as well as iterating over a Track or Photo object's keys,
values, or items. The items() and pairs() methods were renamed to
values() and items(), respectively, in the Track and Photo classes.
Modified Paths:
--------------
libgpod/trunk/ChangeLog
libgpod/trunk/bindings/python/ipod.py
libgpod/trunk/bindings/python/tests/tests.py
Modified: libgpod/trunk/ChangeLog
===================================================================
--- libgpod/trunk/ChangeLog 2008-08-23 18:01:32 UTC (rev 2109)
+++ libgpod/trunk/ChangeLog 2008-08-23 18:02:42 UTC (rev 2110)
@@ -5,6 +5,16 @@
Add a quiet parameter to Database.remove() and use it in
tests
+ * bindings/python/ipod.py:
+ Be more consistent with other python container objects and
+ classes
+
+ This enables testing whether a key exists in an object (e.g.
+ "'title' in track") as well as iterating over a Track or
+ Photo object's keys, values, or items. The items() and
+ pairs() methods were renamed to values() and items(),
+ respectively, in the Track and Photo classes.
+
2008-08-20 Todd Zullinger <tmzullinger at users.sourceforge.net>
* bindings/python/examples/save_photos.py
Modified: libgpod/trunk/bindings/python/ipod.py
===================================================================
--- libgpod/trunk/bindings/python/ipod.py 2008-08-23 18:01:32 UTC (rev
2109)
+++ libgpod/trunk/bindings/python/ipod.py 2008-08-23 18:02:42 UTC (rev
2110)
@@ -454,13 +454,38 @@
repr(self['title']),
repr(self['album']))
+ def __iter__(self):
+ for k in self.keys():
+ yield k
+
+ def has_key(self, key):
+ try:
+ value = self[key]
+ except KeyError:
+ return False
+ return True
+
+ def __contains__(self, key):
+ return self.has_key(key)
+
+ def iteritems(self):
+ for k in self:
+ yield (k, self[k])
+
+ def iterkeys(self):
+ return self.__iter__()
+
+ def itervalues(self):
+ for _, v in self.iteritems():
+ yield v
+
def keys(self):
return list(self._proxied_attributes)
- def items(self):
+ def values(self):
return [self[k] for k in self._proxied_attributes]
- def pairs(self):
+ def items(self):
return [(k, self[k]) for k in self._proxied_attributes]
def __getitem__(self, item):
@@ -937,13 +962,38 @@
self['digitized_date'].strftime("%c"),
repr(self['artwork_size']))
+ def __iter__(self):
+ for k in self.keys():
+ yield k
+
+ def has_key(self, key):
+ try:
+ value = self[key]
+ except KeyError:
+ return False
+ return True
+
+ def __contains__(self, key):
+ return self.has_key(key)
+
+ def iteritems(self):
+ for k in self:
+ yield (k, self[k])
+
+ def iterkeys(self):
+ return self.__iter__()
+
+ def itervalues(self):
+ for _, v in self.iteritems():
+ yield v
+
def keys(self):
return list(self._proxied_attributes)
- def items(self):
+ def values(self):
return [self[k] for k in self._proxied_attributes]
- def pairs(self):
+ def items(self):
return [(k, self[k]) for k in self._proxied_attributes]
def __getitem__(self, item):
Modified: libgpod/trunk/bindings/python/tests/tests.py
===================================================================
--- libgpod/trunk/bindings/python/tests/tests.py 2008-08-23 18:01:32 UTC
(rev 2109)
+++ libgpod/trunk/bindings/python/tests/tests.py 2008-08-23 18:02:42 UTC
(rev 2110)
@@ -79,7 +79,12 @@
t['time_added'] = time.mktime(date.timetuple())
self.assertEqual(date.year, t['time_added'].year)
self.assertEqual(date.second, t['time_added'].second)
-
+
+ def testTrackContainerMethods(self):
+ self.testAddTrack()
+ track = self.db[0]
+ self.failUnless('title' in track)
+
def testVersion(self):
self.assertEqual(type(gpod.version_info),
types.TupleType)
@@ -182,5 +187,10 @@
for album in self.db.PhotoAlbums:
[photo for photo in album]
+ def testPhotoContainerMethods(self):
+ self.testAddPhoto()
+ photo = self.db[0]
+ self.failUnless('id' in photo)
+
if __name__ == '__main__':
unittest.main()
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2