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

Reply via email to