diff options
| author | Robert McQueen <robot101@debian.org> | 2005-10-24 18:29:50 +0000 | 
|---|---|---|
| committer | Robert McQueen <robot101@debian.org> | 2005-10-24 18:29:50 +0000 | 
| commit | ef47e01f7593c4844f927752c0462dae7722ff9e (patch) | |
| tree | a8e947d38bf380c71566d21c7e79d6636dfcb1f2 /python | |
| parent | 396b9c9e709f9abd6906a962382df409e118a48c (diff) | |
2005-10-24  Robert McQueen <robot101@debian.org>
    * python/dbus_bindings.pyx (String, MessageIter): make D-Bus strings
    derive from unicode instead of str, and encode/decode UTF-8 when
    marshalling/unmarshalling bus messages
    * python/introspect_parser.py: encode introspection data as UTF-8
    before passing the buffer into libxml2
    * test/python/test-client.py: add unicode test strings
    * test/data/valid-service-files/.cvsignore, test/python/.cvsignore:
    ignore generated python test files
Diffstat (limited to 'python')
| -rw-r--r-- | python/dbus_bindings.pyx | 16 | ||||
| -rw-r--r-- | python/introspect_parser.py | 2 | 
2 files changed, 10 insertions, 8 deletions
diff --git a/python/dbus_bindings.pyx b/python/dbus_bindings.pyx index f7c88006..4bf0893c 100644 --- a/python/dbus_bindings.pyx +++ b/python/dbus_bindings.pyx @@ -123,9 +123,9 @@ class Double(float):      def __init__(self, value):          float.__init__(self, value) -class String(str): +class String(unicode):      def __init__(self, value): -        str.__init__(self, value) +        unicode.__init__(self, value)  class Array(list):      def __init__(self, value, type=None, signature=None): @@ -733,8 +733,9 @@ cdef class MessageIter:      def get_string(self):          cdef char *c_str          dbus_message_iter_get_basic(self.iter, <char **>&c_str) +        ret = c_str.decode('utf8') -        return c_str +        return ret      def get_object_path(self):          object_path_string = self.get_string() @@ -836,7 +837,7 @@ cdef class MessageIter:          elif ptype == long:              ret = TYPE_INT64              ret = str(chr(ret)) -        elif ptype == str: +        elif (ptype == str or ptype == unicode):              ret = TYPE_STRING              ret = str(chr(ret))          elif ptype == float: @@ -1042,7 +1043,7 @@ cdef class MessageIter:              retval = self.append_int32(value)          elif value_type == long:              retval = self.append_int64(value) -        elif value_type == str: +        elif (value_type == str or value_type == unicode):              retval = self.append_string(value)          elif value_type == float:              retval = self.append_double(value) @@ -1146,8 +1147,9 @@ cdef class MessageIter:      def append_string(self, value):          cdef char *c_value -        c_value = value -        return dbus_message_iter_append_basic(self.iter, TYPE_STRING, <char **>&c_value)     +        tmp = value.encode('utf8') +        c_value = tmp +        return dbus_message_iter_append_basic(self.iter, TYPE_STRING, <char **>&c_value)      def append_object_path(self, value):          cdef char *c_value diff --git a/python/introspect_parser.py b/python/introspect_parser.py index 6e94cccf..40cae1e7 100644 --- a/python/introspect_parser.py +++ b/python/introspect_parser.py @@ -8,7 +8,7 @@ def process_introspection_data(data):      XMLREADER_START_ELEMENT_NODE_TYPE = 1      XMLREADER_END_ELEMENT_NODE_TYPE = 15 -    stream = cStringIO.StringIO(data) +    stream = cStringIO.StringIO(data.encode('utf-8'))      input_source = libxml2.inputBuffer(stream)      reader = input_source.newTextReader("urn:introspect")  | 
