59 while not self.atEnd(): |
59 while not self.atEnd(): |
60 self.readNext() |
60 self.readNext() |
61 if self.isStartElement(): |
61 if self.isStartElement(): |
62 try: |
62 try: |
63 if self.name() == "none": |
63 if self.name() == "none": |
64 val = None |
64 val = None |
65 elif self.name() == "int": |
65 elif self.name() == "int": |
66 val = int(self.readElementText()) |
66 val = int(self.readElementText()) |
67 elif self.name() == "bool": |
67 elif self.name() == "bool": |
68 b = self.readElementText() |
68 b = self.readElementText() |
69 if b == "True": |
69 if b == "True": |
70 val = True |
70 val = True |
71 else: |
71 else: |
72 val = False |
72 val = False |
73 elif self.name() == "float": |
73 elif self.name() == "float": |
74 val = float(self.readElementText()) |
74 val = float(self.readElementText()) |
75 elif self.name() == "complex": |
75 elif self.name() == "complex": |
76 real, imag = self.readElementText().split() |
76 real, imag = self.readElementText().split() |
77 val = float(real) + float(imag)*1j |
77 val = float(real) + float(imag)*1j |
78 elif self.name() == "string": |
78 elif self.name() == "string": |
79 val = self.readElementText() |
79 val = self.readElementText() |
80 elif self.name() == "bytes": |
80 elif self.name() == "bytes": |
81 by = bytes( |
81 by = bytes( |
82 [int(b) for b in self.readElementText().split(",")]) |
82 [int(b) for b in self.readElementText().split(",")]) |
83 val = by |
83 val = by |
84 elif self.name() == "bytearray": |
84 elif self.name() == "bytearray": |
85 by = bytearray( |
85 by = bytearray( |
86 [int(b) for b in self.readElementText().split(",")]) |
86 [int(b) for b in self.readElementText().split(",")]) |
87 val = by |
87 val = by |
88 elif self.name() == "tuple": |
88 elif self.name() == "tuple": |
89 val = self.__readTuple() |
89 val = self.__readTuple() |
|
90 return val |
90 else: |
91 else: |
91 self._skipUnknownElement() |
92 self._skipUnknownElement() |
92 except ValueError as err: |
93 except ValueError as err: |
93 self.raiseError(str(err)) |
94 self.raiseError(str(err)) |
94 |
95 |
95 if self.isEndElement(): |
96 if self.isEndElement(): |
96 return val |
97 if self.name() in ["tuple"]: |
|
98 return None |
|
99 else: |
|
100 return val |
97 |
101 |
98 def __readTuple(self): |
102 def __readTuple(self): |
99 """ |
103 """ |
100 Private method to read a Python tuple. |
104 Private method to read a Python tuple. |
101 |
105 |
102 @return Python tuple |
106 @return Python tuple |
103 """ |
107 """ |
104 l = [] |
108 l = [] |
105 while not self.atEnd(): |
109 while not self.atEnd(): |
106 val = self._readBasics() |
110 val = self._readBasics() |
107 if self.isEndElement() and self.name() == "tuple": |
111 if self.isEndElement() and self.name() == "tuple" and val is None: |
108 return tuple(l) |
112 return tuple(l) |
109 else: |
113 else: |
110 l.append(val) |
114 l.append(val) |