summaryrefslogtreecommitdiffstats
path: root/avahi-python
diff options
context:
space:
mode:
authorChris Couzens <ccouzens@gmail.com>2010-06-25 05:53:25 +0200
committerLennart Poettering <lennart@poettering.net>2010-06-25 05:53:25 +0200
commitb578920285735e2926dfb5bd800f6d3d04b4d69c (patch)
treed0e1c859729361c0394e88aed2e10b3d10b6405d /avahi-python
parent856c271d8d615957828c6631a58abfddbb3fa6a7 (diff)
python: extend ServiceTypeDatabase.py API a little
Added a few useful methods to ServiceTypeDatabase.py such as get(key, default). These methods will be familiar to any python programmer. Fixes #294
Diffstat (limited to 'avahi-python')
-rw-r--r--avahi-python/avahi/ServiceTypeDatabase.py.in71
1 files changed, 62 insertions, 9 deletions
diff --git a/avahi-python/avahi/ServiceTypeDatabase.py.in b/avahi-python/avahi/ServiceTypeDatabase.py.in
index 8a77a31..8ad8d5e 100644
--- a/avahi-python/avahi/ServiceTypeDatabase.py.in
+++ b/avahi-python/avahi/ServiceTypeDatabase.py.in
@@ -24,6 +24,7 @@ import re
locale.setlocale(locale.LC_ALL, '')
class ServiceTypeDatabase:
+ """ServiceTypeDatabase maps service types to descriptions"""
def __init__(self, filename = "@pkglibdir@/service-types.db"):
@@ -66,14 +67,7 @@ class ServiceTypeDatabase:
def items(self):
- items = []
- @FIRST_KEY@
- @CHECK_KEY@
- if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key):
- localized_service_name = self[key]
- items.append((key, localized_service_name))
- @NEXT_KEY@
- return items
+ return list(self.iteritems())
def has_key(self, key):
@@ -94,6 +88,52 @@ class ServiceTypeDatabase:
return False
+ def __iter__(self):
+
+ @FIRST_KEY@
+ @CHECK_KEY@
+
+ if re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+', key) and not re.search('_[a-zA-Z0-9-]+\._[a-zA-Z0-9-]+\[.*\]', key):
+ yield key
+
+ @NEXT_KEY@
+
+ def __len__(self):
+
+ count = 0
+ for _ in self:
+
+ count+=1
+
+ self.__len__ = lambda : count
+ return len(self)
+
+ def get(self, key, default=None):
+
+ if key in self:
+ return self[key]
+ else:
+ return default
+
+ def iteritems(self):
+
+ return ((key, self[key]) for key in self)
+
+ def iterkeys(self):
+
+ return self.__iter__()
+
+ def itervalues(self):
+
+ return (self[key] for key in self)
+
+ def keys(self):
+
+ return list(self)
+
+ def values(self):
+
+ return list(self.itervalues())
if __name__ == "__main__":
@@ -105,4 +145,17 @@ if __name__ == "__main__":
print b["_webdav._tcp"]
print b["_webdavs._tcp"]
- print b["gurki._tcp"]
+ print b.get("gurki._tcp")
+ print len(b)
+
+ for key, _ in zip(b, xrange(3)):
+
+ print key
+
+ for key, _ in zip(b.iteritems(), xrange(3)):
+
+ print key
+
+ for key, _ in zip(b.itervalues(), xrange(3)):
+
+ print key