def test_numeric(self): prec = decimal.getcontext().prec self.compare( decimal.Decimal(10 ** 20), force_bytes("100000000000000000000``%i" % prec) ) self.compare(decimal.Decimal("100"), force_bytes("100``%i" % prec)) self.compare(decimal.Decimal("100.00"), force_bytes("100.00``%i" % prec)) self.compare(decimal.Decimal("0.010"), force_bytes("0.010``%i" % prec)) self.compare(decimal.Decimal("0.1534"), force_bytes("0.1534``%i" % prec)) self.compare(decimal.Decimal("0.0000000010"), force_bytes("0.0000000010``%i" % prec)) self.compare(decimal.Decimal("0"), force_bytes("0``%i" % prec)) self.compare(decimal.Decimal("0.0"), force_bytes("0.0``%i" % prec)) self.compare(decimal.Decimal("0.0000000000"), force_bytes("0.0000000000``%i" % prec)) self.compare(fractions.Fraction(1, 2), wl.Rational(1, 2)) self.compare(float("0.150000"), b"0.15") for special, result in ( [float("inf"), self.dumps(wl.DirectedInfinity(1))], [float("-inf"), self.dumps(wl.DirectedInfinity(-1))], [float("nan"), self.dumps(wl.Indeterminate)], ): self.compare(special, result) self.compare(decimal.Decimal(special), result)
def test_numeric(self): prec = decimal.getcontext().prec self.compare( decimal.Decimal(10**20), force_bytes(u'100000000000000000000``%i' % prec)) self.compare(decimal.Decimal('100'), force_bytes(u'100``%i' % prec)) self.compare( decimal.Decimal('100.00'), force_bytes(u'100.00``%i' % prec)) self.compare( decimal.Decimal('0.010'), force_bytes(u'0.010``%i' % prec)) self.compare( decimal.Decimal('0.1534'), force_bytes(u'0.1534``%i' % prec)) self.compare( decimal.Decimal('0.0000000010'), force_bytes(u'0.0000000010``%i' % prec)) self.compare(decimal.Decimal('0'), force_bytes(u'0``%i' % prec)) self.compare(decimal.Decimal('0.0'), force_bytes(u'0.0``%i' % prec)) self.compare( decimal.Decimal('0.0000000000'), force_bytes(u'0.0000000000``%i' % prec)) self.compare(fractions.Fraction(1, 2), wl.Rational(1, 2)) self.compare(float('0.150000'), b'0.15') for special, result in ( [float('inf'), self.dumps(wl.DirectedInfinity(1))], [float('-inf'), self.dumps(wl.DirectedInfinity(-1))], [float('nan'), self.dumps(wl.Indeterminate)], ): self.compare(special, result) self.compare(decimal.Decimal(special), result)
def test_force_encoding(self): self.assertEqual(force_text("aà"), "aà") self.assertEqual(force_text(abs), "<built-in function abs>") self.assertEqual(force_text(b"a\xc3\xa0"), "aà") self.assertEqual(force_text(memoryview(b"abc")), "abc") self.assertEqual(force_text(bytearray(b"abc")), "abc") self.assertEqual(force_bytes(b"abc"), b"abc") self.assertEqual(force_bytes(abs), b"<built-in function abs>") self.assertEqual(force_bytes("aà"), b"a\xc3\xa0") self.assertEqual(force_text(force_bytes("aà")), "aà") self.assertEqual(force_bytes(memoryview(b"abc")), b"abc") self.assertEqual(force_bytes(bytearray(b"abc")), b"abc")
def encode_booleans(serializer, o): return serializer.serialize_symbol(force_bytes(o))
def serialize_input_form(self, string): yield b"(" yield force_bytes(string) yield b")"
def serialize_symbol(self, name): yield force_bytes(name)
def pack(format, *elements): return struct.pack(b"<%i%s" % (len(elements), force_bytes(format)), *elements)
def serialize_symbol(self, name): yield WXF_CONSTANTS.Symbol yield varint_bytes(len(name)) yield force_bytes(name)
def serialize_string(self, string): string = force_bytes(string) yield WXF_CONSTANTS.String yield varint_bytes(len(string)) yield string
def py_encode_text(s): yield b'"' yield force_bytes(ESCAPE.sub(replace, s), encoding="iso-8859-1") yield b'"'
def write(self, data): """ Write the compression of `data` to the underlying buffer writer. """ self._writer.write(self._compressor.compress(force_bytes(data)))