summaryrefslogtreecommitdiffstats
path: root/avahi-python/avahi
diff options
context:
space:
mode:
Diffstat (limited to 'avahi-python/avahi')
-rw-r--r--avahi-python/avahi/Makefile.am10
-rw-r--r--avahi-python/avahi/ServiceTypeDatabase.py.in73
-rw-r--r--avahi-python/avahi/__init__.py2
3 files changed, 66 insertions, 19 deletions
diff --git a/avahi-python/avahi/Makefile.am b/avahi-python/avahi/Makefile.am
index c0c9c34..907c5eb 100644
--- a/avahi-python/avahi/Makefile.am
+++ b/avahi-python/avahi/Makefile.am
@@ -1,5 +1,3 @@
-# $Id$
-
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
@@ -28,12 +26,12 @@ if HAVE_GDBM
nodist_avahi_SCRIPTS = ServiceTypeDatabase.py
ServiceTypeDatabase.py: ServiceTypeDatabase.py.in
- sed -e 's,@PYTHON\@,$(PYTHON),g' \
+ $(AM_V_GEN)sed -e 's,@PYTHON\@,$(PYTHON),g' \
-e 's,@DBM\@,gdbm,g' \
-e 's,@FIRST_KEY\@,key = self.db.firstkey(),g' \
-e 's,@CHECK_KEY\@,while key is not None:,g' \
-e 's,@NEXT_KEY\@,key = self.db.nextkey(key),g' \
- -e 's,@pkglibdir\@,$(pkglibdir),g' $< > $@
+ -e 's,@pkglibdir\@,$(pkglibdir),g' $< > $@ && \
chmod +x $@
endif
@@ -41,12 +39,12 @@ if HAVE_DBM
nodist_avahi_SCRIPTS = ServiceTypeDatabase.py
ServiceTypeDatabase.py: ServiceTypeDatabase.py.in
- sed -e 's,@PYTHON\@,$(PYTHON),g' \
+ $(AM_V_GEN)sed -e 's,@PYTHON\@,$(PYTHON),g' \
-e 's,@DBM\@,dbm,g' \
-e 's,@FIRST_KEY\@,keys = self.db.keys(),g' \
-e 's,@CHECK_KEY\@,for key in keys:,g' \
-e 's,@NEXT_KEY\@,,g' \
- -e 's,@pkglibdir\@,$(pkglibdir),g' $< > $@
+ -e 's,@pkglibdir\@,$(pkglibdir),g' $< > $@ && \
chmod +x $@
endif
diff --git a/avahi-python/avahi/ServiceTypeDatabase.py.in b/avahi-python/avahi/ServiceTypeDatabase.py.in
index d134510..8ad8d5e 100644
--- a/avahi-python/avahi/ServiceTypeDatabase.py.in
+++ b/avahi-python/avahi/ServiceTypeDatabase.py.in
@@ -1,7 +1,5 @@
#!@PYTHON@
# -*-python-*-
-# $Id$
-
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
@@ -26,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"):
@@ -68,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):
@@ -96,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__":
@@ -107,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
diff --git a/avahi-python/avahi/__init__.py b/avahi-python/avahi/__init__.py
index 81e2754..7b45029 100644
--- a/avahi-python/avahi/__init__.py
+++ b/avahi-python/avahi/__init__.py
@@ -1,5 +1,3 @@
-# $Id$
-
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it