diff --git a/setup.py b/setup.py index 8206147..affbdd2 100644 --- a/setup.py +++ b/setup.py @@ -38,6 +38,7 @@ requirements = [ 'msgpack>=0.5.2', 'pyzmq>=13.1.0', + 'msgpack-numpy>=0.4.3', 'future', ] @@ -53,11 +54,11 @@ setup( - name='zerorpc', + name='zerorpc2', version=__version__, - description='zerorpc is a flexible RPC based on zeromq.', + description='zerorpc is a flexible RPC based on zeromq. With Numpy Support', author=__author__, - url='https://github.com/0rpc/zerorpc-python', + url='https://github.com/MichaelScript/zerorpc-python', packages=['zerorpc'], install_requires=requirements, tests_require=['nose'], diff --git a/tests/test_events.py b/tests/test_events.py index 7acf98e..c1c694c 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -197,3 +197,30 @@ def test_msgpack(): assert isinstance(event.header[u'message_id'], bytes) assert isinstance(event.header[u'v'], int) assert isinstance(event.args[0], str) + + +def test_msgpack_numpy(): + import numpy as np + context = zerorpc.Context() + test_array = np.arange(10) + event = zerorpc.Event(u'myevent', (test_array,), context=context) + print(event) + # note here that str is an unicode string in all Python version (thanks to + # the builtin str import). + assert isinstance(event.name, str) + for key in event.header.keys(): + assert isinstance(key, str) + assert isinstance(event.header[u'message_id'], bytes) + assert isinstance(event.header[u'v'], int) + assert isinstance(event.args[0], np.ndarray) + + packed = event.pack() + event = event.unpack(packed) + print(event) + assert isinstance(event.name, str) + for key in event.header.keys(): + assert isinstance(key, str) + assert isinstance(event.header[u'message_id'], bytes) + assert isinstance(event.header[u'v'], int) + assert isinstance(event.args[0], np.ndarray) + assert np.array_equal(test_array, event.args[0]) diff --git a/zerorpc/events.py b/zerorpc/events.py index 6939165..7f7c257 100644 --- a/zerorpc/events.py +++ b/zerorpc/events.py @@ -28,6 +28,9 @@ from builtins import range import msgpack +import msgpack_numpy as m +m.patch() # Monkeypatching msgpack to handle Numpy + import gevent.pool import gevent.queue import gevent.event diff --git a/zerorpc/version.py b/zerorpc/version.py index 99b5366..55cc0b8 100644 --- a/zerorpc/version.py +++ b/zerorpc/version.py @@ -23,7 +23,7 @@ # SOFTWARE. __title__ = 'zerorpc' -__version__ = '0.6.1' +__version__ = '0.7.0' __author__ = 'François-Xavier Bourlet .' __license__ = 'MIT' __copyright__ = 'Copyright 2015 François-Xavier Bourlet .'