50 if self.isStartElement(): |
50 if self.isStartElement(): |
51 self._skipUnknownElement() |
51 self._skipUnknownElement() |
52 |
52 |
53 def _readBasics(self): |
53 def _readBasics(self): |
54 """ |
54 """ |
55 Protected method to read am object of a basic Python type. |
55 Protected method to read an object of a basic Python type. |
56 |
56 |
57 @return Python object read |
57 @return Python object read |
58 """ |
58 """ |
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 return None |
64 val = None |
65 elif self.name() == "int": |
65 elif self.name() == "int": |
66 return 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 return True |
70 val = True |
71 else: |
71 else: |
72 return False |
72 val = False |
73 elif self.name() == "float": |
73 elif self.name() == "float": |
74 return 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 return float(real) + float(imag)*1j |
77 val = float(real) + float(imag)*1j |
78 elif self.name() == "string": |
78 elif self.name() == "string": |
79 return 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 return 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 return by |
87 val = by |
|
88 elif self.name() == "tuple": |
|
89 val = self.__readTuple() |
88 else: |
90 else: |
89 self._skipUnknownElement() |
91 self._skipUnknownElement() |
90 except ValueError as err: |
92 except ValueError as err: |
91 self.raiseError(str(err)) |
93 self.raiseError(str(err)) |
|
94 |
|
95 if self.isEndElement(): |
|
96 return val |
|
97 |
|
98 def __readTuple(self): |
|
99 """ |
|
100 Private method to read a Python tuple. |
|
101 |
|
102 @return Python tuple |
|
103 """ |
|
104 l = [] |
|
105 while not self.atEnd(): |
|
106 val = self._readBasics() |
|
107 if self.isEndElement() and self.name() == "tuple": |
|
108 return tuple(l) |
|
109 else: |
|
110 l.append(val) |