equal
deleted
inserted
replaced
34 import struct |
34 import struct |
35 import sys |
35 import sys |
36 |
36 |
37 from . import compat |
37 from . import compat |
38 |
38 |
|
39 abc = collections.abc |
39 |
40 |
40 BSER_ARRAY = b"\x00" |
41 BSER_ARRAY = b"\x00" |
41 BSER_OBJECT = b"\x01" |
42 BSER_OBJECT = b"\x01" |
42 BSER_BYTESTRING = b"\x02" |
43 BSER_BYTESTRING = b"\x02" |
43 BSER_INT8 = b"\x03" |
44 BSER_INT8 = b"\x03" |
205 elif isinstance(val, float): |
206 elif isinstance(val, float): |
206 needed = 9 |
207 needed = 9 |
207 self.ensure_size(needed) |
208 self.ensure_size(needed) |
208 struct.pack_into(b"=cd", self.buf, self.wpos, BSER_REAL, val) |
209 struct.pack_into(b"=cd", self.buf, self.wpos, BSER_REAL, val) |
209 self.wpos += needed |
210 self.wpos += needed |
210 elif isinstance(val, collections.Mapping) and isinstance( |
211 elif isinstance(val, abc.Mapping) and isinstance(val, abc.Sized): |
211 val, collections.Sized |
|
212 ): |
|
213 val_len = len(val) |
212 val_len = len(val) |
214 size = _int_size(val_len) |
213 size = _int_size(val_len) |
215 needed = 2 + size |
214 needed = 2 + size |
216 self.ensure_size(needed) |
215 self.ensure_size(needed) |
217 if size == 1: |
216 if size == 1: |
258 else: |
257 else: |
259 iteritems = val.iteritems() # noqa: B301 Checked version above |
258 iteritems = val.iteritems() # noqa: B301 Checked version above |
260 for k, v in iteritems: |
259 for k, v in iteritems: |
261 self.append_string(k) |
260 self.append_string(k) |
262 self.append_recursive(v) |
261 self.append_recursive(v) |
263 elif isinstance(val, collections.Iterable) and isinstance( |
262 elif isinstance(val, abc.Iterable) and isinstance(val, abc.Sized): |
264 val, collections.Sized |
|
265 ): |
|
266 val_len = len(val) |
263 val_len = len(val) |
267 size = _int_size(val_len) |
264 size = _int_size(val_len) |
268 needed = 2 + size |
265 needed = 2 + size |
269 self.ensure_size(needed) |
266 self.ensure_size(needed) |
270 if size == 1: |
267 if size == 1: |