#
# See https://bugzilla.gnome.org/show_bug.cgi?id=647577#c5
# for discussion
- keys = function_pointers.keys()
- if len(keys) > 0:
- keys.sort(cmp=utils.my_version_cmp)
- for key in keys:
- self.h.write('%s'%function_pointers[key])
+ for key in sorted(function_pointers.keys(), key=utils.version_cmp_key):
+ self.h.write('%s'%function_pointers[key])
self.h.write('};\n')
self.h.write('\n')
value = '@get_%s: '%(p.name_lower)
value += 'Getter for the #%s:%s property.'%(i.camel_name, p.name_hyphen)
doc_bits[key] = value
- keys = doc_bits.keys()
- if len(keys) > 0:
- keys.sort(cmp=utils.my_version_cmp)
- for key in keys:
- self.c.write(' * %s\n'%doc_bits[key])
+ for key in sorted(doc_bits.keys(), key=utils.version_cmp_key):
+ self.c.write(' * %s\n'%doc_bits[key])
+
self.c.write(self.docbook_gen.expand(
' *\n'
' * Virtual table for the D-Bus interface #%s.\n'
self.expand_member_dict[key] = value
# Make sure to expand the keys in reverse order so e.g. #org.foo.Iface:MediaCompat
# is evaluated before #org.foo.Iface:Media ...
- self.expand_member_dict_keys = self.expand_member_dict.keys()
- self.expand_member_dict_keys.sort(reverse=True)
- self.expand_iface_dict_keys = self.expand_iface_dict.keys()
- self.expand_iface_dict_keys.sort(reverse=True)
+ self.expand_member_dict_keys = sorted(self.expand_member_dict.keys(), reverse=True)
+ self.expand_iface_dict_keys = sorted(self.expand_iface_dict.keys(), reverse=True)
def generate(self):
for i in self.ifaces:
- self.out = file('%s-%s.xml'%(self.docbook, i.name), 'w')
+ self.out = open('%s-%s.xml'%(self.docbook, i.name), 'w')
self.out.write(''%())
self.out.write('<?xml version="1.0" encoding="utf-8"?>\n'%())
self.out.write('<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"\n'%())
self.state = DBusXMLParser.STATE_IGNORED
# assign docs, if any
- if attrs.has_key('name') and self.doc_comment_last_symbol == attrs['name']:
+ if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']:
self._cur_object.doc_string = self.doc_comment_body
- if self.doc_comment_params.has_key('short_description'):
+ if 'short_description' in self.doc_comment_params:
short_description = self.doc_comment_params['short_description']
self._cur_object.doc_string_brief = short_description
- if self.doc_comment_params.has_key('since'):
+ if 'since' in self.doc_comment_params:
self._cur_object.since = self.doc_comment_params['since']
elif self.state == DBusXMLParser.STATE_INTERFACE:
self.state = DBusXMLParser.STATE_IGNORED
# assign docs, if any
- if attrs.has_key('name') and self.doc_comment_last_symbol == attrs['name']:
+ if 'name' in attrs and self.doc_comment_last_symbol == attrs['name']:
self._cur_object.doc_string = self.doc_comment_body
- if self.doc_comment_params.has_key('since'):
+ if 'since' in self.doc_comment_params:
self._cur_object.since = self.doc_comment_params['since']
elif self.state == DBusXMLParser.STATE_METHOD:
if name == DBusXMLParser.STATE_ARG:
self.state = DBusXMLParser.STATE_ARG
arg_name = None
- if attrs.has_key('name'):
+ if 'name' in attrs:
arg_name = attrs['name']
arg = dbustypes.Arg(arg_name, attrs['type'])
direction = attrs['direction']
# assign docs, if any
if self.doc_comment_last_symbol == old_cur_object.name:
- if attrs.has_key('name') and self.doc_comment_params.has_key(attrs['name']):
+ if 'name' in attrs and attrs['name'] in self.doc_comment_params:
doc_string = self.doc_comment_params[attrs['name']]
if doc_string != None:
self._cur_object.doc_string = doc_string
- if self.doc_comment_params.has_key('since'):
+ if 'since' in self.doc_comment_params:
self._cur_object.since = self.doc_comment_params['since']
elif self.state == DBusXMLParser.STATE_SIGNAL:
if name == DBusXMLParser.STATE_ARG:
self.state = DBusXMLParser.STATE_ARG
arg_name = None
- if attrs.has_key('name'):
+ if 'name' in attrs:
arg_name = attrs['name']
arg = dbustypes.Arg(arg_name, attrs['type'])
self._cur_object.args.append(arg)
# assign docs, if any
if self.doc_comment_last_symbol == old_cur_object.name:
- if attrs.has_key('name') and self.doc_comment_params.has_key(attrs['name']):
+ if 'name' in attrs and attrs['name'] in self.doc_comment_params:
doc_string = self.doc_comment_params[attrs['name']]
if doc_string != None:
self._cur_object.doc_string = doc_string
- if self.doc_comment_params.has_key('since'):
+ if 'since' in self.doc_comment_params:
self._cur_object.since = self.doc_comment_params['since']
elif self.state == DBusXMLParser.STATE_PROPERTY:
else:
return s
-# I'm sure this could be a lot more elegant if I was
-# more fluent in python...
-def my_version_cmp(a, b):
- if len(a[0]) > 0 and len(b[0]) > 0:
- va = distutils.version.LooseVersion(a[0])
- vb = distutils.version.LooseVersion(b[0])
- ret = va.__cmp__(vb)
- else:
- ret = cmp(a[0], b[0])
- if ret != 0:
- return ret
- return cmp(a[1], b[1])
+def version_cmp_key(key):
+ # If the 'since' version is empty put a 0 in its place as this will
+ # allow LooseVersion to work and will always compare lower.
+ v = key[0] if key[0] else '0'
+ return (distutils.version.LooseVersion(v), key[1])