summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorINADA Naoki <inada-n@klab.com>2012-09-21 14:15:30 +0900
committerINADA Naoki <inada-n@klab.com>2012-09-21 14:15:30 +0900
commit51335bbee4502ac3af81363a10ef6718439377d1 (patch)
tree175fb5ef98ca964a293a300067baa26bb3f3bf98
parent397d772e110ad7000e0952d41c74d8efd322f01f (diff)
downloadmsgpack-python-51335bbee4502ac3af81363a10ef6718439377d1.tar.gz
packb supports use_single_float option.
-rw-r--r--ChangeLog.rst9
-rw-r--r--msgpack/_msgpack.pyx5
-rw-r--r--test/test_pack.py5
3 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog.rst b/ChangeLog.rst
index 67eac68..4fd5cbc 100644
--- a/ChangeLog.rst
+++ b/ChangeLog.rst
@@ -1,6 +1,11 @@
0.2.2
=======
-:release date: NOT RELEASED YET
+:release date: 2012-09-21
+
+Changes
+-------
+* Add ``use_single_float`` option to ``Packer``. When it is true, packs float
+ object in single precision format.
Bugs fixed
-----------
@@ -8,6 +13,8 @@ Bugs fixed
``unpack()`` doesn't control gc now instead of restoring gc state collectly.
User can control gc state when gc cause performance issue.
+* ``Unpacker``'s ``read_size`` option didn't used.
+
0.2.1
=======
:release date: 2012-08-20
diff --git a/msgpack/_msgpack.pyx b/msgpack/_msgpack.pyx
index af005cb..c9f5e31 100644
--- a/msgpack/_msgpack.pyx
+++ b/msgpack/_msgpack.pyx
@@ -177,10 +177,11 @@ def pack(object o, object stream, default=None, encoding='utf-8', unicode_errors
packer = Packer(default=default, encoding=encoding, unicode_errors=unicode_errors)
stream.write(packer.pack(o))
-def packb(object o, default=None, encoding='utf-8', unicode_errors='strict'):
+def packb(object o, default=None, encoding='utf-8', unicode_errors='strict', use_single_float=False):
"""
pack o and return packed bytes."""
- packer = Packer(default=default, encoding=encoding, unicode_errors=unicode_errors)
+ packer = Packer(default=default, encoding=encoding, unicode_errors=unicode_errors,
+ use_single_float=use_single_float)
return packer.pack(o)
diff --git a/test/test_pack.py b/test/test_pack.py
index 898cdb9..85d11a0 100644
--- a/test/test_pack.py
+++ b/test/test_pack.py
@@ -2,6 +2,7 @@
# coding: utf-8
import six
+import struct
from nose import main
from nose.tools import *
from nose.plugins.skip import SkipTest
@@ -86,5 +87,9 @@ def testDecodeBinary():
re = unpackb(packb("abc"), encoding=None)
assert_equal(re, b"abc")
+def testPackFloat():
+ assert_equal(packb(1.0, use_single_float=True), b'\xca' + struct.pack('>f', 1.0))
+ assert_equal(packb(1.0, use_single_float=False), b'\xcb' + struct.pack('>d', 1.0))
+
if __name__ == '__main__':
main()