From 781d71db20b0c5acbe940eff1b1ef2f1b765ce54 Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Wed, 1 Feb 2017 21:13:23 +0200 Subject: [PATCH] zmq os independent Change-Id: Iaf5a782be4db26a979a7535454719e8e62b5969a Signed-off-by: Yaroslav Brustinov --- .../stl/trex_stl_lib/trex_stl_ext.py | 12 +- .../cel59/32bit/zmq/backend/cython/_device.so | Bin 25440 -> 0 bytes .../cel59/32bit/zmq/backend/cython/_poll.so | Bin 36716 -> 0 bytes .../cel59/32bit/zmq/backend/cython/_version.so | Bin 10520 -> 0 bytes .../cel59/32bit/zmq/backend/cython/constants.so | Bin 39880 -> 0 bytes .../cel59/32bit/zmq/backend/cython/context.so | Bin 38200 -> 0 bytes .../cel59/32bit/zmq/backend/cython/error.so | Bin 13044 -> 0 bytes .../cel59/32bit/zmq/backend/cython/message.so | Bin 55776 -> 0 bytes .../cel59/32bit/zmq/backend/cython/socket.so | Bin 94316 -> 0 bytes .../cel59/32bit/zmq/backend/cython/utils.so | Bin 24528 -> 0 bytes .../cel59/32bit/zmq/devices/monitoredqueue.so | Bin 37524 -> 0 bytes .../cel59/64bit/zmq/backend/cython/_device.so | Bin 34040 -> 0 bytes .../cel59/64bit/zmq/backend/cython/_poll.so | Bin 47312 -> 0 bytes .../cel59/64bit/zmq/backend/cython/_version.so | Bin 11880 -> 0 bytes .../cel59/64bit/zmq/backend/cython/constants.so | Bin 48136 -> 0 bytes .../cel59/64bit/zmq/backend/cython/context.so | Bin 49288 -> 0 bytes .../cel59/64bit/zmq/backend/cython/error.so | Bin 16384 -> 0 bytes .../cel59/64bit/zmq/backend/cython/message.so | Bin 73944 -> 0 bytes .../cel59/64bit/zmq/backend/cython/socket.so | Bin 114736 -> 0 bytes .../cel59/64bit/zmq/backend/cython/utils.so | Bin 29592 -> 0 bytes .../cel59/64bit/zmq/devices/monitoredqueue.so | Bin 43936 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/_device.so | Bin 29248 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/_poll.so | Bin 42168 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/_version.so | Bin 15376 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/constants.so | Bin 51600 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/context.so | Bin 43888 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/error.so | Bin 19848 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/message.so | Bin 62048 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/socket.so | Bin 105752 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/utils.so | Bin 30048 -> 0 bytes .../fedora18/64bit/zmq/devices/monitoredqueue.so | Bin 39112 -> 0 bytes .../python2/fedora18/64bit/zmq/libzmq.so.3 | Bin 322744 -> 0 bytes .../python2/{cel59 => ucs2}/32bit/zmq/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/auth/__init__.py | 0 .../python2/{cel59 => ucs2}/32bit/zmq/auth/base.py | 0 .../{cel59 => ucs2}/32bit/zmq/auth/certs.py | 0 .../{cel59 => ucs2}/32bit/zmq/auth/ioloop.py | 0 .../{cel59 => ucs2}/32bit/zmq/auth/thread.py | 0 .../{cel59 => ucs2}/32bit/zmq/backend/__init__.py | 0 .../32bit/zmq/backend/cffi/__init__.py | 0 .../32bit/zmq/backend/cffi/_cdefs.h | 0 .../32bit/zmq/backend/cffi/_cffi.py | 0 .../32bit/zmq/backend/cffi/_poll.py | 0 .../32bit/zmq/backend/cffi/_verify.c | 0 .../32bit/zmq/backend/cffi/constants.py | 0 .../32bit/zmq/backend/cffi/context.py | 0 .../32bit/zmq/backend/cffi/devices.py | 0 .../32bit/zmq/backend/cffi/error.py | 0 .../32bit/zmq/backend/cffi/message.py | 0 .../32bit/zmq/backend/cffi/socket.py | 0 .../32bit/zmq/backend/cffi/utils.py | 0 .../32bit/zmq/backend/cython/__init__.py | 0 .../32bit/zmq/backend/cython/checkrc.pxd | 0 .../32bit/zmq/backend/cython/context.pxd | 0 .../32bit/zmq/backend/cython/libzmq.pxd | 0 .../32bit/zmq/backend/cython/message.pxd | 0 .../32bit/zmq/backend/cython/socket.pxd | 0 .../32bit/zmq/backend/cython/utils.pxd | 0 .../{cel59 => ucs2}/32bit/zmq/backend/select.py | 0 .../{cel59 => ucs2}/32bit/zmq/devices/__init__.py | 0 .../32bit/zmq/devices/basedevice.py | 0 .../32bit/zmq/devices/monitoredqueue.pxd | 0 .../32bit/zmq/devices/monitoredqueue.py | 0 .../32bit/zmq/devices/monitoredqueuedevice.py | 0 .../32bit/zmq/devices/proxydevice.py | 0 .../python2/{cel59 => ucs2}/32bit/zmq/error.py | 0 .../32bit/zmq/eventloop/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/eventloop/ioloop.py | 0 .../32bit/zmq/eventloop/minitornado/__init__.py | 0 .../32bit/zmq/eventloop/minitornado/concurrent.py | 0 .../32bit/zmq/eventloop/minitornado/ioloop.py | 0 .../32bit/zmq/eventloop/minitornado/log.py | 0 .../zmq/eventloop/minitornado/platform/__init__.py | 0 .../zmq/eventloop/minitornado/platform/auto.py | 0 .../zmq/eventloop/minitornado/platform/common.py | 0 .../eventloop/minitornado/platform/interface.py | 0 .../zmq/eventloop/minitornado/platform/posix.py | 0 .../zmq/eventloop/minitornado/platform/windows.py | 0 .../zmq/eventloop/minitornado/stack_context.py | 0 .../32bit/zmq/eventloop/minitornado/util.py | 0 .../32bit/zmq/eventloop/zmqstream.py | 0 .../{cel59 => ucs2}/32bit/zmq/green/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/green/core.py | 0 .../{cel59 => ucs2}/32bit/zmq/green/device.py | 0 .../32bit/zmq/green/eventloop/__init__.py | 0 .../32bit/zmq/green/eventloop/ioloop.py | 0 .../32bit/zmq/green/eventloop/zmqstream.py | 0 .../{cel59 => ucs2}/32bit/zmq/green/poll.py | 0 .../python2/{cel59 => ucs2}/32bit/zmq/libzmq.so.3 | Bin .../{cel59 => ucs2}/32bit/zmq/log/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/log/handlers.py | 0 .../{cel59 => ucs2}/32bit/zmq/ssh/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/ssh/forward.py | 0 .../{cel59 => ucs2}/32bit/zmq/ssh/tunnel.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/attrsettr.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/constants.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/context.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/frame.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/poll.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/socket.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/tracker.py | 0 .../{cel59 => ucs2}/32bit/zmq/sugar/version.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_auth.py | 0 .../32bit/zmq/tests/test_cffi_backend.py | 0 .../32bit/zmq/tests/test_constants.py | 0 .../32bit/zmq/tests/test_context.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_device.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_error.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_etc.py | 0 .../32bit/zmq/tests/test_imports.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_ioloop.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_log.py | 0 .../32bit/zmq/tests/test_message.py | 0 .../32bit/zmq/tests/test_monitor.py | 0 .../32bit/zmq/tests/test_monqueue.py | 0 .../32bit/zmq/tests/test_multipart.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_pair.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_poll.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_pubsub.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_reqrep.py | 0 .../32bit/zmq/tests/test_security.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_socket.py | 0 .../32bit/zmq/tests/test_stopwatch.py | 0 .../32bit/zmq/tests/test_version.py | 0 .../32bit/zmq/tests/test_win32_shim.py | 0 .../{cel59 => ucs2}/32bit/zmq/tests/test_z85.py | 0 .../32bit/zmq/tests/test_zmqstream.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/__init__.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/buffers.pxd | 0 .../{cel59 => ucs2}/32bit/zmq/utils/compiler.json | 0 .../{cel59 => ucs2}/32bit/zmq/utils/config.json | 0 .../32bit/zmq/utils/constant_names.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/garbage.py | 0 .../32bit/zmq/utils/getpid_compat.h | 0 .../{cel59 => ucs2}/32bit/zmq/utils/interop.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/ipcmaxlen.h | 0 .../{cel59 => ucs2}/32bit/zmq/utils/jsonapi.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/monitor.py | 0 .../32bit/zmq/utils/pyversion_compat.h | 0 .../{cel59 => ucs2}/32bit/zmq/utils/sixcerpt.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/strtypes.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/win32.py | 0 .../python2/{cel59 => ucs2}/32bit/zmq/utils/z85.py | 0 .../{cel59 => ucs2}/32bit/zmq/utils/zmq_compat.h | 0 .../32bit/zmq/utils/zmq_constants.h | 0 .../python2/{cel59 => ucs2}/64bit/zmq/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/auth/__init__.py | 0 .../python2/{cel59 => ucs2}/64bit/zmq/auth/base.py | 0 .../{cel59 => ucs2}/64bit/zmq/auth/certs.py | 0 .../{cel59 => ucs2}/64bit/zmq/auth/ioloop.py | 0 .../{cel59 => ucs2}/64bit/zmq/auth/thread.py | 0 .../{cel59 => ucs2}/64bit/zmq/backend/__init__.py | 0 .../64bit/zmq/backend/cffi/__init__.py | 0 .../64bit/zmq/backend/cffi/_cdefs.h | 0 .../64bit/zmq/backend/cffi/_cffi.py | 0 .../64bit/zmq/backend/cffi/_poll.py | 0 .../64bit/zmq/backend/cffi/_verify.c | 0 .../64bit/zmq/backend/cffi/constants.py | 0 .../64bit/zmq/backend/cffi/context.py | 0 .../64bit/zmq/backend/cffi/devices.py | 0 .../64bit/zmq/backend/cffi/error.py | 0 .../64bit/zmq/backend/cffi/message.py | 0 .../64bit/zmq/backend/cffi/socket.py | 0 .../64bit/zmq/backend/cffi/utils.py | 0 .../64bit/zmq/backend/cython/__init__.py | 0 .../64bit/zmq/backend/cython/_device.c | 0 .../64bit/zmq/backend/cython/_device.pyx | 0 .../64bit/zmq/backend/cython/_poll.c | 0 .../64bit/zmq/backend/cython/_poll.pyx | 0 .../64bit/zmq/backend/cython/_version.c | 0 .../64bit/zmq/backend/cython/_version.pyx | 0 .../64bit/zmq/backend/cython/checkrc.pxd | 0 .../64bit/zmq/backend/cython/constant_enums.pxi | 0 .../64bit/zmq/backend/cython/constants.c | 0 .../64bit/zmq/backend/cython/constants.pxi | 0 .../64bit/zmq/backend/cython/constants.pyx | 0 .../64bit/zmq/backend/cython/context.c | 0 .../64bit/zmq/backend/cython/context.pxd | 0 .../64bit/zmq/backend/cython/context.pyx | 0 .../64bit/zmq/backend/cython/error.c | 0 .../64bit/zmq/backend/cython/error.pyx | 0 .../64bit/zmq/backend/cython/libzmq.pxd | 0 .../64bit/zmq/backend/cython/message.c | 0 .../64bit/zmq/backend/cython/message.pxd | 0 .../64bit/zmq/backend/cython/message.pyx | 0 .../64bit/zmq/backend/cython/rebuffer.pyx | 0 .../64bit/zmq/backend/cython/socket.c | 0 .../64bit/zmq/backend/cython/socket.pxd | 0 .../64bit/zmq/backend/cython/socket.pyx | 0 .../64bit/zmq/backend/cython/utils.c | 0 .../64bit/zmq/backend/cython/utils.pxd | 0 .../64bit/zmq/backend/cython/utils.pyx | 0 .../{cel59 => ucs2}/64bit/zmq/backend/select.py | 0 .../{cel59 => ucs2}/64bit/zmq/devices/__init__.py | 0 .../64bit/zmq/devices/basedevice.py | 0 .../64bit/zmq/devices/monitoredqueue.c | 0 .../64bit/zmq/devices/monitoredqueue.pxd | 0 .../64bit/zmq/devices/monitoredqueue.py | 0 .../64bit/zmq/devices/monitoredqueue.pyx | 0 .../64bit/zmq/devices/monitoredqueuedevice.py | 0 .../64bit/zmq/devices/proxydevice.py | 0 .../python2/{cel59 => ucs2}/64bit/zmq/error.py | 0 .../64bit/zmq/eventloop/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/eventloop/ioloop.py | 0 .../64bit/zmq/eventloop/minitornado/__init__.py | 0 .../64bit/zmq/eventloop/minitornado/concurrent.py | 0 .../64bit/zmq/eventloop/minitornado/ioloop.py | 0 .../64bit/zmq/eventloop/minitornado/log.py | 0 .../zmq/eventloop/minitornado/platform/__init__.py | 0 .../zmq/eventloop/minitornado/platform/auto.py | 0 .../zmq/eventloop/minitornado/platform/common.py | 0 .../eventloop/minitornado/platform/interface.py | 0 .../zmq/eventloop/minitornado/platform/posix.py | 0 .../zmq/eventloop/minitornado/platform/windows.py | 0 .../zmq/eventloop/minitornado/stack_context.py | 0 .../64bit/zmq/eventloop/minitornado/util.py | 0 .../64bit/zmq/eventloop/zmqstream.py | 0 .../{cel59 => ucs2}/64bit/zmq/green/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/green/core.py | 0 .../{cel59 => ucs2}/64bit/zmq/green/device.py | 0 .../64bit/zmq/green/eventloop/__init__.py | 0 .../64bit/zmq/green/eventloop/ioloop.py | 0 .../64bit/zmq/green/eventloop/zmqstream.py | 0 .../{cel59 => ucs2}/64bit/zmq/green/poll.py | 0 .../python2/{cel59 => ucs2}/64bit/zmq/libzmq.so.3 | Bin .../{cel59 => ucs2}/64bit/zmq/log/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/log/handlers.py | 0 .../{cel59 => ucs2}/64bit/zmq/ssh/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/ssh/forward.py | 0 .../{cel59 => ucs2}/64bit/zmq/ssh/tunnel.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/attrsettr.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/constants.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/context.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/frame.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/poll.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/socket.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/tracker.py | 0 .../{cel59 => ucs2}/64bit/zmq/sugar/version.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_auth.py | 0 .../64bit/zmq/tests/test_cffi_backend.py | 0 .../64bit/zmq/tests/test_constants.py | 0 .../64bit/zmq/tests/test_context.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_device.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_error.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_etc.py | 0 .../64bit/zmq/tests/test_imports.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_ioloop.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_log.py | 0 .../64bit/zmq/tests/test_message.py | 0 .../64bit/zmq/tests/test_monitor.py | 0 .../64bit/zmq/tests/test_monqueue.py | 0 .../64bit/zmq/tests/test_multipart.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_pair.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_poll.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_pubsub.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_reqrep.py | 0 .../64bit/zmq/tests/test_security.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_socket.py | 0 .../64bit/zmq/tests/test_stopwatch.py | 0 .../64bit/zmq/tests/test_version.py | 0 .../64bit/zmq/tests/test_win32_shim.py | 0 .../{cel59 => ucs2}/64bit/zmq/tests/test_z85.py | 0 .../64bit/zmq/tests/test_zmqstream.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/__init__.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/buffers.pxd | 0 .../{cel59 => ucs2}/64bit/zmq/utils/compiler.json | 0 .../{cel59 => ucs2}/64bit/zmq/utils/config.json | 0 .../64bit/zmq/utils/constant_names.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/garbage.py | 0 .../64bit/zmq/utils/getpid_compat.h | 0 .../{cel59 => ucs2}/64bit/zmq/utils/interop.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/ipcmaxlen.h | 0 .../{cel59 => ucs2}/64bit/zmq/utils/jsonapi.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/monitor.py | 0 .../64bit/zmq/utils/pyversion_compat.h | 0 .../{cel59 => ucs2}/64bit/zmq/utils/sixcerpt.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/strtypes.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/win32.py | 0 .../python2/{cel59 => ucs2}/64bit/zmq/utils/z85.py | 0 .../{cel59 => ucs2}/64bit/zmq/utils/zmq_compat.h | 0 .../64bit/zmq/utils/zmq_constants.h | 0 .../{fedora18 => ucs4}/64bit/zmq/__init__.py | 0 .../{fedora18 => ucs4}/64bit/zmq/auth/__init__.py | 0 .../{fedora18 => ucs4}/64bit/zmq/auth/base.py | 0 .../{fedora18 => ucs4}/64bit/zmq/auth/certs.py | 0 .../{fedora18 => ucs4}/64bit/zmq/auth/ioloop.py | 0 .../{fedora18 => ucs4}/64bit/zmq/auth/thread.py | 0 .../64bit/zmq/backend/__init__.py | 0 .../64bit/zmq/backend/cffi/__init__.py | 0 .../64bit/zmq/backend/cffi/_cdefs.h | 0 .../64bit/zmq/backend/cffi/_cffi.py | 0 .../64bit/zmq/backend/cffi/_poll.py | 0 .../64bit/zmq/backend/cffi/_verify.c | 0 .../64bit/zmq/backend/cffi/constants.py | 0 .../64bit/zmq/backend/cffi/context.py | 0 .../64bit/zmq/backend/cffi/devices.py | 0 .../64bit/zmq/backend/cffi/error.py | 0 .../64bit/zmq/backend/cffi/message.py | 0 .../64bit/zmq/backend/cffi/socket.py | 0 .../64bit/zmq/backend/cffi/utils.py | 0 .../64bit/zmq/backend/cython/__init__.py | 0 .../64bit/zmq/backend/cython/_device.py | 0 .../64bit/zmq/backend/cython/_poll.py | 0 .../64bit/zmq/backend/cython/_version.py | 0 .../64bit/zmq/backend/cython/checkrc.pxd | 0 .../64bit/zmq/backend/cython/constants.py | 0 .../64bit/zmq/backend/cython/context.pxd | 0 .../64bit/zmq/backend/cython/context.py | 0 .../64bit/zmq/backend/cython/error.py | 0 .../64bit/zmq/backend/cython/libzmq.pxd | 0 .../64bit/zmq/backend/cython/message.pxd | 0 .../64bit/zmq/backend/cython/message.py | 0 .../64bit/zmq/backend/cython/socket.pxd | 0 .../64bit/zmq/backend/cython/socket.py | 0 .../64bit/zmq/backend/cython/utils.pxd | 0 .../64bit/zmq/backend/cython/utils.py | 0 .../{fedora18 => ucs4}/64bit/zmq/backend/select.py | 0 .../64bit/zmq/devices/__init__.py | 0 .../64bit/zmq/devices/basedevice.py | 0 .../64bit/zmq/devices/monitoredqueue.pxd | 0 .../64bit/zmq/devices/monitoredqueue.py | 0 .../64bit/zmq/devices/monitoredqueuedevice.py | 0 .../64bit/zmq/devices/proxydevice.py | 0 .../python2/{fedora18 => ucs4}/64bit/zmq/error.py | 0 .../64bit/zmq/eventloop/__init__.py | 0 .../64bit/zmq/eventloop/ioloop.py | 0 .../64bit/zmq/eventloop/minitornado/__init__.py | 0 .../64bit/zmq/eventloop/minitornado/concurrent.py | 0 .../64bit/zmq/eventloop/minitornado/ioloop.py | 0 .../64bit/zmq/eventloop/minitornado/log.py | 0 .../zmq/eventloop/minitornado/platform/__init__.py | 0 .../zmq/eventloop/minitornado/platform/auto.py | 0 .../zmq/eventloop/minitornado/platform/common.py | 0 .../eventloop/minitornado/platform/interface.py | 0 .../zmq/eventloop/minitornado/platform/posix.py | 0 .../zmq/eventloop/minitornado/platform/windows.py | 0 .../zmq/eventloop/minitornado/stack_context.py | 0 .../64bit/zmq/eventloop/minitornado/util.py | 0 .../64bit/zmq/eventloop/zmqstream.py | 0 .../{fedora18 => ucs4}/64bit/zmq/green/__init__.py | 0 .../{fedora18 => ucs4}/64bit/zmq/green/core.py | 0 .../{fedora18 => ucs4}/64bit/zmq/green/device.py | 0 .../64bit/zmq/green/eventloop/__init__.py | 0 .../64bit/zmq/green/eventloop/ioloop.py | 0 .../64bit/zmq/green/eventloop/zmqstream.py | 0 .../{fedora18 => ucs4}/64bit/zmq/green/poll.py | 0 .../cel59 => python2/ucs4}/64bit/zmq/libzmq.so.3 | Bin .../{fedora18 => ucs4}/64bit/zmq/log/__init__.py | 0 .../{fedora18 => ucs4}/64bit/zmq/log/handlers.py | 0 .../{fedora18 => ucs4}/64bit/zmq/ssh/__init__.py | 0 .../{fedora18 => ucs4}/64bit/zmq/ssh/forward.py | 0 .../{fedora18 => ucs4}/64bit/zmq/ssh/tunnel.py | 0 .../{fedora18 => ucs4}/64bit/zmq/sugar/__init__.py | 0 .../64bit/zmq/sugar/attrsettr.py | 0 .../64bit/zmq/sugar/constants.py | 0 .../{fedora18 => ucs4}/64bit/zmq/sugar/context.py | 0 .../{fedora18 => ucs4}/64bit/zmq/sugar/frame.py | 0 .../{fedora18 => ucs4}/64bit/zmq/sugar/poll.py | 0 .../{fedora18 => ucs4}/64bit/zmq/sugar/socket.py | 0 .../{fedora18 => ucs4}/64bit/zmq/sugar/tracker.py | 0 .../{fedora18 => ucs4}/64bit/zmq/sugar/version.py | 0 .../{fedora18 => ucs4}/64bit/zmq/tests/__init__.py | 0 .../64bit/zmq/tests/test_auth.py | 0 .../64bit/zmq/tests/test_cffi_backend.py | 0 .../64bit/zmq/tests/test_constants.py | 0 .../64bit/zmq/tests/test_context.py | 0 .../64bit/zmq/tests/test_device.py | 0 .../64bit/zmq/tests/test_error.py | 0 .../{fedora18 => ucs4}/64bit/zmq/tests/test_etc.py | 0 .../64bit/zmq/tests/test_imports.py | 0 .../64bit/zmq/tests/test_ioloop.py | 0 .../{fedora18 => ucs4}/64bit/zmq/tests/test_log.py | 0 .../64bit/zmq/tests/test_message.py | 0 .../64bit/zmq/tests/test_monitor.py | 0 .../64bit/zmq/tests/test_monqueue.py | 0 .../64bit/zmq/tests/test_multipart.py | 0 .../64bit/zmq/tests/test_pair.py | 0 .../64bit/zmq/tests/test_poll.py | 0 .../64bit/zmq/tests/test_pubsub.py | 0 .../64bit/zmq/tests/test_reqrep.py | 0 .../64bit/zmq/tests/test_security.py | 0 .../64bit/zmq/tests/test_socket.py | 0 .../64bit/zmq/tests/test_stopwatch.py | 0 .../64bit/zmq/tests/test_version.py | 0 .../64bit/zmq/tests/test_win32_shim.py | 0 .../{fedora18 => ucs4}/64bit/zmq/tests/test_z85.py | 0 .../64bit/zmq/tests/test_zmqstream.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/__init__.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/buffers.pxd | 0 .../64bit/zmq/utils/compiler.json | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/config.json | 0 .../64bit/zmq/utils/constant_names.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/garbage.py | 0 .../64bit/zmq/utils/getpid_compat.h | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/interop.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/ipcmaxlen.h | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/jsonapi.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/monitor.py | 0 .../64bit/zmq/utils/pyversion_compat.h | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/sixcerpt.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/strtypes.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/win32.py | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/z85.py | 0 .../64bit/zmq/utils/zmq_compat.h | 0 .../64bit/zmq/utils/zmq_constants.h | 0 .../zmq/backend/cython/_device.cpython-34m.so | Bin 24068 -> 0 bytes .../32bit/zmq/backend/cython/_poll.cpython-34m.so | Bin 32624 -> 0 bytes .../zmq/backend/cython/_version.cpython-34m.so | Bin 9340 -> 0 bytes .../zmq/backend/cython/constants.cpython-34m.so | Bin 40588 -> 0 bytes .../zmq/backend/cython/context.cpython-34m.so | Bin 33628 -> 0 bytes .../32bit/zmq/backend/cython/error.cpython-34m.so | Bin 12280 -> 0 bytes .../zmq/backend/cython/message.cpython-34m.so | Bin 51204 -> 0 bytes .../32bit/zmq/backend/cython/socket.cpython-34m.so | Bin 90224 -> 0 bytes .../32bit/zmq/backend/cython/utils.cpython-34m.so | Bin 24532 -> 0 bytes .../zmq/devices/monitoredqueue.cpython-34m.so | Bin 33368 -> 0 bytes .../python3/cel59/32bit/zmq/libzmq.so.3 | Bin 414996 -> 0 bytes .../python3/cel59/32bit/zmq/utils/compiler.json | 19 - .../python3/cel59/32bit/zmq/utils/config.json | 13 - .../python3/cel59/64bit/zmq/__init__.py | 64 -- .../python3/cel59/64bit/zmq/auth/__init__.py | 10 - .../python3/cel59/64bit/zmq/auth/base.py | 272 ------- .../python3/cel59/64bit/zmq/auth/certs.py | 119 --- .../python3/cel59/64bit/zmq/auth/ioloop.py | 34 - .../python3/cel59/64bit/zmq/auth/thread.py | 184 ----- .../python3/cel59/64bit/zmq/backend/__init__.py | 45 -- .../cel59/64bit/zmq/backend/cffi/__init__.py | 22 - .../python3/cel59/64bit/zmq/backend/cffi/_cdefs.h | 68 -- .../python3/cel59/64bit/zmq/backend/cffi/_cffi.py | 127 ---- .../python3/cel59/64bit/zmq/backend/cffi/_poll.py | 56 -- .../python3/cel59/64bit/zmq/backend/cffi/_verify.c | 12 - .../cel59/64bit/zmq/backend/cffi/constants.py | 15 - .../cel59/64bit/zmq/backend/cffi/context.py | 100 --- .../cel59/64bit/zmq/backend/cffi/devices.py | 24 - .../python3/cel59/64bit/zmq/backend/cffi/error.py | 13 - .../cel59/64bit/zmq/backend/cffi/message.py | 69 -- .../python3/cel59/64bit/zmq/backend/cffi/socket.py | 244 ------ .../python3/cel59/64bit/zmq/backend/cffi/utils.py | 62 -- .../zmq/backend/cython/_device.cpython-34m.so | Bin 29976 -> 0 bytes .../64bit/zmq/backend/cython/_poll.cpython-34m.so | Bin 39600 -> 0 bytes .../zmq/backend/cython/_version.cpython-34m.so | Bin 12520 -> 0 bytes .../zmq/backend/cython/constants.cpython-34m.so | Bin 49064 -> 0 bytes .../zmq/backend/cython/context.cpython-34m.so | Bin 41960 -> 0 bytes .../64bit/zmq/backend/cython/error.cpython-34m.so | Bin 16448 -> 0 bytes .../zmq/backend/cython/message.cpython-34m.so | Bin 61688 -> 0 bytes .../64bit/zmq/backend/cython/socket.cpython-34m.so | Bin 102512 -> 0 bytes .../64bit/zmq/backend/cython/utils.cpython-34m.so | Bin 29336 -> 0 bytes .../python3/cel59/64bit/zmq/backend/select.py | 39 - .../python3/cel59/64bit/zmq/devices/__init__.py | 16 - .../python3/cel59/64bit/zmq/devices/basedevice.py | 229 ------ .../zmq/devices/monitoredqueue.cpython-34m.so | Bin 36672 -> 0 bytes .../cel59/64bit/zmq/devices/monitoredqueue.pxd | 177 ----- .../cel59/64bit/zmq/devices/monitoredqueue.py | 37 - .../64bit/zmq/devices/monitoredqueuedevice.py | 66 -- .../python3/cel59/64bit/zmq/devices/proxydevice.py | 90 --- .../pyzmq-14.5.0/python3/cel59/64bit/zmq/error.py | 164 ---- .../python3/cel59/64bit/zmq/eventloop/__init__.py | 5 - .../python3/cel59/64bit/zmq/eventloop/ioloop.py | 193 ----- .../64bit/zmq/eventloop/minitornado/__init__.py | 0 .../64bit/zmq/eventloop/minitornado/concurrent.py | 11 - .../64bit/zmq/eventloop/minitornado/ioloop.py | 829 --------------------- .../cel59/64bit/zmq/eventloop/minitornado/log.py | 6 - .../zmq/eventloop/minitornado/platform/__init__.py | 0 .../zmq/eventloop/minitornado/platform/auto.py | 45 -- .../zmq/eventloop/minitornado/platform/common.py | 91 --- .../eventloop/minitornado/platform/interface.py | 63 -- .../zmq/eventloop/minitornado/platform/posix.py | 70 -- .../zmq/eventloop/minitornado/platform/windows.py | 20 - .../zmq/eventloop/minitornado/stack_context.py | 376 ---------- .../cel59/64bit/zmq/eventloop/minitornado/util.py | 184 ----- .../python3/cel59/64bit/zmq/eventloop/zmqstream.py | 529 ------------- .../python3/cel59/64bit/zmq/green/__init__.py | 40 - .../python3/cel59/64bit/zmq/green/core.py | 287 ------- .../python3/cel59/64bit/zmq/green/device.py | 32 - .../cel59/64bit/zmq/green/eventloop/__init__.py | 3 - .../cel59/64bit/zmq/green/eventloop/ioloop.py | 33 - .../cel59/64bit/zmq/green/eventloop/zmqstream.py | 11 - .../python3/cel59/64bit/zmq/green/poll.py | 95 --- .../python3/cel59/64bit/zmq/log/__init__.py | 0 .../python3/cel59/64bit/zmq/log/handlers.py | 146 ---- .../python3/cel59/64bit/zmq/ssh/__init__.py | 1 - .../python3/cel59/64bit/zmq/ssh/forward.py | 91 --- .../python3/cel59/64bit/zmq/ssh/tunnel.py | 376 ---------- .../python3/cel59/64bit/zmq/sugar/__init__.py | 27 - .../python3/cel59/64bit/zmq/sugar/attrsettr.py | 52 -- .../python3/cel59/64bit/zmq/sugar/constants.py | 98 --- .../python3/cel59/64bit/zmq/sugar/context.py | 190 ----- .../python3/cel59/64bit/zmq/sugar/frame.py | 19 - .../python3/cel59/64bit/zmq/sugar/poll.py | 161 ---- .../python3/cel59/64bit/zmq/sugar/socket.py | 495 ------------ .../python3/cel59/64bit/zmq/sugar/tracker.py | 120 --- .../python3/cel59/64bit/zmq/sugar/version.py | 48 -- .../python3/cel59/64bit/zmq/tests/__init__.py | 211 ------ .../python3/cel59/64bit/zmq/tests/test_auth.py | 431 ----------- .../cel59/64bit/zmq/tests/test_cffi_backend.py | 310 -------- .../cel59/64bit/zmq/tests/test_constants.py | 104 --- .../python3/cel59/64bit/zmq/tests/test_context.py | 257 ------- .../python3/cel59/64bit/zmq/tests/test_device.py | 146 ---- .../python3/cel59/64bit/zmq/tests/test_error.py | 43 -- .../python3/cel59/64bit/zmq/tests/test_etc.py | 15 - .../python3/cel59/64bit/zmq/tests/test_imports.py | 62 -- .../python3/cel59/64bit/zmq/tests/test_ioloop.py | 113 --- .../python3/cel59/64bit/zmq/tests/test_log.py | 116 --- .../python3/cel59/64bit/zmq/tests/test_message.py | 362 --------- .../python3/cel59/64bit/zmq/tests/test_monitor.py | 71 -- .../python3/cel59/64bit/zmq/tests/test_monqueue.py | 227 ------ .../cel59/64bit/zmq/tests/test_multipart.py | 35 - .../python3/cel59/64bit/zmq/tests/test_pair.py | 53 -- .../python3/cel59/64bit/zmq/tests/test_poll.py | 229 ------ .../python3/cel59/64bit/zmq/tests/test_pubsub.py | 41 - .../python3/cel59/64bit/zmq/tests/test_reqrep.py | 62 -- .../python3/cel59/64bit/zmq/tests/test_security.py | 212 ------ .../python3/cel59/64bit/zmq/tests/test_socket.py | 450 ----------- .../cel59/64bit/zmq/tests/test_stopwatch.py | 42 -- .../python3/cel59/64bit/zmq/tests/test_version.py | 44 -- .../cel59/64bit/zmq/tests/test_win32_shim.py | 56 -- .../python3/cel59/64bit/zmq/tests/test_z85.py | 63 -- .../cel59/64bit/zmq/tests/test_zmqstream.py | 34 - .../python3/cel59/64bit/zmq/utils/__init__.py | 0 .../python3/cel59/64bit/zmq/utils/buffers.pxd | 313 -------- .../python3/cel59/64bit/zmq/utils/compiler.json | 19 - .../python3/cel59/64bit/zmq/utils/config.json | 13 - .../cel59/64bit/zmq/utils/constant_names.py | 365 --------- .../python3/cel59/64bit/zmq/utils/garbage.py | 180 ----- .../python3/cel59/64bit/zmq/utils/getpid_compat.h | 6 - .../python3/cel59/64bit/zmq/utils/interop.py | 33 - .../python3/cel59/64bit/zmq/utils/ipcmaxlen.h | 21 - .../python3/cel59/64bit/zmq/utils/jsonapi.py | 59 -- .../python3/cel59/64bit/zmq/utils/monitor.py | 68 -- .../cel59/64bit/zmq/utils/pyversion_compat.h | 25 - .../python3/cel59/64bit/zmq/utils/sixcerpt.py | 52 -- .../python3/cel59/64bit/zmq/utils/strtypes.py | 45 -- .../python3/cel59/64bit/zmq/utils/win32.py | 132 ---- .../python3/cel59/64bit/zmq/utils/z85.py | 56 -- .../python3/cel59/64bit/zmq/utils/zmq_compat.h | 80 -- .../python3/cel59/64bit/zmq/utils/zmq_constants.h | 622 ---------------- .../python3/fedora18/64bit/zmq/__init__.py | 64 -- .../python3/fedora18/64bit/zmq/auth/__init__.py | 10 - .../python3/fedora18/64bit/zmq/auth/base.py | 272 ------- .../python3/fedora18/64bit/zmq/auth/certs.py | 119 --- .../python3/fedora18/64bit/zmq/auth/ioloop.py | 34 - .../python3/fedora18/64bit/zmq/auth/thread.py | 184 ----- .../python3/fedora18/64bit/zmq/backend/__init__.py | 45 -- .../fedora18/64bit/zmq/backend/cffi/__init__.py | 22 - .../fedora18/64bit/zmq/backend/cffi/_cdefs.h | 68 -- .../fedora18/64bit/zmq/backend/cffi/_cffi.py | 127 ---- .../fedora18/64bit/zmq/backend/cffi/_poll.py | 56 -- .../fedora18/64bit/zmq/backend/cffi/_verify.c | 12 - .../fedora18/64bit/zmq/backend/cffi/constants.py | 15 - .../fedora18/64bit/zmq/backend/cffi/context.py | 100 --- .../fedora18/64bit/zmq/backend/cffi/devices.py | 24 - .../fedora18/64bit/zmq/backend/cffi/error.py | 13 - .../fedora18/64bit/zmq/backend/cffi/message.py | 69 -- .../fedora18/64bit/zmq/backend/cffi/socket.py | 244 ------ .../fedora18/64bit/zmq/backend/cffi/utils.py | 62 -- .../fedora18/64bit/zmq/backend/cython/__init__.py | 23 - .../zmq/backend/cython/_device.cpython-34m.so | Bin 29296 -> 0 bytes .../cython/_device.cpython-35m-x86_64-linux-gnu.so | Bin 33504 -> 0 bytes .../64bit/zmq/backend/cython/_poll.cpython-34m.so | Bin 42288 -> 0 bytes .../cython/_poll.cpython-35m-x86_64-linux-gnu.so | Bin 46560 -> 0 bytes .../zmq/backend/cython/_version.cpython-34m.so | Bin 15472 -> 0 bytes .../_version.cpython-35m-x86_64-linux-gnu.so | Bin 15520 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/checkrc.pxd | 23 - .../zmq/backend/cython/constants.cpython-34m.so | Bin 51736 -> 0 bytes .../constants.cpython-35m-x86_64-linux-gnu.so | Bin 52136 -> 0 bytes .../zmq/backend/cython/context.cpython-34m.so | Bin 44016 -> 0 bytes .../cython/context.cpython-35m-x86_64-linux-gnu.so | Bin 48224 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/context.pxd | 41 - .../64bit/zmq/backend/cython/error.cpython-34m.so | Bin 19952 -> 0 bytes .../cython/error.cpython-35m-x86_64-linux-gnu.so | Bin 20032 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/libzmq.pxd | 110 --- .../zmq/backend/cython/message.cpython-34m.so | Bin 62112 -> 0 bytes .../cython/message.cpython-35m-x86_64-linux-gnu.so | Bin 66320 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/message.pxd | 63 -- .../64bit/zmq/backend/cython/socket.cpython-34m.so | Bin 105904 -> 0 bytes .../cython/socket.cpython-35m-x86_64-linux-gnu.so | Bin 97888 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/socket.pxd | 47 -- .../64bit/zmq/backend/cython/utils.cpython-34m.so | Bin 30064 -> 0 bytes .../cython/utils.cpython-35m-x86_64-linux-gnu.so | Bin 30240 -> 0 bytes .../fedora18/64bit/zmq/backend/cython/utils.pxd | 29 - .../python3/fedora18/64bit/zmq/backend/select.py | 39 - .../python3/fedora18/64bit/zmq/devices/__init__.py | 16 - .../fedora18/64bit/zmq/devices/basedevice.py | 229 ------ .../zmq/devices/monitoredqueue.cpython-34m.so | Bin 39216 -> 0 bytes .../fedora18/64bit/zmq/devices/monitoredqueue.pxd | 177 ----- .../fedora18/64bit/zmq/devices/monitoredqueue.py | 37 - .../64bit/zmq/devices/monitoredqueuedevice.py | 66 -- .../fedora18/64bit/zmq/devices/proxydevice.py | 90 --- .../python3/fedora18/64bit/zmq/error.py | 164 ---- .../fedora18/64bit/zmq/eventloop/__init__.py | 5 - .../python3/fedora18/64bit/zmq/eventloop/ioloop.py | 193 ----- .../64bit/zmq/eventloop/minitornado/__init__.py | 0 .../64bit/zmq/eventloop/minitornado/concurrent.py | 11 - .../64bit/zmq/eventloop/minitornado/ioloop.py | 829 --------------------- .../64bit/zmq/eventloop/minitornado/log.py | 6 - .../zmq/eventloop/minitornado/platform/__init__.py | 0 .../zmq/eventloop/minitornado/platform/auto.py | 45 -- .../zmq/eventloop/minitornado/platform/common.py | 91 --- .../eventloop/minitornado/platform/interface.py | 63 -- .../zmq/eventloop/minitornado/platform/posix.py | 70 -- .../zmq/eventloop/minitornado/platform/windows.py | 20 - .../zmq/eventloop/minitornado/stack_context.py | 376 ---------- .../64bit/zmq/eventloop/minitornado/util.py | 184 ----- .../fedora18/64bit/zmq/eventloop/zmqstream.py | 529 ------------- .../python3/fedora18/64bit/zmq/green/__init__.py | 40 - .../python3/fedora18/64bit/zmq/green/core.py | 287 ------- .../python3/fedora18/64bit/zmq/green/device.py | 32 - .../fedora18/64bit/zmq/green/eventloop/__init__.py | 3 - .../fedora18/64bit/zmq/green/eventloop/ioloop.py | 33 - .../64bit/zmq/green/eventloop/zmqstream.py | 11 - .../python3/fedora18/64bit/zmq/green/poll.py | 95 --- .../python3/fedora18/64bit/zmq/libzmq.so.3 | Bin 322744 -> 0 bytes .../python3/fedora18/64bit/zmq/log/__init__.py | 0 .../python3/fedora18/64bit/zmq/log/handlers.py | 146 ---- .../python3/fedora18/64bit/zmq/ssh/__init__.py | 1 - .../python3/fedora18/64bit/zmq/ssh/forward.py | 91 --- .../python3/fedora18/64bit/zmq/ssh/tunnel.py | 376 ---------- .../python3/fedora18/64bit/zmq/sugar/__init__.py | 27 - .../python3/fedora18/64bit/zmq/sugar/attrsettr.py | 52 -- .../python3/fedora18/64bit/zmq/sugar/constants.py | 98 --- .../python3/fedora18/64bit/zmq/sugar/context.py | 190 ----- .../python3/fedora18/64bit/zmq/sugar/frame.py | 19 - .../python3/fedora18/64bit/zmq/sugar/poll.py | 161 ---- .../python3/fedora18/64bit/zmq/sugar/socket.py | 495 ------------ .../python3/fedora18/64bit/zmq/sugar/tracker.py | 120 --- .../python3/fedora18/64bit/zmq/sugar/version.py | 48 -- .../python3/fedora18/64bit/zmq/tests/__init__.py | 211 ------ .../python3/fedora18/64bit/zmq/tests/test_auth.py | 431 ----------- .../fedora18/64bit/zmq/tests/test_cffi_backend.py | 310 -------- .../fedora18/64bit/zmq/tests/test_constants.py | 104 --- .../fedora18/64bit/zmq/tests/test_context.py | 257 ------- .../fedora18/64bit/zmq/tests/test_device.py | 146 ---- .../python3/fedora18/64bit/zmq/tests/test_error.py | 43 -- .../python3/fedora18/64bit/zmq/tests/test_etc.py | 15 - .../fedora18/64bit/zmq/tests/test_imports.py | 62 -- .../fedora18/64bit/zmq/tests/test_ioloop.py | 113 --- .../python3/fedora18/64bit/zmq/tests/test_log.py | 116 --- .../fedora18/64bit/zmq/tests/test_message.py | 362 --------- .../fedora18/64bit/zmq/tests/test_monitor.py | 71 -- .../fedora18/64bit/zmq/tests/test_monqueue.py | 227 ------ .../fedora18/64bit/zmq/tests/test_multipart.py | 35 - .../python3/fedora18/64bit/zmq/tests/test_pair.py | 53 -- .../python3/fedora18/64bit/zmq/tests/test_poll.py | 229 ------ .../fedora18/64bit/zmq/tests/test_pubsub.py | 41 - .../fedora18/64bit/zmq/tests/test_reqrep.py | 62 -- .../fedora18/64bit/zmq/tests/test_security.py | 212 ------ .../fedora18/64bit/zmq/tests/test_socket.py | 450 ----------- .../fedora18/64bit/zmq/tests/test_stopwatch.py | 42 -- .../fedora18/64bit/zmq/tests/test_version.py | 44 -- .../fedora18/64bit/zmq/tests/test_win32_shim.py | 56 -- .../python3/fedora18/64bit/zmq/tests/test_z85.py | 63 -- .../fedora18/64bit/zmq/tests/test_zmqstream.py | 34 - .../python3/fedora18/64bit/zmq/utils/__init__.py | 0 .../python3/fedora18/64bit/zmq/utils/buffers.pxd | 313 -------- .../fedora18/64bit/zmq/utils/constant_names.py | 365 --------- .../python3/fedora18/64bit/zmq/utils/garbage.py | 180 ----- .../fedora18/64bit/zmq/utils/getpid_compat.h | 6 - .../python3/fedora18/64bit/zmq/utils/interop.py | 33 - .../python3/fedora18/64bit/zmq/utils/ipcmaxlen.h | 21 - .../python3/fedora18/64bit/zmq/utils/jsonapi.py | 59 -- .../python3/fedora18/64bit/zmq/utils/monitor.py | 68 -- .../fedora18/64bit/zmq/utils/pyversion_compat.h | 25 - .../python3/fedora18/64bit/zmq/utils/sixcerpt.py | 52 -- .../python3/fedora18/64bit/zmq/utils/strtypes.py | 45 -- .../python3/fedora18/64bit/zmq/utils/win32.py | 132 ---- .../python3/fedora18/64bit/zmq/utils/z85.py | 56 -- .../python3/fedora18/64bit/zmq/utils/zmq_compat.h | 80 -- .../fedora18/64bit/zmq/utils/zmq_constants.h | 622 ---------------- .../{cel59/32bit => ucs4/64bit}/zmq/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/auth/__init__.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/auth/base.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/auth/certs.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/auth/ioloop.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/auth/thread.py | 0 .../32bit => ucs4/64bit}/zmq/backend/__init__.py | 0 .../64bit}/zmq/backend/cffi/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/backend/cffi/_cdefs.h | 0 .../32bit => ucs4/64bit}/zmq/backend/cffi/_cffi.py | 0 .../32bit => ucs4/64bit}/zmq/backend/cffi/_poll.py | 0 .../64bit}/zmq/backend/cffi/_verify.c | 0 .../64bit}/zmq/backend/cffi/constants.py | 0 .../64bit}/zmq/backend/cffi/context.py | 0 .../64bit}/zmq/backend/cffi/devices.py | 0 .../32bit => ucs4/64bit}/zmq/backend/cffi/error.py | 0 .../64bit}/zmq/backend/cffi/message.py | 0 .../64bit}/zmq/backend/cffi/socket.py | 0 .../32bit => ucs4/64bit}/zmq/backend/cffi/utils.py | 0 .../64bit}/zmq/backend/cython/__init__.py | 0 .../64bit}/zmq/backend/cython/checkrc.pxd | 0 .../64bit}/zmq/backend/cython/context.pxd | 0 .../64bit}/zmq/backend/cython/libzmq.pxd | 0 .../64bit}/zmq/backend/cython/message.pxd | 0 .../64bit}/zmq/backend/cython/socket.pxd | 0 .../64bit}/zmq/backend/cython/utils.pxd | 0 .../64bit/zmq/backend/cython_orig}/__init__.py | 0 .../64bit/zmq/backend/cython_orig}/checkrc.pxd | 0 .../64bit/zmq/backend/cython_orig}/context.pxd | 0 .../64bit/zmq/backend/cython_orig}/libzmq.pxd | 0 .../64bit/zmq/backend/cython_orig}/message.pxd | 0 .../64bit/zmq/backend/cython_orig}/socket.pxd | 0 .../64bit/zmq/backend/cython_orig}/utils.pxd | 0 .../32bit => ucs4/64bit}/zmq/backend/select.py | 0 .../32bit => ucs4/64bit}/zmq/devices/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/devices/basedevice.py | 0 .../64bit}/zmq/devices/monitoredqueue.pxd | 0 .../64bit}/zmq/devices/monitoredqueue.py | 0 .../64bit}/zmq/devices/monitoredqueuedevice.py | 0 .../64bit}/zmq/devices/proxydevice.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/error.py | 0 .../32bit => ucs4/64bit}/zmq/eventloop/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/eventloop/ioloop.py | 0 .../64bit}/zmq/eventloop/minitornado/__init__.py | 0 .../64bit}/zmq/eventloop/minitornado/concurrent.py | 0 .../64bit}/zmq/eventloop/minitornado/ioloop.py | 0 .../64bit}/zmq/eventloop/minitornado/log.py | 0 .../zmq/eventloop/minitornado/platform/__init__.py | 0 .../zmq/eventloop/minitornado/platform/auto.py | 0 .../zmq/eventloop/minitornado/platform/common.py | 0 .../eventloop/minitornado/platform/interface.py | 0 .../zmq/eventloop/minitornado/platform/posix.py | 0 .../zmq/eventloop/minitornado/platform/windows.py | 0 .../zmq/eventloop/minitornado/stack_context.py | 0 .../64bit}/zmq/eventloop/minitornado/util.py | 0 .../64bit}/zmq/eventloop/zmqstream.py | 0 .../32bit => ucs4/64bit}/zmq/green/__init__.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/green/core.py | 0 .../32bit => ucs4/64bit}/zmq/green/device.py | 0 .../64bit}/zmq/green/eventloop/__init__.py | 0 .../64bit}/zmq/green/eventloop/ioloop.py | 0 .../64bit}/zmq/green/eventloop/zmqstream.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/green/poll.py | 0 .../python3/ucs4/64bit/zmq/libzmq.so.3 | Bin 0 -> 345808 bytes .../32bit => ucs4/64bit}/zmq/log/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/log/handlers.py | 0 .../32bit => ucs4/64bit}/zmq/ssh/__init__.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/ssh/forward.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/ssh/tunnel.py | 0 .../32bit => ucs4/64bit}/zmq/sugar/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/sugar/attrsettr.py | 0 .../32bit => ucs4/64bit}/zmq/sugar/constants.py | 0 .../32bit => ucs4/64bit}/zmq/sugar/context.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/sugar/frame.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/sugar/poll.py | 0 .../32bit => ucs4/64bit}/zmq/sugar/socket.py | 0 .../32bit => ucs4/64bit}/zmq/sugar/tracker.py | 0 .../32bit => ucs4/64bit}/zmq/sugar/version.py | 0 .../32bit => ucs4/64bit}/zmq/tests/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_auth.py | 0 .../64bit}/zmq/tests/test_cffi_backend.py | 0 .../64bit}/zmq/tests/test_constants.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_context.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_device.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_error.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_etc.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_imports.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_ioloop.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_log.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_message.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_monitor.py | 0 .../64bit}/zmq/tests/test_monqueue.py | 0 .../64bit}/zmq/tests/test_multipart.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_pair.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_poll.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_pubsub.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_reqrep.py | 0 .../64bit}/zmq/tests/test_security.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_socket.py | 0 .../64bit}/zmq/tests/test_stopwatch.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_version.py | 0 .../64bit}/zmq/tests/test_win32_shim.py | 0 .../32bit => ucs4/64bit}/zmq/tests/test_z85.py | 0 .../64bit}/zmq/tests/test_zmqstream.py | 0 .../32bit => ucs4/64bit}/zmq/utils/__init__.py | 0 .../32bit => ucs4/64bit}/zmq/utils/buffers.pxd | 0 .../64bit/zmq/utils/compiler.json | 0 .../{fedora18 => ucs4}/64bit/zmq/utils/config.json | 0 .../64bit}/zmq/utils/constant_names.py | 0 .../32bit => ucs4/64bit}/zmq/utils/garbage.py | 0 .../32bit => ucs4/64bit}/zmq/utils/getpid_compat.h | 0 .../32bit => ucs4/64bit}/zmq/utils/interop.py | 0 .../32bit => ucs4/64bit}/zmq/utils/ipcmaxlen.h | 0 .../32bit => ucs4/64bit}/zmq/utils/jsonapi.py | 0 .../32bit => ucs4/64bit}/zmq/utils/monitor.py | 0 .../64bit}/zmq/utils/pyversion_compat.h | 0 .../32bit => ucs4/64bit}/zmq/utils/sixcerpt.py | 0 .../32bit => ucs4/64bit}/zmq/utils/strtypes.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/utils/win32.py | 0 .../{cel59/32bit => ucs4/64bit}/zmq/utils/z85.py | 0 .../32bit => ucs4/64bit}/zmq/utils/zmq_compat.h | 0 .../32bit => ucs4/64bit}/zmq/utils/zmq_constants.h | 0 793 files changed, 6 insertions(+), 26308 deletions(-) delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_device.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_poll.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_version.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/constants.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/context.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/error.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/message.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/socket.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/utils.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/devices/monitoredqueue.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/_device.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/_poll.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/_version.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/constants.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/context.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/error.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/message.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/socket.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/utils.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/devices/monitoredqueue.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/_device.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/_poll.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/_version.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/constants.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/context.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/error.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/message.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/socket.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/utils.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/devices/monitoredqueue.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/libzmq.so.3 rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/auth/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/auth/base.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/auth/certs.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/auth/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/auth/thread.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/_cdefs.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/_cffi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/_verify.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/devices.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cffi/utils.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cython/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cython/checkrc.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cython/context.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cython/libzmq.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cython/message.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cython/socket.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/cython/utils.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/backend/select.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/devices/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/devices/basedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/devices/monitoredqueue.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/devices/monitoredqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/devices/monitoredqueuedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/devices/proxydevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/concurrent.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/platform/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/platform/auto.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/platform/common.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/platform/interface.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/platform/posix.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/platform/windows.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/stack_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/minitornado/util.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/green/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/green/core.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/green/device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/green/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/green/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/green/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/green/poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/libzmq.so.3 (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/log/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/log/handlers.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/ssh/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/ssh/forward.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/ssh/tunnel.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/attrsettr.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/frame.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/tracker.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/sugar/version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_auth.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_cffi_backend.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_etc.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_imports.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_monqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_multipart.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_pair.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_pubsub.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_reqrep.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_security.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_stopwatch.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_win32_shim.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/tests/test_zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/buffers.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/compiler.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/config.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/constant_names.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/garbage.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/getpid_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/interop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/ipcmaxlen.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/jsonapi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/pyversion_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/sixcerpt.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/strtypes.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/win32.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/zmq_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/32bit/zmq/utils/zmq_constants.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/auth/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/auth/base.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/auth/certs.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/auth/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/auth/thread.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/_cdefs.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/_cffi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/_verify.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/devices.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cffi/utils.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/_device.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/_device.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/_poll.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/_poll.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/_version.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/_version.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/checkrc.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/constant_enums.pxi (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/constants.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/constants.pxi (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/constants.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/context.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/context.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/context.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/error.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/error.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/libzmq.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/message.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/message.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/message.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/rebuffer.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/socket.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/socket.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/socket.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/utils.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/utils.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/cython/utils.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/backend/select.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/basedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/monitoredqueue.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/monitoredqueue.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/monitoredqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/monitoredqueue.pyx (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/monitoredqueuedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/devices/proxydevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/concurrent.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/platform/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/platform/auto.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/platform/common.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/platform/interface.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/platform/posix.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/platform/windows.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/stack_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/minitornado/util.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/green/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/green/core.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/green/device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/green/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/green/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/green/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/green/poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/libzmq.so.3 (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/log/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/log/handlers.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/ssh/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/ssh/forward.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/ssh/tunnel.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/attrsettr.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/frame.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/tracker.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/sugar/version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_auth.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_cffi_backend.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_etc.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_imports.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_monqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_multipart.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_pair.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_pubsub.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_reqrep.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_security.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_stopwatch.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_win32_shim.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/tests/test_zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/buffers.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/compiler.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/config.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/constant_names.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/garbage.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/getpid_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/interop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/ipcmaxlen.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/jsonapi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/pyversion_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/sixcerpt.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/strtypes.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/win32.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/zmq_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{cel59 => ucs2}/64bit/zmq/utils/zmq_constants.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/auth/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/auth/base.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/auth/certs.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/auth/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/auth/thread.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/_cdefs.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/_cffi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/_verify.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/devices.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cffi/utils.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/_device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/_version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/checkrc.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/context.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/libzmq.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/message.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/socket.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/utils.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/cython/utils.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/backend/select.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/devices/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/devices/basedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/devices/monitoredqueue.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/devices/monitoredqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/devices/monitoredqueuedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/devices/proxydevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/concurrent.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/platform/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/platform/auto.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/platform/common.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/platform/interface.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/platform/posix.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/platform/windows.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/stack_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/minitornado/util.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/green/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/green/core.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/green/device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/green/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/green/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/green/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/green/poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/{python3/cel59 => python2/ucs4}/64bit/zmq/libzmq.so.3 (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/log/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/log/handlers.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/ssh/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/ssh/forward.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/ssh/tunnel.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/attrsettr.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/frame.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/tracker.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/sugar/version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_auth.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_cffi_backend.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_etc.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_imports.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_monqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_multipart.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_pair.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_pubsub.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_reqrep.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_security.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_stopwatch.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_win32_shim.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/tests/test_zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/buffers.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/compiler.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/config.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/constant_names.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/garbage.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/getpid_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/interop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/ipcmaxlen.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/jsonapi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/pyversion_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/sixcerpt.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/strtypes.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/win32.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/zmq_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python2/{fedora18 => ucs4}/64bit/zmq/utils/zmq_constants.h (100%) delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/_device.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/_poll.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/_version.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/constants.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/context.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/error.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/message.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/socket.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/utils.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueue.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/libzmq.so.3 delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/compiler.json delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/config.json delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/base.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/certs.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/thread.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cdefs.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cffi.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_verify.c delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/constants.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/devices.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/error.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/message.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/socket.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/utils.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_device.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_poll.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_version.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/constants.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/context.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/error.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/message.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/socket.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/utils.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/select.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/basedevice.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueuedevice.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/proxydevice.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/error.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/concurrent.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/log.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/auto.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/common.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/interface.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/posix.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/windows.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/stack_context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/util.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/zmqstream.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/core.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/device.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/zmqstream.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/log/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/log/handlers.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/forward.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/tunnel.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/attrsettr.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/constants.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/frame.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/socket.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/tracker.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/version.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_auth.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_cffi_backend.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_constants.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_device.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_error.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_etc.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_imports.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_log.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_message.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monitor.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monqueue.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_multipart.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pair.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pubsub.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_reqrep.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_security.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_socket.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_stopwatch.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_version.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_z85.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_zmqstream.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/buffers.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/compiler.json delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/config.json delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/constant_names.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/garbage.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/getpid_compat.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/interop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/ipcmaxlen.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/jsonapi.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/monitor.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/pyversion_compat.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/sixcerpt.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/strtypes.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/win32.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/z85.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_compat.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_constants.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/base.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/certs.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/thread.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cdefs.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cffi.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_verify.c delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/constants.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/devices.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/error.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/message.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/socket.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/utils.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_device.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_device.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_poll.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_poll.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_version.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_version.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/checkrc.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/constants.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/constants.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/error.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/error.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/libzmq.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/utils.cpython-34m.so delete mode 100755 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/utils.cpython-35m-x86_64-linux-gnu.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/utils.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/select.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/basedevice.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.cpython-34m.so delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueuedevice.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/proxydevice.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/error.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/concurrent.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/log.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/auto.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/common.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/interface.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/posix.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/windows.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/stack_context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/util.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/zmqstream.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/core.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/device.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/zmqstream.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/libzmq.so.3 delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/log/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/log/handlers.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/forward.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/tunnel.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/attrsettr.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/constants.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/frame.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/socket.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/tracker.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/version.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_auth.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_cffi_backend.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_constants.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_context.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_device.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_error.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_etc.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_imports.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_ioloop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_log.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_message.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monitor.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monqueue.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_multipart.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pair.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_poll.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pubsub.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_reqrep.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_security.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_socket.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_stopwatch.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_version.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_win32_shim.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_z85.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_zmqstream.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/__init__.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/buffers.pxd delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/constant_names.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/garbage.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/getpid_compat.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/interop.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/ipcmaxlen.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/jsonapi.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/monitor.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/pyversion_compat.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/sixcerpt.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/strtypes.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/win32.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/z85.py delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_compat.h delete mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_constants.h rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/auth/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/auth/base.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/auth/certs.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/auth/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/auth/thread.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/_cdefs.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/_cffi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/_verify.c (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/devices.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cffi/utils.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cython/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cython/checkrc.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cython/context.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cython/libzmq.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cython/message.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cython/socket.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/cython/utils.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/64bit/zmq/backend/cython => ucs4/64bit/zmq/backend/cython_orig}/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/64bit/zmq/backend/cython => ucs4/64bit/zmq/backend/cython_orig}/checkrc.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/64bit/zmq/backend/cython => ucs4/64bit/zmq/backend/cython_orig}/context.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/64bit/zmq/backend/cython => ucs4/64bit/zmq/backend/cython_orig}/libzmq.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/64bit/zmq/backend/cython => ucs4/64bit/zmq/backend/cython_orig}/message.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/64bit/zmq/backend/cython => ucs4/64bit/zmq/backend/cython_orig}/socket.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/64bit/zmq/backend/cython => ucs4/64bit/zmq/backend/cython_orig}/utils.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/backend/select.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/devices/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/devices/basedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/devices/monitoredqueue.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/devices/monitoredqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/devices/monitoredqueuedevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/devices/proxydevice.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/concurrent.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/platform/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/platform/auto.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/platform/common.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/platform/interface.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/platform/posix.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/platform/windows.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/stack_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/minitornado/util.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/green/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/green/core.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/green/device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/green/eventloop/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/green/eventloop/ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/green/eventloop/zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/green/poll.py (100%) create mode 100644 scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/libzmq.so.3 rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/log/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/log/handlers.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/ssh/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/ssh/forward.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/ssh/tunnel.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/attrsettr.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/frame.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/tracker.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/sugar/version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_auth.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_cffi_backend.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_constants.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_context.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_device.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_error.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_etc.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_imports.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_ioloop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_log.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_message.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_monqueue.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_multipart.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_pair.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_poll.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_pubsub.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_reqrep.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_security.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_socket.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_stopwatch.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_version.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_win32_shim.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/tests/test_zmqstream.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/__init__.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/buffers.pxd (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{fedora18 => ucs4}/64bit/zmq/utils/compiler.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{fedora18 => ucs4}/64bit/zmq/utils/config.json (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/constant_names.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/garbage.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/getpid_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/interop.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/ipcmaxlen.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/jsonapi.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/monitor.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/pyversion_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/sixcerpt.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/strtypes.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/win32.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/z85.py (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/zmq_compat.h (100%) rename scripts/external_libs/pyzmq-14.5.0/python3/{cel59/32bit => ucs4/64bit}/zmq/utils/zmq_constants.h (100%) diff --git a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py index 306302dc..2c35b024 100644 --- a/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py +++ b/scripts/automation/trex_control_plane/stl/trex_stl_lib/trex_stl_ext.py @@ -18,7 +18,7 @@ if not os.path.exists(TREX_STL_EXT_PATH): # the modules required # py-dep requires python2/python3 directories -# arch-dep requires cel59/fedora and 32bit/64bit directories +# arch-dep requires ucs2/ucs4 and 32bit/64bit directories CLIENT_UTILS_MODULES = [ {'name': 'texttable-0.8.4'}, {'name': 'pyyaml-3.11', 'py-dep': True}, {'name': 'scapy-2.3.1', 'py-dep': True}, @@ -26,14 +26,14 @@ CLIENT_UTILS_MODULES = [ {'name': 'texttable-0.8.4'}, ] -def generate_module_path (module, is_python3, is_64bit, is_cel): +def generate_module_path (module, is_python3, is_64bit, is_ucs2): platform_path = [module['name']] if module.get('py-dep'): platform_path.append('python3' if is_python3 else 'python2') if module.get('arch-dep'): - platform_path.append('cel59' if is_cel else 'fedora18') + platform_path.append('ucs2' if is_ucs2 else 'ucs4') platform_path.append('64bit' if is_64bit else '32bit') return os.path.normcase(os.path.join(TREX_STL_EXT_PATH, *platform_path)) @@ -44,11 +44,11 @@ def import_module_list(modules_list): # platform data is_64bit = platform.architecture()[0] == '64bit' is_python3 = (sys.version_info >= (3, 0)) - is_cel = os.path.exists('/etc/system-profile') - + is_ucs2 = (sys.maxunicode == 65535) + # regular modules for p in modules_list: - full_path = generate_module_path(p, is_python3, is_64bit, is_cel) + full_path = generate_module_path(p, is_python3, is_64bit, is_ucs2) if not os.path.exists(full_path): print("Unable to find required module library: '{0}'".format(p['name'])) diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_device.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_device.so deleted file mode 100644 index 2e9e28b0ceda9c143dcb81513b589cbbba1729a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25440 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 b1HhBAMZE{?N=apQpLWp?K<~JXB-Q)h*C8Aw diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_poll.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_poll.so deleted file mode 100644 index 0eb0651b270bb45c285d90e2ab1c4ce19eb69720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36716 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 z zX;z#wMw=yPj0%@o@t#pKWR_S)#W}O$v{7=#EIDaZyk}ONGDv{`Y&C^>1C z3>X!s%!-$dlGn_VBSysuv*I~}nJ1*<-Lj zq2NRPMbR{&SllKWFu`?i3j>AD>fx7x!U%D$GDAYGh0vi$Wwx8>_Di#dGw`l#by$z& zgGBp%_PyQ(;<-XZwi28xEDS!uCP1`BXp;2}Y@R6jyI2ECD0}MfWGYs~Ucs9Fk}+hBg3$~#TGekQu7 zLsATXAtd@XgXCNbbY&jgz;FqMAy8wfIYuhzFiXPE zl*VDrlKg#I4_o94FyKMCN5~73^q~4dJ^U;=RgBT2DQrIj3XlUcOM{kVp@?N}1XlP(9t;iyZ z!2!8`!k=fp*hGu`f06mOx-dHK_F4C#PG?5m`=%J~Gr{s0l5yC6gb2hsPjS#Ctb_nN`gY*l1)7luK^A}q(@YZ{ zY^-pet8J;-;yzpAb_Yw9pXg6B*T8A}q_^nDxWt_M%75=Ap2u^vZ-l;E?+#7xTn>w7QBkIHE?X8G4Nh{jT*ACIu)c)VBqdpkaFWDK3_+ zE_0V?Py!p(!#}}#EwmFW7F@;H0LBdOo|eMvPcxU6qGK@^PUsLYK=rIOf}PN8%vjS| zt>hKL-{V#|kJ!l{trYF)w7%>7Ro|tx*^ss>%Ftvt@!I^w$E7JaxxGZz#WfVob zI_cFyjX;&(aCxI4KQgR6+}yks98K>kxX7`;>p6Dv%)FWVm00MVlt|3DS&z)){3{O7 z^5m2b!t(6vsQTE~HH*1+Y1Uw`v^!^iHuw`qY%~Aji0#j~+%iL_grLk#LU3cG;H-(5 zX$8Z;*>9qn5Zq_U1^O)AY~xI@dUy%(VC@G-MejIzqlbHn#DAH?c#f_ESZ*%lG)VtQ z@%2Y20A18A>oI#+M(xBO62cslQaBgF+{2u5xPU_z&uc*&^sbeen8S>Z;Jac=Ams=Z z`zG)TO}POH$p2@U2E-6t>=3fRH68qFDW)9|lYKk*=WyuqH=GUzs17|ZqZ{L0vnVYz zCdHVhIP?)be@CS*q+(LFXTvZ^rP<9k=3Opx<2&bGl8 z_3+<7keH4+5Knv{uOJ&_fx()!McP}jw-yM8wH@9;;YM)i6{+sEIQ#opoxbSdZL;H9 z*wzY@e)96r+bNN=MjnbtD;-ofWKu3=;tt*c2H#6J8QZL>eheoMPTP394_Tu{Y_}@11|K$8ixr_F%bp1BHsk*6 z2UKr?9;oeqAv8xFX4vbAVu4tVP$t|QvEB$nD3gTzp8mu_SANXM@#en;93+HRNkV9m z;{E^zl>ZjY2S?$HMGYzhYY1gnG@_sV9B`YU0n{!e6!&PZB;;&?>_4F$yQ8=qo_!2S zVe$GK$>PM}7^Lx$eH$A)1Lt&Pcd(YTC8f;l+rR)8VNN;bj6|yK3m6OKXB;#+iOoyD$*dmC^4RV| z&-L*4plW85JCvG2Hx)(zs;k;Yb7oqW1!^jaPQVP}E01C^}jCmR0 zD9&tX6Vq8P&ul`R_{>Yp1!~uwn+yTR(0H*8fr|V z0eOMhOT(*U^$n=5qf)U{a$S#HN~+^R91ke}EurFZO*u$SDPgq`%r0h56Kuhnv+_Rx zfkoWFK1(^PhM7o%Ab&R-J|v}93-?7BPBt>tbkmS7D^?+50~{TIL>M(irNo500Ax@R zC<}~C8d(T~(u7>SO0JoXTrWY{3Qdm;LZ$4#;g7TKd_tbDI0P#?{9h!&D=?dxT@X_& z^h_pf2b;&}u8`bD!cycd$y$_i=%Bh`#BhIt4y{YU82C1yGfi;<)+J8BxY&tfg`R&0 zj}9g+n`H z|6EXlSj@PHtHhZ83{uU7X;?2|)q40c5-`V&(>%CYbQmzI6)-m(_70odz2G&LCiq-B zjY%1r8H7qf9qvgpS~JXbMKq5?G!Jv#aS+bQHE3~c(31O;xNXC=k zsACe2Qtx8HeEMd^AW9A~c&8&9fi8~ZR@MyyN#f~lp7n2kavJL4C#4D}E~O)zUr(uq zgxPcpv%z?AJR~j$?)#%e094LydC7qa3p4*g5|TrL^r8}11*5B>QI0M^dqDl8}vV@FtL%njEhNgTI4NgIcEKt z6!u!TSR+QK@Zc>SvdM!;xy~S^mI`KCPpKgb_X1F$%0ckAC@B!J{UVJ|>3_T@|K052E}j-*1_B;VZ`SX? zbfBIM)Yc-5LTUXXIZ-?A(RbMNdzipRYWp8fI1O;AAeC%{?ucf!oGGQ2$FE1Qv>(IXf&0L;Qv5=$dd{VIg)DYS8+1A8CXIM|BCFq3WIkR+_-*rDb5J}{011D zc>jyjoQ~7HOvJf;HlzLGg3S6nmZ6Tm%3{nIVK3h?;S=cv@SaR-P-{K%3%th{`WQQa zC1@M^I2BtE);s$oR9Dk~@U;H;o6(TC4DJz^!Hb5b*yb+Ybzme}aL6}!Go#&okV&-X zIsWbH#K84MA4fyq2Ph`sQoPZD8#Jh;n;R*tHE)3J`%Yt57VY^l8-*Ish^JMsrm5)I zT8h11es9Mi4on=}m~%4>NxHc#&DiGMhFXX?FfO)V$Ati|p6@FE;2B;$>*3X3L{5<# zjdr6>XupWCa_s#A^7qR2xS?4A`QdB<)wZLW9^Q>&I0I!M1h8g3_nKJEBdalDF>i;x zoh-m}U=IF(pIZ#X*f^7?t=SxmBh#L*6&w-X|=EhW*O)Zmc61@Uz@W zg?1oa2xXhd{nwfT&OmF>hgp(F_TA0oHi3<|zg1X=aCboDbWxEM?1mAGqez^3v%bKI z{Yc@{`nH35cpqv{?~;A~oGroKP0k>9AVUvtx&o3A*KN+u1D&#nrz&e&U@Ea!Fn2zq zhx;cXGc3yJMlx42UJp-Z(NZ4bMqCj@*Fah9<$eH-^Q6P@RwlJT&_^Z&5a6N(ET{DvR!Pj#4Ac_z!1J5nyrKpD z#cE)#2RSboLxnHskuL!j?Ru0v&EaC|vaW5cH{g8m~h&y zhx_PL$YbC|ER!IW@<5uz?C??=2mlysh5y*t84FsBZ~Rl zxx=t~BwXeOzO6*7ENuYY&6jD+#1HJi1P_hg@-Qd*-EuK#OEU{L%lR5=WY445j*}{0 zLc>h3M@P!;llbM*h=GbecFSmyJLOrNam<&wn86+>WH(qU^4U%Bp)}$>1E-A}HO$Jm zGy4ce4f^r^4&5GctYRW%KPB>6N!TY}>ZN_+P=ocPU(I?C$o6r3ygLLwOi$uHh+$qw zwxI+jN+q*5U=(zZ;`Qw9vcGq%3tt9#yM-Ts;q63ixcK6#`7n6N*$NzSS$DkzYz1E9 z8B2Q+Gw)mamLKqlT=@h02b|gXkJL`t4*Y)LXB4Dm6f^Nx4{Z|Xe)kTih zsi{PNV6ki_n4QX*h_~#(!vz;cJUt{A)TPLsE*4xp%%5eOe!L^3hqJl1&k;*F|5*fh zLOX&&YZBIXM#bWALBVH0$MndpM-&a+G~nR+4D{rgbL z!|JjOvmyiUgJM}WUVQPx!Xx?v28s#?^k@eMx+sko895!H-W1+BWATn(X#5VC)v}WU zuB%mu3{ETDE%>8HnxHY@j?e)t!E;}L$j?B9rFL0XASrIrzh z?7+Ps)V_*?T)_EI%)XL2DMx7NGOO^Q{=hS+1Pogau(Hz21!-nZ2PmOWq%<@_v!)#{ zbwh6+;ET{uOdJg26@cHP2%QL(mYq17S>{eT&go0$7QU%Jz!iZuw}=Q-n}(ff>`9(r zFLa~91M?+*V&6#Y!?OJPZy-y{+J<8*uJ94Qe~^FnKmY?)4B)?^u&;qw#5^%y@(**0 z;@>Tje~aUM6>oYM*cZus+*6U?s1LayWgkcXz`PqBKq4{whurqO1HBO11yA384g`jt zp!=a*x=X|)qK99_F(PaMq|g=$tb3nF%~HJnC(gkBK>w=y5Zld5!+dSli*x2p%vQ_v zdDivGnWzsRhf^5L%GrD3j9L1}SJT+wo8r8g2K*yn!{Jx37?({&^onqmJ{$b<5A(~W z!O7(_Y9?&gurq+#SwDsUie1h@E?#$u!!ums{Q~p~93VrywXb+jT!a4#Y+}Nb@)c76 zFTue$RHF^?!2$H}Udz5&tXXMTUd$=VBe(0ZA?IN@Y!eW#G8;ufUss3<@(EussE<$4HF&gSBoNz`6^p7cqljP6)HRck_>`4!|pR zfu1=eK8lF#AcCA-A32Jg9ij;DJ6-@6Dfo3LEUV+TV*&^g%*Zef8UxO;I9(Aofv$(! zp?Ii75N8fg58nr1`(Dd3yh)0k6PDZxLe2{dgZudoAhbyqQm^dQ$t z9X$v&Hx7#QC&$F;-o6UW#PKjTc+r1TW_ALOqG3DDIG=nUbw^^@fm}ZJhon>7j6d{O zq@)@cya?e;^Bw7#k|`+%u|c)hvC>ky8{sK*F^20OWBu!8efEj^bJFbbs03OzB0~+Y z?bBTCsofJ|U3`!k$Vy0_73-xcQHO)hg;5efJaSN%_WGgp7G5XFi&amza8j)65L4-B==xS$KW_3DlpSsz3O1Ec{f9_*xFv>{YdED5RDcPluZ2 z*o{ITN%uNxCliWv`=EfQC|C;YB$Q!D07?AVgDcu5qOT`_;;;iT{ zP94U(V=!OV9Dh7;ZGJ&DL#d7M1o3o6YU%#s{)Q8w&+03~KcUNr3OMG9UMqv%$V z58vt}p#G9<{6&-_qdZ2!v*QGX4fJFEKv|Iu=|!%l)3a4HgXxXpyT!W&O03n=K?};a zO}B|2u#ppcy{2hqNr6!@4RypK)-(fLSTqA5Wdsz|RimjO_<6k7+jc20i#f@Xmr!cF zXM_}|U8T9$b9@Pn1S*`@zKyv*$2qS>Yjsx3)({O=8K>bfc5A%PgDb>n`jZvwv zyzdf9g;VAScd=aZ15~3!Hg%|ROo6h;;k8_d#*rgfh`7`2W%qh`8ju)g4pb#HwRT}% zHYX?x{S}uYRF&S|1Y*#`JV#WDGumt^z)nDr-7*a+!Q+-0NYM`jSz+RCAxCzI)HI~p zMQR3^%7&0mzDnXPeJ;$|!yHz(_8@_>!3_Y}1}cDsT|qW%%cN>s_7AlsajLD@hsb`_ zAwDJhiGJB9`o^!|pw{2QglF?lUFT!KlmZesm*8y+G886I0%_A7e-#_!@Ne+Wnb~y+ zh87KpAC$qVH?PBZtQU}JjYC~btC0yc;VeqfWph3f#Rc^5*$2bQCyZ2%km+nFA^ zDT9!4s6W&0BPs9vdOm8|KgD8gyc2K9|BiP6zna$UThP*)t?>8r-N$#ZT+0n&{;>l! zsFOgV>bQ+4e~Ect`rjk@crUsqA3p|z;(YueFq>u)AI0xX?(YKuPoso$8~5R z@ap0BaJ)$8>1RZE*lxiaZt4eCJw>3N1_SmBhY=@<=y@-OV{byyNW!iJau)jp9{s83 z3!m4+cM#io348l#5H>{;7QP%SUjqLwBmcfe{^_{$8hK6fI0i&DrzrX%Fk6G$B+uEf z2*At>te0dJ_^x{74X)C=#I>L)t_3j@o0#c9Xagt!rULtE)WLp1@gtOiaXpIixG|99?=(mOZH8B2HL5yhs4-vU2U>!j_~e- zf&qC6WRX()Mvmbf<2TkfKnUp0{Wafqv>%793=_-oT}?v8*z|A#O4(@enAtV*7FM*D zs`Ftl1lEL_xU_a-EJp@-5l;;+hUW7X^41JdKN3g27=s-5vh@VnQZZ3&T$@BoJ5G_9~G=NXSoY!0u$d*2PR_xuRf1uli!o3zo!Jh z68d{;aFWyEK9Ir=$6yCFz-oIFsM*XWi8#K^Le&AUWuncl!nfrOmw5~ODlB|8*v1-j zK|&FU#4(J_zSGIJiDV(V6Se0$+3zAdx-rdcOhXAr+4il$t8o=;Z}~HLsw6Z4e0HP{ zb*KbemB~S!qdj~0hR1!srZTEaR{kz6&FtQdiqs`@G}XQxSoZxEOPBpE;vQhzZZ@z= z*tW-wd#jMRWk=Ph;~0<{B~@u50O#H&*YrxI!o{GCsunJ@L2nJCXe<#~%kVEIWnHm#ppZqF<4LmRQay)c>hy+37zj zTGpj#3#C30OcL$oEQyQuLO_Y4{n?WvMQfj6xy19)Hy_R zoMAQcQ(V{o3@>WrG25SzjT#A+cYsXD4)sQgaIoZ28@(*?Uo*yl z>inZr$&m;tMbUdL5Dt44#QgH`K*I;{>x6`c!iV>xX(Ih!00!$%Xq52gWRLK7IQ@t> zCp(@16*1@Zf~@DGkW@oGkbG2T;?*4VIg+AT2^2l{wxGztk#ImlJWdyJWQ%|-QApT! zTC>4Ac?847)#h);OtA@)CQ}SzsVINtxV{a5r`KDB-rGHRtsdu3_QQB7MYXw_&U=Pv z6D+h=v3?2bQ+oE1KML92H9Xqm6!{Z$Y%Hr8ngW-9Bj0k9drx6O%1jh{#0jRnCeJ@> zZ=(OxswnKl&kgpy&RPAb6Q9PFYsi(Evi~?&rU8p%g*?BMb}5|f1f`>n`~uArXDYjZ z41LF(^6NV=5a((mGKD;h-_KnJsN;3CPLcoB;n=UxMxKk?8$qe{&q7=HPG24*U>(CG zg{x&%MUQ+9b-22UlX&~90?NRN51kCWkOz8%yRut&Yxd`{1diO+)ym-}4dq^P{*Rc3 ztQAlId)A-O$$oD;amwQ(ykI?ajhx`{zdYb;Z3~}4sU9gt4{C`s2JGcnE6rx{c9Dj2 z*GT}yU^DbEe+^7`hb{%&ofNn`g#*EjVoAg*yZ~|w4QU&03*JQ!L@t`r^Lfc8AbQ|ow8&!{dN{8EnQ>-{wG)SlM?o52*Ao7V9uBcct>SBcC5EJL?Lr+r zT#cgWMpxm-*w4W&YK#w(t?6vdb=t!DoG#mLn2y6-wrh534}R164Lx0yXxAwY9Q$B) zD*t`M9*olFpsl)J#>e|>`%>g6?+E*YOITha%JCLGP5nb4N*KsK;#C9rIWST-7sJ0s zcIX+07(10J8pCNM_BfXPI11&tz*7Et@@c42N8hMP_<7ms8IXPyzi-9B361R`hP{w<5Jl0rXwQA9Gv}*$M@LvVu74hOX+FEaP!;gL(FHTRxua5Na zzYqsswA&S6gCPDJ#RjiG+I<>h#TFuiP8?AjVLfK z56E9_?t9pcS%P(<+Nh&Vm&eotc?F|ayv-FG>jisQ*%zDVYG{{7m|FUFfzTC{}-|j ze@L%~|Cx2n0ET&uiF-mi#1HP3 zh&evIjfTG{h<0Df0b*-jhJNJ$NugI%;wC8CGnqB0i`)l6iEj`T>RS$@Yy4*dY*_fR z4*4D3MQG4#;+_^g9zaE746M=A;dHIXGdO+?0R^FZ>JTrEiIW zrRFXQ#Ox`+0L?a+DSv+X0uTzJh6EahdbxQNeFTp3~q(PNKFT ziMWl>URLcX=U=?E#UEkgZHwd{e#tijRS$bb55*%IY~;}%^~53RN;c@pMkVL2H*`o* zVJ%eb2_pkXYeclGDxoGlmno_akLmSr6YH2e_&2njf4d(g5nU^o?s=4dcP+lEp4AaWXM3xG}IA4!3O;_ zHtX9$7mUyoXpf)3ivGp_zA(lAzUZ!HPER{Zp?-OMp%)knfQ|o2C!2jEc+dm?rAih8 zf01(De}cj8&?_fXE9K|XdikSWJ$w#w0d^PFKH9Yv`h$8o1VY;YSY4Q4X~sFAMGtpV z%I#sI`JGrBj8L8^xOW7a=@JcR%V=m8(UdAQ1)}y1!)Uq`nrWgSRiQycP_sg!*~|GL z#M#BVK%to-YCnmEg0#!p)v`8+s%pQga2JW%>cx0fyH3{58m|4As$DEJJK0~e zc%#Wgb-3QNymllVE@65GLhKEnB^e+26Ykhvc-4zp%UQDS(FKtkpEgI z)Ic19Y?t-EsHJaNsW=n4f=(sw2O)>0S@vfENq@*O&O>pQ{}yP?F2Oq!PJB%M=N|sf zG6nB-@kcPC(-8UUbhlY`*XDHh7+0Bici#h~-VdJM{TxLXUWhEN*}G-G{kkz7Ir}sq zJun5TV0Y6%)@b`UBOUMnfEolZlxvJ!OzrV>9L0_UQ&1@{6vQH^mRe+qpL(hHvEsy> zzzTLIMw345789kv7Z!ui8rRMLo2+^4)+7^*V#0} zeK)d+!6wGO%bDi%Y2U-nr8h91nO6_@_Ph5{R3TpQ`VZvtr}x0c*AY~M?) zFjwsFHPrr}IBo0Eue~04%rzeP-Z{}_@gH!$Vt;{}Do1+_yQZ9#29&UC>26prJO-6G z3zd-n7-rcB96TyChQxTSQ?Qyu;`)W_1Eku%XF-SbEu~vohD_;J&L)MgLhGFFs@R?Q zHDn7(9@*Uvkl}RK_KEJcVHA8m(cOGx%I;>dJAXoVf8B}h_~S;1TAXi2DaM2%Gq>CcH>0-b4ZoJhWScHI9e?tTNx5GszSj168 zL+`Ta*TY4}S#*UcdYMI!3>WcgB(Z4Aa1sA2=>hy23kaWssO-k!qGL%#i&2y)zJ1T3 z!Y4KaR1(R`W)$0#{)dek*vR_pKhjfGyr*h5>i&ls4NJO$jW(f?qc3xySc&877Y;Kz z`J}%1<6X}omTACpKIIS6N|f^d1$s0R``%B}#;Q2>Vq*W@8DLSiR`X-XXcExM|1q2J zzi3axllvO}`7A!l64V;_DW~ct57NF>zE)3tz|-nm-B!;}I5pvuL7uB7=U$hW7r2Tg zP0c}1tq-4*LLt60GF5#XWvcu(%2e@bl-wF^a=?>4IdJ3T+9_I1brT!ai|;de1VZ5Z zQeI&AOE;g22%lups)HVURVEN*qOlqAd1?om@rjmTZp*q_Er>4$iNwn0<_3|d!3Ss> zeCtGda&7M9T2RL?p|sUE1o4d*d}PZ>2LwP8kys*dvbS6{$Xq!{d{KqHiJmm}qNyIl zCvH6FX&^rsGrJiK#&>wmQ=vu`X-z&~Ek@bu^9216$>e)#J@^Jtn{RS%e!vrK_Ovy% z@N+XDd2((6$c3bWZLJUn1k-da^E}z)fJcgK3X}s>0YyC!1^KBkPhE3cQ!V~N&_X0= z%NCj@o8-#Kk#)5w^fZf4b)ilm7oz1Susk&&aFwq%$J1E79=cOoUxV*pc~;^>W37bA z6MQykWqm_^aD5VPe>Dc<_j%T~LiGf;98VCfTJbra#ul`ILTZ{AI0oJ9X{c^p1&%a( zz$bjBE68NPkI#K+p0)mZjHw2nYC+l;eSFZh zPW#H|reA%X_X{j9LfHOjEH)3ZHZvXnZ)Q=tXKlKBW?#B18(CEdTd@m1j+o_}Q)j2A zg+|Rz&r3a;o;JG=H4mo)zlZe@b^zCE#M;vIyyDQPrJGZijynuoGjYh|MfM(qbExwJ z)|s8|DGs?RHjlbLHFfs5e%70ZdhGW#gdljQfhSr?`i|7Op$k@QcHKW}ek3*Z*>TT^ z%EjYFU7oQV0F9W&6pb@U<08$s^(nqx^1^FI46ClSgr!d27-$K*KOf zLGu%6vkkiND%;FXFDl;bS{O+UU9kB6QK`48;gM(4P<#q?mjnMYg+D_4_d^C5n_V;0 zGeZ|FN-x@wo{3H}KzADGcF%kUv~vUC0sqo|5{o?q9O$PE{9Y>f-7Wb&b9`#YxW2;} z>fG@~s8WXd8=#x~wkr7(A%E^Ce^g(y)7w)r#WPHp0 zsU@37wK#p^+cYTJk9rw6H2W@T6Mczs4fnMuy)5+QK>mnSMq36u(3IGs7um2Q;Na!&8{-Gx+mU96W{n=fx1Oc#bS41 zo;@!wsF$g~Jr65pjvw{pL0?rwl zgUH9hOEYQ3E~EM9K=={jQo#SWK56a4lwElVzHg0Cf>41_hp+}=Gr~g%KSp>Q;V{B0 z2yY;qMHr2P>41_hp+}=Gr~g%KSp>Q;V{B02yY;qMHmg?O+dI3;Rb{f zgbIW@gf$485gtPLF~Z{rhY?;ucmv@q!e|J40>YIDHz1TCR3OwLtU=g}@DRd}5gtc4 zjPMG=8wh6+M&sX1OhC92;Rb~E`-XXPzEs}ATj7sMhq~3*0Iwd~1@*bsfTtRp2jK<# z0=egFEqq+z?q$n;QUJa^TrzmxH(i@QW!yLqo-&~Kz@hd9>7KE}c-p@ zJ_(vr4L{J=;1g~&Tllfp70nT2545)VT7iT+kRZMcDmNRlr#KR_rdndo^^{|OBg^4s zu9q8#;em2YbgSjQN^DJr(Riw=IQ*vO>?u`M9t;$px0MJ5)!6Mc5g+~SvRg_^=P&YP zb30cHj^LZRO{?OV#3qkBF_PQp3k0fH`2tgN;w^7kTAtLD+s+{5f{|e0w|sS&L+D_* z!wpW77)JE%S=k))=L!mx)FB6)EW~LdUz)@RrG;l+4?PQD+t*Yp_P5kKBFyzH@~x7Z z(CDjfqPOm7kwmV|Tm>;`v*iY$+}DaRQd5!B*1+9x&?7$I%RQ+;T8~dH2Q+-SxVe=d z5ysbkKkZo}w)YA9zG1QDKxiC|I47yAr4;@6axbN>1g6Awqi1rf#?Q6Nt}2GVt$o|V zTV-BlB?!bhgZNlBKK&|{Me|{=6AWk)-+4(K?ut88c>n+kT59#;0VSy73uSz`0$`cenD5B zGN8v+9uH{P_R8&d0I?ieKyx||tmi>Y5Fa>3eWfm%+PdM(=XK58^Ch3Y$gLy`#73S~ zoZY1y!dScre+JIwD1aw1*PZwVVg%vQ9@k&-0ADZi{u6oQ6Y{E%_c8LuCgi;gTE}db z>#o!G5bEj3qkrJ!9YNmbk%!yVcwPqbCMV@RhrA->aZe>4EZ_sk^CJ%~fXYkJP9pCv zI-do6{T*U*Px{-GVdGt}7yfowuCFNxxPrHBQc&Qhu$V+Uy7kT55M}JB@ z=;Jlyr6VtKyws;llG^qn?{ehPXLH&t*zDTHPOOJ z-&KQZKwjNgUxSXDffj#qMK2N~zI(0ZVkP7PKZ2qEH838<7a-71=wCBrK>;1RaeQz3 z&8*9O`rQn9P+saP{bkmp|4lt$9_!IhXP|%XJgm#-3IzJvtVcha;V{xpzl<5^g3&i; zn*KQh#5$s1fZ9z6)GgMdf6q_^LJ0FAeYArT1lF5{!2JLN_X(_rWW3%jNRw8Q{@#S) zy$V3_IQFvukW()MzBGe4i&FK-6V_dtP_GC+Dnr57R3${L$LDqg2OsxE3_uxwoPMiS zz3UKfMIDAL3Q|3+M?Cc^=J+06FT-x6oyWnq78$J1dS&;>!2gu*JWjn1WZ*y33I1#C zNFX?6fa2*W(wy&z!qu(<($3?w`3^GJFYCG6WpK)n701W3G|GbY(%NM>qhLg$9_9NJ z1P9-_cATFev>?xUh?{{taO!ct$dJhl^*Hr@3D~K}eFek*F-|Q_^QdGGV)jq^iZIvB lKsc9x&yjC0$`i6hJ#mJFd_GPYW8!k2CxP#%10Z(l{cju$Q$hd$ diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_version.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/_version.so deleted file mode 100644 index 63383ee5a4335e28f584ce4aae45c55cfa63d6b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10520 zcmeHNe{@t;e!oKon1$I)#OOw4mnS|jusBIDt3=QyCIqlS0t_*$*&T+=go&HX#F-aJ zEMVwM+&mxC<}}vQ>S^g}Z9VZ1T3YI!s04!qPCXc1w4SZ!Y})E}#-N+Fit*Q`pU-{o zh1v1P+0)Z=`j1z?^S$5i{oe2W-tYb1@4b1K2iDisx?C>dlsu6qNKGshq8zw%nblG* z6fsv6i>pMDYV6lA;kQZ$ZOo1k_9b%&XZ7m$V zMhFL1fk$8)VJq5!K3AOnGm$Ifu;Cd@nmr>x9e8`)3;8! z%Bk3R5%72H`Zs{-OO^!|!pd4}0M~!6JdmZB^9y7dPny1Uih{}^hX7{#4|DqeVNU;_ zW@ZX{RlK-w04^h8eINlkD04AN6qd%0@uAu%&PJ2g=z5_Y!YjXO(lSOkp z!W4rNWs&fRtvUKCa`cH{aCdt=7EEfPgcb~nU~8;Z6TucB5!@8m91KSik=?CHEs_Xq zu5OFRB7xAZwusgC#Vx_+t`HT3+FI|2;2nE{+iVThZJ}f`k`%%E?m#pV35B<7AuSTD z?o1>iF-_EW*Cs;kk>H(?y{HEgq2|c#q2?b2H^Kxkwrh#j*zRC$BHnIQ!K;pk9r>*0 z+IXTpM17kh?HD}N))sHJsm&H~fBSvGJ&{DRH6BC5rkEzx*2QDHK?XWI+AOVfMwZ-` z?ZITM16F7)5DRXIXbrPE)+Z9dyF!WB`YtqO*~XIrEkq*bG; zn$~8Tys5n-j+Lkihpi^Cw(Pn$(yRryN3<$UOU%yQ9t6fm60zU#%8poTGaR#{di&~N zO+;1$wQHb>Ms8_troY1^yPAX6cxZ?xYypg8j}Z)Zbaw^YrLn=*WUxKd8Vk~O!ChFF zNGu!-Hg{`LgikQbOP2fUApwQewVknM4Q}SDO5bpvoXaLH(hh+-#Fo9{vW1J^*18L$ z_>*z}jjT7bc9RH3!XYh$fZdf$TJZ{2EG*P5+cs_3bZ3d*FE-R|y1hEM+Fyo_pDzsk zOW~ijF{G%~;)28_nM*nx9$WtsUAfO#l1o~#+vbRKjygqP*CF57_{g;uEs%31-^N}W zD>hbbTyEnvHr{CCIvY3Hc&Cj!Y^>S1*T(%eK5XO1Z2Yv1kJ@;|#;0ujDeRt?hY7&$ zd6=Y|7>UwDjKjf8j03KK7*I&OREQ#C9Nxvi^If=S5W^>>#7Ms7#JD7^Ax17;M~uU{ zk{FJuA;tl^kr)?=I$~T3>WOgy2oU1}&`1osnuu|c*h!51945wvBT9?|yp0(4b`aw- zq7maD?;^(ewvQNxcn>iy6urcldp|LJafle_zyL8WBo7l83vrlug%CT8xAhC2^xG~W z&W^%eGsk$s%skFDW|?`Mx1lJjnTZ*c#~CqEHfP2q&D&9w%*=?Sd25LBCv#NNya_}V z(nloCY7`cT%z&hMNJUFY_eh#eQ63MO4oR;fT}gVUq$wKRNV;Cqyp=}lNmojmU89Yp zOC`OI^iI->q$^2BNf$`EhI9vMA!(|Pc9EX?H5iZAk?tWqA!!a3?I%4h=>X{g(j$`Q z(9y%Bk4n0U^byiWB)yaL-;f@VbeQx}(mj%@}nPDhdXDHWZCq8imrWv@)Wo%(x3uZ-92 z>ED<7l9s-n;q%ZZI#pAD%Njr5)O*1(+-mx>&t_)QYrsCOQ_5voO2bmm@(OR+w;Gj$ zqt{vb;12i+?zqC#-?tPlOi7-cmei10h6Z!7Iy$i9t_JwCE&VGn4vzAM)%Pl_ZZraF zz}NR{C^nx~dw}}h_4S@}&ywcwK4ho98DHneoEOcb2%uUzs)w$12`A@bAXSigWw^ zqwH+OYrelY={i#Zl?M)_){U(#>D+6^-THdrGKUK>qG_gK_gIbUrB0&_-rlErOc!0Z z6pPR|Vw~0%nGdTyY_6{)|L5TA?ZV~j?Lk=dUDWb*zpL{bX3TArt1~-_^iys3{4n@~ zQOi!_wajH0VgO#~rH)l<`YA{8Yi5la=o|6%t%o8r0H+nIX|BC7);FU)We%mWWTt+B zzlSUn_Nl92r3z30ivdM|LO8A5s8dS~O)W;fz?l)S2crsL_z&2v5~Uyc1at7aj2C^q zlhCf0Z~}YX#yWMTp@=JWGuIc^*~>Hnw={KLZCio$=zSJ3;`jwiZE9*$-$h^V_0p+w zG3(TNET^x(iRRa+P3Ar|P_gce@6c^va7n9yVSHoRMa;d)Y*Pc1`2)Vx?}DA$i?!Xq zlS?~x@>fe-W3S9qtok_R{*2Zi_!r}&$q9QunET!E>C9b4nFKAWQv<2NV;nE8NXce`Occ9*a35XlX4ht(Hl4uIlbL?oqeL5yC$_XK+LSr}cTNQa|Xpv8A{*96qXsbkM#!YTa_x2C4Lp@;`j`WWc4 zkx4G*;+>F1deW944bFx8v}^m`)m~uI9q1f3H_IKrwP^CFSt}Q_zG(7w^DgPzZAFvk zsezwYCZA=E>8I@7$)nEsiSsIbJH|RVdLyo-2QRFGXH%M53E2XEWJ+OYqwYmFnKqd> z;ii;cMuXwc^x2CzQ=h=RQ-e2?7f?Ou;Ff~xRET)fPeR0Z9LZx%omzi^(ywz|4cB4B~dgP+-lRiR=NWc66o!$L=Cw>9zo@1+Ny0HvQ z$P2+TkMU5$k))(_dfE6G*0@u8F#>~2xP{9ud*~~e@wYNCuouR3YGFBeivGwtzkJ7Q z)NN~O)Z2Z1x9}WuP7pUt#ObK>i1PJbg~_J|OEDxpK}Fn0zVWj=wn zls*McYG|`1U+@81=yKVw4iO6-G*^++HKcLA-jy&+7xHNS&~D&teZ52YMMLUX1E-9L z?zhJ+lFg6e*Bs;oQ^UI`!94+|(!!XO^z}cFq0M18tm2JiiZ%|BnpDkBhFH1}g2sGv zzcA+`+HcWcEJU5Mry$$2zd&?0^z2_GI>*h;9$sRQNzCgHxa6-QuNW&v~N9$^km@yPFF^sF=o7sH5@ z8HcH+biYiE2z1V<0^OjwKLdNs;hm5)hno0%tP#IZH~X73ucRKavHUO80ovQvyns{kgm#lS^?LbQM3B?l^IFFAkvUsm|F z$x+8?t*)S+I`$UoSk>8B<*u%_q)+>L|Adl*(k7D;#@&fArPtf-x&IZ$L58x{A5%sb zkskj~IUrQX3tgqx9J-{1hnG=o4i-Bak&>Y_eT}WrbTs~is$QG5W)dVr)*M=eo~AA> z;zboJ@e3*C>wm!R+jlDu$JrCE1k{P;==Gf92)x8Y1{Ve#fm@3*&+{0u{;n_&NG9%4 ze#Ak`zzG?fE75QAw2Uu)Ot9jsAH4=H$@8yJ$lvC)Pd;+uUuR>n39=_9X35PYKbj?Z zjGg#omMkH;&e4-mNS2VK8JWvS(w}lRnK>Y>v*g6(U>e7y!CVJxGbyqbK+{h#K;~yi zfmTwq#Pu%~KTh!{AU=@ux1t-z!}syWp};q-68pnhiS^yA#QALIZx+jvO7XJfEz80y z#Imq|Sr`oV@Y_B7Ru8|^gWthATiY~zk;7M8r=FBVj9*cM?CnV7vu;ZqGy5uy{x6aL zQk(H{P&CKeJ6hW!T5Eemu|KFPm`S`vu|69r*Dv#zm6j&2SHkf~Qi;Vi1)pY{qe`MP zmeWb_Ype2AQ-=MnYx33>1M{#r{NBt=4e%N4pD6G~oUKm-^B%%Kv3D-W4 z>l&}y-H(-4z+DWeL;ne`e7>hP-+PB|q2}%qzjO84m8;dIm0%MZq5FP(w-QzPp1wI% z`Q9JrRpl2v=&s5y)aO>`_qg)%T?_IHt48w+s!r#7tH$y@RWIhdH!MUK+Svon@jdwgT(8@vbOvF`EkJrD&( z;bWV8i@*&op2p#XgIGS};wBgWBhWa*;zgAGKPq13lA|REfYX520lx%X1kA&PuLLXy+ytlvGyqxvdjJmt9sxWFI1V@scpboU1pfJ|Qr~^| z=B-L77FJ4uos+D^e!NQhzp5|Wa?j4<6$=(9DBB`hXCkI((M!i8&c?eVi8zL7)sm66 z7A2HaLduOdXnc0$$%*&Hq+j;N!H)Mzd8W&^x1eYb-HV61_SP7FJ9v=VhLzx1at|I; zOSJZml8$beb3-E176~OIC8&Sp5grU`5xl|4`@)yrHge~e>yL*KyhjmWj9K{)J#qwU zR3YwKYQ>#wa=FAB@PgnWM6Cjz23{0A#=0!vb%7Vl;q3!Y%i;Ba*8|?#*}k|FfHw?Y z_89BHI|Uy1nJgHi61)lUxK|vWQ~eFRp}P7OrFg@gJ60&=cxPO#tS&8GQ+ji0xl+6> z5>_^bG>d=3_rAA6Si;q<$>z9%y3$9Yg z3V*memh5h~u$B=1-LX!;^RAsu1kr|gpuAP-Xw!tB7cSw~B3<~EFaG{ST)wgTBhg@s ze2b5U(bJ)<9>Gu|5$d*jIQ4s*AqM54_SR-t5r;zj_~j^;Mm*XIKW>ZdeChw~3%4)x z-y8sQA)y92j5Lee2Cf@r$!Crv904#lLR`u*S2E|4M>*zH0&}TTD9gfh!Mw;O=0rjO zbw`w#z{J2j$~to?K|wuxT#({c0ArAH%*6y6Mw*55AgdNYx!XyjLP(=dxk7*=w*__D z%6-B!#W`0%%0fAoI{=QHJUEa?C&;i1eL~qC07q^DjwGzY7eS{`j^!SJBgcOyMBq8& z6ldHJ7?k4^kqQ|C*Uc%EBiU+W&M*7lsezQm(YF^Ai627>?W#$PhNtNp?|eJPgeEqJ2}>A*KKv!zs@C dj(|aZPNCd>hX8ikh^fmd5fu;N4gu`Q{SV}o+0+04 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/constants.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/constants.so deleted file mode 100644 index 4867528491dca5bc5111969bf1fbc14a87770aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39880 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 K-VPcL?tcT(u9wpQ diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/context.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/context.so deleted file mode 100644 index 54b40391c32254694fab8e28fdfbcd23c705579b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38200 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 N2fXL~4A95>e*k`j5Lf^J diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/error.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/error.so deleted file mode 100644 index 24011a361d587698cbfb2353078a2671453b7c45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13044 zcmcIr4|G)3nZFYTh!|%gMva1Xz(E6rA;G8tQcX+<;0B101gg|wNCswX{xS0g2n}rT zO(<_4(~}-Nu5E2gt849v+j0(+Qp1tZU;;^%TEpa1&Wg-Am5z|Selq+6OX|$^2Q<^wuyIgNq z(r{)PeXB*^p3*)!rS3spt{3o4fI9&!cK~hyV0mP@4u5X|xB#;NIRLv%uqs|)t||Rb z-_HT0mpkZ4tI%inae!4wr`z@?yAzoG{uEg7L~*_7PV0Zl?2>=Ue<+RaOryV@roSqUE=`laBW-@mQ{+uWeSg~c-=_4_9=QNk z8|hE2IuYro()7Ixd1v4c?yVa!`%CEW!DjgZ7ImVSAY5tu-%O)ZNa2Bu>1p=8n8HB) z{|vAT>F=lX^L)HvcLKBj-ZX#ofqw2mlPMea#?ts-xoUlH5qW9jXQk+){B>z`AVr=B z^?ym5PgR<{4QX^NMIPs~2VfWKJC)K;+Mgz$@xm@1RL-UGFH55-qlgC+WunLw*=hE; z(&VpB8BhC!-@m@Gxyc_@0ujaU7yfWlSP}kpK*GPcdWpY27zwTqN0nftdP!MBb5pQ7 zu(ly+_FcQjU$;3x0fC0_7BD`t(ZAf1P}UHLMuSmN)w(p+xHcH^FK$w<5S7hM>p?Bp zT<5QDZ3!-jM4BU{BN2Z^bEGjqRuaqV>SB>du-+n91eFy^BrL~LgugT@CHbpbt3#1s zpnioCP=fw4j*;prB7w%Be`#ZiaGxBAggJOwAf-o51qIa(}cgIie+n`44O(x6(u6L$hP)n zEBw)>7C2B@hk>-CHW-P9o2eDU{VM~JrUjcpRL5ExuHgsMC8bUEE4bW{uo%LZG}p%( zf`uT>8pU#&Xjt6X(u}QET3>H=p~+$6zB(^V_-S#Q)-R}^6g=WQx5 zXYTj6v~Kn{N^AV#sJ}4~Zt~Op{2U{k%{U)QRHZ~(Yc(pBa(tI!R3mDu^#R*|b@ z?i$P9GAwgNtf@|cv(Qu;SV!qIZUo zT4abbR@`Eq$Q8J~13qNQ~T|h#1LlF)>!Ogc!+TIWZP{5it_qN@83zRm4az ztBEm>Rm4c7R}&*iT|=CU+>7`&AwtBHg=iqgyjqBnoGQc~AvP0F5u%NFsu1nOcL@jp9C5Vy0?;*|?;sxS4LcBzbhl7`ik2pV zV(iU>#PD&Ac22#JX>?$zj`zadb{W~njB4b0?j@Fy=lP@%Vl{bY1m$_2h!DGz1CnM& z9b#j$N78VH2=PyHucYA&5%Q4UBWYGcn3+g+N*a?EAuCvA|1@(Hl75zSF6q6JevY(<^d3p?A)QCMQ_?Sx z&L`b2>6b_sk#3Rn%cM(4uK``F^{r4Zc=Zyek%i;Gz4rzjijPXL2<;AK{K&W@hwD}O z9Ve8{>Xt=9nWz`|dU6>AO$Eop8g=x(feuLf0o`o1B)Eker4NeX_T=Q?GLBk5qqj1p7fKPQ4_v zSG_P(TkZ84{|=Vzy}yH&?f(J!4o&gqDLFLiAdJ$%qN7DUI$BMYJ+d6$3_PG2XE+1Ej24^v5pN!v((lCZ5<~tZWXpowY%f5 zP^`b~Z3pW3z#V_nIZEo?yFhe|xa04UM~#Ehj;Kio23NUvehK8Ov9^LIK1-Wt|(`sbeC_IvHf+&A0)P;h+i zDfjn}IF8MQ$Zgva#r^YV$2RHBPIZBB=-p08)b-P_yT9CT)qFy;WFF_s-Q&08y*; zHgEOZ;$!Yz52ArfS_TZ`R~1~s+*j)j-s(YDr#ta?XijXx+HPILrR_iR$2%SUZ;i~I z`ANe0DXri3Z`#L$XRPz6Z*{__BP(;05n5E~txoLjLhymcRf(=nhM@*;CLAlH8r)!f zg1Kw`$#0V#+A*_LQojQ83Nzf#^|%iVJJ?w1T{Rbz*me^q2bStY)|>NhbjR=Jgxb7S z^SgJ#sqXmCxq6DXYOdm4qw7F>HnS4q$cIp){()8Omeo@EB#GI_y*m)#0(q6a+iPrH|v$ ztjN@Avl1JI^amM=w`FQev(yhWQ~F5#AN%Gj-b!TyCP5!m+A{TuVW`w=FKgrUiXpAm zsn=fADu(q6L#w^4*Iv*nhV+UvTJ1%>_N-Q6=oRm1wHNf-(^|zDy<$MCJ*(HA)GFT5 zD~@Tkr}f%5G&Y`8KP;L1X6!q172rS1b5-1XiL8&*Uph307Itd8xutk+lVuEE@HV#k zs$>j{SkQyry^0$nSqReJ7q=GlBtQ9!wZyDp<2u)?IvSO56bOxzpCdC~xk9D!v$oR;N7w(P%n3()Cb+k+ zFHA_Rj68&(!C%?(XJRc1p<}Y4OC7sR9Uj~~@G3)5-slbFjxXW%Z^=~uipYK) z>TtGk5dPG=7=iTNPW;6X`dRBYUj4J>v-nS;SkF^mb7*<$2ab*pG@r71{=TyaLt3#{ z2^tqAXQEKJ7Y`xOeB&}bW5sPd%3o_u@kTpwLW);pBr~{ zFFs02g~Ac_wVXuvukDZtbIhFYIvD`Q2<~_rJeS!0GkAlZpdiMvl0V7QB@+mDyo@~hN%SRD{)&_6S^~4c zpZ#Z0z-A7F#GerXm#VSX8c*Zg@p&*zMH-2HNdF*TROxefylc;QDi372-4_4{jd}qRpkPlypE>eSDeSwo2Z-yz_czvtT z-N?)5VW*-_Ue2d|Yqp3z(Y|$}hz;m9nd*55_JmVkB2~$ieJANM++f+CZsc=^#V+-<`DYZ zBj-jH*oc6pI@k*M6iON%nWO~57yw1TQ`!R_glKZXLdzjOu2aEyfM)%H6 zTd>q1AC34rOz+}DTVnUqun03j9piBAV`9c@*vXhT3}+D4b#vc2sfFQz{zV*awiNt< z3Z&ezkfraFa=TtY9S$EAjpJZ6j>_FePHSh4%H^rSiMiF1+dnGzIBHlMj1dOIm}%QG z%821-5t_%?H%`~(UaiT}yNl4K%MhqK9NHt?BW7GfxH|BGc_jISXd3<=B=cMwUzJ^) zc^{?g#S~+vMfS`Qx?`4rUtpLN(D5F!4t?}t=On1ktMZuS348dk>!=2Sdl;(^uRyoj!SwJw=@ICKy%l zLGmQ>^MVtoypD==8S6CP4BqikWp_c@;T@x74oHiqVYG1s$&A(b)zQZDR~iS{NW+q+ zt~CCZjnbwbG@7}fDMb29>n_K(IQ%_unU@kBVqQw~(3aFWNT%?XW^!sO2c_I(R|Y-6 zLA6)Z9|bL)oGfLdiezd;mzT-uBzJDC^6<~e;-T54^vp&N^I2}k#L67(80r1Dk@TJ5 zV~gpx^BltEP7Wf`F$X&_SnbbQ2Z|Sw-fiA|lb8tb<{K{+@rwW9d0c;|u$Y##pF$dk zCBFw@iG9qcQYX7FZL;*R>7gjz@ze+LmLBq_)%&L5 zZga4 zv%+_;sNtPBKRuY{D};E=REb4k39M?G#Wqi#g16ru(_Z{MD>%DrO7^7){9K+pbR5VmhfnI;p-nXu1hs9@K?AkyumOAmNxaW_}55b6 z%jw*Sb`M%70}h@W8QFsfD_ofsuB=Dg*DKD=;-TB;&zR$#ir;lb37`-KsLSL`TS&9$JO3=)= z5^?ZsK{`Tt9T}yrtgnwLb!G2xmb!A(v1P7y#~7Dmf-9%A*Od+7S*86@@|w%J5F(@= z=FUAxB_0D7WiAi&EZdQ>W>gRD9tK|;BeUmw$vk@1rWul3WU1(a6; zV6x}Ia|ypmx~5H!x&|`FWPh$r7$pX7L_QB-fjIG99A;v^n|1@g4$KD?eoKRY@*A+* zfcZX}-vq*i;&uSvOLJXF6F678Y8Zd;C?Zy2J~We86z$IjpenNPzK~O01f^Van!<1M zhQP%7P7K0pQV~Kwzr*800YY5!DzqbrHq%yYq2{yK34v(RJO%XsSK+sqc3B5!Yy|88 zJOg+UZ~)K;cpLCO;1XaQ-u>PJxEpXkpaM_}SO?e$*a3J3@FL&HsE~#OAq|}w@Ut!M?DMpg@>ok{0PYtXsY+D zv%cPl`u^5f_SqpMPX@2)6DD|2mdm*1Q9?nFjBXxq;X@?P`tZhJQ%ZA_{MyMU$9#^W z(J+=bU9zRix9G(a1_Bg3F; z#%p$17XVpeO1L5FgAm61sBO$Ou>Wp+1CVQ;3(tI<6VTb9c?R1-m*bnjw}9otG{-v} zA|GwPK^xDdEND~E_HJ6+X0)9{8_%oF=SABP+Hl-P+uG13ip_6&Wg`w{JKBoSma3x| zZ4aU?b?hRvElg`GLR%Hu7-vj*4pD-(FxnVH?6yL*MbXB%V7J-TtMJ0IvU#4og-dIu zdkTF8zBwLT_eJ>+j62X#+fq3;1-{;ZY)4n__3 z{%^zyUo^yZ46GHtP#_u-zWUatXltX1@y(fUeN)V5UAb2ge)M6lk>9MeG$_I+zeDsX z!Of`4uMvHbX8GNdFBtN#lb`T~>M_!$%n|-TBob&fN7(fz>%a!#fyQth6gNX4{`jO8 zQzAa356He_ps>82cI5c@Gfc*b}5#>^p+-oxE)4{Xp1*OM&+S<2w0xPjDZw zjeNXM2)sw^LSB|B0Nx4Y<9$G&-K1HF2@GnyLs;iMLcp?Kr57YWd6IjTe7uJUyoX4$ z&_1543IO-?!vNk}1m0)l%K_MY%TTASJQKW6?K>5uEaYQ(1Yq-3fse4qR*F9QguFE= zeEk0i1m$KlT7`Tpj{|IZ{DzyrJJv3?-T)fN$JgU+;2|7jgH^~!GHhX*l=^=VK+0mv z+XRaIFH^S~CuU$`|&TEZJ&wS(T=kR?C{ZvCf1ANBk z@O=;cTnqBa|7!uhA&UkYUAG^hZp-8MXQ!u|`-MC#w2#2N*5+eglQjcx2GC{~o9}06 zu=#jD_khotvY$QHfNtPS0J{dT8IR8T?04W~?Ez4pUC6i9CV=feTc_Psii2?6CQ|tR E8<&WoqyPW_ diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/message.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/message.so deleted file mode 100644 index e2c28fc55776eb49965170d4ae7192834e5b80c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55776 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/socket.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/backend/cython/socket.so deleted file mode 100644 index a82fd40e0add64d2a0c7ad34673fab9aa189eaab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94316 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
w3}T$&$v9(4PEX^Jsu~N#k9aNB(Y%-czi=ll=|w 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 n226w>v`hR`Z5YE=F?8qg6lWX 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 NK7+tG>L4j}{~K!^DboM| diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/devices/monitoredqueue.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/32bit/zmq/devices/monitoredqueue.so deleted file mode 100644 index bd5603a91b7a7cfac85fd63d1e789ba540895702..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37524 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/_device.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/_device.so deleted file mode 100644 index 459090a2654fb72430291e62a7b044a738196a91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34040 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 z 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 Zf06**AJ^G;C+fUMRcV_Oi2Gz-{|9J1+5P|k diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/_version.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/_version.so deleted file mode 100644 index 0979a4dc1e045c387e002fa6b367c30ba35b55b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11880 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ڊ$v*l6F$lN%(skdOpwku*Re&!`^*O8F%#6vRDJCX>|QvZY`~hZo`$;} zrL_EtJZ>>B)@IGLMt4bH`lYWj-8LcBHeEdOZ%Rfk8k zsW`u=J%dF!)6)TPc%d)+S)aIfyFm(QBN=?N?)!6)=!%FDBcnypn|)rFx^!McdifyfR#|J zqqD6&qP2BI6#hX}L2R)W#r*KA%qw$w-0s9YB^-++lxR#-@U1)4s>HjZHY4Wms~W}U zWQjh1D__-79@kf>xF8c9F?$M|yvqufIzchPr0$PKMruHJV>9UlEyoO@GbfelCXw>C zu9ot;OY$z8G`?sTQsV2t={tZMw$tc*vaGn|!F;uNM!KM`Sn(E@dyCyY<90Y6C|prY zKB+A~{wrvM-ElyFUGWTWv9hB0Sbk68j)Dg;yG)-N=uS+)g|rCWn9lEUG!@r8P_ToV z`Tz2lJpx!cSP{Lj^8&YjC#O`P(#*01`D?OL)W&bI@$_w;ifj_;2b`b8d2z2zA5^G_ z`?HU~7>NIX%qj2~OYT^bDutWYf>ZoX+L+T27a9dNZdjoNnfH2dCfV z^hr*i<@7M8CpdkV(=(ioE8*>PI+xRiE$dd^qy(d3#SJQUm==CzmvGs~!_M2+`ttb` zCMYPYBU)EHs%Wj}wk_;g>u_U+X4s>XPH9KOC2PXPtg(gSHkR$4 z>{c@%bp$uzcCn)^if1Qna6FI-+|6#rRq?rNxdrh^dnA~MR3NmR`zvjAfq)jl&0}Cp zm%d_OV|w=fjxjzDBkt40{h8QP#J!ogClmK#VxEn<%HuO=p28q;A13CXT~FMLiF+`y zZrJt2eVDla%B3gn!Nk2+EW8@Rayu2~z<#8=k7P{S4?(5u(l=9V)u%ZSv6JJnS zIbV|gQng)))`S+j?eL=-OPckZEUo|=NH+Qt>iuT1mE9h#jDCBm!5OUhX1uph+ zK^1OKF;d$iehy1sRA_Az_Cs7jP;qV$a$zs}|JU4p8FwhoA%co?3)$0H+wIo?qqxNS zB+glaiguvFidcsQ-++qMegogP1wBSWOA+>b8%xW)wUn=M@KUWDC!cOo(o4q&} z3d+L~>TIk>8B{iMdwP#ls`!E_XoD?&F@6G$!G`MM{p9-nDEX!$`fqZQbT=wi`#qG< zD1!c-$&Nln`vSNR6|(2kM3NN66meo7FT4GN(6-u_aC?0IWaUEkbjxA2SGYYVqxoif zJC}cgf5c`leuq=8m>L&q|6id-xhwiF&ZFXYz!?h8A{YG^e)m9TjbHq}WB4j&Cb>;A z`V{tpK4Y^Ne>arRHcf^{EzOFs6Z8d}y)s8(ipm^QzeIG*WF=F|8IVKxPrig&&0GZ> u{@$OyY{#{|nsa=h@^y8C&$?>wM@(siZAJu26gMXQWztBN{-9aDiP=_xZ@?Pq|IopAAu>)tRgMX%j z|56A2To})h+Gwpqu4h^f2=LlT{O|j!cDSf*{CH6Gj%{}ROE4Uv9iwU6SvRf^%?^G% zR!9E9c{-l-!?e&k*s;ERzSTt~#lG^2+_DOvPxBQP7glJ#Rj|=~zP!p@+|6B6xISO= zop-4(J%4p!c}0F%{F>bI^89iQ-FYR&(7U*zT=T9=%kY&KmzEV4SFD1TZ$W;=qWrS* z!jfWWC6<->7Uz}~Csslub8YFGd|zt*Ww4)70UcKR=9iTe@vdIHG6ORLAqf(sl&oC4 zCjSiInP-5)4J0QN=2d`@R8(35L)TZXt5MQ#=sAX1hVIH)y z;xp#>67p#`bAF8GgNhfF<>#)XRm-A``sd%L}tE^-#6mAwc z=grDpTTwErylnN1^1S>R<(Cx}uPV!(v9`QyR({cnS!>H-Db6Y^%7t|{tD>lMR_Qtz z!mRcA(7t5G88f41&OwT{AUP>6-Zy9FoSD(q6UBKSPQ^i9L*RaF{twOA+DhjzcU^mI z;V4ZTsvU(laCk+^^M!F=kCEqxC`C8gt~*@R&+s?M^&(Qy)3&hBqv(y|_bPg}_)8VN zN&JPP1?e)nKf4HKr7k`wZ7l=Pb(Km@dThU9!pQGs4 zioZ(HE5%={=r@bMNztps->m3c#owXmwc_to^oPaYtLXLO*Bb40+a`XOqBn>?Qqgyd z-=pY_;`b{0e({$odXxAo6}?0J4T|0@{zgTANBnJy-Xi{XMgLg*K}By9e~+T~h(G*q z_PVu;KSI&9o7oqm=pEvZRrC?!&r$SF@fRq1xcF-oy-WP{ihhjvn-x7M{uV`#5`U+n z_lUns(G$e4-Q&{mWjsIhia%7*z2c8lbnR*GAEoFk#P3z~Q1NFgda3v;6+K-1Rf=9O z{zgTQ5Py@RH;TVq(Ou&2Q1mwO_b7U#_J%!9xMJ*MUN7Hy`p=>-=OHR;%`xOulU;(Jzo4>ik>b0prWUUKlDC(eR9MfuIl2C zQuG4x$0&N0__GzgRQx%LeuMa{6unaXwTj*-{w77Q5`VLz?+|~7qSuPQQ_=T{zgN-g z#jo9OuiI5ZGsT~y=$+y(P;|HWYZbjq z{Pl`HU;NFA9u$9zqAwJGr=s_Wze~}Vh+q4=y*|C-4^{LW@kc7U_7CnKrRW!n->c}M z;?Gv}D)Cn;dbs$j6#WMAH!6CB_?r~{PVu)Zx=Z{WivEE3dlWrV{Jo0)u=pdI?DdQi zze~}d5r3?r$B5sf=)1*Vpy;vUFIDt?;;&b9kN6uD{a@m5QFO2P+Z6pZ@pmbDw)lgJ z{*m}YAGFseNBrT6{;l|<6um(FF^c}1__GzgRQx%L9@4<$s8aMw@z*N)81XkLdX@N_ z75zBzcPM(T_&XK-B=PqudcF9yhwOEW62D8)8^j-}=x2!Eqv(y|_bU2a@s}!kllUtY z{T%T(D0;K_8x=i4{B4TfBK~$oPZEDn(c8q|qv&4ohd*quTf6up6n(MyV-&qZ{IQDe z6Mv4PcZ$D2(F??1tLRa}>Q(`~`~c5`V3tcZt7V(PPEmtmr}Uw(X+)LRP^t~AG*z6pB(XrEBZn4M=5%N_+u1( zi2VP5*@|8&{v1UgCH^W!uM~f+q8};#-Wz!QBQ*SfZ7r`GO&w##E7YQoG(^~jTlAAH zdW1zk(xSU8`tcS$R&-vEqaJW&$j5H7CpzJkFw|m7JaluFSY20S@cSa zKE|R~S@gp#daXqtYtid1dYDCTu;}3yz0sl{VbPl`y0y;D7X2uTzr~^-ZPD8-`Z$Z; zZqdhE^bU)Dj79IX=n)pZ%c4)P=s}BqtVQp!=*L;~UW-1_qH9}R)WY?1f<+It=#wmZ zxJ7qa^azW7qD6OE^vM?8v+3*5;CDkbEqD!_M!~06Xqso!^PzkCqDL3Fw7#ih;AhyR zSlGjM0ru?f>VwzRq1c9wT6YJve_jo3JQcg!sQm-B@l@z;ruLWE##5lXk=h?)8<&1} zJ+!A@sr@3h@s#M!q4sWUkHWT>+RtDcPl4`OYCnl>T>9Nn)P4xt zxa7NC)V>GXxYWDDseL=Pafx?p)V>khxU{=_eg|RdHQ2@_-Q7j)YHZ_D?(U%WdTbww z?KWzcVf!d-H&go}Y~zycZlv}KY~xbxuBY}=Y~vE`uA+82wsC28ms0yYY~zyb&Y^Z3 zws9$Td#ODS+qeX~W2rp{+qm?)qo_R{+jz<9c0n7DyC)EGAm62VHn&v_?dzb!UT?gz zs@!c?yI?W+KhrZa)~@hua(97Os~F>{bAOlT(t^(*r7q+p*iWvTx)V3kx;)SI4)fGy z_W^o6bob2NbEzwAQUWfjwjmyWNIr;q-_g%Qd@08-`|O2~MX)<$nSR0kJ*&bd)xZ!n zEejG}22314#j#+|kdcms{5}XI`S|BGPpZ+(5iB%07T4Im!>bJE%4|1Ri- zXxP&=)N5W1bqcH5?M1`|Q@qJ_Ass&49~S{Vll{?Q3pn7&K+X1F1*c%m9pHhf zKL)90AJn&>6MXSk!_Z8I^<)^AhjprpJ{vT!C!u}6-f{p=M16Z!Fsr}QGU}9woi=H3 zX!hyb7X?r5PntmClZ|kldlZoL?b*S+e!?`e3`0x6J%;i{e|I6Y{JVn_X?|g~%dtv< z8IP@T!DuGFikr>fgl)bg8Rd|x;W!4g&23?u?@80NU2%7US~mm7theHoA$XOMY>&S4 zN-R~)?bI_m2fM zDE4X`FfLyh@Hs@ri(c?@3;BK`U(e*FOx_~oVM4Ayl#B!3MJupw#;41%6nOazo@gOI zLF8yAhvFF;aL*O;gW$tbEI5=r4G*7?uOTvCh=conHmmV0k>5Lys!@!{fcwKuuz|yu zCgk4%;|bUf-v_BCIf}@KA-Tvx-cRH!nS2wj!+?9UkPmO3Hb^kryoj=LUJDr8pfPMWPC&j-en3TM+*A{m2Dk8U9vyR#)0G0RdBKezJ%asGJFEA?SOlpz#jr1 zmgawSpRklBtmYMvjO7v_GCrpT+Ygu}$tUuE5@Cjc=rAUC{gq4N74q1DhHaeorxG8Z z`+@}){w2iU!2HLVUnTq=@ZresQb%qri*X{ov=}Rc&ym4U3x6Z=k7xd_E2%Or;nxfQ zv;p~W^}t1WG4YQ>e$#)=`uK^zGlA-}nE7oRxjs?CkIuxXt@0~D+67&ad<2n?M{=r# zd^3?(F!?h?2HdNJ{1*7IGGh)Uf0+T~5lsHaBCN?oB>(qEbIgAuawwDc;28wZK|vl@Ge{BsA~}#@W%>&^MHJO+JW(R!(8;%$;dz1 z!hfIm^O%1)AI)=w{}}kNGDi={$7dek`-y)N@?ZGgtWP)b-_^krh<=mn^TB$U1{~8= z;oqB%QOgRq*2lawo
V1|{J345cTIW?1hQyty3|>P)mj( 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/context.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/context.so deleted file mode 100644 index ddf2a007f362e64b900d15a414d1d9f5a64b7000..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49288 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/error.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/error.so deleted file mode 100644 index e4693b921ecbfc735d9bdb635b7972635259dbe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 MU(V0OdsxQ&XN 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 XtWR&O6+6VP)_!&F^`n|oH^=%18)FEr diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/utils.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/backend/cython/utils.so deleted file mode 100644 index 293d82a30f3209dd2e688a7fb5c9a7fb69cc259d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29592 zcmd^o3wTu3)%M9{ARuHSkQyn-Q4&n`OJrvYjfsh%r8@ zOc9_~{z0%h8P6lG69{KnC+Sp4wDh?e?MU9g`%&_e(BN|XDLdEg))Ta3V;teU_`4E+ zPri50>f+MZK00{wf>BRIKS@3O>e1Bay}5s%_0FVxRLA`!X(?LM=>FBe1DMty#ZW#J zIUPPR4&H#_r=y4Vr^P>u4mlltM;!ip;@~I6(dXJY{C(haI{lmC z*qa@P&vD>~+4MYHJ}-}>&ws|jAB=+^6~~{EIC_2<$F4ue!9N*?k3SB6VH`d8#nE$L z96qC<&w0{UR9pZ$`W%l#--|lCpJy<&rcH^{FNJaVTpb60B#!>AaqyXO{P34J{8Qr4 zzY~Z5usD1kj6=T*{y1GchvLa~#O)mE&wJv~-xi0z3zNX<Ge8!BeaaJI(y~9mb!b zEtuDjjaCPJhG~Pf@?3#mB-b6YVAq-2Sz4Qv3pa|7&$qO`vB4JzRyGHHKFwF#P#e^I zOHgP&UsY=*JyzD$uJUWX%a{A+_?OlOg8t^>y2?PnAJBZ|D}7fsHu&cTn_H@aTKUR( z&6QRD8I@JbeDhW|`GF{Ht>VYh=H|v`f}5LtbNxXysBKs(;VT=P>sbbf{Y}Bz#s*?M zucp~wSv@yc8T9*#Tbi5w4J3g0&8Q6c`$$0vQNFUk+?K^bA(RNNT6~kgDi~7(VrP;V z=0SizSXHB~s=pbgH#V)P1jJ8Lr8$0}o5_Hg&6V|j-G8ylATJOL_54On{Ba)0xZy2cgCdsnv9FZMV4 z%GebWP~Wo+Mkz|VwitTPY-y;X4g<>5yfgsjUId72Ch5S^6AU(M6k098+B%}TYOXKP(1aKW zE&)VRukkkrsOLq9TwB@PP}&M$UP}|S67IKoRy=wds^?N@f$E}0BWS$$I@ zLfTVZEzm$oeGq=6kF&#Iq`$eLUsuj=sI5ZJ%`cui(O2T<$9Xdgz=`@s2oOEv^EIt( z_0E8m`4P{;Fkj{0J0sx3{()<2~k@ zvOrk_Qb9u%`Bb`F4&)gtgMLqQbLC1gq=?nL<`y;b3B2Cl+=wp=9Hg7q$J!20EW z-!lKorpj8%O0)gwoNARU`aI6I*VQftpPWEr&Lj=b%|Uw1qsOKo=O}`639h22OEjOq zx-wXa{JA&~5SbOIhH7m>b0a#ec>*Y>PN-}NHckjMFC8DK@{bR!sBKu%Tsgia&^*Ck zzj#7R0Ha|-ZG9ySnh>mSn$WZoDoj`f57*y3esWH3&P3v(&GMGbDE3XvnV9o0cUUUf z|Em%c$Nzy(0(Ojj|Iz+2LA!$IIw7oOWbGhLOVoA%N1sh{|Eu<$<^q9#*nwB@scM}G z6#c1d1bv#nKmJ&zz;`%Yo0R6a4o%@ZFUHZ#wY0q(A1sr!E%sX-h?^{G2W6 zGaPtb(ib@Jxstxffxk@BS2*wmlD@`)pC#$nIq*f2zSDufO44t3;0;N?)q%fW(jRo- z%O!oc1MidcT1|idERggm4t%Yo&vxJ|Bz>*}-zw?L9rzkazrcaNL(;c8@J*7w&4G_f z`b`detE7L}f&adw-{-)$N&5W``~#Bym;=8~(w}nRyCi)^ZGV4uN_yRaKPBml9Qcir z-f-ZPss!H}2Y!>JZ*t%VNcv6({$WYK(Sbix(r+vq!O_%m$yjW+xc8-9}wFSmkR`>+ik zJCa7tW*c6e`B8(dHvAaoAilb6`15S|eKvfS4Zq)ppJ>A$wBaY&@ZC22r8c~2!xz}_ z$87kiHvB0Ye!2~>Ez%jH{wlQLQ*3yT4WDMi7u)a|Hhj4aUm)=VflIdGi)?t3tv-eg zPi@qv+=f@NPIU`x_(6&oWrYnt)P}FI;Ztq+CL7*78!^@*Bu3ccm=h^5h zZ1~AGe2oon-!e7X@R!)=TW$C$Hhh~6Kh1_;XTx7+!*|;7-?QO2+VDj-{3aWIh7JF) z4PRozZ?@q}ZTPJ={7f6Z%Z8t2!|$`<4I6&H4KJr;t~J^}N->vWMl%zU-prrEcSif} zlwG~~KQ7X>-mC}k?H*HvCxUCJjn&^!s--b}9>Fx_TF1TyB5NeUlv=HBhKCVMQ?Iq3 z;lTt`inY2JP9&I8tF@WoFTMwuQmVCy;ZF&sRBClHe3)QLp;jBi?-ER@(`sV)O@b+9 zS``c*Aeg3jtDNEI38vI(6*0V%U`m-*F2hd}OsUe+8U6#olp?J(h94pL9D+55e?jmV zf{*=^?Ef*rI>Frx-$U@Z1n+0~E`n(ZVRbQlJHeC+t<4OtBA8O3wTa|*8pG!iOexGd_7(R(!IZkJZia^uOexFS&+uS^X-Q;tF`P&+ErqPj zfKl>?#+wmw{d&5t86920#NPcp+&a}~ep_M1dTw}b*An-b5bHM|0^Q(A3Is=jJV|Pr3i&6e=vrBL*K?lU_nzA& zG@d^f7G)S6y+(L-W||QWW~Lb75t+ecqkUk45h(%K(d7;eOaRAeuCJ#dn}oiAB%@tJ zb#f-xK17IVu5PaVajZ6dFAz*Lr98zQ3R6YIwTh6@{AqBt5h*YyAy|#bJd$%DINXRN z8trBRxEkR^cW5q&MP=IQD$nK05m4a(S!!$8a)uF^o@qp8rSz8PqJJ_L-nh#>rVa8n zV{bCWu;dz~@nuOm`m;!$cEnG6lQsAT;kK(rc0WI?$Rsaarz%MBxJlpEou1@JxDJuqhX zKzHZ`QlaB5!Y9S>N$${38UL|6G?o;Jl%gA?vr090$1s6J2OfppRuaHYBSNYPPtZJI zJv|B;BAe%$+rI4WMIdyX!!lftQ(ZLw5XKWZrvY|b zmoVpI@OTH}rN6D&+<<$6shH zzfK{LVMNJ|h=?@v?JtPUE%0R$qPaIX)O?c|E9KiS!sub2gP5G0VNT^1!hM}ZWJ3FH zeW8k5HNHL9c*37}!moSgd%~Z2=3)4<{GyH%CGL{vOFN!(hf>kj8*yDeQ`ctG*!>#b zDv6{|1Y8n+z5Pf+>zPK?v&J*s$up-7(cE_*LVezWjuYN+*P8si-k#Jomqu45OgYK@ zbL;uh5toJcKVy!Gj!1ju3!`c$H7tuJYbDcCZhbBM`jnHa|BA;oN$oom^13`z4!D2T zMMGTd7aq>VRKQ zxi@SCfcWl7caPEB8-4(&BwC!{nX(V?t!q5d5h+aYMoYU-%#f(G_^@ji6^Pdpn{&|=C zk6j77rW|*#za7d=%a0V(H1m5rPdR?;g+|ru-sr4j;ZKZb-c7zdlAH*GF{-Ct9w|wr zgf$f*bvSLx3#;E#$|syE31=JOnw03wgs^K0xN*=~chJ-;1~Vnddu*C;#zH=_ZX!GS zIl5iqDzX(s{Ua-^I@`i>L1iwh~~ZS&>5(U|-bW*Cucq4n)F&HYBx+O**Lz@%YlhF>+N>~FaUi8NA2>3>wF zH&RXMe|N?%P-+Rmi_QDUhN}G-3{&<8U&F9X;_;Gy-$k1C6jX;l3(Uq7y}dnKjgu?` zA`*gFh73$73x8#V_ZyK;5`A(f$##dH!gCotqzO@q#!IBmy=9iyAmuULcSP^23&+d5N9U2NevoKEbBu|>TJLTPWmgDu!++hqNbWCV0aiU@|wyf&e|>obUHhyS@?l1cB{aX|!v> z5#|@40*t1YV95-JScg$-UO>uHa=u9Dc_fb=kOi7pXZ`{`ZkZg`Mda<^t$m&*-mu)< zKv5A*e;+}B%tqOH0V`rNqNBLa&vyzjxmfMT{Cowe=d|cA{VgH`&1NDbouA}N*Hppm zW|9rx9*0TRk8{vv7k)hDdsOrfE59hBkzq6zajMg_wCntr3g9dc1nMXuqI@fyP2 z-H`@N`#+Ix{|LLyS|}1eih03&ncNtD$2>_wA}%vmM>JwmYu}xMl_u6vB1+4NVJu2{ zxf(uc&Y{N9^oKdC3m?0(%~4;yc|+lbtNbu8uso#ujUFP?I}(67LYMQRa3#MlK{SXg(8X{Rs$^xRGB z`!Z}byy0FbCF*;kdA(+%GInog@EJ-*uW`@MD1u*ugN*iPGp%28mlbJd6|9Ait@|0F zdFCSko<--_4=6AW zH(db26I)u%FF#WCPjEe_i)i}#935o&rL?1r7M=yA@}Bc-{VYk-w%l#binZ}`n~zCD zN<`tkTRP3>NI#Z%71zG3YNLfWL+X}$%==^Q^O@o?qKFh`u(13EATq)`%{(^Dz3z{s zab*0PyZ{*eB^6kzb|kW?=Cqi!H<*_R^bY)K=DD$&yb9iA4zhw$BFc$8kD%PFm8PTMVCXe}=qk$_3f4D7Yc^LzR?ZP^10U&tg2|6HIfybDkB zg@rHR(K;KsO^q+XEAIev`%EfgHB*8|{GJC*5x?}aZg&SAoLL<_b;}L6W}Od0>9HR| zg7qAfHP0cXD2b+tB)WYZoD$971hpuM{v2^(eFj3Ps4s~pq_x8I;1!cTyMRP?84Xg&!Yq2js> zZkc~C6Q_qz6qT!jN&YsNNb=7RB=DPN zHpWOwndE*!LiT~#AVJ9@OBE%Fq*U%yBxfGRk;7eTgy3WIsS43qM9%Z;a0*v*0tWeM*k6TPdCBhLc zjv>v_KM;ds^MLI66LQL_@zk^k^-ukdB6a_VB2pWOMWpZzPLSybK!vc*216tlYD1qb zzc>E|Jt?riCnP?C8upau@sV40K+a0EH>WGF?Qw^`!+c$@5Z~~TEzfg`kIbhX%+riZ z#M7(v#0Pg=v70M!pcipH)4%2qq9*N041H2}7|b$X!wwEZ33IbMv<$h~=)ahtMS|Mt ziyc*D^bFz?=@iSO1MW}(d+89S-rfUZQ{WD*bP=okvzWAS-z2mMAND*w5{`K4WpZ7M z^u?S1p3Eb}!6tJ7@elWxxk$*|#iWJv`pJBiWF|xCsNzEKG*CJS9=e0s+ zH|_pncK(HAM*lAQ{8J|EcW&F?xBbqDTF$WTfO)8Tp8hWR?p@+}Hh8K&J5DE75mycr z@Pp!tD1nm~B{5UIei{q852yFN1d09j@8eF~WpK17Gj z2M{;B<9-~h;D?8pwD2HyYTod>Qs<9I=MFhk27bFtM04zH+wLPIn`?P{U6^(;62}S8 z)0DfOI!WvYe84V2_~96ZwltCaw`jW@^_`*d(2qloG zC~=t&zTYS079nJb5b}507(vL-p$3icUgYtAF_Ofne|iOR9!i{N+0;LmIlD#?=e}V* zl+B>=eq3!jMIv~gMe}(7QU98|L=E2U9ELmYBPdc>h{8MtL-68b<-btT{71}KnJjfE z>JGJ2zKG=iQE)p-dobAj5HobI8}&`Q-5tN?CMt_qKLm)K#1=$o++N_A$^fAwJl!2h zjO;rdI!>oQ5m&>xWL<%o^DbEy90k;SI#AKMnMlPCVeFt5hx{-7jTS|mhF(M5^!yNn z6J^^^Q779z)Yo=dtnEGAmWSbCw6%C&9Vz0y%t9j?z&v@hcR%fNEF8{}i7s9zk3hOz z(rIO*Amn*H7N(n>&|$CZ1uXK#1hp1VW#DRrT|4n;U5~?WqW-++DKXZ}Vu&Z^>%kl^ zMM$hW^g2R_L{svm9jdiNOc{&F0QlpaKAT=01C;Q`{SYqvvAsLyj~B_Nc3yJ{o67q! z{t>^WaJeMoJ!mMMwW^QtWiiJ7KE|&Q;|qx~Cr@(~sz}vY%u&cfFWHQEf=>Pg@oY)F zfrtfaszlvOR8d#!+2qN!m`o`h>~&p=ry}9WRy7YMSYOx6U9Sjk*~ zrzAnPl*oE9gqC!AuEiUr`DOB55}g*e!G`uzI7oGe?qC`H@(uC}aW8S6`1SttirWDR6pHj*po{YNMlOA)xDd(<~v@l&A46^}_*d`L;-RU8*dPt5K( z;SSw>IxYWz7LKDJcjy`*#eT6YvL?ltR@edl?hg7#s4yXopZ=AGtUGiv zff&uiynt7}W$kOy&_L{j_aa60nm2(?b@}hX2==}6T^+^vjVSUy_D<<8a^JTH9XZ8x z-?uZbYtUh1+UU1Y=f1CN&`$CG1|7O?9c$6AL;nLF!lCgTKIEPq{>&SGuPibk_I7N5 zJ2Zl|i}etncn$75@uGJWcmu57@OgadJ!u)eU7Q{MsOLAzA2YE@$4-~tJDV50%{C!; z070&2M>aI^Y)gQOJ-5*L6&+UQzD0+X{4*rHKUe3I(DxU}-(_ftWx@2}h~bY-zjWq! zY`ROa7TIw=^V^I5=y%HI4h@1qh?mp6#!R4^=+OTjK}BI}IvrSiQ4;mz)j$8f%OGIqXZi6e8RWT*9Ko)^?K+iAVwfJZ`8dQY9kzgz$-b1j@gs}+*L zzxc3Tz>_>b?Q^;HAX;`pL(ece_B>(Miguytz;ZGk1|~N;8-0_?0*JJ|I8Tqh(@1y#kfLDbRB1dHaeeX z`OncawyxO2T|txn8*f0Fd%@cr^Cnb)$>?u)M=48ly^uj1@dV`!fE&m5#;|>*Z z-?-@-p4BHlLK>JpY>PMhWV(dMG{8V z`W&@u$XA%D&L{mK;t+J8tUsLLJyy9`IhaWjrUNPHL+|hL85#uIZg7Sq-=3N7Bh@uYHqDIablzBE7n64jV?Bj2G(Wq^Ht zHGrCycH2sJA
E;js%eVrs>F^gT5F#@z8cFwT39e$qg>?<4Z7{pT;i)lbtB$g}NP znvJ4E)2O4Ph3iu_EqqvHshYpS|0yCbW&)4IH5>NOBy%&cB+;|&88l~3u`G{w6f^04 z#3TLWwfv+n<@Vg&_blVdY7iXdn~zS*(;x163|?J&z7FTk!t~vDJaHHKFMNphs(WVB zx%E#){9cg`TCpD9;U+t2J{OAeR^gYg!MJ1y5%Y=p9$=1tnozK)xpxG$&-V@mdy4BRxYG$q*#>W5S;W zf7+LL>qH2qK#(H@_Y4>7n)MV^7|BO$OFS8e2;nirzF&~dRS|g9yovnPe@__9_H1hw z;rD&=bF?sj2wq=a4#~M$hp3qkCv~x@yXQePx$6v`vA4iXip)h!o#fe8 zPmI-3LsBq{CTZ*kV@nT%Ubc1ECa~q)l4sl{G+*`Lz`yVxI=twZtZw6wvrSfyiI6)u z476ghqOkF76DMvoN9DhY07-`c^A5 z3>lH$hg;`x!x@ytgTqAn#qYp5|I#2rpCkX7#}ClsE^8rBfW>}5zFK>j42XUOkna$3_8z&BwtnZu)l1N{!dKrfWSOC9sCIw2ry}$!N(E|8Sm~VKfAW(W= zL)6C>z=#tcaks~bJM<3dzmdY80+QA=6-E?C)JFI({7Qg+UWXrAnQLExg^}@pp#5p2 zuo#6WyqgT!N~X(AO{O%Ytm-SXN#ObA?P^wGF4olPpQO>8d@muUrH_LC?v7uQ;7D=W ziJ~<8!1V`!U@g&kBNfO#%Q75R{|Bnb>M!9~-v1oM{>NeTcd%)2EQYsnKlEEc-v^Y# z55WNakTAuwqY!nTZFggKH(SVdIj>CNQ8zu)tPn`j8?hxH;;|<;3%q)z=P=y^WCA(xaLG~xWj!f0)P6Y_p4NcpZ%t3 z!E@yAbnQPQ#;G?>)WUzkAji!29eSk_Ej$d(#RA=Iq@=5q=9k*EK0X%&u*NKdo5{M- zSc&ioYbvC9w#|W2eT_!5d(?}3>k`oRay%iRytX(c%PN$>aIiP(JjCFdBG1v@Pg zume4>nZMc3u|P|v&<0S^me3n+!p~@={%VqdbVtxBXdsl6PP&uCue~G=~?zoN}=h`)d zIOea$D5N}l-^)<%GE~LZvxS3Bqu**u1a|%YOX&A8bK`wUr3eewPlPx9vmFX=(rCEQKiM#kQ zyls%VJI-TQsext<2S`r(ukYJ3f;AX6noIvA`|5!3?pY9wzS>XzKwp{gq4nRgxy*w1 zqRx7myH6~mjgFt7F-B|09E!(GL2<31FmDrep)nXsw*G4)-Zzjc zn7iiWTK@qtYDAc4pbZ9tNWL@{tW#vduU?QQ9Oh1Q%^S=n3( z%t_k5h`kiv*w9eLeo9Q{A2FvHG|w;Tl>f{^Rd(`T&diZg@%!J7X)pq-#J2{q;QJ_W zA^1_amj7WDcOT8je>V-`ZVYU9M=@;Ue^{j^Yx6=|?X{;+o57wqVm|mhd1RM0kMzPc z`+W(&54dwa{$0vkBRbkU5aPwZrSb6Nsovl)+K;vOq`)jn`KNkYKB3>FEu?>|LbT@3 zNhC14G_AR^Hh>?!R5mZwC+YPqfuO$FuUG0py8eo;{Lvemb-EY}p5jlfyjDl|t1GVb z`pT7hLt{{{!6i*-8t^w&Hsh`<9Tzv@#vJ*Pa{5|T(al>niGh~I0@b)g?|&~AbI8h> zn425O9;XK@m-z#FR!#xFR#odwje%Oax2dv@Y-p*+z6}DwozS_cx5=_C8-$ z&g6j4r#Jh9EzP)A2P!v=C!C&5mu-O~2@u3+!OH8w#zwskeEoRRs~Q_{i&c;waov-& zi!RiWS0m+!n~`$(Vx*k8>Nc*N0N++6>8l#+n`-O)!PRhqC={M}uAyh%84momW#E&_(bC;Gnu{8Uwhw zs9IkFKP~n*RMp@Dqh;*hhH4$%K##ezuSQ5z`*T>lveVyMSrx2XNq5fCHDS1k4!xV5 z6_}b;Jq{O#1+_Z56s@v>Ldd_=k8TK{dv0#2rQ6P+=L8u{6GSjg5W$2?xwNe6oUCea zqwAPjYU_fymXfCjqa&8Nkjqg7QlPzb>@xI;{*Y6|p8xdG@>8zje^wih*~ zL@3gj7)v@5muf%m(1V(baf4PsD{XDUy>xIA0``)?#rjfEhz9XHv8FPh_3!YwCRb^E zl^?zlZDI%|d^c%Y4IDiLe-G^I?G2$Eg^c_wly9Tljna$M_CCrwEYj%gdp$N;lToh5 zc6A=g>DU#oM)?5VUq4Fa$Dk)Xep;D~9RBF1y}fjI=m_wjPr|A>T0(1D!gq%ZOz8yO zDB$QX4f0z+r+HG-JgFHask!Y*cL1h3T9q^*S^ohg)z3=R+liDuRDT2h(x7i8AyD6* zI4d=mp7FUDf2;9Vf%@Uec$krzwjt3-&4?zIrs|&5Y!4(2xWlzRc~)u@s)^sD_$$Zy z>bpsJn47AvPrM_ko!a6<^?$-&IkpHE^q2aQvQSIYGJ*OCe>!%({Bz99qsi?97p0cp zowy-sz3YwvsG|?*MgH6hKk{9S&}(68hKF^UmD-)y?z$s+eNt4}IT`dNpf~X<`=7)F z^fOX3W~A!Tq+i5)VHBOeOSr%$(^AjLfZr(Qm6u=z7HmK{wRzSR(R)q zUJ%KjOlgOL>D3i|6gIZKwEl7Yf^Nkho>^w}>T zq*|Jihh-4!ze&==&kQR+q5ByA3g@8o!O=9sh5-M+|5o>^J00<}(E{^ZS#Fo*OR_v9 z%OkS%I2OdTWT z%Q8onm&x)FlI0;;9+BnOvP{*bd|Bqm@-kUoDa%E& zY>?#|S#FT!&t&;qS#Fo*OS07DhgJ__ZdaK8Wij1u$?FfykXYU|RW7crs|~Ky7h|za z(|EQ&XK9W;wzjEi?8W+6o>a$<aX4Wo31>zk2Fa9oH;^74BTji$jp7sz{Ti z{sup<;w$y*3-Wb&!z3$&l@Tu`dG$~{f6g_fSo1>xXxAryj#$$Kq*y)s-SDq<-1mqD ze52SYEcW{wP}{H!O9)z-5@n#Vy0)cWtf=B>88ag{4gt&%Ra`%Zm-_*J9xp!poZZy2 zxURP9Vp1Jjf^qs(J-DI~-o?^}uk;m7Xk|IC#;*%%y%NhmT=u%0wl~Tpl>vQnE;rOy z737b{Y7vV1ex6NREnea1LGX{Q*s$EhqO)&7&&yQXf=)$AUjr=8D(mQm z;gz&UXu#4mN4tLZ)#7$hpAQ=YtO)x8NUOrL=BuLk@-fn8ZFy=KCy`8 zbtYd6>r=X%uACs<)OYFU_-22dA1m?+ahH6w$`y{L8%;GRCpw2ApO1P5(p$t`wpvSY zNkN}vFg^WBmMVC|!>dxVgg=B9;}6|U8$gLy90NJrIcj%7aWI$mGu&I$DSXqi=vk^% z?Nmwa8=Lw!Z)}R!nnRM<*u#}zd&m+TM4YzBi(z%zO3*$c)|x30O$~gzGH)tttC}0( z#m0u}05(Xt4_B|Kkd{?c=qnJsv~~1XJ1v3!v~A6nZRIA51k5EoCj#3prca`5;N++L zqDnQ-D_E84-cz+sPjeXequsI|%Zj5P|_7ix~n9eS~n{)P0|^XPTjkz*5gjP za!IG|Ta9P$0!gRtS#`%4$pqd2qj&Uq*M2)s(y9S zwMsg5k7_)>v`IR3e`>t`SSRV!y{Wd;E=0?C>6CP*zNJ4lO1h*fo!ckH43H1f-c6ED z-H#g2j)x_kx)(K`9h)Vcx(_v8Ty2$f>K@d1@zN#f)cvPt$FXCdq*M2v#*3@{l1|-s z`c3_WfP<2*Li%rb9Jx;PzY8Z_Cn(jus4C9dq`X10Ufp-9>bqpUy4O_QW2)>>_m_UF z9VjGh9UW>pL4Pa0`G2sH z)7;1x#pn2Ie7OA`XOK13XsaMCrwacMiU0(P;-)H8QUl_Swya5IeQgy~X#`Jv<**>Z z6qnC~Lt{Oi?SE^xej5Re?-MvnNR))?{6v*S60ho2TuHQ+jtAnQ>ecy5tdxnB@(t0b z_G&#t+ig{c$Jlv|I=4~hGgL<(nf3&L?=1Y$S&5Rb&PP=F3rVT!o#jN-)7gu{tMeCC z>asoQNV1jw60LdgKx0w0SLZ#dROdaaUbR>DUm@GikPOxNkt)@B6SXH_JKN6(j`ULJ zTk3pFl}Zjs_@nZMg3Iw>Z@*5Sf2fk)b=yCxJ^!8p6$|laZ{Mv8YE`yQ60rJK?G#*z z2YY*Uo~KIZ{H^4x_Df}Z>PPz2%S&<+M>6Tth(CH({S)v1w@0+}aj?^F1|w!=HnMD^>ds8S49T(h{s>_fcuu%sK%bup{y8Z2!Lid#lj2 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/devices/monitoredqueue.so b/scripts/external_libs/pyzmq-14.5.0/python2/cel59/64bit/zmq/devices/monitoredqueue.so deleted file mode 100644 index 968a3f15bc73963b38fcbc1f7602c5c9599ae53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43936 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ÀTKh@Y8(1UtTj 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/_device.so b/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/_device.so deleted file mode 100644 index 26d9046befc0605363db065a0200cf2d8593da54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29248 zcmd^oYkX8iw(m}$At0n9f<_S8V9=lt5-^&e(KIBm8#@|9P{vo&Bn^q=Wx5-JqDH&h zp-rb?ovr~3V1J-zQ;#^CqLdjwijrD}IM+L4_9?4#tYk^QC9 z%RxClRm$P;*v6x?Vfb5g=~Au!kq@79{kZ@2-@QCLvZ#6T=m)CTy-%`G{U!KQ`ro=; zAEga1A4Rw-{8i&`e&s8NpZM$D>$BeVKC=IYWv4xs_*?czFMpc-%!s@1M0MI{m^Mn= zaN6MN9Z<-)!6=3vgdjuVYtqpF6yrW|2tF^Q;nM^BQ1m38J_Mf;Y5Ls)MGYnAX>j_X z@XcxX+?ob|cN+XnY5F|`Jq*?F^J(Zeq`{8|eklFi4&4mJ|H(A?PtxG8NyEPj^h5Rg za2h@APa}VE8oR%g#!r5hMxN$0{GUvNevhQ9Dp)6>igXBs)bNrT@E!H2SYe;WK7Y2>^v4gV7G(eao1 zT$08vSETWWuhY=ifbq0c=77hi(VH`k{wvbx^MW+}PD(?6JNV~lr)bNs*9S@U6UOIi zM^+EUmoT3bv`#~ipEFvNF-f1wCkNHzhFDKeX8aiKx1(#uCEsa6VyAp-wb=OvT>;3KiRgHn5zrD6+$uH`LuJP7& z_=th8sqsb-E?(oUksKB@`2qodK&xJNX{dRHzuoI@2@U|B)|OR(Dm&`Dwd>mamF?}V z?F6^Cdl$C0H~WZ`fXnLYLhbGTdI>J^2bTof8@Vm9@VWvvPM59mx36q!U8}fVw&Hq! zUC_J8A9M%(&0w*>*A@sh`3Y0q+Sr0|5?{zr6KV-IHYddpeRvnPw>Brcb2qoOLTjQx zvjOI=U{LY7!q*f^a=C1YH_*}sX@e`J_*eScTPiy=FIk{&wYRQewRfeju}Sk*ud8in z_xtLX1bsojcL5EVwY9L_*X;LR>R$^6we7w-|9om^z)V0aXsuUuRsLou-q+OBT89do z_(^3FMU@~xZ<3<&22d|;X{-aMr3;pv>s`>=+~#BElEM{8Dxjhfy1dliL8g(lWI7UL zVW_1p*a**J1o(RwH2CXQ*Z5()0Pvp1W^%L?{2KoP2!!@zfhFtUcFoFiwV^hcNsL=6 znrVr}rSMDiAF3lk29zRYA*Z>NJct|;jQwpSnCxV}FE9v4ZM^QllF*8v7zs&2=4@OM z3MTDHER&q7e8IW~c59*)-k_weYOR;vMY=+tQe|X4ct87-bXVJ;l=6UbwXdQH&R9E8< z1Y6tf)&BPOmR739c-ekS8dqUr2Q&&3hz)BR>!>H1Jy-bIu7IQ`3``YQOT82cGrln> zbaJluymLV;=a8$uUZ8=JionDsy(gVbvW3?C?JWb$(ZKGm6@K>I+Jz;UQ*G-yyv@P_ zjR9}7ud&5TgZ8e#l<~LJd%bn*pu85ZcVH;O&8k5F#sgjqzr!q5`jye6sc{9^6$Dxf z=4yCv57KK9y|yvmIR)o4rl62FA56hFOFm`_elI0Bc#fsud+Kz?YpX=5g1=kRZ%x4$O8TA@{Ldx* z!4&)^NpGg$dnA2U!(ja@J>;a|$4mParr?$SOH%NsN&00e_{~zD z@EtaMt_|O5!_%3VdN$bblNAzWmkn>4UYvr z`7F2LlSlWcZLr~;Noq}Nv*BsatDX)U-hRH)X~WykGd9@pbPlebE*pM=LZaMc!_%Hx zJ)3R#Qxy{BLpJLUfZxPNu21I| z!q4V6@uB;4ej$7zzlo20pUy9YFXA`xQRvh8h43=fW4Oepb4mEQ{3brieLBAo-kxF` zHvIWaAwH^Y_);5wnGHYBhF@;OUtq&G*zgzH@NG7HnGN4z!(U{>ciQmfHv9$~e!dOg zWy4q4@SALSdtBOV!!NYaKV-u%vf;Pb@P-Y))rNQ5@I5yCVjJEFAI>u3je6h7=E1KlL+3z@E-}LkZEmZ_%{SosIuEkya46h)V zLa3!Nd=7vOUUE@b#K zf+^*(bcR17m{J`phv7p6Q|PobhTkBVLZ)@(8@4~e6e_KQ3_nXSg-B~J!%q`Tq0#DL z_;G^g61;`sKN3u#(Av!KZwRK;$?5{U#E37-GGfP#FFPLsPSZLwf>}oYNb5no8}ahx zG+S>n!dttjGMH^%4I>$e3D=;f( z7wMWOzA)EF6h8(bjo3>@yrihd+(~TvPY7oA6&UdaX!%ajf&S{kzG>!fh;g(hbTV2$ zh}LLnV)$rgzK8)79WY}1uik;mm|_i{v9CeahEX$jYbCh5u5?{d72D-n>W;nQs&&V{ zS!yI^zOclIeU8|aZ}e8=WzkURB}cvF(u;K+hpHaLuN)(~&l!1(;L_2dK5HAj#aVOi z*ryMJI4d;Ix*a9@HR8cMv{{&AlrG8%O)*^<2sCrDCw9z;*XHFIGxi(Xj}3FjYM;^i z#<;`1S?>5q8tD#q_+rf&{Sa*WW*hNgl2M6K`lU1S6*HGi$C`(sf@qI3dWg{B9a%E(Qm(*ko%LNJIa7@%~KWg*<&T z2a6V5VR|LgG3FP?1=Hbu!Qf&g*NaAceO{LN73w^(&y3i1*l0YQpzmTM;ekF9wa`~0 zn3wB`eQ3_*fd#KJ;vQgQrgaN>2s7A9%oD{Yvj1!+R&mG13w2>@^F}lb@9yt|XFJvq zHc>nUluSmRc9pE3Thv3^O)-RZ1Lm9&cV!tDIF_NcGkO~Og#s-v^&j4ufAzJlYh2g5 zu5)>JxN4Wee~!a{a?sgr)LH4GENArRP$cG6&e8ImEN3LaPy;Q0M=u~Ly}9tD`25`d zp4fc6PB4MJAoEroPT&6u&6&94c_!5Qja(yoz!{wgKkJ)fB+9nY^oqf+%q3rw;n_8U zyR0wKhuH}fEa{9|+@qtKm?VlHrZ$)@zy7Mf-`b0+r@&2eDHBbM*fY$@8Tma`^^Y)O zZIEn1mM6Zs6PT*#d!cbOC-)h#Pt5()D7K?7073IuQ2S^miqT9X+IK+i>i>%v(^vB# zPF#*DbY9b8}Ul`#HSP> zG7$j6J98)qz%Vmiot?6Yh84^n;s`cgqZ z$3~B7X~dp3wtsZ7k+Ii^?J{2aF2wC8+{5knQTs#GzO(GB3LVqtEF)a@L)4+m*!#gT z=>PHab`3g0D{N+T_}z88jqUFaFCFh(e|crJ=a$;aqCI`%oKrf9?=9z7 zB#ey8((N}-UyvA{5!=4qnv${mrDI0jZVU&_;$xhp&)&S>73%@f`U6EhrO!J5ttaEi z=R2HJDl`ppav66P9ql_bAny|4>{v5I*h7@*)Pm!U_?0)94wM!M|dh&Qc5wcEu`4j+q4lnz6gh7GZq&OK_SI>oxDB$rwH-BlJ5X zzJwNq7@~B4O<^2G-_NMcJ*>_F`Ha{#c}I*`Q{FKM3KuT^AJBTy$L6C)*{z6kZqZTV zy@I?6Gbr{<@NDV>gNT_%{2GecO^8O}ow++!cFDzvJdORuoJ6C6e?EtCj4a`C7;+rt z=%eq^6#GIRcu-T`ek1m+Csv<#&;!79$NuiYG(O^qt%szy9nQs+tT*Drr{_ayMl6!I zA7xRGJNBw8_Pn_^DZDfC2ov<0XOQ?1+a2o_LB1;5?~G93r|4NJS~w$znS7Tg1`|MO z=0*}9K@ZB@VT8}la7Mlcg*!YOZ`3EkP4IFW^wG|L2iWP1e1xJh`Y~|2Gva`pp3)=1 zLX7@Ia?nKaKIAr@*t(i6WwkMN%OZ}ad~1j4d&$(?JMdxU;dmI>e%OKW4(zFA(z<)ygeR}tFWKM zzFWU$piTplO z(<Q@*H&!sja`f+fi5pG5VK%Q_--ZGk0 z%RTY>yao^6+B`^(Iy~_w^Ex&3blXlE5h4$I;mD566E618HKRa|cAPY_#VJcL%=sis z6jNxIGjgLaIpUfp_NkeV8h7lOs_4hgNFKE2iI2VZVjYF!Iuu2FV6US^{S}z3g=B(! z4`xmY>0kFi-N;Umtk4HsY)qax5qfZk3oYNEcNI1|*)$R>1JS^8yV?8wcttLk>UusT%5o^^+<3^xM3d;6i`RT)-Q#z&Q< z$J}uQj7)d@@+^0(CM)!kd;5pOUEy6BRT=28_zxJqD>mC5^RnTsOvoqK6B?m2ItK`M zd?Cj5C0WS&0bn)17)$f$8-a{KDtKggS2;%Gt~+XM|6sUT^*3phXPlAyku9Rri_obN zb6kLe#*f09O<|vnc(bC15&uN_GfY+r{+M-NV-JUAG6!2XPwbPJg&FrLs9{)Z8YrI9 zh9kB3op4fTjUsZY-*v#Mrrz()s5egv%%LA#b8Q z6SHc65k}52a~BPh7Mw05l(ZX(LRjR=v>C~Tcmulc^=41&;f;`nLpxsd|EsyGI8`X*JT+pHofTv4F6N;`<>c&GM#C zY3!n>;0Pm}pAo!<;4H9~@VNw2R}vnBkswPJc?6je%P=c16_16M@qOJkeS$tm;eU$t zH>m+$v=FW3!W61B!XU+nUl)S^OCbwBNeccSpCHc8PtN=oh-)kb{TGPY1PUa5JkdRcHZ`$~lMi`aJp$3AC- zW&zLt56Nq>EIOla(OWWHSuX&zj~}|^lO-{)c-1yyv`b;DIsQ7EBqQI57n&`w4ki4H zdBQk;NOg(gYMfq>?Y4Xj6duO^Zx`?Zv$$k9`gNg7YYuL?u_l@Zn`NSKwr2@04Qv@!}1X zM#mv}Qfz1B3QP-<=ou_b&PX|+%A)r;@KXMRwm(K&^E&EUt{LM%W8Msrf#BHwHzMrq zg`)b+2LzszFX4aKwz^~6t70a3+VDKkBC5U4``k~>lR-|I34&8FBv!@iu%`-+bcbi= zWd!GwK4IX&Ns~vUqxq!dLRvXXXyq)YmDBLR1FA8fmSL84QeSSGlgRvN0eoa&9VPIm zq(@u+v)*ohWF`-PBnSOWaH>1D)B2PgQq7ObqK~ah*f)f~6dfQ;DKJ$20HreeC?mWp z&)S5>=2@g2#NjUD#Lqyyq;!T&h=UhtTx2}%*k5c3PWUjAgjs)^2{T6bCFiXz6trOd zZOYS;r*O3UHZ!=~2!A^anQNl#ZJjj#iMaxcXZJnB03^oV0(+q9Ur{^`chk(DAen=q z;JGEFUMRJml-iV6P3m1n>IKK04RGm&SQ;wwbj(=%-Gs?b!43|`QOdpxaz?sI8tnUx zy1keqrF)&xXMqVHM`HdOS53Z_a%OasOC9PQ7=8tLJf$B8M;Y;(aeQ+;)K*n`IGF9` zIbM3)8SSPq#3x_HP0K!~>@@baxgcpZXJjHM+~G=!>W;c|bj@8_iGaQyT|R|8POE}8 zY6Uqv@|59F11gcES`Uz1V3*g&kt7mC9Xk6H^+G2PbOsKt4sgX>ef@N*EitdKNPX6m zurKtU5zKeqSxHicVTqH-63%El)eTY}D=xl(H3<8CXjYq|IZ`wviPUxxW@o4YQ}~zY zA0+PZCmH4s&>7D`tU}Jny{wJmdO=`bI8d4EjI3Zqe3DTWJ$lR8V6#wCoh+!F5kIvi za}sAzIqzD+{9sONCM4!Pt26QwsLgayBW20Rc|0CR?b)n|SyO}}sxSmIOL3nBn(jNn z(At0`qAGrKE^o@#0$mjk<+!nGyTc>!my#epg(jN$2&qHHn$Zxz6T2z*akAf5vX#O1 z4fkXs2=2&ohll57U>d!g%jsD1ltyd?jrgpMGazStsfJ^wa8HIfXX*s*f=uUK+sO1d zop~E+9G%X9EPQ=#2Ko*z1g0ns7j5gl9^jkYoA>)qRm-8~E>ic@k zFFxe4I3u?~_HBnSzRDublAVzk(L2-<94$7TdueP4e^@`UI7WU=U}Eg^Iu&Ifpm?0l zuHnIlkjla54D^kfM_~Z-GW0?j4&{q|KT|_8ON1hwQO4hf;J#}vX=Ct;kSRRBADb)Q z3PhhG&T+?Y@Ktn=ZCetKrJ$iR zU1V0pKPf=>F^gt>5CeeGVn4(XyTjD*YHqj$D|m<$vSA|F&IA<{auup*0U5l0$nzAj zLFUB-XZnNIj}FAJN6ti_V*P*{K^CNvNDeWv;wy6~#VK?~yGBst{3g>GnTyfjZCH@b z-sVCCPwWHpbQ;``C?qDv&Lh<&%5FmOIDNxwUVel`q&38#kdBq3o>mUt<_2k-yFRZC zYe)x{=yLSACf^hH>z;Ts#yM*#W!aR8eC9y6rEdktx;grP>x@3dm^Xu`$Q1yn1CWxb zcXHj^&d380z#YE@>jkPi8Msb2r@*S@RyvsJM(ho&!RFP#;ixpW!~EMJ#Hw!q0y`Z= z_!!ouRbU-G(6QdAJ8tfM52Tb%=EH}(C!w#$uK;U|{i4Y{_FGYyS0U$wWrl+Wd4@ao zwv~rhT5%7eJx#}}Mu9p$>jvb|IEf)4KgEt!5Oxd*o3Luzv@WQIuaJZB_0me@M(16yqP45Y)@Vndk|x+qzXVLdKegEw=}7qSiZ zj6Xmd4!6#T$@93lj+=jJo+PMvK^#Gx!zI{DP^9AE7uikZb>Es#{B=Nr-Z4bSCnDdR zfj&zYV3~b2i+tr1oT-?HMbv}Zoss_uG~|O|uN&Bq^B^kG!C5|CJMw&|ggSCnxCN|-bUqDl^$wUMva#a-OE+kyGd~z|I zMV-DB44GSYpGekSicYM_n9;WRm5dyHyF}hNkXJq|Y_jg4)Cdk9r;dgYamNUx^Pbpu z!X}HzCV%G%Pc}J(H?x?|!lWJd!97Im-$^5h7w-lIoy&BJ6B}0Fe42D@lDj}8O&G-M zQ{*D%bmbS2;bGRO$bS6ObeM&*pJ%{;L;~NXAIQ#kB0~TgU$eQ%fuvPN;wS=o7s|~* z7aXN9xj8v^M&5=uc4v@L#z~_f2Y%1G9(ofBX?SOV{|h5oA@9$kA$=eeLJ4Dh!aksc zm+r-zd4@Wk!U#IhNOng5ZWAhbfZO+*&Eot5X}L2pkD>sp5l05$|mu_DRUkoK%NGt0%Qh>(}$F}wzUazycKI!DvIGEMGo`1?CQb&1R)_NWSwWp)KF3ZRD1MB@vsz)$<8BP)H z>2gN)k$c8xQC?0lJgW0*=lG8)fD^?(Jc(*c%;9fyRQ)}^0KqE688!W@eOjA>C(*j( zjMk%0WzPqk(06Z&=A2P;+eP%%9c9#W(LWu;QARxyow4E3%o%B? zI213QCbApfPFb_yzIq>Ngl|H5QOeGV|R3}UUT$KffAUucbj z?A>1S7IIeUEi{YrC_RC??uSUUc05J%K0d1$-Ebp_k0=8Nu>APK!{#GZY&Y_eUUGt~ z*$m1|2)fq4LeJ=^`!Ce%iRcvvyEJjJ>8E`+;%#t_5#587lMF%;IZ92WV-4lK9jKO` z#RoEU1Z?wg{-&DTyze1|m!dt`AQv6zK0@77;Gmp0%(FJSjvbnP<{vWRb07~4Tt%uW zfT}#ajljx>Z3Iuk5Wae2*XJn>P4HCaZJ(IrSHmUP*4yPIKLc*%iMeo$y$*T8!Ym`c zsT1PyUi4+Wc;aQ3O-9U!pJLxTQ~*VLhaZ80673i0n+Mt%^uLVYgoqk$$i;^0Jyrs~ z9%6kyJfKgq(Y*l4B8QYp*dEqY_=dUjfDn_u?GH^t-1_lpI?a#6a(=w`2AKwx-CqxG zElz{W?k74D$(#pH2x>&@j9d;)_dUk~)0s6BoGLT|u?10-Qg~P@$=G@y&cxP(yLA6u z_2uE6H8cr7wpQ{`@rCH?-Gu{r$9vYR=+lGa4&J~{<}VE|;SH=2&Vc9P zqzaD5yC7C7%*)DT#}jHk^g3JA9aFa00mrL~b>vpX8g!mz@rODg2Pd{(a>{tws}sNH zc>fD1a=ep3QMAv4FRx=SatFfU@q3A9r1yal%OL%nJXM%1fx{j*FDJc>daGz;|}6 ziEjFrx~v$fDT+>`U_*FDL{$l$wV|1?0`FJ$BYQO0!|Py$PiR$V1BuPuGgP-+)a^r^ z`R0Ds%7CCD=)&>fsqF0iIZy`{gD+nrE^uHTN;fV1Dj|eh!oHjqTB~6@c)`QeO3X%D z)#srH>Hks_&tMdNk9}Wxrc;;*Djev|8SMo*21;&Z>zNW!>nnH#&53hu62Xb49>?HC zbnSkLbVcD-=xPM2gnpk>6=K$(1Ald6jQHXJG1w0etHPRrL(mKaHzaeM4~3?vb$?)h z%GG#q1O6tWT{CHp4{&WG;@?cUW0%7779!*!T-rk3BM=pycTMj1JnwR#@UxtoNpVLp zANyY(7EX{ma+<~g@ zKdLsQOQ^L5ff4rIgV}1e4-zIq6M8&EhX_&N*k0XZ6jltVi7GzsK2c$%`K@1JmA3EKUA6eCt^kX^ zYb%mm?J?w%S~o(OhA+BqJ6woKP2ane5BlvxK27x=)Ab5;Hj@UJnD80xGeC$8bUQak z{Z!OD|6Gw*T~d)(?uV#eXCyDB>5l)@=^MUf)Fx3j6-j>4QS?h;9m=!ioW7p=Ok`amnchshxu``w*c3VrTTc;6#%eytpN#s z>0`bIDkyZri#+IATWKk$!wx6)l$iVw;J%si`>ps*S>{1ekHzjkQD3(mv}r=bl`Dn7;K!)W@(5f+%Rl$s#B$Il-Ie)%v4-)$pVDcWbAPU>OT ztmTfzK`ZFtEbhorh=K$h+l!9CY%2;n-NJkE{dhMoPRco%n^TYi9mxeQdysOnoV)Qt za$ZPsa(hUWHAv3iQIqs?uGy>Pd=iAt2;J@kqc~}^j-L>qc#M4I@oIdSZb~(IQ2&OG zospMVdt0+WVg6FBn2tEt{VUZaihs=BP)3DdR8EYvB%_r~?6EPbO){$Cx^aThYQbnK zilRM_H_&u_JV{x|l+OZ*E*A>QFEJ8O(vJkpt|VnPQ{FBpi5W)uyr9&Ha%Gb8Fy^Az z%jhjW;a7r@ zS1{USV|0&Tln{*0l#Iwe#3(z-=v=(<;%<(%wJzb-jzyxiISFF$x8nFxDL$cynISef zX44y2OvqzWsxO|(_0`z9zhOFLhi^d}Lh`@j4d;#`cZ=c!28r({1O#xm-`u6yvPf_M*rrl{IIck6al1b z+xgu7LbUJe=I?dOEM&ynzGI_~eSm8rCQi{)+w=DY+YF{yMie(8hS~UM1Kd_Kz~CCL zF8dc^zhAIlI8gfy7IyQZ=ZQnvDkAxtAUR`zrm)Y43IJ;{2RDr$d3wZ)>gifc*h)-X{UpxPOtb~e|N4A%QdT+#1Rs+}xq zhr>x-Pa-kUtX@%jKGmKkYCnUqTu&mZYu3Y}_Ef5!Bx>oO7Py|oGOAf|QF|P7Xxn&E zyPIpLQf;%SeT!;O61Be>sJ%?oK1H?TMD1Lbc_Otf61Bgk+7m_Xgn`aT;%Kc#R*n*@lV2V!;aQO7Yg}WbiDgl`P=ozfZp!EA=F5B2jSk1+42^U+2RtA z+42sMf;w$_K+m5Zm^ZzChUN?EO@3b>NH5K;DC>MJEv-Slk+1&ITX4OKKD}Vh+`@oX z)ffoi8X}$UjnP~Ao*`{zdn-D}Z62~OjT@YW7KMd@vq&OhR`17kNf1h0#!}~N3x;sv zP8}}ZY4Udzv~{3)Yikp~5OaPRVgP|w+-ef!+UfNL)9Wz~8fSs*yFiSyK;3nM8%IKo zO+nm=f@`1Ddw>Cw5-&@b;ZQt8R~lcDL$WDhwFNX@+y^v7zjd+-?x3N==>_MaGgt(J z#o(ccmRW?;^I3sHMKhQfAGn?-!hbH9@+j zN?+L;YN^L3jL!x`KPmA`(b-t1e49_t(H za50m<0vBDi6HMmv1shj1HZ=yOr(>$7MCmZD;{U6%Vfa z2{q%QCq3yS)Rws8{--(&mYgf!-_ZsDgAwx2)K|fa25C$H`7^i%b0E}`Y_rOunvc488}PGo$OE21oY-mAgHhK>jA!;D3Z&G}nB3HQ%(O z=9_luQjZ5}#g$$`eQhHy_X!1cTw+8H&;nZ99ZN!>c3)$_Kacv<=O#slAJD~GG;egY zq}!#W_*!EN?&)f&^Xq&gfKi_BxI)L-nWXafcZQ zz3p|xYA8M;4hTNN|NV5+nvU5_H-qVza8QD{w~6LK5y#5~YvcXxk3{Z?ik%DpHP&-V9I#;74{ z*^imeG-uF=@=mtS<1(1MW2ZLdb{OUW317yC4JMT-iC{%*)~N{WZpVDJ8J=GW&*Vnf7Q^@bQ?e8-554o_lucw}vMR|e5%?gM$n z2?2aoo_{OsI2hgD|liQ$#m`5PS-*@btE zsLU=2k6e_!eAwBU*(I**LRWVF{A?YRXfa=@gY~!({2H*&zKlAk$=27S_FTN)4}2AT zy7tRlNS^Xbt{ z4@ECLq1yJ&`lh=px4@S+q8aJ?j?D0|7HETPLUubB^*Rn*wv#-INp)9eFDEs!_Kt(n zIDzP{0o`t#|4|A@cG>8-F1sx;{EiV!_e17L_K1M);G3`q<(|TRiQyX^muGhhd&Joi zsKZ0!dKC1_5BK+d>R~yGf{HXgsPnEE`S8bAn<@Co5 z?c!1QtI<5CN7aAvU4JXVN2K7gTkRn2G4PN}(NhRtpod(6o+l)svU#pRYckxyadgJW zW?GJqVR1wqC&};B`c&@xam|p*cY(;<&qwIRECuuj!5_yQnAYG$+A3CmgmWGp)9YEwq-{HZJ- zl;xjgxl5L>%JKtQ9+l;Y(`Em%JX4nE$#S7AuaM%kyNpP?lH7a-}TS$np+Z{#2F^%JR>$+$GCbW%+?DkIHg{F8i0I zfWH4J(`W2r>M5V5ol;@d<=BzZ&7S&7d5LSm_Zv!#Aj}tqmv$#Jb+zf8smq<`jM1ZY zJh;gg+clqlqaT;(-XQxZ;41zoC;+Yv+Z<%i_4DTGxJMJ2+^o3;bGVvVEDiWMyW?C{ zaIHqR-R#GmpaG_um3$bq38v4}^DkdoxwLYozVNb|D_u1el{GWs>?EgI#{U6u1)L&96J-?N&74|g^_N1ZQLA3pz zFKDh+xS@8i8RdCOt-rk)2Mw4P+ErDTiwk|dUTlJKO7jn&*}hP)b#|bA)vQ3Be^y{^ zW6R2R->gueeYU@O#q3Z3(`I%H`7?HGh1~JsOm%A!X*xQ*xoWqfY0I z`s{;8K2znlsq&RbI(3g} zI{9)Xow~nN?GsY@HAp&jZ|UeHfqaqnNJXcE7cE$TWf}iRq8a+RxGj5*KBur~PEk=| zsh(eh^GyTC?u?&RG6NR`1{!dhh?8Bd00%+-f>kY{0y@L4pVe5eF@(d?2CbleT}xnH zvnX*7Ki9|=Xb|8E@KL~B3ih}HTr0ql7_GMHH1^-a zli$*uQTr_V3Wy$6()ob>8EyygPU-AX?1@x+wGUKfxujSAmpb3`QBN|c_G+J~$}Mt2 zQ@=!`+N=FrA#lW7wO9L2RjPd^Ncd6vIt7>Dh4y@^z1rug@_tFEXV+^@kj5<{;B_;w|j`l_N4aT zg*toth93xGRUTH1B@flVVtFrKvhk<4lS-co z{}D7KziMB2tqut1J^y6;{{*eQy*d{w`6t`&M0+xk>R+8lsQmx&@kb^tG%vPXlI7Z|K5>Te7|e|84!R z>holj-|jtxxH|j~;QzGBH$VQ}UvFFf@X>2Nobb>+XY9Ia(Q!}5Kg;R={iivoPJ0b= z9pc(?^3dv^z&H|9=%{LhAP2+er=eenc|FY0-oEuh;RoXrPJ=%IlX5UV{|k8zhCdD+ zdF;*{<<2zp6Vmj1Clr1#Ij2CLgW=ChqlY)ku7M5@*6#;t^!9QZ`j6AtPk$Qvk!i*o2K~Y0d^ipMx-|NEE{z`kmZsmXH1^z` zMsF9T;lDNw{=GE%aix)eX&U{Xmqz}h)5xEnMxHqMA5706cX{wX^=eGh?-yurFg_c> z;9z$3UK;$yG~+!#jouzfgMTIsK9oj37p7V7zez)XavC{v)A+F;rx|Z?8aaQShX3nn z=JCcf^o42UIX?}4VH!T?rjhfoH1u^CuLu8AuW!=m^W!x3&kgio_VaogK085wFgq*; z{lWO$l4e|+)6lQPfDXpzpK0*9;D0cAJZbtZ1s@Oor(QGC=)p*155YA3ew2oOE;>9Z zwNt=r)AakNH1l;-8vJu<Dw3`H<=gR%%Q2c0-=TO(0 zW<`Fzj+7n-{xDab%k>LIk73I7nC6qpKNq!!A0&=CO7Npyp6gWm#Ai*-(w4T?nqa7| zBUDr4s%dI%3b|^Qpm5dr=2z7;1Udpsn}VT0$NZ}4&26oL`E`q%1FG)eH8u5}b!1T2 z+;lAnXI))0S96%&To()mg0AXim7Vo93+tN0fy$1KwhkgXI%;OLb+pul0L%`zEDm(k z_*xx+zpZttZa9Bg`;c}Q)YpeQIsy%v&AdQpUZ|r<$l0pK8`O<2SbRmGK2$R^5b}ir zEg+v>*B%Tv2Z*U|Yih+Hbr*BPt)ZrtL@$b8&5Vw=mIP~GOM4qsrV2DmGWUi;Kf*S>Oz5<=^TxW zeMU!JOQ2?U;2JQP-%(c|n8tPnrUZ!TZ4Gu^RiFh*u4`^?t4D=H+Js6;QDqZQ`xjgt z=vdO+c8xs&P_`Oh5VKYT6R2KRGrciTf92c&v>R+{YxOs^z%&vAoepl_qPjXDXf?s} zmceXV><;FK+o5TWg{)`8k|1Zeo*a`yO%F62}4vss+A(+=8Wb8R ztqpi4>Np{)79Lg<=x9wcM+4_zD*`g^`7=u4Iog+X*0d;#Yzo%2)HSu%aDHkQ!!ba$ zH8u6iU@fgRpj1<)%%K|9V5`)gaDQ5?xlQ$rwnn)&=XZqdwMp>eKt~%SRZEo?uWc)7 z#aPsEYnWqtTV1Pp`-0@=YHnH#F$;rjg=g@-BgETc-nNUplMBxlOkt7WLgEdH5xAar zXSr$u4RxV9C}D9hs5UI1U{3iL%=OLm&7M?P=$h&GO`Bdbx$w-y-Q>cO#9k*i2$=rQ z3mf|Xr|Y};|2xcw^2l&G|EcyFu1we65(6ms$fl+-%+9>3ap7Z{4sn6zZNR+jyqKLQ zsy$ud2Xx-d#(Om0W#`2dnahSf|KkyiO}|mc69p;wbu(1M(iHrP+f@7V6#On7-xw+Q z-5Ot;g7@5|_%x>AKe}DvSEb;KG<{DBen8W&OTkxb`t>RJ+@C1^yHfCrH2v-re4(ay ztyb-9z2$29>=b;trY}gr*J}Er6ns?ESEt|`HT|L#{Esz#X9~Vl)2~Ru-=*o-q~Lex zd0Cr+zhBeuNWr&j{yS6feVTqC1>dRZ52WA^zeDLU@25lcxkA%>Qt&5g`tlU~0o&eE z@CBN_F$KR$^KVbVmuvc-6nu}SU!8())b#69@T)a_Ukd&TO}{$@zfQ|W#>0Lh`s<%fpy(a~~Q_~lu;Gfd;MhbqHrms%HZ_@Pb zDR|o-cBbGrYx>nG_|d^)Z9hDaf`3cX=jwB=?cdgD z{&^|*_ceWK3Vyw&FHgY_X!_a|e1X1 z9tYkY8!HPOcx<$ZtH^;LmB6}Or4Ia|4t%)-|2+rZaNv)3;Hw?@6CC(O4*baue60hY z@4z=Y@b;F^>UIZyqJzHEfiHC6S2*xR4*V(yez61J%gyb;HNq8>m7Il_(C=CZ5 z0cql@cHnaoSeI*&1Fs+1N^PwJ&zzQhH9GKz*+`V_4!kq(+3CO^;hNS2;MY0u$2#!q9r)uM_&x{z`wsjL2j1hr?{wf# zbl`V6@FzL&yB+v(4!r5WpW?s|IPj-B@CO|D0tepp-yVTzQ{x@@YzO`{2R_$%kpn;3fiHF7&v4+&9r!aHc*B8r9z3fZ__G}JiyZh;2fo&U zKgWS@bl}f*;M*PeG6%lXf&YO6zruk(&w*d%z?VDlJr4YI2Y$5!U*W*7ao{T*__Yqa z;lQtR;C&AKdI#R`!1p=uRSx_P2Y$8#zte%gz=7Z8z*jr)yB&BwbFeSdfuC<9Q4Top z3mo_Z4*Z1hY5z_?pY6b3-6xdej&LK1tlfjS#*HG3rzI|H zr@)znxiwjR0)K@r`1Xd&S|{-5gt--2YXsgym?4cFVs?BN__;tbz z&8%91Um(no%&HdnS;C_TmkYdsFhek_NZ>~aa|^RP0zW`_4B=dX?zi+vUOR=g2ewOfQgv$lq zK=^dRMFKxcm|KeF5%>YZ6A9-Ed^cfkEtX5*pAqJkVh#LL=AUp8;oSoNh%mPnYp1|B z5$2X+^$C0};WG%Y6S#vgw-9TMz*i9F)?xJsyqGYz3~PnJ7ZYaaY_$tKmoT>ut5)Dy zgc(9x)dEi=%q_$!7x)~)45h6ifhQB@R$_SsK8-N95Gz;UlL&L`uv`KkLzr8JHSo2} zKjCu1y9FLam?62fQ{YU((+Kwgo@c~nW*gD3jr}Xu0_SqA$OvT{gCni`aBsxQYw3Ni zGrHFIuricmPKD7K@v+ar3HKib{A$5pWOhLq;MW1qCWaAf2j4Bm{*^Z0@IpAWhn9F; z{@9E>BVIBE{@RGXX2eR1`^?A5cJRpcx~Tsoa~5V99K%PUbt_t< zWi>mAm70^#XYsp6bk`+Y7R;Mt(tm&wy@uK$I{c@M>DL&PE0hbixkmlY=vHIOv!V0) z^MQ6{pr6oT=6=eqs&8i`+5Vq^(LH7DI)CN(*ZY?Oq9EQ4! zFNvC$K@e}Xc^^lkBh^8RrNQ4TkoDT=OBvOJiS<(B~&eqK_RiD_iH zT*+cY|7Aq?&%%bDmS7P`PqYWi;Nh`{>vN6ve{hPTK-k%Ekzu4wpa+&wiElYZg zcve9NM^$zViUr2_14i^iqw7GumoQwqH^9G}^hsry5;ln^4CQeHa>z{-3S$xXd`z zZ#F{Xmu<`H0b#}$TbA%Dbe|Bx@Lkw~%X&cQ3Y`GqW@_P%Sb+A|0u5e+J1?^?1Osa> zK9=-&qXW?aZ?2v%jZ;f_uVkRviSM_!`&yWaN)Y)?25RNQ8{Jv z_2Z_;hi61LZ?;az*zwu{qkad5gJ!YO?kO)^zsno#1JUw#i~FX$;QnP_#=sX_+$U7H zT#!@Bn7epi|6d&P#a|?!Vbe*0NKJsA31;fg{WQ)Fp(HgOmcQFgad(DOe3G2-(-p3AZ`$}WBhE8Kgp(Bl`X~ZtghrG@C zxinqcmvSatqhdei*NRd2C5+s?7$c9D?51Y0uy^kt9PEEw6p);6$ODUN&fkT#?O; zZq`$Li0zARcSrUCS=Bx0j{F!mTteei3wPvWA>ZbY4$9&*UxLDo*nA8UzP0PL40q%! zQ24qg;f{S8-S39xaM1f!JP2@wJF*8wW%pj-Jnl#qvQD4`_sY-drsHFaKxxF6=jT>McN3-K8c^CnEMXc<2z!lNY;i@a5 z-2a2ZFCLGfJ$c6fKP1fsV!Jb&l}PA zY3-B$j^S}X*cuvL5v^U$HFY@#BWtPM=-wL|X>_%?GC~u$s1|Wi)%s%%`Hg1z(qy;e+G%ZT`#fstl_tV^8Ij1HKp>My4+| zC)*dDn;m}5xA||wycBOvtDA7mm=~JsAjJYzD@)pEG1# z1lV3*g5^5;r$Vaz4$R9j8ejcBWAjJD%`s4xOv+Ywn+WvmlcNCf<1_t%W6;88fZPjL?qKg7SA z^zYbozUI2+zEdDUacu1haOOg&^2f#vyVT?I#g5F6P0Q=*%ZN_H-ZXaqB_7w*%pWc+ zejO`v@J(2dFE%{Ct1&NwZnzkMDOU|BFNMKj>3Fay6(FhsC>6!8C$Lr*G-Y1?IV452 zb5ilU{hOhjg|i?43^&^xjv6dhth($_4{GnhsxCnH*uLhF2n+he&#-;PWcx~vZvl7b z0;3zsTaHa*dqsX82Ib;SE^pkC$>y@pmKW^Zk>5!*B4t$PN%hlg zKQ-$lseXt+7pupm!(JVn2${hkV>MxT9p76VMD=*m@ClGoP^u z%1*Y}_j|lc zxKHa9fX?w_LL~E|*11FxMwC6vtYy`UWVDS~k$F5!2o}&iOBQg};3Ap3Ra~iQN^peeiWUq(D8}V?y5Q=0A zlVS`@i19W|puZOkO}Cchf#m!+V}vgy&eTC>B3kJBcoEkwjJ~WbKtW5^iM-HcLXGao zLM&5iXe<1cJ5mm)viJkpn7$HoE;|`*%~o2Y-ct_;jd?v(2m}V|j(kSK?b|VNgXR+o zFTv^C!XT8N=ZkKxikh_i;rYP9GrjF+F!HJS)?V(Rldv~!4TV+IaCuet2ceO^t_k@W zp=q377~IgH(yzkx0=mK?I>J&$7UhgA3_q4_HEduJR{aY0<)e>4WDJAr|7|kPAb1Do z)e#>qciJN&w}0%>gWeiC(HDKr`jiXAUaytKd#&@uRwL}jRs1e7Q-EQ45lY(#4>7v7 zr)1TZ%euZu1Nvxee&xaK8l2IhWs(J_N>c7j@kA$ycmuh?5Ee7idW?`P@{h0pf zR&ysh?mB=|3}2q_ez$WROa*KCJ0`g6Ux&IQy@*$D{MWzA<{sjX+y%pwWP^F0rDqP& z!|FpQUe^421bT>#;k*#YKx<>C0b@krHOdNbXFkZyo+gfC)%j>6fluU^;cQ)Ul(Zf+ zmn06W?no{fca_5Ne~2u&I!V2RJEQ(z=EG2zFoOW=F(@5QZ<^=93{S@<_a69CoamoS z23vN=bAa~6Mi|le3YixN%!mG-$og+Wx)&0kyu8>+e@;cK-KodccSUGw?tFv-5BrXXg_` zW~Y*~b0;urc7B9AbBt2F1ogj#LM7IAM_%O6VkK?Te80IJakD7xId|k!s6k=>CWq8rG>Q+17P8<@^I@I{F4s*3(C zF-Mg!f+p#O$LSHcL!fLvjdP&t_XAkw#xt`!XJwNvhJ7%}(R1Kw)H0AmfXb=P=EaU}YLYAQg>v(G~+F#zv_ zn3zfz%iRrev?{mZcGIEwFh4Vs(mWzstfUZG8FL`gluD@PDKda?IIr2JWwt z3L&+-Tj-Gj_eZxMOzrn22WeOP;Rkp^@^hoL=cj+IKXzrFgb_!fi4nUp*VjcWQXfP2 z^G#SUE;IIF((0aoq4=XsIB{R);f(lWYgT{;UdkQe7hrL4e`q!qYV0uQ&iB7SP0e)Q zItmm#S;0Q_fgO?Yr{2Lg{8%FhMz-TH%pDOfQdSL;T3j*RKV@bumeAyn0B+oz)SGgw z);&O*pM0Q%<)RB8i?#7)71l<)R4U&#uUzNoqJ?IAq&AwCcn%}&Gly2Jld zo1#a96U*h|?kI(FaA1ysBuU zhpXF&t)^+oruQLkU|Mth-!iQkK+&{*3JM&)qsXhuwg&N-Zv4HrtZfO)+9%5)G)b+h z4`eK|s_1v#1i0}=j@h{#%z}qDfASZRS6YisRL}!wUZynIW#UjX$;9%U)7K z?-Vb)9Art+%#q;M-6!;Vrq6@A`?u&J3<{~~wRN;j34O0MgOl=OyMsz(#kgOcPmgpu zu{ltKnntM;bG8<;`Y~1?NiETfqfrRC@r~7@c7X<15jZ|&CRrB;aO&mGBxja5Zw!qr>=8=Eo2#$Hl3 zw%7M98~Y1Tw6Py)8x!0527yGvytXFHYj3DXV!Q6&Fb;$ntE9Je7r>2E9Qsk4>8BXD zd5)4*o`;@-zTmDdC{Idj~xJv4#f^!Y;tWv}fH z$HtElnJ!U7Fu$MDLWLA?brhGNZv7d48kW_CCxO zCoVp4S_L9^q!e}CeQ;_GVJvL(n|H;o8IX1_z+B>qBhcR7a-2jqRFW-{Se+EK_+4uS z1nDUrv`CmZ9~)+n?VE zw*jYuP13+~AekAvD`uZ?G{y!!wIaVAQ79%b*P`#hV3oqc)(HNUQ63 z7hN!V$@WSSUm+T-uJy;-8~w3HJk>%xIX{0dpiNJAR zXgH^Y6Q895Tb_wyB@g5H=*+I2g&ufdK!Rv}r( zzh{y;);$)~8ZW&Wye*dE6s)ss+QQVV=gVREk$M1FT8(nJc>^mDic(H`I{+T_R^=hc zW1Lm0{WW_pwIASKz#JWQOV0b)>(s0^;p}BMw)b4d zu-0DthSquu8`9~T1dx)z&>_z>${p{(GPiC-4FBr|j-p2PZO zl1`3GL*=<4DUTk%T@Nb~kLB*}01dI7))mh2i_?w1YSRm`6;I0Vi-n;-9DJ$3g*Zo| zwEA(RNjyim0QKO^`Z=l|24cMWKCkfX8gg9dwiitoubUow47)E|M+ zln(Y}#Ee{DeE4YV2P*VKe?##7wSdGd=F0+-@VSn6 zwmtgui^OD6T8sJifbDY+haeS50-uJoHN%GPTX9VB_D+T`*${*zh>fl5;XTxN66*wf zWFTNF!=O_vvaW@qbe>$^Tj4qLV028T2%XkjI=V06Ab7}OsE;Ot*0B!JlY7eSog7fv zsk7*izcC;Az1XQcvIHB2q@ZcnMdrxY1@A+ANNL@XLT-|=iTiyX>~03EYiKU+kJw=0 z=RH$BSl6)PNd5}Q;mpa6K@|_RH-eH!#kc%enx%F+PSIn_(s2jo#}BJ7bw|eHMR^|r z4ZK1TeN`F66@N+?#Q2QR`QBa&w!5Jb9byJ>%E~wuvc}8mPsg?t{YbUB4}nQBc*2aV z-(gAk;KdO044IhzUuYXp95G)u)Baz}#)B=)-17z+M>kt9@xh6GAmQzx8r^iXH)2(EA02_u#f_HTM(J!zPyuEi0#}MYIAr$W|e%=?$L`EYK zLu7`oLDb0C88G4szENU7&i`+;ku=6IOu9-k{X@16J9Ue_1%tMYkHMU^i?+hpGx{pM zyzHz)sAPX7Y5(n7QKZwRC$B;&mLw4akp@b;^C5@MoqPv#s{*990(xu(Sm#hWb+Ef$ z_I*9=^Juz~!IO^Mk?E-A`VAkc=S>D8BV~A?lGjG8XE#)&q6Z3uXYKO1TF14ZbVm%D zZ*;poqycb|pRteSu?Kcj&qvV0!_ zwCzXaFn@*RCCvD)(%DFJ`J!)odw(nuigJM)RzPTL5-m0Qc2yK_Rw}%=_a}5WQu_vK z^;z(HuV|OFNip+BKeJmD@AdZn!fpebvK~V-IE1R`=ZG`Cz5j&bG3E^m(IGw94XRIX zZ_p_YLOS(z28iR2T2AI+GG{%RGxx`5I&ZzNCkuIlH+f2l?(+72g|5)2bj2-`UuVEO ziq}?p;5^1%i9#J#*K&CB8p1MaKbE!QEKfSW@&u~rSBgMMzw!}JS#R1WnIRqp$6J|9 zZBHk^%Sn)Zg@>yzAe^^1fX@v+8O-x3%lmG`2na2oLx=8ebwKm-Y`GG6`TSsTm~&51JR67 zCLv_}_WbpnoA~4T>!j?>UyHIT=3)NbU}}djfocLIBCv=6Tl(NK4U}?IZQm^7jXCWF zdN91X3H@G<#biJ=(i>jU!Eu|99u<2m;3PuiU<`jUn}EuXBNLH6}J(J zbk#_S+N+>SB!;lQ@LH-5Ds2yy@QtbPBqMeWTqD9eQJJ19Y(|I%Wm6K5CrX##5Q{%l zD7q{#VjXCSS(3&w#ounnIt(D6udXr8T#Y8%9lh||6Ko1eOYPVrS#93DgYz-&vS}U+ zs${klHaQ0d<6E@?BbE@y3!T`LhmF~}Aum5eEu7u(qI}w8ON+Pj+lYNh zq1=(n(ME(GGEQ&rQ?M%YMV^u%NWq3$QGAin^$8fj<{blbNB)6SQBpMA%2B(s)*mwv zPPVuEqvf^!D6%e5W?cqDWimNuGttRKAOg#|L6(C=6XN=zHCYRCj1Zx@JfMxxS+X9A z^k$LDgcHRGO|*_PO`<78#~aKzl!Z@0&KQ%mKhf0gl|3Z&120;|4WShA0Da;#l*#k` zub~u#u}D{3k_~M=gXv5r)gtHNMHuWY`-?HVcoWS-%Plom;hie8iv!?$j@ss!)Z|-29!#Xn9EPLzu2nZOe;Ge>IM3MDuhAkA^3d}^0oFGN zY9T?HlHe0Kgbg?XQ;gz1<#}d3kFKX;qmiM&-{K4pw&v%MGLch^Jj6F&Vp$UvpBwP~ zLXKqPHjLzH5^^Ljz!~b1fI6v}SAaL~Ayp#X82N9-@4X_?%tFntmHe7CzX;!>l%3{S z7$SF?iy%368t!X<{gQ!nxl0SJT&c>mnWZ8*Q$sS7IHpG)R1?vvy4!TTh%XMo{Aw#l zCN_u2UCT4=) zKbcleWkt@x(L&xJdz_kx?s~?j2Fab&%Sq!FTcihmNpj$Oa1gLnD}uNqgQzv9Q*QUB zA*0@delcmClRPxP&%TcyV+hhY%;7^v{Ut#ye)xJd;wRY}3k8y>6c%?ESurrIXD)+i z)@laDcukWm^}>~0*L@CldMo<@Nn=@&LXqV+N*43_=ZIx%iRF(@^6NyO#e1O*KB9Qt z+soH>HZ)+Q)=#)|Bj5WPM~vA0I=u5^{)EekjDYw88uj-6fPqYy4W2@9FCkgCGY0x0 ztL{XVd4NK2PJV=)c_ZKYvX1|VEKX+<%UUbAn}^IdH@-$|7{oIVgOc#Q)+LD< zhz?k-R6*=EPRRae@qwoVGk}tNboqrE1s*2hMvr95{!p{|A$WBia4nx5s^x%emiEB@ z(0{eOZL2~n|M=YozA=f^5C#yv{kc9cb9e9H!NN8Mh%!Lszq}bpggXyxe4EQ;KVC%m zPDVd;FoHs%xBDk!3L<}`@XW8?!K9G6l&EfMNp=N>3;!!By^ewGcfjD z%s#6;pHOsnm$!d=IY;>+LJBqNi6NM2ppTtL;A?D?MP+}yB{LqNQV z74ytR@Y3$cjm)Otq|?MQUbcpmL-$Ox0$jhfUAiOd;DHnSP5*D;6{h2)h0KOXWM2Lf zs?m(6B=i`1!+MYn;$>y%LhZx-5QpzF$i`cTP21c10k@7usEL6?3v?tIEBGbV;%GH> zI9#e$-Iok)Wu1d2Xv(8E|6I9d)n}C|ytnsFVy{34mS4pg3#p=5kul|SclSNO8?mdZ zk)l~-Z1)-f;h(+Lx?ChB&u%zx%yOJJ80BFzC`DFUqCFh}BNAr_i}MCTSe!TD)0o}| zT2arnsf7@J{cOJDFE0U3WCn&@1*02_F8y@BPZzXh_#sl6Rj1UByf0VFp!b8huak1xH!a(!jh2 z^XiZOLpnf?4f7#du^vN|;=@Qo2 z42u^WmEfG*&B^uBM^jlOthWnm&XRn|>N<+csr@p1jU0@9c%^-jFa1GSy?}(#FThOc z2NCKk^>T2;n+OzGD~DgU=l44=rjF&?Jk`8QZe(6j{-@@dzvJ92>2Y^o1B`Vh(eW}q zmo_b_!aMXZPj7D>24x-4M$dGLIsO^Yswaxw&xi?YGRc%U;vDM+Mpo~D9mvCvLzCO` zWv)Jz^l_=V3DJK4oxmS8j!MB!XB(|KTnn)Rc3_?jfJc<19b5l|qcJbUoWiA5|A`ZU z1#7mdzVterCJCjiIjYlZb*Hn?sSwB;vxp6?KZ{)_lL?4Zpi=xf29?gxUqQ0t6mDM* z3WhEY3W1>daALso%NsJJI3v5U|M{hK{+(&`aq}rpd(2odO%e%)R&? z$F_@(BQ;(RQ{;Mz{2`c`&G035e11IMp|anH^5Rb=jJ*a42=DrlAbvU%AN=hW7hVCI zhnK%fCDK}+Uq0m9^aa3TvwvhgIE(!8u~V4Di1S-Q(apjD^|zwl{UnlCr4{+*?#NEC z^~e4B)&6+aQX%)}m!tb0S{9nt+TZlP5bX?nXRo$+kij3~@299$cl0g*h+kTf?C|!k z&c^36tj8mmH+aU9Z|nn$KML_8U{~lkOw|Dp<6Gnv(LH#4VSbEA0OY?SInz@kZQI+P z6=xG%G*k`{U#%Z5U#)j{U&%LWZhVf)Q16r_-Y4Vm=3;o$+}$U_2jG1z^Jq%XO)_gF zIO1C`Y#c9Jilc1tKJ(Bg?b^?96vGo4sU3S{J_L%F>;(?AmqO;^=e_H{M384rNwoM> zTKFJ^!TcQ}tBEvJ>FZso+kc3zi?w?>khr2G@{4a9FOGHL&7{BijI>+eRg5C3UY4idbt+)=~ z$!=J2-AS(SD@H7sYsB!X7V=i+81&?58Qz9B0@onhf$tDQSDef3S%=}Sld~Aj`UY}( zdp8h>PwWJpns4jSZ|vusHh1LQ$UpwL;&0VqGMJz6_O4g0&q=m^83A#^{(FC`>W@j* z|He_j2{Yg_&w~9aHNP>DllD5>#Io)`f#0z%z+ZFVOE_a2Q3vJvSj0;zz|i~!A=clfk+66$*h-H!>9=N0~+taeY3{HLuakm_b`tvzrM#&DNFPi z9i9&l@|%SH{u~5I@`?S9T>_4f=>F3&Jj5Yc_u&Q+K+z;fw{bK+*tPvu@q7v~_OEOL zY$@|3k}Sc4)zSHMou1;?%`+df6@QL&q^zdoZE7H1_6`dELYr#?!$$KO?Xsg;*P~;+ zMK9*CJ{uI~i+X>FW;IFOd178A=P5=k6r*x7Doik{5aO?7+7zRk5{!zZZX4_3CErtw zUWOuypWnbg6laNt9aQxiZYM=ZA?&pj1v{!HByvh2FhiM(nHGI6O=Cq zrAs6$+X?_q?5*dtw(#oCD`MIu5Aui>E1S;(E+tkN3DX0LjkHuh(gLk^VR% z*?$8`r+)u8?C$nH+?_0U&t^Z1uS&u$+)tY7tqT6#K>F4rfP`5_K!z^5(FL@36bjRV zM(8t+6QRd;uqs~m`;$cT$2q$H1hS*;MXK#P1)ziGAJENj63ufMD{-fMzzvTih379( zVX+;nTHndmqWZCi2!_XBylC|fI&cAD&eLpVpz?mmI*g#leDSwQmWL{Vc99qSpcd$8 z-SSqBSYqm*9YC98OdSJg`(yPI*jtWK4u~4EE;)uwOD+|rkg9CYsaoPFM2%%lXT9u- z(>>;W5Q-|?k?8U<>==$N?**vd7n%Bf>u8$DB_u#}{vx`@8{1pmQ9m%=Ui?-RcAfE< zeQP&9yuBZ16XC(Vm>&OD)x`H;2-em6*+r$CGU5|o0E!O)YJtUjVCE5ONbc@m2wB!W z=oQQPVp%<<=HDO2DdHxfT>;h@s=UWS4zFN4O1$r*J0Ly|e2;@}u7X7X*6&65j`{?= zLc;k3TjuV(y%jP%s44ND%`l8-j2O0lhjf^``{()p9U zsv{f*^fgg>pl9w!{w2}(hw;9FHY5*W-lim3fNg=^T7K>r9Yt&wB6_kE<5s+p~U!y9y2< znspm)y}d7}(Tq-x=9gp{&-w~xxIODC5OE9Go^>VermL1b-}XNTnzw|e3ZPGDX5wy| zqB)Z^Ye4g;(2NJzC^RSIu2RwD;?`P*k(p0E#PR-&==j7HXrVQG1Z45{{#4=V`!)XS zzZ3tc!dEBpe--@W3SXMUzX-f|J+q0+7q3lZel4Rs5;WVhV&m*stQ&XB*gTrmfm^E$ zQ|s+L0E}J}2V|;B)I_`mN8^1aig8&@((^Qh-zaz*nKei7-y|74B@FoOT+Q)X7>2j^ zd#YtbTFR7vPgb^VBR=CJXZ%foUH{;i{$#Fs1|>+R*c`RIv%u1VX_Q>rEZ z48``WXrg5o?wVE0cHD}cekc3RPjxSDjRP+T`a76~A%8Ld-vZo6l1ZL6-&^CU{!vmcfP^n(FbRfu6O?Uw{+!adkA}r|!@+7{E`;QIj%syPfVQ*{YtuVd>~G7+$PUZA&~u zf0ScKx%-ZdG{5~WIYdY%5Xk4&hyk{w-ZGncGu)LI*L9wYT1Iw;y z>u8`h!Y%maNYAO`f~TqxD8oWqO_LNoD8G>zRAkytbRSp<;nqNBJANz^hI$b0%Du2D zEu^Kcb(t+rV##<45)81Y66+$}Vl704TD2*1hw82j1hKkG@qxwJ-WF`)kNVX$Cq^qv zwSbjN`4fMttApuXt$C$)W$yw0$fpNZ&EL25V1Z#0)vxP8g@wi9LmS%AKkWp+OS!baXB<0h>f^W@i~r``gM-Wk7TiBL$VA%!$^n$i)(#HlW#ac`emyu?j~YEc?bqdoC>vb`SVYP`RYjR24r68dswTszm5(V3fZ?C6o%>?dibEktcIBaz^IXt#98uhJ z94j-uIeA^fyg8oC8*}o2n4XhOx(3i)bl>3M%|q#?fv(F*cQfdo0iBVcn@N5ZIYrBa z%nK!v-{YWLkCX0eq?^?>eC05IPSMSonU_K`@1YAsJ{dpgo&Z0-*5sO&lY4WfFDGv$ z_<6d9gDIr-Kw!u@Ehqa-kc@_&%5jY2pSy94ry{33^Vw0h1Tzk;cHGN6RDgaJY*NOD zd03g*HLO)+QS-zj^#Rncq#UzYJ2S@Zh3 z^APBAVe4WySL76}9M&})!=C%nHrU0CoFZ!CX3+2=-#_Ah9q8wb1|ai)aZW8QfPAl4 z{rgeH+=_|3xj7C1^mJ?Hw4A(KhGBl8pG+??e_Un44VO1nnR%IV3>d~8%sDfH*f zDF6vb(F7Xwi6NZ}7W2Vx)!zmO zxbSwCTr2S6HZL2$7Vl2*vgO=$h=O&I=nu($k-t;ZBg-tXJr4sKz7H?9@Io3?>KXt2 z=lXxIfoyI6sT@Wy0LOKdE>F?rS-PB|%Z0jJqRXpwxl)&R=<+^YKB>!Xx_nEQAL(+R zE=MqyXaBl9MVDvka)vG!>T-!Luh!*CUEZO~`*iuFF1P9OEnR-3%YC{Waf%IYXBVb-6^B zSL<@6F7MFgeY$*7m)mstmM%ZiR8p`b(2V>W(xl2C273?ldm*NG*kOXU z6^T+L|CTT{*$@cU2Md`u)YXN$IkJK+fe>;;!fj&W5>V56&ha!iAqj~NLSba*B$K3N zn&4T|T(>khUg#-MWgYTJf#!gu>e!+Yd3tG%5;@Fk+9nDUW?VycO|2?ns(MN=p=#@&q}2?T?6O9R326A~>iSTH}ODO2tt%nL?> zfnRWbQbXt<+2L~gmK=uk?OEIwYAh59^sHkZkeg1(M7^|zTNdLX3p0C7u(Kdi-K`Ch z+o#=;VWDSsV5zc%mOvfMuC>j!BE{V0U5aTCvzxAxi1Py-7$>dOX^gm^-WG1=vw@HY zsp>Y#%u6>-p+HN}RTaRahGmt^YwLFN zjO%dC$KwRWcp;x(sN0LH=BS&R8i<2uEZ@2&)rCWClY$*fCkE>S6NA?@wJzzXn-~su zObWCto)iwk>?bug)-|NOjWi$=i@Rhd zd!vre*3D33AEs5X;x>=m*}wC?`xgq<)rrD$m%@K^yDCQ{YV=Kpig1cF-GHXkVNQ}- z(^YG_+@C0Z_`2cHO9xDgG+m*lv*XVMvF4Yn>B=>oFF~MhG{0I+7u9rj{Foru{2Ddg zk2RegSEkaHYP!2LogELR((TZCyEZrpO7kn%bl=)ewR}CAu2Iw3ad)D7t>@L6?g~wpPS5MKd|^$O z&i)o@y6ZGuy7^e6`;B}D-C9i-*L3OZWu2z`A5E8TKGtix`!rp;ar9}rhcunNUQ_kA zL(@H?>C)NNPEGgJchK$9bel9?x_Ptx#pdtew_4A~^O|mWVgUL^+rdsv_p+u-H*dCo zdh0v-U8DKEuj%Y_YNC7H?|Mx)py}-MYbsrV*2^LPligs27r7r{>~9q)1#1{?7-6;JwIh1mH6 zg-ct*g?!tgVPaE*OCUUWZ*&zlENcxeYf)vWL)GXlW(ZJ&ItIgRpzqq7L#{%Eg7}no z8Vd17M-%GW8tOuIuEIcL4fbukM$y=Swl<_%)YNr!)Gc#K3;X_xdXTXx`vDh`sjj7| z9&)sy4}26#mx}%3V9-^F(2f!7cPQ@Ptfs%APqgivZ!+?-OMQ$}NPMQ+FZV6HtJP+= zxAPWuS*}~!>o;|M(tlD0yS<&)u*)88KFlx+^~`zLu$}j?OUlQK^0RMSe&Tq|$A5clgzY?wUD|mT zyMMdAJ^sse`)O>9%g)=_rJd(t`=jtbwS6OSl*{(Rc3#Ua?R*tTWvc&45yy3{?tijoSft}b zyWEv!_oPZ&f9#XjP594yd;YU;Bo=zs<>LxWe5Ur_gBoZ1KHbhPZ?`92bFllj8U746 zIrwjr*?C9vW<`-op9V@Nc$%6m2QL-Tr{iYaaMF+dq}k-WB%%gDb9z zRC!b3=Rii=wfnd8VA;BTuAUfM?{<6Jj$TGvr~G-hdVs+@9Jfm0GF6fIwA!@+I zcj-K_G1c4u0Ol|yQpxsFW2Xh^4nC4)hQdT$7ZC@8_ zqDlPtI>gQTX)Vis+S0B1(Y9+{T@|g-04@pG?M8Oj57o9t{IT;0LaGI_x@-D9_uV^r zJTk6-^wUrO$jxWox#xS&IrrXk&%O7}otr=UOOR4@7HAwlvd5pb?E;nFFP@#7l^mrGz#5WVs z&b7S0OnzzQ{S%aThxKg+s>sG?^)2hAqlL|lZy#FW{N7K0{pk-*{N0LUt5>{BEuiuu ze1!iW?UmiTa%wIitQeog_^hn`^{FrKEI#_rA3eVFuXp}r)$#9cxa!re|H>cw<(YgG zXH41BCDMTX!s2&P(ew);#yyOFjE6U5kiQCA@;G*O0~^ndKZE^f2K$d^z@N&1ug-w? zWN6Qx4DF#f9k2bbXRzO&!F~cbpR&k}rNtTS?19L5^*);chZ#x6$C{>Ruzwzc=gI*Uq)T7mOp{kfGj+ z4E3Ide1UYORJvTgz?uyFGO18%N29bQ8hB{v`6bo$$$JJ1* zp{}|)8VNP{H#LWhvhhoNfi^!G@HdBdKyb}g-&$^=y4fF(hvJg2etSbxEaVTaQ~hel zSDlE(LJ?J}-@Yp5ZwdKs32j5ZA?6Q+R{8_?`4lt(z&bS+j%@L*ibY$DEU@ZmP{`MX zT2PU{xj7oRP}dI}Z)+$P4@V;?@I+K*)*Fp%0o#yhZ8ofuGfZ-~ zuJgqst!Rb18DhTGA@%mOjoMhucZWX~scl2iMNM@_g6qf|(DJ}$T{M_z4lVaxzZ{6c zkhPj{fZFM4X^mnq+`*tx1nAaH_l5$hZ(T@rt7mdPy)vFSbfC^93z%utxKdCPsHPiwDFT#rtIxC^^_fbS* z>;p~r`8NB*%~ErC6RLH_qt0cNkExV(QMQ%UztnjHL!6}yQ(1fw!uSB?u9tkFpkMXF z_@;Q=2zfw}pyar9t!K68mJ+8^TJ80$toAK+E_Ifr^WtS8J!#AtOvG=QXfLOo{KCI1 z>0>sR4I_!!;Y(=Ozl^O1k~AY6o+e3I(p*D1{oW;KQ_VAnmc>jV_tt`z-hXUyq)#;IDA`ehWU#P2+3BSgK51Md#2NWq~ z!siMQbl8N;CVa$%FEHVSrG^xJ%`neA*@W|{!nBG_xY%o{pwxt$-}}o=c>1dhC|e%^V6s#wV819tNkt$PVWdJ zJ!-H^<2{CY&!NOzU|Qex=FIeiP1Ld01($37=(>?>FJI zP56KbpJT$0n{e~1(4YzDOCi%rneh20JHsa29G@d5{EtlX5?{|KrW__*X+M>xBy-Qs zlO?6ISIte)7XYRGt-M2q&}i9oS(ZkNX5eX`SA`t$O;o54jv^IJA>Ky(0OPZWr>UX$ zGX6`LZlWonKhOBjiKnTc?_>N);%O<+yBU9ic$yOWF2=t{JT+TyW&APXX$t6#j6X^| zg}z?T_=Ch#$m>;%e~owwb-k4FFAz^5uFH)7d*Ugy^#aEKh@&G=2kQ>f~@ z7=IV>6ry@7U1t2X#M6?f z7l2o~a_bi$7P=}|f~;2-jVRhDO8ZFuwyb*&Ay8hQYXr*Y_lyowJV1VyAwS(De_$kA z(GDsHPTs881{CeE^3K-@ra$u^nf@^q`X@+#SEW8*mZZc&rM>bmQHCnDPt>WX|He78 zl&XZsQ%!i>b2zsbg0?RXZKmY3&+CvVK`jr0k~$BKyO}rc^7YXFd^TFDeKI<5kA4RX z=xg!V-0jwewPAOA%GMV01p1W&ALdlduH@&vuFAmw~)kqTB z$!OBqe=vM>#Nx*(5unTrJ}zd9rXrAYAe2eaJnbZM+4-w zrEV&=cic_VHWR9ahczE&H4prkI)PtjYa9rd*9HV*>PbKpcyolUQ^ovf`G z@g!{?Ez6Ui}p zLch+_2FKKxTUzcA z2=yOCFTrpbgP4}bAie~78nO!5SGr~{z#5NfTmjGhMbsfKws^m9+LhGxQVsO(?dJ>P+?p%>ge8$n&44Lt*Anf>K%z|eJL z`*!cAJ^NKiNpE1Jr1k5tu9ade$X``KC7DxH3|P@R9K}E}x(|(Dt#79Ocg<{o1rn@R zv;#~X<$jdgU#@Y~m)AI|>>UT8?d|e9>b+gL#Z27msDkQ2uG;uUKO~^H2zoS9jjqwx zC>B!t&m+)!?OHe0pR7EB#jocBG}KLps8~-&?Hxs6v9-L!x0bHT*O}F6GeK&!6Y%ab z8op%ZZdy4JMTyBgf|R~om9)rG(&$@IS!Q(B-gzHffz^=waQ8j#jfc9aLu=8YmG(}W z72U4U)T?M7TX=KNV+*r)$fSe)5bsE?bEzMm6Qv)r(jkNmdfjoQ3{v(VwCQzKE+*L{ z?)_&`nEF9l;{&GQLFG!jgaxfH)swF4ZB{lw)~Kwja+u~oceW!JIP-v1T>SIBC)#Hi&( z8sx6Z<||r_H`b7N0V;=UQg5Y_?(XBbq3P*%!Iu z4~1f99oq)PYlgmpc7pDnYgqKiTq-eTY;{EE9)mIcZLG8Dco-{YUoX0QmNWfpp+EEn zdylES6G}ak7)-s_lNt1Hp!J|<#hBpzY}>4yMfx9(#p9nqA8pAZcyJ6}4mkDM=dA2g zj8e~U$I1!~m0uA2)fj9u;Qa*u@mReljiv5y33f1;+@b%H;I7;(bfPb}ABBYWdJga`glJs|Gii2F98a&gawz5-Et7T=&L3H~Ju-)rH2 zW#Q?L5GC=OKAm4sq90NziF>@_j)1u5H_Iqa-y534d7SFAG@Da#e~7*-QWE87zaC}Z zvDtS=;PkzeQaui0DRCl|^7e_l4hwnv#CNtrL!8}bW?B9_IaiYgct(7WrNe7VR~kf; zc*g`T@rpz{g<)|AL)3>uLDv2OUVtMU#*1;lS8T?&@p2r0GhXP6>i@q`ac|z*o=NnJ zIMNlIUc>42oUY>Zc1|~Qx|P#MIDLZCr#XF@)5Dy;%ju__p5t^9{Q^(*b9xP@*K@jx z)7v@S%;{E6AK~-~PM_xVWlj%s`YxwNZ5Kc5x8GHFo9vGSO{ zo&^;znt}@!vb;8=CSnm;Z5lfc!dcK=p;#2vgw=Scd9&<~%YJ#;5|yrx(n%5SiN>8w z8;4oAcZ%aHsl=a9qb2d!mL>5(Xi0n<&ah(sC5d>fB-FC0BoW7b(vqeof4HS&TQqiG zN$Ykx*rHFSLpD0x@)_4MeNv16Ufkhq2}kg3rQ;|RsUh61M9oI}Lq|~7{tLY{ooD34 zy+9nZvn1{Viu-@BxMYT>=cgft1<;sz;@+RQ=eJ&z3(6;`xbG+K_lfx}#DqO@&rjUz z6YG*yPTcPk_xUo(iFMcKt%XQ;`C`GAw&rXX|$XK48Rv6z3mp&|131|UYNR1d7MHu+n^0W>NK z>v%X>m4ttI4X?_eX-99TEzwV zcADOog?=$I)CQq1_F+Nk$4g2?NJh*@vA>l9Bilk>?CXMxeH<;c*UD)hxZ zD(D6-DB3UN1g%9m?a_i4`?R3cK1$Sns#~<5FiH*hh`upEynqPGD;D(&ebN8#aQ&4` z84vLS#i@8NA^j`xvFbMgqjrh)LA-|vD&DUk!V(`2!Ab$-%=*K2qbN-+4(Hn~{#V3E z5sSX~KR`jB6fcNeUg&XFqG@2RU%WR8YF*E)?cc%mmvV#M6wpY5)?3;y{3qatAxn8N z{?`B7TTaGI$y$Fm%FO!sk&z`qPZ@0bDe4!%US#O9p@c0Y6v%dJ=@yxf>e+&8)yP|&aekuN6vw#nb z@VjWgh@+od>KFIRdrMG&RK=cS51}vUF%+5GFO|xMaH&D^sL+&zo}lle%&afFWF{@U z45b3mF@u$iQqF*Uh!5EkVpYp!aJV1N18bet(?l!_K_l+q~~H z@67HDE3J-=o8HC8N70t9%8d%PYR3^0#YFP~-hfq<5}|a5*CEPaq4n*g{8p0x^S@oRekSq$yw#%Z^Qzhd3+Gsn;N0ov=*Rq3Hrjy2OR=x;wWBwBgU0Z;f- zUi9C9%ai^Jz%3%t{BjVQp7h^IQMey{POkMx3X_OjnzUh*AY@LVr=jhFqVc){m+ z$$0_#+1Fe$(JJ%O|6^Y8ATRmQ9mN7a^3n=`r{l8DOaHfd$-lu1{;ijs4A`#)e&ppb z(0i)GZ(edP_ku@2utg4s_8ngO`LY*02|U9+O2m8z`E>avT6O)}qc?E^JdBqE%<(!dS zJUhFvC^tV3TCs(N&N&%{d9fvm)3Guor!YGsE4etMINKS$ys$7kuNXAb3p18xI}@^3 zz;;SuMrQW3jLgMO8}uB3`hE=Cho?*v>+dfWX;MV3ZTRVw`FG*JCn1Et;NNKlnF5J$DRje%j?`5FsXUD znfY1SsnN+3oiW*BGi7=N5ID}n%uF0p7B)*VowPq7@(Wo2`{8{!odqjPoJ&Q2ow-HM zr5U+-&O4Sab2=Bm*t7GpoX*UZ#W`?foyJN-kHqNX^79r!CJqccZ!gYX3QZnOOfK$E zaMAgB#gL2#iN|CbjRBjUU$`^_s}v2x<6{w@y%dgp#*!uZnTivq7#x+%oW;(C8M#Y3 zcLxQ=;&lR@9g2gA$62B~bciuFo>G_OE`UJ?7v%>}P++^T7&pUkvp|e~eDEZJ1cwT& zSWF*8L^~6=u2Y=ZSsBF{(8C2qMRXznl$WK9OiZ%RuqT8B2P-q;?9-y1Gn%fvj(r@B-Ec{+;&kr_d70*j)b=#u!tQMNO(2tDebt%UbreY1p@u)amYFJpbXga@)-d4cw?)oldpEfU_!{ST7xVAk6typr=B5+2U_ z0tpXgeTjr$&-y9}FJ*nTgwJ4ogM_zm|C=N{ne}c7Z)bg*gx}2ifPa|lR>S=Xl<-W} zM@V=&>!T!m3G34(Jc9K(626@El6ZzgFp z!TM$iZ)Sa)gjch^UBX*gAGp(8&mh)YB>XGZM@e|IcKw&|HrD4zcnR0PK*GZRRCA^aL5fbiTeVUB3 zK3&2KSYImPX{;}o@KV;-NO(HyYbCsz_01Aq#rhTrZ(x19gy*ncdC6S2R@Pf2yoU8b z65hson}jR;`NSdN0ngI@3MAaY^Rq<4Ev&DS@TvopQ!U{mSl=MwP2B$`2_MILw}h8- z|Jx)yiuD06o9hr%QMg=jTXxDeKE6ypr=PCH!&L*GhQQ zAsSDegl}Vgi-gy5eyfDP%z9;)xjrqN?q8~HmXB|Qgr~DUO~M)RzfoyV)ZYOdQ8thY#bt#49p{%w z_zSGBl5oGn)bDBuf0^|S5+20$Y?AQ(tanSe!uf3y{toK{cAM)~%Hs``@c*zrLc$AJ zA0^>mvOZnH>sX&7;oq>nT*6COUn$`iSYIpQ5nP`-3Gezm&npRU;rvz!4`97gXRc2m zA74KSAHez`3AeC5RKhQ3y+gvQxj$(VekJQmB)s_u^{-UIN3y7_fHN9|Bdwp65h)BB@*6s8_z2VFX8@IOL$M#H%NFn&xa-n@5_3( zgy(R6n}lD^`ha?K-5U7wMxcZbXMKc(+c-Z;!b4b}F5yZe?Jq~dr?9?U!fia?Dka>? z`dSIE65h`FX%b$* z`VtAR=K7aP_`R&Jmhc+Z*GPCJ>zgFJmi5gt&iXb9uVa0?gg3K3@C|c4n|Qny32$S4 zl!Q0%@v=#{Qp58~!kan2K*BAouaxj6&aaa2DAw0Wcsd{71___b`c?^V;rh5Gd_L>_ z_L=MB=Kcpr_yX34N_YgHFA)-+$NDr0kK*yBOZW=bmrA&e_2m-2n)Njj?qGebgs*3P zvxKLyzD2^HWPQ7Y2l05726NrEv)&@%ReZdHB>Y9z+a$b+kC#KjUuS)Rga>ecN+i6I z^;Ht?$NFjsf1C9U5+2I>CJBF+^==6d;{LZu_y?>H*l(^|KqIvSCHzy?M@V=CAFn70 zS6QDf;eni=BjG==zG1UP!Q~SE5e;~0GT{9+5Z28Ge2@WeG2lZDc&h=w(tx`S_*DkH z&47BjuayA3r zLleW=VZeJD@H7M7%YdgF@JkJNjsfp&zzYm`9|K-u!2Jz)sR0i#;N=FquK}+#;Qb7E zl>r}Mz^e`TKm%T5z%Mi4wFcZcuj&kVph4eYz%Mu8O$L0h0dF?oLkxI}0l&h4w;J$a z2Hb7HEe5>JfDbp|?FM{=0avzIL<{GXai04b@KHiRFSfF8{A@1Y@M4Q%Tia0V>z?TY zldbHK-$CL#!jpjN7?lFA{==eR3)?wJs;wQcjJgTiU{cg((Vm8FJZ01d(Y_wrc&ezi zqCFnlc#5diqJ0gv@zhW&MSD25@v@hJ1_6Go?-orLd zZM9Xj-@-OdX|-9j4`90=wi`tIb!_9MPOTN~m$8jgTCEoCzhiqKwkt*Z8EoSeR!c?u z32fukRSQJ>VQk}+RntZLer)4ZRUM*zFSc=ts!^hS2exr)s-dD?h;5vbsztPK!!}-8 z)d106fNi{_stUAi>wT3+U~a6B{9&U-Nwtk>w^e*;D{JqwqRae)Fmb+FMib|U`5mn| zKS2K`2tj|qpx@u#)mCx9w*Tv?HlJo&#Sz=Pe=HaNf&Ui%_lm*)8Tv~j9|xbZe6+1B zavyN8%Ze|HFNM6@@-2!x9*%%J2VUkM@ht$M&yNQe;u7pXYz=f-fvFoA0YasC7<6tC zcdmab_=f`wSsl&u)j1HLCc(?XN^3=1MVqzE?NgF%&up^o|FqlW0seQ+ie1}qcS>y7 zn`ip@4=csoyC=o0xB0|Q-hbDq==I%vD)#SJhxs(U+iuHjg5iM8b*ca4x9)1ORy2U< z&XZvcli%{++~Cvp<3aynF^U5H6l<4%*ts*Gb@taf$F_c;{~|@P*5Mp~4Nsgm@a(Y8 zwx(KBQj=}>d}G5?a{Zkn9a%P4w^2br+A7wJi~uyO!M*r*sK|72qz3+LAqmrM75ha9 z@H2t;e>G-gdPK}fhyNP<-frCbxRL2`>wUKfdE7_`bm6CLvKGA21o`0W4?f%a;*kYm z9k1ir?SA;Tj*hhr{uTHQWt%H9`C$tLg+Btmy*EIIt@Ws~t?lq%QwM{HbB&t}iukqP z`md=%!ZmdACJXQ<{nva0XG@GL@+xRod~K^Z6;tttyBJ1bo!sdE;4vU=Rkr=D-E2Mw zCy(`C`vwB8d49ICu0C)~%iu7Ey%~qbPi(FT_l^tD&$SJaoNNpu|c3YoCUpz`>^Z z7}nwLfxW>V`kt3N}u#1AoHVx<340fPuCrYTvZh z{S4Pp_nW%om~hzffRrgdIP%}MYWVIE+!dIH-1^AoEb#tA_ih#ZVB}qq_lezvzXlRG zPu-h91&6x)m?*?J+X@R7(SOY_+|&A@5zsz!EzM_}Yn7k75mPH-A*rjaEJ7*1-d1)n z$mSX=OkYDt=_-q|JgaooaAo;BHdj#qx@=|N`MCe{i^;kC2wXp`nTpcrdmgSjIHMYU zzlW_WVTM6JKiObW_TCEHJliUK-v-iNaYQY{X^z()P7ixeX5XYk$QPz~wu3DGYvncnow3r`y{QsGbr#D}~+x77Y{X6ig`f z5kM=!(H9&p1>Q`D+gt-I}_b72*s`97;%1q`<1@J{R!G!k-OP_g7>&ccRvSPFg0H^ zSYLMv>khKs$=0XXx<+U`9PP`9~t9!h`{Rp|I zl3QW7h24*VhX!rMeGB(b?VW=jOoQ%0?gQ&#>`=1LK!IhxLf`kby8Bgwd+}T`?&D~4 zMXq7@v+VA!y9c2gFVF50gL@{qpCnLpj#ZS>kaN*X=2}t$nD4OAa?&p zcYljj6Z`({eCN0~k~@stZ#_Wc{u&fG?k3%hy`ZYSVQ^oVBldj(ZLY`%*!=>#pVi$5 z^?jEb+$YI>nA{2M&SUrAboYzs7PDoV!5vNR4df1BcPP6nbob-v7RS4r!99Z9bIJXl zi^l!KIU08{yYXVLotyhQpbPE>P-rJguUp0Fhf>Caobe)OjP4DrcmwGJTl)g=sNZXF z@0>5(r_tt$bg;XC-3@T8$=x4w8XLcFf%oWX2LBH7?<9W!`$O4(Q1^!#{9O$Go_)mr zSCGH?e&`0w__m*^0mh&+!(E1qZj{l5GG=nd zV$K+?4`zpH zT4aTL6Kv6GcMv#j^qJ&NC-+0_eu>>`{Kc0YjA%;)9)H`C$qbV-OnQn`!*JT zAKuQmt%i&Rl<^&!U6KBr5yBbQc*+p{`2EMuQG7KU_T&nGnKF)+LljJcGoZlJ|3zdy z_Tx1}#%+{wJ7uinjBT7T-ctsCOm#0eWPFz@`f)vFL~}+aXS|B6+z&s@2s309QpO)> zc13oqgB6Tr7-wAXDWeBweEUOZJv3U@>{a#iH%aiIAs>6970y=iIy_dka9Pr^rVzC_gO?udU48h4=MY4 z;dnm$zOyD>DB~UMf-7#u-yN<6BSjOuSk4He_t4xjL9KPOhbTTxg@QEc28h=GmK|(9ZmEl<^66 zz!kZPGj?;v&z|O)xcIL%WV}Rk^%=@Y=8PiFSm`Olg2%;b$Oxy5g_PmX86lkUyN7wU zFA6h$KifH$*J!R@Lm5ZcP(99o0*~!Io-#@?<26G@BxQVu9dJdik$TW`K;TA|BTta-H`F^C7^PJ|AB*WMXunCO`LJuLp|V)HOCMzGeO+@ zMxxUd84N3XS*+sY&ia-+df0!>6zEEvt02G*cR&g2Z}=Gw3fw54^Dn;{`{;@djH@`C z;2IebSMinmn{Pz-*E|3nL%qH1tlydUI-eiFJq*@vZyAilTJH-lJ;}mz{1wh*I zF1WZq^z4y)EsB}|^NsIc?QmlZyQLfB6-b5wxe)GWw9ioLgLu8}Y+eU%R(p5BZlMbc zp$pdf9<=u}rT)W|y&H&$6AW}7`=w^$GZ*n31iH`{_OdsVWbs0VpY&9mo}J?}>@W`Y zU%B^5GW-OG!degY61lw~*Pxsa%Dvl2cvJ}SLVz9k3?Gzqj-eKX`1t_F@Qe`RI|2${ zGYb!+@F)pa3L#!Z&Kk!`;!aecV zVilPTH3(~{P~APxuoBLcfiNTDT)lU$w!q4_7FJikn zV{7=4)kCxJ5morz(60Cz&Wo6ebMAMcV{w`7v6KI}yPrL?5g$>-`M9S9`LDUE3#g}r zr-0gjO$Cm8@*go3KinM(=TGKaWncT)E1GO&st-OVvgu{iV<}SF<+{ovN(2EO=11Fj*@_uAz6MLkS z9Z&2MWYdVP>0}2Gn}BR2vG;ef=U}qCA3iPO$AU!t5@)}w1fCS7!7&Vh2b29k4aasM zvR6}>4~DI$uz?~BFPrLi;f?(KPGIjL_Ix4^8VaDOE@BTO8&4(qP_S4Mbt$pikljn( zJ%Yu{oSH~%1+q`WzTk53v|z_08wTv&jRfB(;4pykD)BTtm$AEIM#3+SBICe(u5<@5 ze*SCL!wMgz+FbWm;wHTBuDNms1Xq030gwIn+t$8W3@7bd(1uBAgOk+eo&sfphgUAx z_OBR>&xFdxh?^%XRO=YNAIVQ{|8xfL-9f!dtH1IiK!4?OV>W1cjLSJA-b03V-|!`LUh7GBO1YU*c5%va9^SDS z4?Pk04OyX~ucVB8&e*^i$(}NB!nx-gGW;pyGc1KGax7=edM3V)t5POpS0sA_l4nCB@2-*4UTf6-ZwL6mVDWo+e)gP_18b84E0e&A)y{g5H! zNmRMQgDJzw8LK%X(^JOHm=SNt7)BXCU?E(QLpWm!XPmZr=tl--^e|*>MU^Z3RmwO~ z0#Q(p^PkgL7JJIb#*D+D(B{Wz%D96vHgd);&Nv(8p&yGd;~qoC4ph0qZ={Sw&dBGC zB2O7Pm=S5n2%(HFl+lYb#&X8_sUG^V7&CtPtaB{8P~{3gg2i-2Hm-mb)Z;WL@Yt^M zl#z!SuNX2WQO5n0QN|ftIiur75B*q%8OsbAdr;*HPoRvcoZ;k*GEW%`F=Lz|V=86z zql^o;(^!UZMt4scO_51G-0G*D^*9(Q`tbo46Q2Kb#tBehJzU7jS0N|%<2ggd49a+d zGKx53BWL(~%9xKC8HS9bH;8`RN*N)Xk;oYvk(K+Aiy1==8HtoJoHEWVhathS?Zp{` zJY{5I#)qw)^*BC7^y4c$An^QyGa5mG^>`9lxgQHK<55G#9Lo4RWn^+j8D|Xhl#z)U zvkVz0uNVEuql{skF_km6A}jYJA2WIzGMtn#o-$4r!;qjJ7f#VwMtjOA!i+aTp`H7m zPZs?+hX(|ne{jZb&e(yh+>bQOSZl~wL>aGBMlxp(a9z+*efQ^xO@@tPsy$4R0emr%w!&e+Bo zdytj;@dsusH)O1!jJNQhx+0@FBa<_xddl#@nuZxNE?g)2@gQY%6hah?Wf*51L{{!c z7tHwfKb`ehO&Lj)v4=BGf&%L?!$XGl>0z58#fMS`P|9*nd6ZM$4F7Xaw3G}(N*U^0 z;UD0Ebw!47N+PGs{EL(!h7?~)siG8h8H7PqdT`3WCjPlE^tArO$DLKFK$R=}7Rq>z zGY*3St1`<|27H=S+#3xUy(z;&85x{$4`;kT!9zdr$%H%6kns?zT;X5f^l(KE<%~$q znCmISf*HLG83QS!hB7`ZfGDWPFDGd%{~7P0A6H{WBPg^hz~iWLg)gCuM>*pa&dBhT zF%C1z3>iZyBa|{`amF&v_%h5xKY}r1sv%9ml=9_Li>Qk)r`+QqWnUkx?Q!^>t2XB&DWe%DnJaP&XY2
jvthE|pJ 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/context.so b/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/context.so deleted file mode 100644 index a114def652dbba438bffc9e3ce1304629d4a814b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43888 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/error.so b/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/error.so deleted file mode 100644 index efba9672a6a7637fb1e8e35dc0974c9d0f8a1cd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19848 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 fDI&&_g#IiGMpwhGyB+t diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/message.so b/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/message.so deleted file mode 100644 index 23491a8af14b5adea17115553557c756b21f9bab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62048 zcmce<4SZD9(LcTc76O7BQ8ZPls|^}_fkcc1X(R!HH=00r)A*V!$wDG|BfEhhzC^RB ztZQtv)<>Vj20`UQ_%Pqt?W{yxfcq|kc% zihlBT`QH@EetJB9L9mU%_-~6Y-|{zwx1VcA3z?_=SoO5)4FJe`rmkn|diFDg1o&e= zlNIP0geU*o!iEpoCM>+r7Ken86bbE>P zl08syw4b_p>Dyr_V)0os=X)-GV8p7P_aB;c>lsrXIk9ocp0b=f=ddQrm*GFwqkJp3 z`3rIfO&?0!W%%zZ{CDT4rMsu*zy9gdAKrBN_9Z1pUoi5f?(6^O#iE5@ZtZ!h?TdqV zzqaS##d9`~1nIy1Gte{C(>0+#$#2l;fhyh)Cpr-RDk$_o_=jQV1L40%2M_7rq(Gme z!v~_j2lNNRmn7gb8uA>7e>vno5dLtq?mvJ$ha}KLPXawWnn3ptt4(@;{uwPmWAruPYO@yE1|PKT6QA z;so;Cm_Yu43HU#p0KX)Go(K6jW{fGqopHCpqNeTS0Ac4K^OP~iM zLA#X+&x8d2b3+0>Uyy*$ZxiV4(*$<^CINm`0{OiO@Ea41i@6E(b4&t07eanN z{&WA?3_b_)hjS9>;r0adzezy%wDg>Y74j^Y%0{y>|z<>UjfIgDI zE}tdflaWBq842izf&M`LxhR3&zDgkH`@;VqPy2038A(U0=a)$QQ#?m_ns@vAX~{d3 z_*75H=l${D3VrHN=x0L@hk$;S<^waypT(dT{AY?!w#M($^gCVn+eOZw=Itq{H_|iQ zbMxbxfqsnD{QX)^o4=>DbWu%RZD}YRXb6{gB5V8gtk zY1MVL!FhoN)j?Hu;F8kvrT`fPs;e#o;n_<|=V%Vosso`=FytvMUS2vAtmcLr8q323 z=T$ZY0~K?_fpD;NT4O^)ur}-|UOqJt3eH+^X|Oz8I&XP>5SW>bH4B0br3F%~fx^1l zMJUQ|Di^B!hK9NZ!VL|jGwK>@0^~$sR(Ux&S7>lSH6~Xz_=AKqMt*)j%&_EfdS3zEIF9-)~Y;b0rD-^7)hy&%- zbs@!2y)A4ADlpj4P+O;1g&P1sZ=o;@-T;4CSP$KV7nYV+E(Qe0C|}I?(uIMlYV^d` z*tF95weuQK2;7W@Kuxf8W^ftai3?6;B?AuB*Yz04 z+}SFEO#oR9mWvl_`uVk?sztTI3Tcp@J+GnB;n}4Z1RLrgBOM()YU=AS!qfvWo%Y;7 zbz{($ZPwhz^2Kw4@bC~EwXmwDip^;& zO@rEG&^f7=1_iBTn7bS!ye2M$8gm69c124$vn~v&tAjNdn!yU2vZ$`2u{u}^Nhpym zq;di3i{=)^^pj;qV{JLd6U57FSQJ9FLPQwt2~^2UIFj82VUEhG1&!f8Boq@LmPLVZ zc_qS%>Wb2>U3;3{mTmEQjp#(5)73RBKesBlOaxWh>Kit7^~=Gt&y%&EP#{L8c>5$m zcq%Oj&23x|R)GrbE1S%Pa|Eg>Tv0GwSy!Rtut)bIjNiCw3PJ_77-+TS)cMrq;b2}v zLje9nj-hZvb+8tAXUv%%l<+feMm7r6IG~40RO=fMx*$G~oE&H$4TA-Ro)LsH_4}M) zC|oC_H-BlMx^!+}X;1}fmJ_21`jGV3hN^IIer-dbDkL+7-PMq@t8kd9jSCkB8Ee%G zcvT0XRS#k=gMeL)@ef3{Co4A(RK#oRg1iu-hmCdCEtPOdE;YeWD6ojSrN5pVl#xQH z0ENntPb)qBG+^{7&8w(T=)U$5*6E8%r9f-l!qtNfwT{?UT3WxnskBCoj;c^;O`xi_ zlwy@GKukn%E-fuz4tJ<6E$tIaxn{8nrs7fT6May35@Ppj{k(=ieSNTDdN5SpVEgy9 zKz)cqQioysB|1^HunH5Ol4_Z%wE)U4oj{o;+A^K4WtymED$PM`ogW?ykM<}Gy9-uI1rp=mDa8|+0@#DsM&MGXJI<557aTCU!7Ju)1J9S)E|J=&s zLGt;({4+pyc>kA``jP+d+w4~zfSr3f@ougPPV)Tpf2vjz`e910tKjg@s*n*6@{E$a z*yA~@s%ivxvyatqM;5i9@^N)Rw02cBmBUe4Q>hl5{zjunl?{wj9IQt)dA+YK9 zcPRQ|7e04}!f$us%W@TdrwhMT<4fN03xUnQc)FtB?!u>cD*Rp-J|(R1>F@gG#pY9H zDmcT1U!(Dc3!i(l;#20r@6`15E_|_;r^$t{=YkJ^nqBzZJcVEF!uu`16s&dOcWS)p z!spIbeD=HW&C3^;TL)6o-}{>4 zzukr3qWSN1;r*JwXJ>!;OL{cy!k? zUHE)WzsiO0()?Gu@Uu1j78ic2=D*d2KVQ@Db>Xu${eBm|Uel+(-(R1rG`-)A*YvqA ze7dGLT=)%|zS4zH)%5i){7ag?-Gw(a{jDziPEEhoh2O5}yIlBVU-x_XXXpEVK0LPn zmuUYq-}e(8$Cqh*@(2C#C7OSV3!kg`XSncNwSBW)_=TFj#D#Cy{L5VUT20^V!r!X- zuXN$VntrtlzedxqapAAh^jlr{m70FL3;!!kzu$$g)Oz!L*k5ngYkI#6-=z7cyYM$^ zdc%d^sr6Ir!mrZw^)9@r>6={m`!)ToF8p3izsiMwNYi(@@b$XCTU_|ZHNEM=@7MhI zy6{hH`jn6Q>&>J2r@HW4HGQ@Vzgp`v*MgmC%f>!(Ddmpe2SJo!-YRl(-*t& zYczd{3qL{AH@WaBTApSXzD(1va^X`o{c0C}rKaEF!f)61-Ri>Mpy~Iz@Wq;bzYG6A znm+ZD{`$<-^nMrqE=`~7!uz%Sh712EO<(E4H*5NO7ydy_-|oVvYx-MV_{TN zrf+uPv$Z@cUHHA4ezgm~O7mai!l%5c`sva6tUW*4@iWU@PSap9Y{`=y}Fg%4_ZDqZ;EvlX8v7rsmLX?Ed% zr{!7c!e=a1d~S8&SG}d=S>?hn*7B@&;hU=!pS3Rhs<#!Noi2Qx=3~0>xluT3kZO%D7F2Ys^xf0hHk z(t%&$z_&Z_vmE$a9r$7gew72Sm*P^o+JV2^LBGa%f;d@Ldl41rGcc2fo~a z-|D~z9r*1I{1p!TP6z%{2i|nx^^lg*y$*cXLBHRDZ+75QxB3Mdg1-ki@O}q=paY-o zzz=fZGaPuY1E1}{vkm)Ct^;q!2$mTR{0N&E&teDuUxALEr4aALhWXbl^uh@a+!#;ST(*4*U@g{3-`N)q!8_z#r+ruW{gy za^TlG@S`30E(iYS4*V7e{ul>-s{`+M;I}*Q$2#yk9r)uMc+-LZg#*9WflqVb_dD=o z9C**Geu3yy=?;9d13%V*PjTQ+bl_7R_){EszXLzcflqhf$2;&D4t$0KpY6bBI`Fv; z{HYGS;lMkuA{RUGr#a|L9Qe~6_%a86q61&)z&qo4y#s%SgTBdu|D^-p?7-(Z@GBko zGadML2Y!kJf2#wZ>%gya;PV{#)eihL2Y!tMZ>N$hUhBZ?R8?wqIq-&q&lU&1z=7ZD z!0VJwO1C@k=Q!whI`D-Kyy?K})K*IOI`A_c^!pw7IS#yMn_nRMzfN%kPIlnu2}b>u z;=s>$;8Pv=a~*iU1Ao2)pYFh4=)h+<@E1Ao*$({04t%Zyua^W;YB=zv4*FsTzRZCy zao__Ee3=8kz=5xH;42*XdIx@?1K;GpFLL0U9r#KIex(Cn<-oT)@QWSzTOD}kJif|- zuW`_?cHnCr_%#lEoddttfv4*V7ezQKXt>cEE_`0WmSqXWOwf!9kHDK%O? zO*UfQ-~P_;FW9Y)Ku$(vN=-mK&9@Oyg4q~UMhF}ZjnEE=|U_TtZ&BMB#g z+S)4cNWx5AtS*6v5oXF_tr2(tVWuk9DuKU4)0Iq7tagFFB+T^RY8H4mVGb*+Uf>T1 zClf9c_-(>mDp<+hY;Q>@J)o7vRGXLUq|>*!fOP+hA>kUYn8y45oT&)wF}%p zm???XEbyg-nTlBT0xuxU6vQeM_yWRQ%2>q$&mnvy;aq{wCd?GX$`E)eVJ>kjzrbe@ z9!)q!;8O`R1+hE=pGcUghqd4eJ!ew*-E!o>n_Bg~Y-$`$wp z!d!}383J!4d@^Cb!0QMz)v!_oev~j%49g?%1B97cSbP5^_9vV{c&EU(6J{!5Z58+? z!b~BoE`hHjJb~~Ufv+LVl)+jh@MVOv2)7H|K$xk6)hzI(gqbo}^#U&-%q5{!Ch!G> znL1d-0?#3Q2H{+R&n7&XaE8EB2{U!D`~sgrIEQeGz^4*ss$h8pK9Mj}1Z(g2Vt>N9 zgm(&jBw?lm)>eT>5}r!9OWQ!ODS?$M@C$^Q3RoEeZzRkV!14>cjxeWwD@EW(33JM~ zJOV#JcoyNk---PR7Zcto@a=?W6W%KDO@x^mSX}~NM|dvbH3DBln5lrZO5n=~GX=2P z1#TeBso!cA_)@~>5v~__0pSwDWddJ7m??o(40x^)J1g0Ues6r!yc#$hq$h=wjou;F zpYU$Pa?2RyR~Rj8+gTVs*jxc8H`+%1eTB!YEc zIP*Gq6*x8?j@tWf_IpsXjE%&y%_(RzbB7V#e&MFP`32D*^5zvp|2f}?zCIVzR66M2 z5c+v(XfB+VVzgbJhRG`x4H!oEH2MStm`>cZVjyTFL8Jgt0tB@th*UEIT^TJa43Dq% z4kBaI!4&-*X!Ht@>;zJ5pb%u>UWm3?p(vW~DToeFGw?KGE6NIE<&{QkaeZNQTA2|& zr_yNcHKNn%!^4eUU*iy31}Z3O{V04$LGSRi#)AsTt}wa_Sfll`#sNJkMsJa)ahMUy zhsO2*o!Qk>%chbGx>dGZ&^?H;(_?6uk{x37CN~Z@VxkRcgH=T6z9L8*FJe#8T3;bl zD1|Lspp<9RFT6PKqP&YY<(-#zZc+4Qn&Ktf6hF*8yY1-BFh{l#od;cXLk&uv>1lrZ zC7mx;1Cj!xr3?CkDBFCIWM&qVhBfwBCQD-Cpas$Q?gw#l;~7>fp6~)A7KSNeGg6F6 zXQebAV-AB;pp%CeM)y5YC4%hby}9u~@gZb2JxkDg16=r`sk`@x_s>lhHAs?c~( zWF;Xj(WDdLz2im9xXtE0=dmt86g6Ub$;M>w;i%(l{Q@BfeqfzOv09$ZR_>Q~NnYuu z`EzHRV;PBByAXWB^@w2bC-EFuso4|e&`vSRw?>~cCT$E)=}DvUk`QjfhnN|ZQWb3t zr}YdqA41E~=X!pIEJ;Z75vR4QDXr(1A_)d(%Ze0F(_!Ff&VoQah!*dee}N=DM?#J? zCC3j?J%z}j5abR)4l`nNDTsu$-Z>c(2cVyn3pXun_Z<^KM^UNG>-jUglJn&Qe$RYk z?0zHqvC*>s;AI0Y-UR;PU!xGl|MKGAoy^}s|2zmmztKUD@nl3d8XI;`F_N|#(apxI zKQ>DJQJ+fvZLI$R>o?~_QP0zOg3*$*3uS0B`Y{4rTh6xY{T}lj^w6wC=PustEdycF zSDO~{&$zg}Ejg<|=m{SK;p((-ht5a+>wpHY-mMo~=YfGW2Y)SWH=-A%nMSlaZ7(LZ z!e~X>ei#Db;i?oP`gK9{?+CHsp+@wL-q#TUPDBt+&FmuXn8N5MMs&9kJ37sXRU^vA zDi9G{o=s&pkbV5LV3Xj{ogZjxc-iRo8z2!|ia|RUqjp!4MD&4Zv1NQxcmfMzSENco z^kNLHfoysN3*+G)Z6;@SU3l@Pg}Pk{v^~%Ij%oJbkF!0$YA;*0m+fdzSo$K*pn_^M zSGSq#Y||IHAx>au0z(rhi36&3i7qVZS9qE#EYpQ$PS!u|j+S3f96iupGa83@s(-ii zhpmOMrud&Kx3cOprB18+L(uf`mM)gK?fFV;+c#!JCV2(WfJ|OcPIa{{OH3jNln3m@-4=O_XkZn%y;?h{MN23=jCTU z-!oF{@5+hO+l-|ANgJ*hGp%hzJf1ukJU>w;+6=T5Py)(hFB?&x>|}=<*$z zU6Wq${h=#q?^jSO^b94)Gv>?O*YiQ2J~;IDUHbq$2?Kn8<4KwOdfPKNaYK`c+oS$< z9n~}pDnWTMhTet&MsyfW$Y}Q?N;9_^v8)k)!lp%gHY)Z!*FXNm&co2Yrk$<|mIHcs z8nLOle1)5APV3!iefJgOPTW35>%O^0^eaTTmhM!ub1&onz_sA(xls8B(AIrGYrVjp z(XY^n>4RDg4|`k`X!m|GT%aj4E4GI;byWqY7cOn^PclX zBrj^qn#$-9?KX#f!P&fN2KpKOob~Tlh%5O1+2`cB#|%b$xFR5e=+Bn%IkR+C41=%|cX!SWJ2=kgfKHM**!8 z&3?gEP1P47CCG)Wy*u0O_|t8Vb4(rEIdANYeqD%nlM~8TtSt(o;k3Pl(aSNRT>a@v zwAZ>X57SAsFwJNj$#iuv80JOa=t&ko&5Q2CjBqa83L(W8c?h}e^jOZBfTuHkdT)C4 zN3#o=Vcw)}-wo}|bZ<2_>>OkyZJIuLg0J;TVqzC28!ZD7>bwW91fSTb`|g3eK5sy5Ngs2x!f+9>64f7hx(%MxJ-Rz58#<^MaQV3_OL`gyPxuVw3 ze33M0tuQvC?QSj$y*J>I`F!TK%zc@?(_w@RnjpOpBO;sn_ZLFlsr)O2e_<&!Jk9*> zQ*dh;ha7H`FY-0IQNU2%III9YL2I&Bf(5=ove^1rVeFKR_xe4J!}D7|@AsnUm9fkqb#ZIjaHGz6h7V z`IElMkM6xZxPjAsx=xx^Q&nj#aqZ4mY5 zgMGJmBL2>WaNXXqc!MfE(R3qPqB=c-l(D8{g&2=sf6pBNod@i}d%yhfK>1!es0}O^ zdLw>Mc(ftu0havmX9UY?co2qxAJHg%Q@hbthdgYL8KJjAPtj-1p*>vV>_S>=)>^km47xL@aDfhR)VWe_C@-A=)V|ra&((|gycN8xsK-Pb1ADNqO zzwAKmmmRqMv8sJkcD7#@Z(n#h+cyui9>BErll8y?SQB$QRtQ)P$O@rY?CZpw2@JAF z2Myxu3W^HcvHxxr(F{95aqb0%EO`3z2iR*T<%Q5+aUQ~)<22q6g|RW|*TAiZ7PJgX zODc>mOfGDzK}_6ZZViyTR(I4GnJ$$FCiSxRF*+zRE6>=v)@*aDS_4&8eHNIKcm309)mlk8k1fvh;GH;Iux8QAE96J z)(#-&wowNI%eXr{t*~vx=Ss>SDpBOi--zN@E10tEhgq3TABN5p`li2NM88v(nM`kB z)K~L-zj%(7zxOEiz7@IsYesA));QeA#rfM_|2gbfgCp+2t zeB+(6^Ms_#JpThojIBdVAALc-SZIB8I|X}>d2_Nk9=hb%ATbhok-g!cm%q#Y@JGZd}w2JZh9M7Kb_50tYz+;4BodKE_vT=cwWmSgD9n9OTB zzZ{Ic<^gzPPa2=;xe?-7FpZEL?=3y!djzryzD% zT5M`6_I;vLF>8)01#a?ytIicEdS6EjD2NS8YpF~{7k6N@A-Y}C5lKw?a+1D0C39OG zYki3Rn^%4)3JV{XxuXX=usO#|NWyGw4nheviT7|jO7DRatXu(Iw`CnmA}kmVfn9oH z2yV{!*3X}?a@rTZ!kC=(25Uxt@ZH=6pa6jH=8ef4!$}v*KL}M)09ILaIPfH9e)1d#Ht8M|OSXS<>d^p$fzR0-< zioILKLlJtp7|hT7NEQO$(WtSU38-tntMn~vn313{+f;8PntwsU?rwNeuj#c3yM2+j zgaP*43!)nkV4yAg3?}-P?49p1KS7@gurNik9Bx!o<0U-j86p8bJeBT&$-93%E{vLV z4K)_&7}=b3bGec;3bEuWhAp@!){OSyipT)fQBlt$v`;*q_F$_m7v*Q6xR>$ua&#ab zUo(5ns&~a=l|D}~HQE}}gs|szjDT~OgHzl5G>n3~O2J9CCM+nwXFV92Q$(&!JrDHl-(Y{?M;?d9 za?XGhX4`wpd$HN$NxE`19lAzAtNW|y@Dv!k*_bYJK|?Y?l+g?fi`+>m;4E;JW#yymXpJzvyvN; z>QSi9N0gC``+W5Bv`jl)atHE&c^!($Q7Zb8_X zw7_P1geXQB`XUQpj?5j_5^+86%}deEwyaY~3l)xj2h;btD6;)k@<((w+n79hCuqZG z$`%VIiIM*hN%f}qe@G_d_BVIzkZO&)5Z}TVqt&*Y7ChFChYmXL9fg>2KR0R+{8Zr; zEIf^cZ?f=u6m}+K@waXqa3E`;pSI=vEr7y06yi+mdZ2%%YNz*SJyWs%*F{q2xc;m& zS%`jwhj$*y2DmNS^ZUO1&Vju)-XHF-F~x?HI+@9CKO7b_Xq<*q4eg{3doBrFDa}+wb?sSOMSq0(D2sRqf)!*mM z&zonTalj!*f6DW&SXPZZrr}s-6}=I$(ieFcm9d}mWtbChf6x5{IC^e1NM!O=zKbm( z+jo7D<4}fZfvW*4QcW*BsxTHrL_OsN)GeCyY4`|PU}2**n~Nu3LN@BOKh|(zQgAMjd560W-rz70&3)1lQDu8mtllC z7BvWW_8tSno<4V1>!uZD%u2ZKRqGk7QZ;;s#DDHnNV(PE7!O#d!A=T)rVODK**1JI zVDlj5-{Fg3x?Rf8R>DQs4WQ}H#jb<-JXSNPwb5Bb#{TJD=6hDP(DEwZ996YTjCKwdJ;4PSnhu)7)veHlrG0n0Ix`>aU;j*TET8Sg0M1RXWx88 zdJaZ0>@C=TiE9AI`KU0}Uhy^N^Rzz&U3yCi{=yP;r!8x;7W_~MZcT-a)c9mp0)2th zV|@Y}*zqxb6F}XTF|U7<{q?qynQ9SF9-|e*o#s(AeYQpm6&DkSxL#a>Jt5>bTEEzf zK1eTCBNUE1;=9l&qm!@o9lpg^oz}|$o&AR{<))^NE6C3=#j<6wn)eqX8GR#`Vg3lO zfd{mnEuQS{t``;5Gj?J!NI_q$DbiWM@%3emQVJy_of->VBlVw8nP=LYXpLA;VZMwa zrGL*XfS=>Zt;3h!z$R@2IT2=#K43Oqvs3&>otdmfr}Xj9n>BvqZqpEy-T_~V!+d35 zU&FJ3E{F{_qVH&v7eoj9A}3P_wMTRj8lWJ5LAs@yoD59oP1urNhcpC>ALQ>JWq#IP zgk8*GisEtT2ww95&Dxf;2@msKS%k+=mdD4B%8uVvLbi5y!e~zo+K`wLa-vzx+{I=hatrhjDh1ghf28vlJG<;e)bHKCM#$ zjIz$iD6I1m&N{_9IKOxV3YD`VU*tu0EtWM=s$;#1JrAM6j@usYi->t{0gCB z&SH*+#|tH7SOOXJWbVzX_InB@L1bU#Dl`L`u=XqX@?3hEprHydh6XB1Ocg~@WMk*U+?%*N|N>dtnW~)epog-i5d(pi2BJ|pbzD$ka zDgrffwqWS5o|P=a=7{+Ok9+B~$jSj@46rtmIA7#2&X=*Q!%&Nxkw+`{M*fa794cK@ zvlHTIRc^-XGY8=>GwJVr(mX6$IVPOf4LI<$oeHtkM!D>lLW$1DpDeZvQ*Ai z*2z+A9}M<%_8pt`+|zepXq_a%5Ld_K{Lnf?K>K2c#Ri$4SF>*R7SpC*G$!q*=Qe>p4ml-QIb1Uw}Y#D8ly8V6nuhMNG6_Ar(>}U#rlI zRNV(s`=9zcX%`oAB8LX#imYv)p4El1#i_Clb2zHtZfr_{I^~h0p8oqG&tSZG%yS%L z;Bh!gVYCXTAxr$6;GL_5^H~-f@oXgqYU~i_GWRKpFm)p+3E-z-rwCwAuNJ8X_EYjYnZ@e7p!_ zqb=*ox%B&Nv-V}OLSX?mrepnh?8E+wglIO}n5G;2x7rjv8Z@j-0WAT80ThBTS zgb4Xt=5V;$x-jp8aGceNphkQVrfSw~3=XX}J*=~pNuV(mU0VOnhWqy@-W}^?)MsI9 zzwW}@tY4y}^EjdpQLdby*(IYKWjqw<9PKEx3nnvqQao-wM?%ngk)+TqNl67*CCCO_ z<0yN3Ou7dz6hXzIRAl=4B{5V%RQ1;v8N(P9HE@Ny($CRt#BObdP%`O#j2F08)xw{+ z)+IpEwQd6iHglt!#q0GghTh)Sv}bLOd)7V~4&m`?RDC3U;aKm6jMnP_J14Nu>On z{cxYrV_hE<#~L$RIo7DZaea#s*LjXzU*?i5MyIx%cZ)f2WX6T&%qKzJ+9mYb z(o>-Bo=v(7I2{M6Ih)QZ7d({E_gXV(lzh8^d>l4#zB-2y=^aKS{HHRFE-4dtw$5d7 zkd+RjmKeoRDU2xJxxmIc4Bv#f(0OrRfr|U6F%>m1xpwCDwGVGW!Pg9Y(a$@-r3fh0 zBB=S|Ary9wVU?fy*a$R*LqqF6WN(GBe8eThykEiyg|SA&C1iv=M(5aS{JCCF=;5M5 zn;t3v`aDai?v@v|>eL7k{rMtXQWr(fLa3PqADhw7$NmPn;bY#4pZM5!<;usdqxRrq zFkoTyMYL5j(c$p ze6ulWtFQIf$dhG}aR+nswkuN2D0&_3#`>ce>5CLS%S0RLdoTKlzW5@7_;*`~e*4b4 zyvw)iDM`1EwqoFD>Fdn=)V*8 z58xPq-UbPyH0LwYv|P$VD2Vz#Wmk&?KPFV}X!s&O!V|GM{2oMsL>YWwyS#aeHWkw3 zm!+Bq7Z7l5`aSbG9D|4|Zi1u|V||e?z=SQ_3C+sY^jOwD>7sp`(iiy)xgasZ1-oZu zPw!D6BsQa$N*}A6S)J$O`%#8o4nU9Gz1&x(dKm!;J!=;a+u-*0b{}frO3pk!2P1Oi z)jl|o#~pi!~+f{WiV+__*;Ct2yEq%**u$dy}&#LErcc%kh!+aymu zt4LaJMeNM$xL^eCd382{J@$v%M&uQsUR%x?MYy6C{c<`CcLEm5*rB@=)b_;3`D8z* zdA0EZB@pu!F!p+^7%6Kv7HZa4s0L&Nx&q_ad}hV$Kzu9G>IOyp+zH!KFn})Slw*A( z#r^6#i#Mr8bveF7!PXPGakwFSlMC@`Btw&QrQ@Dg^Q2fMA@^ocK!u!w9OELw>#L8x$tp?jXr>-bz$Py-HX z5VXG5pT^n*IIm-~kn!_u>rp{$6+{&gcM0NP5v3jo6*XF~1G?uL^F!^Ek<)}ML&!p` zR|SNT)Fq$O@?xi1vJracLXB(W@72jEwcUC|S$9D?eYok1v~Vo&fHOzPz7w)qcK0%pwdKUlvgN6A%5#a3|ErI@ z2BtIr1QIw`W2yk8_YLhiZ6E`!uFOG&~X& z&9705fkg#~W8>~){b*~HQSR4qet8|FS(w+k1X1yA&{$XCFY{n6*LuixhLY>G8A`5A z8_@o}c^&JeD~s6kX6f6}eT|V(UdNGr2=?B6{)-D$a*+xLPjZ(^Zd}O~E1W|a=20}f z{dt<+lwL-$VgskgF2tF4S5kf}z5yMG@htI4wt~3}%^d_REHRxAG+%#)HE^_n?X8ix zgq96b*pJ&TA4n~A?~g^feMP%ekzv<@zu2|btD+LSsHCsxYE@LmB3?r;vy1vZiqX5> z?YwuuZDK#~fuwWG66@h=9_)wHa&bIhY%-sQC3!>zqnlIM3&aELG|$89bPS)rAsk@h z4HrTmRxf-hey>jUvD@`w4_eVM_cA2jX?UUw9u64RzTGWE{xUV zyVzW%hwfag8X$jnu5{kK5gW;Jzu`H({Z%ii-DlzBIJC-XGqn!oic#mwoOGrNm@@}0 znmNj{R+jW+I=Ev$cqjeCbl-=BRWK+1z;C+jlZ^P`h_7`BHQRD!$^c*M1_~Lw64Clx zKTnb15Ofc@5OULM6n?W2sh`Ie`9!R7mV6$#Ns>SQ>q;%(V~3f)t)-7{c#ouCwTgJP zEzym}q%FQy25Nl&=!;y*BIJyiRSt!AaP{wKOJ@)2>r(GUC4R`seX^h4><|Zt+w&Ya ze@@91>&foBtdF5Nke8*x0V%k4DkB^++<)bhkBxWWy8*rrhN4Xa!x3)x5xwSQ$ zg5lQIg9yP~vm~4Mtfx`%#!W%q+B$|Lv8=f`0k(+>aN)|ltP_Mfg^>!rNU2ybtJpzm z&g~okt+jpLpcOE{IQi~vr9GtX&Jr|c(w}6NK ziptme6gb2`qmsKTI4?oQgOui>`Or$tJB4R%xL(WzyD+*q8~^3vKLh{aRJ+TIXITNh zaW^l41+=eZW2qrbMtwUE2kfmMG0vA6u_ElW%}cBFwa&tRrMg^bc;yY33lHWSopC;^ zP9Ak8+Rt0h9v4O5ER24Z=ev1x_q0mDs4Bb7=VYsG?9*5iHxtzMA!Nko{j8@-2dh#; zN-4cU`+&}mK(fU~p6>~4+Rq#$OPE$gKNn~BvJc7Q{+1zZU~ZYs0v#v%a-i9L>|zwg zvhKv89aa^4U~in-m{XqC>eztW3({Q-{P=!&vU$}y2@ZO=D1~rOei^pK>B7ek1@lQ* z%xp$i7(tah2!A>fPfwFjY{c4Ev9J6rX$1m>THX46ky?ha7TmA%Maub#JiBb&tt3T+ z-T>)j4Yw5AOU$;*_=5>$bYz_CPEV`nTZwt(Q|JUh;O3>36md~BJuR26z_^Ob4qez2 zkX4Um2hs+0gDw*GO;ZK4$q{ZC+6*_RT#^etaydN3+H**Y%n)aa0V`D|1!v8 zNZ6gt1@)C;r@nRRl`M|FB9RgIvQ${?#>THN!s8g_Elb3SMw~GREliq)_;v|usZHr8 zR8w*RaR0i;Ay#KG1jJbA#tYZGeS1lGAZt|0)Id-aiVD zl-#}l??Av3*|Y@yg2>Z(OIM$q=<(C?LvQ#}+{5M=$88dO;{hMb%lS6G;F-kbW#+z) zE_l0n(re1R{g|dZnN9*3;`Q5S@R2hYGt#>2z#Hq#XSi~bg>@}-gKJwW+v!+qp$)q4 zRt#d8cPK3b>bsPA<>Yi4Tu!aCR;(2($rFL#D{eQ6 zjo64Uiovh{mi{L|ahdfyP%w2y)`S@dLolz;nmA|DyZM;j4^^(|i`+<0#6fA~9WJ4U zbWT15-TNP^&i3gczDN;>pn=wjeB^Ay1N)ig1}s)(7+^dasDaD~1A{MC57q=~T}|Gp z=pytHy&KtZ=R{~~-R&Sk#9&_5HsWg718l!Tgh%*9Ag=^t>t6`zC@+j%;V+z=lZ6g4 z_!UjsgU7S^L;qPc=}lbH%^Ui6Tqa7jc6~?c>FCSkQA0^<2TfM$`A6S;pzi;i$F;o0 zeKbjuks1+RuV90z65;m&W2@xG#eSOcNIbZRxD?JS!)hZAzz>G#GOVWZ=NgWg#Yi(B z^9cs`2LK8u?e(?JhO)7a;vK|6zQ{CzMx4x2+(RskU50ca6G!ccBT*i>XZ;LClLz~L zeHVNr6Gz`n-jq3ed96zg&S&H1{7CMg_#zn~FNor!q-L6+Kn^##obPx4$`?6GCZ(Le zUn-r-$AdSr7%y&oTzewo#g>Cr$N1$QL>gR8>b`i9f#SmGE8Ok$_ip8$x!*u)!uWd_ zRzIro8yRtNVF!vCJd=t^r(&p)rzO6LMi55+BG8BB5LFq1U#ocK7n^} zH$kanb6h3(6ctMIMK*zRLG(>IUzfGd=Q5AXEmL#XRzQW(P?K8Ip z#+ke;P37v~Q~QYaWtjXTF@yIjoDTLsP=8-ADHsBa=roc&2Vd2`A{+WJqK~!3=iY__ z;4*(kEe`${8DBZ6?VwA=vVKEuv7Emx!UHY?JtUiNKBjgsm^H6_iuHxlD!i%f`;q91 zWBYy}K)sPCznWx?K(Fk5ygq&K_uHJc0JaxE74Tf~A}C25MUG_R>yAGCz78vDdg}A9 z0G;+Y0
qG6CipHue8v_z`K>27D5AraV}4^h=HFF}X}t=2K3`wQ#^PrvI0F<)VdiCV|9S{< z9r|6@4rdv!8c_2IR_9mWEtY>1GU#`Iy%uI#27HXdAJcdcxOE2{hC^~z!bJ+=HA%CO zxAavF;K(@B`Ox|b#|4)100$){e^?OJ-5Cs!_ zL{YJB6eM5>LmulZc80 zwYF--+WJDRbRQAHRuL+C?*G4LW}kfyMC|w7@80{nKMy}Ld(W&{vu4ejH8X40%$C|U z%|Pww5YO|}I3fpo4sL7VfzC86);#u*S~&*!0@h`6D)RzjgVUpBuTd?D%k`yzQ6BE{ ziTiu3eYNF=0Te0MS;YvMeDx+up6je4*B>#23^#;CNXV})6+%WELZ+bJzJ_n{)l3+g z@XbcJBlf9ZK4O@s4xhIB93~hVrFe4GJ|8(vyR8=%y&cYnQk8Q;YJV{sx;@TLb|<1@ z)*G8-Xb}4mW}6};O|%ZXX7qm$G&xFKYFxrl1!5sCufAweTt44qNne;2j1qPfAY6Un zVS$V``-x1ZiN*AVCTUByD!)Ksq$NF0%4z@=(--Oxp{3<*>Os{Pve3x7F9Zay^o3ob zC|LwI5GXAo7N8{BPIXf$GW~eLkEcc&=vJJo5J@?LBo{9q(9bS~FzNfOoz8@{_|V)Sjdmv!o@WB-$e zUntS=MvMdY1aQmOzV-<6VKGQQU}Kf0Pk82IDRnlD0$A?D<`Y6UJz`5Cz+1D^%4rbz zC%Ki?AfwauDA7g1jz34Mx8oUS{0oSR!#w?N(BW%;%poBRi0`Am@jJ>&p! z(oz68u-%CZFGPfc|0}5t@Lwib?-Z~QTW7rF`>m6YxVpQu-e$6XBw71N!(Pd(ycE~h z{+(pKf)TVD``V9=Lhu7-zV_bHh&K?yxx^^F^~p_}YQdZA0FeT2%=+427t~9M`c{cJ zHU{V-#5pxgG-UGrPu$BRkPXZ_(hatj?ac+zZHfij*+Ni69v~MCfbJlDMmh zi|12F{}R0s$=T)mm`nTGr^RICg-Mz;e(3?_{aK*$9jI`p;QpyZTtnRJB;qcKSi^{W z5y8S9rmn<{L0z)`fqgsPIcJeQIIe&6`;>hOewo0(7`{}$FVgv;0f6TNd!B|Li+5jp zofNo&1&%<0rE6y4S`w`7@IlY|2f(cd`Dw{eKSc6_KXQXr-5^{)7#am!^JH-i5N`Q= z9hznDszMnWEc91Qx-M?ExXgOY558kE7O6l#dk8?7|3m$RoMHi1c`w+fKxa2^-m%K;7r5?o0b(wutFO4OiX zGz{z$Bxlx+XAyz@uMUnFd+dIds4|y>P$z%I_?(9chFmuAf!!aq6}`Iy@#>lz-Y3cR z>}qJ@{4oR12XY)R-FPi5`!_s4_3STGZg?(b-SbJW;{tc+1TG52{pVQ}7OKQ9SxO^M zj@g5ti;1QhFEH<+d2ks{^ZUH>f%Smp9A9w7yup67U8sX23QVU|T`_(?>bnAP9y(yV zYCN~(@WmD&vp1l22aSTBr0x?=W+U^dQDO~sCZ@vrGocXsqB)sCT2FC)6Hy7m_2bTa-GGoTMkGs?OQLLxKwjuB?^>z_t0)_tYg;S zB#0%ZP7zam5MqioF}!oBD`K9YE(I~uqr?nA=VY^-D8!U1VrW6ckg#+Pz+1C#ozLmi zr#27WWp3npv*|muN_YeYQ%64Z4PE)o(a(1!#mLW?><_P@Tr3m0h}aLK1FD&IGf&x) zhAKxiGIw&Hdn4EGdr(AKi+9T7a;FasCrQ}&;kPvS#kj518+^@^ zSGul=f~yB7rnIn2IXVfnaoX+LNtd$_yd&>35U3ij=|et7=fa#yxh^N8I4OD|GX0;n z(2m(BtVcJ2hsNcl$jS9R6x0XOF)>254E&9P`V!}>2sK+l(a_lVa}6csjqzq)P5!;a zHXP&K&zGi3zQ9F;pB=^4Gv0u429mn+X39nyMfOC3I^ImpI3jDjC3$zPm(1bK8oM0s z@Meu#u*Z!5svl({hDT@Hfz%Mk`U$%Dq6pAI)&{%*&lKV4e`d@ zW8>(>ZpiD%w{CM^yY3>O$#k3Ws}OX){8HpMglakR8_q#}qC;Jn-O^jqIQJ23ov2YUidOvGF0dc`N*I<3c#`biHquYA}I9+k~YO?tP#!Iy6q!Ynfn~-EDzzLN+~8mqU76 zvr0h>7cwJ@Q~}2c9^Ey=*~Eh-)?Sbj{ukPqH0*$O@wM}V=9zDRg0+BQ^xs_3G?VlD zWQ?y6jAoj$gNwEn@6F4kbbFR6eLZR}_uSbRgD0R`NUT*rFKD1&0Eh^e3qmv6-v)%N z@@f=kTdv$ARPH97`#j`^8uqox{XpDRV`K5OvH1*6oX3OyPRyw?`M3sb*5ejU4qDSt zM9M^B%$1p#ckK9MRL|`AJ=*)@ndk%CQ9P%WuY=4mgj;|AXc*Wox?>YAf<~;J>S=ny*dn3*z@r zjSb{v=~J)j&fV!qJ_YeGszUUcO~8XOA^aGipflkjhC2%TL0YD^Kyx%C$hS8{27jVu zFggT7uwGAL`ht-;~A&uwzCx1r7cPk8!kdRa(^}5T0^SLOa1yf@<4gjnH{n(sOG5Ew(gf%EcQ*UnMSfIPV)68^RrD0xq0%IbIV z1j|TH%K}_)k^)|dWuz8k?>~`}-*QQxraiQZz>4ZvMfkej3%jI(R7?P?MYFA)m;3L{M7NSwb zzOl*fH&eW^qd}_^`hYy|fms-jeli1RP;_Lrb*$ z=%q5@TqF?Q2f%O-ylDGUrpmv8(Yr7L2_0b1t%yiz{1?VV?mZVn(4m^R2e1uM_Mgv} zE{t3F1>h53d*ZRI%N?i-O$u+|+f*;f0OqzP7!PMz7;=DuB|#jU>B#*O%?JF-{cspd zT#om0;Eq@SD#!b8P=bi+YbaTLNNh8o)Jm4KuHWO;S-+YITzCcRuQ#OJ^Yy;py4Ih1 z4e3rFdXRLMvH|hfZ*%bfS-qRdo@kY(hft^shGU#wCp!Z31>#)mUvmjixPbUN_`!3f zpy=L*)eqWu!*UESF6&DWDOfLM=7`{2Fbx{^9_)yTHsPr!S{)$0l#ZYfFdp4wX!w2$ zLH0-YA%KugI8Pc>l*X;FOH;jLZnx+GfocPkoPRM;u$$C~s-SAY=sCu_ubT4mAT6U~ zyqjw9(lm`P&V8g}Gi(`pJd)IXq`?C&F7hIcJ)L*W%AE0Qb0Mke<9|5cp@s$By6 z5F8=-E#IhFVaNThL3PK|IstPpeutAEd&D@AM4^_OuXVFCNi`b)q~!<|=En+MS|bO& z*?w#$<77jZGrCx-8`16&Rdc|ng+G^Q5uAhPqv;uqGK?+MbOVPxY;Y-K)(X5qDKu7D zXsNllPU^}78l?tlY?Qkpit>#=C{O4#J)hDlqDslBmStGS%eR(g+!Tk5j zi$&VRERqGhSoK|xVw72A3;O?*;{Enxvjs>lBKVk8i%}$XO(g-(hoZj-k^1xmwMg?f z_I|RE)1r-{SW+4X0z?@_Ksrjs!HL(zCZaxWx3T-w=Fn@#41&`W8#FTNd$ar~^Hs;xr|AXfK;(8b&d&>35(}sQ3<4$kzkISajn4uNkUw zSVrCZXul5^p=n#Q&d6bFjK1(FwOrL=JWn`+ek5 zOA0jZID$ak;Cl;|oC7}iYpS4K_6-<$I8*r(#fIi9`)27kVocX_w9WPlD2ygk+>yRy znwq24<3NVY(VE$WEm?Cl!ifrDQ!ZPvd1psH*t4Ml%7kWs=Fh@BhUv7O`fN4!xHkiu z1bz(EnG9S9Yb2M>o&ihPsf-j$*e(Agoni@V#iMMt%Czw;R0*9JEM@28 z*Ft&AbAI!9btT-_0`yTKfY1-2LIes14tzhQ9s=!a|B@WX{3E;>g+=Kj+>W<>?Y9b7 zFC$mqfKTeq@N6*E*WTie-WeW;NM~t&lMJJUvNTus_Q5>lUYe_!4VVy})o61q6t`-r zBFLf9O^jsc2&GMFE>H)#!siR^%N;7rG-_w~Ns%iTeLKT+yY{s&aez^ajcSE{{dlTr zSP<7trDU+uDUCUh;qb?3E&BvTg&0IK$}D!-tB`|Tc6vTL!27;-*DcwxpD4jBG}Kd! zMxik-r=U~hNXNa<6rvfMZs$|fvuPDo2rR)+tvoohok&TmvDap`n>= z)|&nDIEdh@poo2aH`*c$any#fV^K5VBxWJ!QiPQi+jS54ri&3_)s1cf!va9zl1y>N93%jUOJq2Ye0%TO&7Um3VDr>9r{)BI+fg0C;tV>;YA$x zdQlLrP=Wvr6{d-vtB)H&0Bi~2$9ADC*lF9v;`ae2xu!YNsQL2I131e~7O)Rs_ps;b zoUiU?&JXN!<$Yr~7btjRxWOv+VLDs*sf1=8eHNqp#>|Z*eQBCsgg@TUoU|_C(+`>>JN!5$l$C zPTwt%Q6gUs@iLa&_r+wr|WinT-|y|HZh8+^Tb5y$ zWdYJvg;o%&+Jxh7EfPeBi zw@b->q$SA*#F{^ctioIRa*K{r$JnW;J*?3`N6$0+>RDlM1`K-s7R8`bK$u}+HIacq zLi0cDL6fw6Et7b*@jalcX=CY{l*WfZFop0VSN_KU$G8s0iNW&`LmnpkXk-%B{5Shb zq{EY{^Ky;<7t%Gn5kDwn@$sK*9S?$y#t!qVDDL(7vwV-Hi-0tJfXHwPw4GxwfF}sr z*7#RHh4dXSyX`6JzI2+pm7lNNM8fqD+F1Oc^t<3z1I}fi zaQM53`CY4?F$&*F4?I-;0;gXV$i^xjn%Jr1S{U|L;Z|e~!oQd?->`Su6TiO2E zoP%&U3g435ECRpX?&cEMr@&_A40tgWcdBv+C7>c06WZ?;7C+_lXUnI1a0kV&z% zJqdBFZEt``ZK2r?QsHx=+U;nxyVQL&>;6@_s{1Xmb#FR?lOfdwnn%btYex(S@0BKP z1Y3}E(XB#1928R;kA&{0Kloi3dY${Qvad%~XzJ+(*)cUe19a;8Pt^HgTRsf2FcGcC z;X>Ybqo#PS?ZH=6bEjQ=AOrd#jtsa?nj5+RsswIbms>| z{$-p|b|28OE6RW=5aN`kUZ|{@Yere{6=YM}-Ljt$a<|+4bEEZp9hy_s@0khF`aOVH z)bH&ZyQtqKNQXG*U36gm#v+dO%K(TRW<7ZQzU5Gk`i0Jux)rc)$D6vHMr*Heht!hZrIqOUvd;wRwcv$>5Es6wz0meM#3Pc)@A&A`$F^D0?3 zy!2BwSwmY$+BYBy{rN(0L4(M*ijVSXM!^eLtuc~_1osq10qvdGK7|a)%t!%!0GV?> zQ#?}`h^bTfMNHpByg6dqJua4P=wuz|qJc4vL#u`}F#qki6z{$cp6AKUR5Sd#KAH(m zbJKRLPA&`=XT`6%c#|dPPChARu?{q4E+#B|UIBkA7sn zFqRXzriqB_D0gy#((qcyOviYM8o|nRVEQdG(=-(+;gj)4&30v?Yd*F7f(V}1f1%L( z+cOls38eRtaZ(;EBM|h4EueP^_~p>&G4%Z%wAl3;xbbu@1@;LUIV9sOSp|G;@0u5- z{%Z35N`c`8O5vjc(^2odvo`GX9a|*IN03kW{)+QXkY|MS393!$UM_8VGCA|211JY? zJAN(iV~FT}(zjOL$MXGVzCRa*zZUPDP>)mea;#{2obB|21H-~O0NX8K6C_F&YIn^Q z4(=YVIJj{vvh)|xqGDi{Q&@!~fhGJb>dzKkMu~s}?;mO4SuOZELP-75X*yOpQDHho z*eANm8>Y&u*X0$kybA=L18jIBSMjacJ|?5L*yFP~HO*_`m%lGS+KxByeUeKd%ed-p z=)XwD2li)ZL;5uw26EIet_JG?s%=53lz{WRKoA~=Kdi($$@OCR6XZgPe;S59@dl`2 zPooTmzk=i$HEO@DssR0z()cbC!W-E3{bCsP5xe0DPE`0yu**If6)?O$^L*iTBZ^}0 znmq>azi@a3_MzL}2_*KXpu=SPZjNM{t}~s?OrJ_7j!NYD)yRSxTz|Tr_xZ%-Lhk5M zv%eEDtLX3|PxxC%1PzE!qdH{S6J#OIKWCuwTY;IC-v+Y7B@xX_?(M##>L5M%L-v6f zqQjrEtF#_*B+576ryab^k~zjMI|Xb8*5+pN>oC%=lu|id*u-O);a4H~pkW$mn4xL7 zh%J>WG^lafK3~xw4X~dLKxydsB!&@wmhrI@6%GP3=9TLgLG8T|9lw0%!#LP91nP4= zW&&!O+<_s&^`H>e6Nt! z*3_?21aXYV`a;c158v7%AKF*+y&u{ha8?5*@99fsj{Bik! zf{rb~ihS#lk5`TrWJY)%++*KAO7V3UUh-RqK8WIdZ4dXyM|qi?`Hs3z2;O$s!Q`bv z_fyee{boU~OdQvBjKiI_PTWGqMK2&*DInQ{TP(z4?!Pew$qm^S-aVlc(QM~~(){Ky zKQgr4{xw(gE!p4v4AAst>#0BWl-KF~7;*gNwJ4^+FQmJCY84-%?}zBCH<9J81xU2L zQr6`Rm@q15z!@n`+jFr&HR| zlKu~-w`A{WW-(b)0Fu}Iy!{VAp&zXLlki~Z+$Bh*|9K%xYCS0r?>o}fdWk2J>}yF8 zy*PL!;wTR`5F1{Aq33kTGz6LI(Z%XY>X)73;eGx=n09e$1ZRNli?U*J)@{yf_5SQM zIGTFzT4mAC08h8#si8k9^RB?7ukBU5K#UduP79FiHS77S!VcX^{O^rW_{BEL^{B7y z6_tB{EBEqm+4t&E8md4;6=py**RP6=7uyx%SH{L;DXHM|-0{vjupF_@`pMU}NtJ)k zz$o?mF%aqUAuoSLZ&7VH9g+)qK^v*L_p?q)tE7}L1w!w!?{!j^Ny>viK?;P$W4Aad z<&si{l)TPPsH=!w?WDaY(vZru7VoH;mZxP@QzUc>4!r&AS_^U6Z!&1j8Ue1^TfkI` z$9iZlBpnaDcF62qc@rQ@DUDx2XClqZw7E{&qmuTNO8Ww3+GCxxp9=|fDvk6+_rts^ zB<&|E?Ioslck(?iX-^!-^0M0TlDScF>vgAgyQJ8APZp40yFeawK;9IP4;9F@E|4hy zng!%G1ybPxDRZ!Vw~}=qVX>gp82|xE6BML0(@!19zYFBYf-Ln}UyG>9Pt=VV6DxHuO@x!aY`CmUO{KR_TC&Vc^gfp7zS zYBAq3Yh~|sh{JVM(sJvQx*;uKtPs_YLj8&rDuEP=EXbz&~? zL;I&Nz&L-M7KxmVn^=s`D~z82igK*yz4l2l7%SAEu#u=R zPHBv{YK&`QF+Qd+-X4eX6|*xUd|aY1E>;*j>s75MYm9?p`IxErI3o_@(in^*6~=Uh zu})+BO81#aERBZ&qYQ4*8uv=qQY!QvDcHQ*iH1``Oqek{Nqvj&Ep!jS)Qf%~E!nRi z%KqH!S7EN5()i4=9=8}gB4uaYCV4q4a=1J>Mz#i~GFw)yz-9mLDij6TI#bu+n%EjV zk*vyyVpB4=jdS%D?@3dT+bmviwPk)wSrN_7NAa6(4vM zEIR?^L+($EsnV|%cej(Mmh9s+Z8r~7GR3{T%xpOtx*}CW(L&!Y>oX2L8r0T^>)uJQ56R@ZxfZPSMI2jEb&PBD)=5`l0 z#s3Lo6*NKuq@#Hd3J?)(sscE+Y5=ken+bYH?*c@+);Is?FRL?pNVPu=0$?ZVx0@Ku zM}OUJBfhq<0>9A(z7yUF#@=kVsOsTz3nIaNZltm`Yt^Z&%_zGK4H}*;NzQ_+?rS)3 zw0)`&k98rwK@iu2D69kDQ0e`c-c8XNLb|W*uv4T0iA)%+66PU+yfac2es3=!Qx)W2 zp=8>}D9FrsNbf#E_E(UP5pt}8>=_R^R3L{c$RpjCsvg)B#lRQ z%%r|W#!jyv^7;gFcY5dH=@AReYEI3=qp$5fRqp{TK-YUY3czfVgGZuJpzwAUI6-?7$Z8p33z=^(C=Svc^+2i!+6|r7x26!Fz@5_Ujp+so*q(oUc{rg zHTv4lRu#Pi!0kT;9OUH7opE*Q5H{y3$XY^RN?X9l&|dq zg=8p^_!N>RB2j|97AtTFH5d2lxPtf36Ch_0uy;;_{q}k3C~&dwX`hSUkhxJ*HaAvc zcekmmuHmW}mfqhE07|_P`UJ*pewt@VA5Y5a$65MDWQ85=f^sJfAeBT z;uoik$?cP}YBqW|NvG4oX@_%!I@rM+@z&XzgqlZn|341XHi)RwzxY(Cpw^%__9DFZ zYMPf^1I?v;H|p2BC@yuLlZu<{TD-HJWZov%lA0sQ*|`!-!i1-wkDX*D$}&RrkW!ry zYB;FG*ts8^Q1WBO65DTfaxrAV1qF2n+?xWI{pwvaV9dYc%rR5Ir`@ZZ}^KKtA(8Jb?agbD# zO98_NHIVZr9_2}HhBf>8{!U|JER6^Uyl)b{Yb@Qwcc(Es;!+=VQl&BPcamj}ntHP& zXWt@$Zp<;`oKn#$pK8AAmCMVjF{ew0X0#&5-b+NH!wJM}@ zG}5=ATPPW~NvebNa{U^uw`#l@j5qCRhfe_qi}%`>Dg~uG<1wnB5vrh_K}CI~F6cdX zr->KAlX|L5yP3%pgZ+Ga7-pcN&#IXn)1Wk&j@g%y0=4T6$(i8bZpnU8D!AE&rJ!%- z8}_khIvLRDdmR})V7dp5a0#gpE!2`#MRZ06%)0qjC?PWM7LDehv&!sK-IcLFp{%!@ zltFwg**%3j@7vQci<0{Ngs7tRyE&$3e4$&OGv-eu=K=K_iDk292$ax+RsEK-#!2bi^*2NT&oi zwLQq`e{1$rSk*LtiZfb(wAg@l3hW5r(38_>vfBm*$)dY$hn=9BULMuBtI!@P>r zSzif-N}c5E_;@vQD&plR%O0#tqOx^1r|3R#jcl|`Go*0N-s+tOUUYhYi>CYn9O(3} z#nYoG3kFP{uN05vn0)h)&)0SX`9BFcGT%X2s!;ni493_OItQ98{NTrErFuf;0xHaJ zQ2N?l!aD#41EBpJ$sE2Ka4sLA<-i_2&xZZj@KPynx5~K-s;WI-<(!P1m`$sMx0rCQ zO2|M$jKq9~3200m_UZ^nCM%>^=cME@cx47B{b?cMZdPZqDx?Qw6MLwP$wN$d4=QM1 zcOoNS>@T&PNRrUBoLJxf5feI9!Vp)&HInd%N;uM$P%a5;RRR^RK~;c+7}}oQ6Bm&r z5zcDt6>OpV+J>GgMDcpS_UXC`Qp8azf!_*ipQaLae#jijDq*=R;Y~?6TqP8{5}uKS zJ}TiHSHiC)p|?uNbR{%P!cNtCeVL$}wMG&ibQsHY=3CIY2za-1&-r!xl|aK|5Fq+pA*@<~qWqcN3wUQ+K;WIRNqWDiP9 z5TtjigzH@i;Sb{YG7wVbYfDp*3kj*k=-GJ4dj&F6L1w!kZv>>TZ5R?HZ@4G=Pz;&J zO3qGI_eADAN0B*Ca=xPy=%j1<`UFXMo6^GGAAVBw%%2tDb1uN+1@L?V`UuzpK)6oc zJHmo1F(K!hMbc2#XG%!z|*yo&HFU7Wgr`{ z-y~oUJ7D+XX@$c6bAt60>}L@>Z3W?cR;q0x-)RvDkCpe?c!wlU0W!13|J8d0oK8R= z0go2I8d8y)J#CTxI8{g$>@%-zCWxtAs0<@TJ1LRTAc@gc2tFOC_{P z!WD*Hee-YX>g1eMU63Fj%iC6X{+CGY^1NjMh?G2Q={|56c- zfvgS@zP2otbv?7{?%GFio{0q239tDE19dIihtsL>S`HqqsXTSv>An3DV`jP$PtRIZ zx2f0Q(bvW;LNxWo#N16$yY3yy$^$!{-XcKJNw3p;A)dCXtdsFbE0%YVz>LM~2guv$ z9f_xx1;%?SVeSG6i2~CXudfN7qwv%XrGkV=xuvXFK=p1S5qyCd&Z9cLJMgqep?aHO zGpJ-*Q=byBml4Ac%5-`+;c17W>Is6u$_X&DgKdm^TnJaxlUn!@&Z8Ne1QY_CY-HpD2fzu{@1!q!Q!@e12L0`@dwc6DPFeut+M z6t=qwcD%xNg@FAWF`o(8DmTVb0?uvfmNIDUf|2+g)$ z5SlcPbmFW3%7lNbgicpNnI!B}36C=26qRGTBv$4ZissY~f}N$X-7eT3 zM+{G}b$TDdQ@+A>Gr{@*taJ^ovP#0apQIN6&7VJHRRsLO5FaY55eAm{i$fJlJ>^v) zPeparLXW@7!gF9@pw=o6TD5^o>&j~bC7#PGFCDhPU%V(#RWhu2X{fBaYFMxuuc3@$ z4_2{h1B0UnmJIe37M53)hYAb72fk+M63^7~V6ePup%q$M6R@fmToNb_eP50xB|uyf zr~uw7e`UZLG%(|g;lqQ2NMTiV$SMhxmREtuVt*B1%PVWDYeSZR0`kn^K~HU<_A^10o7*fi~n}MO23B z>I!)%uCA=92rQB3fh8FOg@qZKg&B&48H$CVX+d3iMX056pOsYjODB52^9)s8A#caeyfu%vu zM8(wV#ev$(YRf|bYocnlfkDqKkpNG@(n2)n<$=NwimnQV3X9A9wS_eyuvT6dSC^N_ zYiS8UAYCIzAOtyurL}=TVQG~-R|XgA*qZ8!3KUd{*Se~bKyAfR$ckqn*j!h&pd4*j zQXT~6DoRbEv|fplZjVO^M%rL2_jZj(*L6A03eH--`arao4m6apC7=lZE;~v8*g%goom3xprqSc&|^$bVBDR|vE45Kw4 z!C>{|5$OTLtE~#iU4X1Nuy~}>{ek5o7Zm`?hq^)6{Gs_=9f(;DT|d>I{^N3}pTWiI zVny2_%MpeA1LzT*?eWz5%Y%W@?0MFiPS=8*LbU~`Q!TXUwCbvW;Y&HxkiV)pUr;!~+i00b^xj`SR%OF1&> zWOX6RDda%DU}-48G4FfIr3UyR?IUn5`r_v>K{XB4eB@+Il^b6Vqd_^X!^DK+O(0Z` z*(8R@AQc1#ICSdD>XJH)D41eq$`rGt8lyk;Mx{SgTxQkQRmEjuah}rJ>dK*NY#KU5 zk3P^e%xRhF6vlfF+jv*gEau}>)asH+-^V{yU*h0Ty`||ordx_Bg&ZUYAAY!npU)aT zb%u`5P*JnX0zotV4q|w$sIV3WssgnjZz-oPz=qjNoy<-amqXiP=vIg^NvaHBG%X>= z{MJM@IO%$4NO|&ST6G9on*}QZgV5jsYY5mm1lVc={*s`-G>~Bp8Im*Inl^p*kRetO zb4QGmWr0e|UtC)a<*NZ*XbYgZQ9jyDN*U_>cB7Gey&p)xEW6lJI{ zmp>@2S{3BtATVL1j=`c*MV+T}4g$%*l#5LBS1lz|$g3#B1u!_;a&XMdosn+M%q>W_ z3eKC5Zq4GK0^gLG=~hmzFFzOI%<1RNW>|n34FAr`OSk3<@LWKY7j?hTve~ne69h z>BUUpNVS?N9I1IWa+Y+-LOsU+m-Fkf|3A(z1uNC^AJMJy8CAn#|Fe3#hMfPbTp6lj z%H0R|hu!%95Bz^0|F`0Qw-Xb`@Yv@_(A6*UUF1zXuk}VE`?3BXmIS+aqQ~1|Fuivqas$FPgnvLd_6XoXxE5gr z@b*haI>LN}YZ2~Gi9|j_xT;Si(hude9fk4{<{u4sgz3is9^t#Nz;8l$$MKQK2+;Ef zg!u?7unSXxa4o`B2zz4-?n#7g2;W4w{3OtgF#qI8WIzw#L70QEw-t$$AiM)%Bg0cc zFT%0d!=$NwJ~mDJ^#nW&gR>F#8ySh*gK+r-z#(iq7j(eBw5kAj5T?&U`3QT@jYQr> z`0hO9KMZsRKp(=k>PVyw;T=oBPi%MfYl%eWBV79n@Bv}|4WJj{{Chzs3{Go*ABltz z_Ui;a2-6YvhK1@FktUC)+vPJo-Iny}c4F_INo&w91K5`MKmObAB6O_xB=?z=-1nT6 zUY8}+d&ZqGX2_WXPGMH&&%yt<(Y_}#LjM>)AOE)@p8E%$isU{8$w>mwfiMYja0KJ^ zZv?_sd`7&4zT`eD5`4*h8xnJpt%SV8llvmZmzYr6A1xtHMEgluz>FPHiCkNDoj z|26*we8-^vHu5bt$PltV>4-0YyjC)vRFx$s}FlFdf7M4+nc*NKW#haq%O)?*gtKaHmO(`ZE^6mx#Xw z@sA=Ty{!qk$$eLm&nvp;B&Rii-hzbfhbO1`k}b4=qEF*ZN0t$&XA=73bwnxjA!{Ma zXYn)DL$0EO@FjpR1N=bp=bVO~D|$>_jORU4EZuGxq#&+Tq8)O+;pV( zLc1(NGV8qpe209Zof9rL;z{~u18y4NS{yi$W3+a{H3By=If?DF9B@U@N6ce>Qh&rR zLHx~()b(F1v?~5QiS)flAJ25K9vnB#E_A+$^uDQ)NDd$RR|2_F}PD76s-Z{wytGc%)u1-j}7iFHS+am{XOQ27m6F9PXUUCuHEnNNvka@yi z>R$_bb_L5jXGKCo;^btjP7zOfRv~>2(g!hJsqCVI z{($s8(A!_2-6_|rs6SRvt{b{fhDa|zJlUEk4S@cZ*NaU{`9?{2r`H;O1MvSC==UxC zB9U9cAJp5sqWg^GqE(5l35gd{Qdw<*8w)Df!e0LyUJ;srrvOv`5x`aIH706L*_X*T1&>~u|MZ*KzbmUAMJw~1Hy7N?J+e4CtHpOE+r`F3CpMB|NR z*%+VGrbi;LP#%D9b;6Y7zO8JBRo%hs72dq$;SD_!djkzsrc&t;TB<jUXD{XzZ*dTc@=MxV#xLQQkK@&Ljl~ zrktbZU1Kr7w4RCZOr!H-d(B3CU&ar{i_mq!LG+fc=eC5z;KA!Dde%YwluY za^Ob}{K$bHIq)L~e&oQ99Qcs~KXTwl4*bZ0|9}G5f<&ma5{`dh; z{>=MXaqko2-si-<^8h)2T$=N@Qor|Bubw_W^9F7|^owsTjZ+@H#D)Gf8Xo@f@~*4n!NECsuh5Lz zr{9wefG+>X;D3e#+qB%pW1r+xF>`cSs>8)PT%p68ba*Wqb89I3-eI-H}!QXMYV;R+qzq{I7kxK4+gb@-MJ zx9f0^4tq?}u`k*Z_?p?I$Wp2%{qKbhud|yM~6Ko>+*GY znhrj{hd1f)J{_*pp~4P(uH%wqi92V8$G6a5UghzH;I6%(E)>Y6 zldwlirN{W+&kod9!qFM-+MZmvE6tid@m%dYZxHKnO2Nd!0^jVs!l}Nwh55PD;*vdZ zjGDsp0dzzUl&HeoFi5wQd+Q?jIvY3rD8%%N5_py`g`=82p&%}5{>A?C3OY<@cxFzV zGj;mRTo_lxpW^9PH|%RLL= z?y9`m^(hFC^750vh4lS_e^Ag}ej;n7FPV(iYuT1NxB{7fG>D~*2n z)um~~#C9vJtI7!0RTUD!;K3QY%q&xa8jshAxKCoFSX#M z2paS`o52|#9?xK@o=bu_R8dpzq5FM+5>tt8gt{3&VK{?&AQteiWB^}lPmL0fn%e3b zoK0A&U96O&zvI|Gu-0-MF9Er@yo5g6O4jL&7pN_T=XVDD!mCQEE7kFy+CWVOBGoY; zxDl3AU*;i8;4iNZ3%D5Uia&^q1#574!J~X1Jwcp-DJ+CLE8Xtt`{|+A`6BffRVHqc zGwtf@^0=?7Dwh;j!TM3Bs9p=V`OA2q0!;w7ba*Z6UUpzMC+2(d8%Z-*>O!SMN6``2 z$&7~sT~6Jp2TRW|0uz+X0nv{{BZsD9bF2K4kb%08Lvj6&o|u#|oIf(&l2N`{73B+n zS^Fi%qn7tzhB$zyDY46@>%aDMrJv_Sp6C)6Ox4cHkC7>k1Ll-clp;L}a_wlBbSr<# zw8^~q{Zl&04;{j)Lki#3~Rws_ykv# zWLPL&d{2=JzOW8aDl5*!IF7c80DoPm8fpY5ZH#9wF_*ycG=S53?3xaWh5p(FIP-<> z4Jzol8?C#Wk--eqC{19VlmCyl6?h-$TW;wP|QCAWeJvt^!%nNa_6Tl^R*2I}p zCgi4D=S_3HOv%ZeHhaqK3(~E;^QRi=O1CEEI9Qwq)d;GhJkBB`latDV*lE;(BJE%t zTYU!>4IRwDkfYnz)vlA#u53C7i{t#OQ2oE&%Ba-;%~tNRHPfx!IcVrv%CDYnHB-*% zMf;_eY^RO>>#dDL1sDl=zCunGQdBS?#&z>x#sbXj(x_rx&Cl7MTe;BJyUOTcSKDiK zhVh8r_r~d;s;{Cv7=q40SMuXjVF4Ix+jOdq9T=_qYTf%D9Ve9P^N=QCy@+Mo<_Gj06$Ej$kb*u&t*CpP3JNrlHzQJ zQtRf>BByfJAWTL=)ljaOBRkWO(d59O^cZwhgE(7FMPdyK71sbh^Nh1HhT~u6=q&sO zWmp9o7Y3lZ8sdOT$5AoroETilj>$m@{?sh2Ot%8^x4a6Z6w8?sOcwQ!5*<{*XFW$q zj~gLaSv513`JPMgO!yy;Nd#w;F6*L9~uKEQ4Z1& zHJGaXA7}#iaDBjYFhk8Ybq{Bo^5;-{o*b06cr3})#jP|nyNsv2^lV<)LO6b_ z@gv&vIjh&}E==gvg$J0~7V2``^ZIBeM-!Yc$M9uXF0HF7mX!cx-!VujN!0kELZX9Z z%~CG)uy(>i2quqOOa@Gm+Ux~dsK#_=XB9RAL#b1~^ANAMeu&z#GJ(s%;5_`dwU-{E z>uM{wv{&~R=(=(FXcgdSIopP-SIZxrD^inl+9fj;nIaYYIZ47?EwBU=FjspTR#B73 zj#aofBe0OOHQe43<&$oIInZd$gFVNOn-NCK5=LgQg}(g!iyRJ+kl7%FEhITHT!bq9 z!9^ks>e!>kC}he)8JEY(49#iBXz50KaeYEVM;gs{T6nXEr(=9sUE;is9H>-L&or74p2LA(wPsk;`QNZX>_JY zsL?nyJ0TxdXdEG(mP3PYl-Xn^knlzr2QwRV7B0bn_1Mi8({8vE12Y5Uql94s%R5HQ zYbAPUpf-wL8t8}P7jWGN(9>bd#kC<^0>GddvS5kkY3Ud`aitG*7p)w)w*zz7aWF(K ztg41MTQEpEqT*6|hgx$cv*WHE~todXKKvVJ8Vl>d{~T3*s1DBK}?x`D=w3fq|3@^%_^b|1MN}-JCw4V z%IYZw1=^9l2QzjIdEbqL{oU|+ZZ7g zp)95b8ZA)bKt}f(oG6{SNSGmgy(k@aU40pjkrL@QQG`*xLQrIvA|4;5S?cOoje~W? z#Q`mFJd=$+4pVg$lY=3ulw4223?5!ilb-m4G}FvLaez1MILhfi)*t_cUN5UYtpUg_ z7{O>f#FIMc?bMN67Y!}q3nC34Rp-j}P4-QhMj3U;CpwBLRpZhq*L3r_$|R637lr{> z;i|v|xDsZO7D#^#J*IE@Yiq$c7#NA0KlY3tu2|4cWIR{Spq_cVR9@qpB3KMWScVtm zQsNdBV{^$8md>TBN5M{}tSv%Zb!iMHQxmYvEAa@S}$9&kJ*?rns)w!HaifOgQNfs>#%JkzY}0VYZ_a_$aJOhUPl@8su?~QKP}TK3 zuHh^Vr=VTH8g7)Xhfl*9|2qd#m)l3fP0?^Y9RO3VLYSn>Ezoerf6xIp_%z&w8qW9? z#=||X`4`Y|#vd{s?g0%~tKqt8H(QsxTZftr4m#t|d5gxkOyfI1u5>--YCKnHxb9I* z>PZ)1`q|YQ&U*ly0_>~#yh6iu)gE{2a#w4(uH^4+U5^_yTvvR4K= z?-1n<*Z9_IxUTwdjmGzkhU==ndv$$Z&~RPxZ@tF17DlzWSY%RdBMk(SdU4QKqCU}V)@eB7_Z=-)HLw}SpVx3*@ujcEw?)Hs)gHq&eSgw$UA4y+ z-EMz71l%ZH?k5_qtA1{2I8Ui+=ewPX>IW^)Nm>r>)^J_PX_1!a2Q^$*{m9Hup3rbz z@n!vuimvsCD0iji%X5b)H%-^~B@K7rxS%R*=2x#Cf<80pKK}OEg@bhU=>Tj?(lMX}F(s!IvaW-<2A!tA1Xf`PX;|`o?Rx77f>x{8_pl z*J-$}cZ-JWsy*^FzB@HsSM_*Y*Y`IXuB&$IqxHeVhoG-a^Z7{)*OgrD*7bNs z!*!+qUej=!4?*7=UG6pwH?WKL9k1c6GSxp$?*cAQ!=0<)4&9CJaz31t0r4BdhaJ|mgsl&H)_>K-g*5NK4?$cpc^d)7f^6KX+2-9xc zbp40u^t*o^n{Mz`oT=$=RWXS=!7A@BPiuAh#(lBrMVF}bqc#4GayeS`T-f*um43WV ze|&?=Z~Eo-KtgTKhf#C?~F?isq_*}|C&aX?$mFw zN{9htTv(6U}iOpDL<0 z`OW!B6Xs|@Bd@04nEYvYAPpwJIbUhQdTrQXxr8zK&3a@w;)vViH|I4?XwGK>M1Hz@ z=G8L_PdqDW@|*LKCbV=0L%)GDVJ`CX?4@}(=Pyk-UYA7riOSHgqdl|nVCu#=bKcX0 z=DepV-{d#-zgXv=z|8oW^P?s-=S`WPYqR+LWr!nPW;`|LYfTuxz9y~iUol?X`G@;d zstM%|R9A*R`q_k4arrk+Rsbek`Kc>29!)+I%WmK<-<$_FVf?%;p8m^qe$#$)&mcD3 z6Q{$rxQV^tp8(;{HTcgQCjT)LRDKh-saFFoZSB0^VGaJf^S?GxWia7AaTAI7@^3@_ zWc)YsVa`8qoUic2!^gkhhrFz!$#2d_Z~1}we~Y{<$>e`cpL2cf2j>5MTz+$&{Ouo@ ze-rXkc1`)_ob5K9zmIMh)9$AJMvh*MD}VRJ{Skw6;1?_Y^-+Pu@sG)G!Z#4-uD_>9 z<@Xe+jB^cP8iUDa!gu2G7il|pQL)PZcBam#11t8`^C8}e%M>&IMpgc(8+CqDah=c7 np$WF*fsn&Zgbq#q^tgD1Rpnt4-%Z(W&=Ot#E_bAccSrp%4Nw+( diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/utils.so b/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/utils.so deleted file mode 100644 index adc23dd47067db5c93c5e00e99888dc4e81242ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30048 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/devices/monitoredqueue.so b/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/devices/monitoredqueue.so deleted file mode 100644 index 0964eb9c7d7ae3a0a515a6df968c3edc66fb6416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39112 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

G5@r5^@;|JdsO*+ulhxfIt@f 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 Oy31fA-%4pm@IL_Q0M@7g diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/_poll.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/_poll.cpython-34m.so deleted file mode 100644 index 0e6a778b394c108f64ac47ed4fd4dde75d5e8105..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32624 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 FKLM(HH;VuO diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/_version.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/_version.cpython-34m.so deleted file mode 100644 index 22192ec99707a1aef9775ac01eef3cba9b95d23f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9340 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 SfVQ0S3+TxkMw>w$mj4DGwPT9_ diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/constants.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/constants.cpython-34m.so deleted file mode 100644 index e10468be9c96f46bfbc167b94667f84e117f5a9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40588 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

UfZkl=Qd$v9U2{RxeZ0Qj}Mf-5FrTtK~ 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_poll.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_poll.cpython-34m.so deleted file mode 100644 index d8fcb2ee6d070c8d9f1e6329fcaef2b2c3b189f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39600 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_version.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_version.cpython-34m.so deleted file mode 100644 index d7fe888c65bdf4c73a49a2a6d9acfa51c50dcdd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12520 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 H3;llqeG|N> diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/error.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/error.cpython-34m.so deleted file mode 100644 index 5a68c4c6114dc005f80cff6655683105f7b5f631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16448 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 b-(U?y;YumRNEa&K!~XxIwZ#w9vzC7Yrp%K@ diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/socket.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/socket.cpython-34m.so deleted file mode 100644 index 062ff756ba0e839f6c82cd3e22decfe655bc4cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102512 zcmb@v33yb+(gr*MMk0$R2xvsmL4(ExP0(l}Ml-Bubdbm*D0q_)f*=rLGQqG2!OS4X zaU^%f2 zb#--hb)SWWL;b_rB_+A+zxJ*xTtsCI6G)ycSZTy~@?6=j<6L>JQ(e87*DZP4`g!ph zQP2K$xjf89=y7zFFXiUKk=H(6HifM5Dw ztt@x`rb#~gmw4$f|NFpXy6!PpRCNB{C*|3{cD-v+kNd|`{_p>&diDT&d;D+sHDg_C z0?WQ|jk=)a-J<0=8Qo5~WXIL_F)NkV;D6LSwX>w&ljQ0!$RKPn(fHq*Z||KyXy}f8 zAErEW>8@MG_g)?O>4d!>A3R~fi_d;KeaE_gf#rYxwRauws=hLwrFTb{DS1Vg zVjK8t7_heZABWOy;om_PJ}`k$8oU!9;|E#Pl!T)s#!US|VutG{0)u)mf-&T9$ypGDu=lHVJ4 zZcEQl0y$SFz~4(Sj?W~p+gAzf)+vGCzMi1J=Oxf*Q-c2XMWAS_zt1M{w=)vxc?IOO zWzV+~wChSBzefW3c?tS8Bmw`X1a>=|K%Yp5xqSlpYZBP!ngsUGNMN6l3EEwn zK>zs(+MSf3U%>?JmL-t?WCFY@fgO4!7_S=>*r70i{EuLVw)|>h0{?j{f!%f|;C~>2 z-P$G4e`W%^-J1ZvI)VM)NgzKD_H1jOE>2*#K!W~`PB1P<6ZH3r1o)2$>~?(u{j(G3 z^I-ygPE8=+oxq;YCXn+~0{+DbdHY)^D`aV@zB3M+r7Kwvjls;geMi|N3Bg%}rVx9KiH54cbk6cpSv zb5?0VMWCoWP*C71m@=(&nya9oxT=UQi)KulTjDCXYIeb>lAESg1WL*W&nT*>D5-GW zR1zqdR#se4Ruq_8FteztU`9!)s~~?)!8Nl=OGXFED~kg}j+t6sQZ#vVpeRsMFu1b3 zyreYX%AYf|s<>eE9Eh7aw7h&)IU(ic1*1y>s5q_kCeUN%l$8|tDn?gM3gAjsAyBO_ zY*zWqB9b>`T5+J@nvyEI9$PxCc-G{S0&j)9Qn10ZW|kF|vpBRjvbdNunrsU|`#z`y z@|wz-lS;}9{IggW`hhq}k?tdBmy}PLG3!=anURxjE`bKaO9I|Npq$Mxcxp-U^id^f zp<>#sQvbA>)7TybDn7epaM6qzXiwIc)Zk&2rNsf%DxeOdSSm2Kv|`##r6rT4B6dfI zmCu?PwVQ8d*(?mC_#w%o3o1&>VAQ}AP-NwCMdhVKtB62Ht}B{R88vCF7t#!ai^?i0 zXOvLC@@GLr36B)2jjAjSOq&_4NMf&{u^?}O*pf2RUNj-DX>7-o7ZsOGDk`3if)TSO zOTjdB0OSbXip#hz2u6R&?2;KmJt0+g(6&D*5N&rvQJ{D#JXCad@QjioQri#jg^N%F z#0`C-^2St_p_8I)Sb5P*`6&f|Ic&a_yiH8_Us9X#-j5&J7 zv|{SPprVQrS&63`aTm{+RZ-&NdTq!?Pt-qrrPBhj=4mcn zSHdxY+MW|AsVIm|U~lPUIplJJ3`X<}lnel?oE6^5lSL6AsWn`g>=_LKwwDemp*X0h zJgrf^B=WULW$Fb<^!vCc^y(M6%7 zI=2Cm`$n}C>KpqOvlqM+H}x%ppf)`Baw(+ss&J#th4LswM{o zd{Pl#g|8HgEEE71)n)Lk(f|xg@`NvVE25GFApL;|Z+UqU;s~t?2q-b6WM)}l4pwkp zI%$X|Ppc@NRa%NA=@_~8@Df{P>7;3;liAH}c7hp<^-tQ9d5|6Az~NF z5Yr9r1Lqg(`|P3_1*3~*mxzRb8=YBkQ$cx2@oXqLl!|2}a&RCY2}Ic^7X^x<1hp3> zVpEpHR=`1{MI@nsnP-;FEH0blnlWt>l)Ru~)&&>Qb$Ng;GwHG{!1)T%8AKP;)g`Wi z5^fm2Ur`}aB|vE5!obY33n7aB*B^Gf5LH~m{k}ni3kF;;;DRifWBvc~g9P;d`1`*( z+7j^ptyWu-5@Sg?uUG$%&hL|4y*cLs;wv5a*0A8Oci_t< z|5gWX%Wrhxw)|ZV+?IdHfqSI<76)E0@swNR?T{_?Om*OS63=kpsS?j~;MG#T?!ap$ zf4&1>BJn~8Zp)eKz->8Y4&0Vg?ZB5AqMu6~_^9jTI6Cm>8Ufp3-k z%N=;V18z=ulyT@E~1@;5o~QIg*^H{L$F^v`4m zK0)%QJMa`KKf{4fl>GS)JXP|Kci{h!{8bLzBl)Wx_$0}{+<~V{{uK`VCdt3mfoDkm zMh8Ai@*i^G*^_=hvc8?!1E=4nFEhV{#pk< zUh*$<;EzcDRSrB~`a`_~e_HZ4Iq*U$-*n*5N&e*d@%EW2`BNPDD#@SWz{@0mwgX=; z`Nuo(D#>5yz_&>LY6o5|`Ik8GM#;azfiIE#D;;=~4A20o9xdT64^4B}? zRZ{*|2i{Nen-08Q@*i^G=S%*S1@U&|O8!CzzDx2?b>P*K ze~ANclKiy}`~k_o(t(?jf0YA&Qu6O|;D;oClLKEN`CSX+?b9OplO6agl0V&n7s~O? zaNuhsf4&2E$^31+1K%w9s~mW;eE|uNVE?>cCT^{6+_ENd7|( z+|FZL9QZwwKeamEo*pURcBH3f0+Y+PV(0}a64~b=D=T) z{Hq+eozK@h@Yf}OlLObKKBfa-EBTWb#oH%e@~1fPcO-v?10OH>vmN+*l7GAdFO>X+ z4!lY7S3B^jl7EQe%*oBO8$HYo-X;z9QZQHU**8_B>yr8zFhJzci{h!{Phleh2-Drz$Z(7 z(}Ay){D&O)bjhDm6K}Uwl0Vgf&yxJv4!mCS=Q;2y$zSNew@Uu04*WLBzr=wzO8#00 zUL*NeI`A?X-&Q&Bu;kz6z;{XcO%D7%$?por+owtLCp++eN&a*PZc6?P2mXxY&v)R5 zB>#8^UN8Bp9C(Z5uXfkj-j$v@SBr%V1a2Y!d-uXW%Vl7E>4UoQEZ9QY3xC-J$K z>A;J#1b)bYuakI-1K%U%xa4`8eSTQ$6>^dtc%#Hq9C*qg!Jq2Db%}c%_!5byJMemm zXE^W%seiTu|5W064*YwG>kfRc#Pc2a&k`T+!2gzbp#x98MD(}XfnOx?B@R4ao=+}w z;PrBRmpkyWQqBqo-gpZSyQ|)TSIBYP>cE!=1^+Gw?wZ(_3z{7Gqq4uI1NW>Ga#|dC z-i<kjd2`_C0p|6~WA|EZ9Z>cBk(qQ1w050P@x9k_=cEX7~86E6~S@*KEd%F!Ko z<31s0yaO*R7IF$5_#i1~ssnd@Bji*$@e(1Y+JXC|oFxuCW2ca_%z?XZ5^|P1@F(PW zt#IHe9g|qlDhKYGCgjvR@KW1<9QdJXq0cS{UO!#PX>#Dx?6~B>Yi|>BS{!&`nUG_j z>)Za5B>R;v&--n>Ox`cZaNsNHfjIo>4t$KXbG`$wmi*(Lcp-~%C65w%(ep|6GelI9 zqTrnbEB`lD!B0?dkAiCop042Pb7~n1PR}IUf7uG&%LehAr{Je4xUS%*D|o(wpR3^G z75owfFI4bL6@03K%U5=|v`oRTQ2479Tz$2qTEX)a{v`@NSix%*+^^uv6x>ko zYZd%d1z)D%y%l`9g7;DI6$f@diF z=?b2y;28=&K*6&W{2~RDQD zK32g~6#O~`PgU@73hq(x@d}=<;MXg7hJxRq;Mod3LBaDBe4>Ku3SOY#`3hdB;Num% zNWlvge3F7sRq$d3FH`Um1+P-@DGFY#;5RAw5(U3m!D|(Kx`HoL@RlHkp;9C{EQo$P)e71t`Qt(?9yh*{U6x>wsISPJA!RIP?i-ONn zaF=}UfO3=h3ZAUsw<&mvf-g|;R0R(yxJSVkDtNkrS1Wjif-h3=Yz4nv!S$Mb$>y`j zxXeN5g8B9@NPTKHC2wra8r8k8tF_-4{8u|Y4_8EUW@$CG;;-LTL?=O%)yVW9qT3N& z&-7(PQ|f1}WO@M6w1u&jGkq@6ZlY_MK7(i|;2U{mBRElMAMeZaxwim(X>^v4*d%Bvuc@slIW9& zu4ejSqAAt0%9y^FXiD*{LZI}pXu9)rY)J3$MjsHDaErgm@X%pQaj7T^vy(5 zN@t}oJ&9=Ax>+u!Zy=hsY}TQp)c;XLdx&mg`YNI+_*;!k4B65WsJTBgq+`YfWWneIjO*+iEyeIn76s#%3hcOsfnG%KI!c0|)w(#m7{ zNH@@ws#zIK|4cNcXqJcRy+l)LW~DIw4bha6SuUnOCz?_*>(F03{zOv>W;HSWF42^F zS&dA;Lo}saRz1^eh^AD_TFLZlL{o}oEob_9qA9hqYMFkLXiBN9YNj71`ck6Hn7)_j zY@!R9zLRK5wXA%mZzq~kEGv)cxkOWHWo0m3PBf)dmWSz^iKbM_N@02u(X>^zTuk3U zG;NWsLx1x46P-tN6Vq1_?IpUA=|MyfBD$XG%ZMIK^h%}&5KSqUwVdg5i5^OHEz@TZ zJ&fpTrh5@Roai#9Pb8XBDyxv`PDE2GW#u#7j_9k1&SUyW3TR55tPG}qCfZN5hv~gU zQwn9JF#QeDlsZ{1ravc|QYP!r5gvb{DOIwXn0}XNN|CHarr#l&QX{LL=`}=CN@T5M z`Zc1*5WSq~=ZU7&$f{-fNuntwvZ|SWm}p9ctTLwWC7MzotB~nCiKf)Y%4hm^qABIE z@|d1WG^ILL2Giw4Q;K7Gn7*0l8;MR~dJ@re)L^-ozJX{;eXK)&@c0v5NOTj^R}o!A zbR*M)h@M1rJ=2#FO{tBwlIa0NPbPXf)8`UhLUb+DXAnJw=xU~W5q%TUWuWoPf3#ld zVfXi)`?~Z{eV|=yBQICA_TSj*TzwFtl5TwO9fP;l^qSm5;B^JM=#kv@$M+xSd{O zg09z%c9os<@StSf*x8z&ky+11qIUK0@C>R1X)Jf_Xlc=lNLm>GuTRy(Q_J-5_$u9~ znyMRRWxA1HrH8f!G(DUYZ6GNyQ4j48bkoB_p@nR9s4H-Z9@)I){UdO z@k^kO9$uKN=lorH!Kx&fOAk*>gPmrirJ$A6jj+}WG|-W(v}P*IHrFA>W!5+EG&jQ8 zL-m#0Sb^}>so>eVpLp_9QR{wokL=8Pb9W0@cm~SgFFIb{aX#Zi?{(g>-Z5jZik!b? zv~K(f&Bps9fwVk-WJa3qk4#R>){Q_~s&0%)OZOZ8G>_geB#lCui!So)3kvQoIWB(V zC%>`RZ~OpbnHt&-)oZ~kkY4HG+u-@FTCkQ0f10l6Xu4tQ#s`(%t@8j1d**b~f@c#; zO+5^e0w<|#*2CW9!__aKl@u*_5^^&Zgx+Gh>}}2#b|0Ci*DOeP1+LTH9OkKMD!jZf zFjo%`%hPi<;G*UoNV|;dt)zP402BycsptHz1*-|DS(xt9f}1f2+MB~g{mSQAq8=WZ zf=lCfvI7R!pO#`~9mZr7G6)L;i#A(nu)hpTLCckk$+@{62Ji9TT3c&c&^YR7cYQ={ zg(e|J5x>!>pEm@yhNwJ!LkrySGMCTj(x8Q&Ls~;H3^pSzRST|0Jra@Hd`WCP{o� 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/utils.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/utils.cpython-34m.so deleted file mode 100644 index c65812145564f2fd78f14db4c7aaa9822cea1f4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29336 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/select.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/select.py deleted file mode 100644 index 0a2e09a2..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/select.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Import basic exposure of libzmq C API as a backend""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -public_api = [ - 'Context', - 'Socket', - 'Frame', - 'Message', - 'Stopwatch', - 'device', - 'proxy', - 'zmq_poll', - 'strerror', - 'zmq_errno', - 'has', - 'curve_keypair', - 'constants', - 'zmq_version_info', - 'IPC_PATH_MAX_LEN', -] - -def select_backend(name): - """Select the pyzmq backend""" - try: - mod = __import__(name, fromlist=public_api) - except ImportError: - raise - except Exception as e: - import sys - from zmq.utils.sixcerpt import reraise - exc_info = sys.exc_info() - reraise(ImportError, ImportError("Importing %s failed with %s" % (name, e)), exc_info[2]) - - ns = {} - for key in public_api: - ns[key] = getattr(mod, key) - return ns diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/__init__.py deleted file mode 100644 index 23715963..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -"""0MQ Device classes for running in background threads or processes.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq import device -from zmq.devices import basedevice, proxydevice, monitoredqueue, monitoredqueuedevice - -from zmq.devices.basedevice import * -from zmq.devices.proxydevice import * -from zmq.devices.monitoredqueue import * -from zmq.devices.monitoredqueuedevice import * - -__all__ = ['device'] -for submod in (basedevice, proxydevice, monitoredqueue, monitoredqueuedevice): - __all__.extend(submod.__all__) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/basedevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/basedevice.py deleted file mode 100644 index 7ba1b7ac..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/basedevice.py +++ /dev/null @@ -1,229 +0,0 @@ -"""Classes for running 0MQ Devices in the background.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import time -from threading import Thread -from multiprocessing import Process - -from zmq import device, QUEUE, Context, ETERM, ZMQError - - -class Device: - """A 0MQ Device to be run in the background. - - You do not pass Socket instances to this, but rather Socket types:: - - Device(device_type, in_socket_type, out_socket_type) - - For instance:: - - dev = Device(zmq.QUEUE, zmq.DEALER, zmq.ROUTER) - - Similar to zmq.device, but socket types instead of sockets themselves are - passed, and the sockets are created in the work thread, to avoid issues - with thread safety. As a result, additional bind_{in|out} and - connect_{in|out} methods and setsockopt_{in|out} allow users to specify - connections for the sockets. - - Parameters - ---------- - device_type : int - The 0MQ Device type - {in|out}_type : int - zmq socket types, to be passed later to context.socket(). e.g. - zmq.PUB, zmq.SUB, zmq.REQ. If out_type is < 0, then in_socket is used - for both in_socket and out_socket. - - Methods - ------- - bind_{in_out}(iface) - passthrough for ``{in|out}_socket.bind(iface)``, to be called in the thread - connect_{in_out}(iface) - passthrough for ``{in|out}_socket.connect(iface)``, to be called in the - thread - setsockopt_{in_out}(opt,value) - passthrough for ``{in|out}_socket.setsockopt(opt, value)``, to be called in - the thread - - Attributes - ---------- - daemon : int - sets whether the thread should be run as a daemon - Default is true, because if it is false, the thread will not - exit unless it is killed - context_factory : callable (class attribute) - Function for creating the Context. This will be Context.instance - in ThreadDevices, and Context in ProcessDevices. The only reason - it is not instance() in ProcessDevices is that there may be a stale - Context instance already initialized, and the forked environment - should *never* try to use it. - """ - - context_factory = Context.instance - """Callable that returns a context. Typically either Context.instance or Context, - depending on whether the device should share the global instance or not. - """ - - def __init__(self, device_type=QUEUE, in_type=None, out_type=None): - self.device_type = device_type - if in_type is None: - raise TypeError("in_type must be specified") - if out_type is None: - raise TypeError("out_type must be specified") - self.in_type = in_type - self.out_type = out_type - self._in_binds = [] - self._in_connects = [] - self._in_sockopts = [] - self._out_binds = [] - self._out_connects = [] - self._out_sockopts = [] - self.daemon = True - self.done = False - - def bind_in(self, addr): - """Enqueue ZMQ address for binding on in_socket. - - See zmq.Socket.bind for details. - """ - self._in_binds.append(addr) - - def connect_in(self, addr): - """Enqueue ZMQ address for connecting on in_socket. - - See zmq.Socket.connect for details. - """ - self._in_connects.append(addr) - - def setsockopt_in(self, opt, value): - """Enqueue setsockopt(opt, value) for in_socket - - See zmq.Socket.setsockopt for details. - """ - self._in_sockopts.append((opt, value)) - - def bind_out(self, addr): - """Enqueue ZMQ address for binding on out_socket. - - See zmq.Socket.bind for details. - """ - self._out_binds.append(addr) - - def connect_out(self, addr): - """Enqueue ZMQ address for connecting on out_socket. - - See zmq.Socket.connect for details. - """ - self._out_connects.append(addr) - - def setsockopt_out(self, opt, value): - """Enqueue setsockopt(opt, value) for out_socket - - See zmq.Socket.setsockopt for details. - """ - self._out_sockopts.append((opt, value)) - - def _setup_sockets(self): - ctx = self.context_factory() - - self._context = ctx - - # create the sockets - ins = ctx.socket(self.in_type) - if self.out_type < 0: - outs = ins - else: - outs = ctx.socket(self.out_type) - - # set sockopts (must be done first, in case of zmq.IDENTITY) - for opt,value in self._in_sockopts: - ins.setsockopt(opt, value) - for opt,value in self._out_sockopts: - outs.setsockopt(opt, value) - - for iface in self._in_binds: - ins.bind(iface) - for iface in self._out_binds: - outs.bind(iface) - - for iface in self._in_connects: - ins.connect(iface) - for iface in self._out_connects: - outs.connect(iface) - - return ins,outs - - def run_device(self): - """The runner method. - - Do not call me directly, instead call ``self.start()``, just like a Thread. - """ - ins,outs = self._setup_sockets() - device(self.device_type, ins, outs) - - def run(self): - """wrap run_device in try/catch ETERM""" - try: - self.run_device() - except ZMQError as e: - if e.errno == ETERM: - # silence TERM errors, because this should be a clean shutdown - pass - else: - raise - finally: - self.done = True - - def start(self): - """Start the device. Override me in subclass for other launchers.""" - return self.run() - - def join(self,timeout=None): - """wait for me to finish, like Thread.join. - - Reimplemented appropriately by subclasses.""" - tic = time.time() - toc = tic - while not self.done and not (timeout is not None and toc-tic > timeout): - time.sleep(.001) - toc = time.time() - - -class BackgroundDevice(Device): - """Base class for launching Devices in background processes and threads.""" - - launcher=None - _launch_class=None - - def start(self): - self.launcher = self._launch_class(target=self.run) - self.launcher.daemon = self.daemon - return self.launcher.start() - - def join(self, timeout=None): - return self.launcher.join(timeout=timeout) - - -class ThreadDevice(BackgroundDevice): - """A Device that will be run in a background Thread. - - See Device for details. - """ - _launch_class=Thread - -class ProcessDevice(BackgroundDevice): - """A Device that will be run in a background Process. - - See Device for details. - """ - _launch_class=Process - context_factory = Context - """Callable that returns a context. Typically either Context.instance or Context, - depending on whether the device should share the global instance or not. - """ - - -__all__ = ['Device', 'ThreadDevice', 'ProcessDevice'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.cpython-34m.so deleted file mode 100644 index d90bdb8819517044bafe2675ce2d81e9fb344982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36672 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 A^#A|> diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.pxd deleted file mode 100644 index 1e26ed86..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.pxd +++ /dev/null @@ -1,177 +0,0 @@ -"""MonitoredQueue class declarations. - -Authors -------- -* MinRK -* Brian Granger -""" - -# -# Copyright (c) 2010 Min Ragan-Kelley, Brian Granger -# -# This file is part of pyzmq, but is derived and adapted from zmq_queue.cpp -# originally from libzmq-2.1.6, used under LGPLv3 -# -# pyzmq is free software; you can redistribute it and/or modify it under -# the terms of the Lesser GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# pyzmq is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# Lesser GNU General Public License for more details. -# -# You should have received a copy of the Lesser GNU General Public License -# along with this program. If not, see . -# - -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- - -from libzmq cimport * - -#----------------------------------------------------------------------------- -# MonitoredQueue C functions -#----------------------------------------------------------------------------- - -cdef inline int _relay(void *insocket_, void *outsocket_, void *sidesocket_, - zmq_msg_t msg, zmq_msg_t side_msg, zmq_msg_t id_msg, - bint swap_ids) nogil: - cdef int rc - cdef int64_t flag_2 - cdef int flag_3 - cdef int flags - cdef bint more - cdef size_t flagsz - cdef void * flag_ptr - - if ZMQ_VERSION_MAJOR < 3: - flagsz = sizeof (int64_t) - flag_ptr = &flag_2 - else: - flagsz = sizeof (int) - flag_ptr = &flag_3 - - if swap_ids:# both router, must send second identity first - # recv two ids into msg, id_msg - rc = zmq_msg_recv(&msg, insocket_, 0) - if rc < 0: return rc - - rc = zmq_msg_recv(&id_msg, insocket_, 0) - if rc < 0: return rc - - # send second id (id_msg) first - #!!!! always send a copy before the original !!!! - rc = zmq_msg_copy(&side_msg, &id_msg) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, outsocket_, ZMQ_SNDMORE) - if rc < 0: return rc - rc = zmq_msg_send(&id_msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - # send first id (msg) second - rc = zmq_msg_copy(&side_msg, &msg) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, outsocket_, ZMQ_SNDMORE) - if rc < 0: return rc - rc = zmq_msg_send(&msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - while (True): - rc = zmq_msg_recv(&msg, insocket_, 0) - if rc < 0: return rc - # assert (rc == 0) - rc = zmq_getsockopt (insocket_, ZMQ_RCVMORE, flag_ptr, &flagsz) - if rc < 0: return rc - flags = 0 - if ZMQ_VERSION_MAJOR < 3: - if flag_2: - flags |= ZMQ_SNDMORE - else: - if flag_3: - flags |= ZMQ_SNDMORE - # LABEL has been removed: - # rc = zmq_getsockopt (insocket_, ZMQ_RCVLABEL, flag_ptr, &flagsz) - # if flag_3: - # flags |= ZMQ_SNDLABEL - # assert (rc == 0) - - rc = zmq_msg_copy(&side_msg, &msg) - if rc < 0: return rc - if flags: - rc = zmq_msg_send(&side_msg, outsocket_, flags) - if rc < 0: return rc - # only SNDMORE for side-socket - rc = zmq_msg_send(&msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - else: - rc = zmq_msg_send(&side_msg, outsocket_, 0) - if rc < 0: return rc - rc = zmq_msg_send(&msg, sidesocket_, 0) - if rc < 0: return rc - break - return rc - -# the MonitoredQueue C function, adapted from zmq::queue.cpp : -cdef inline int c_monitored_queue (void *insocket_, void *outsocket_, - void *sidesocket_, zmq_msg_t *in_msg_ptr, - zmq_msg_t *out_msg_ptr, int swap_ids) nogil: - """The actual C function for a monitored queue device. - - See ``monitored_queue()`` for details. - """ - - cdef zmq_msg_t msg - cdef int rc = zmq_msg_init (&msg) - cdef zmq_msg_t id_msg - rc = zmq_msg_init (&id_msg) - if rc < 0: return rc - cdef zmq_msg_t side_msg - rc = zmq_msg_init (&side_msg) - if rc < 0: return rc - - cdef zmq_pollitem_t items [2] - items [0].socket = insocket_ - items [0].fd = 0 - items [0].events = ZMQ_POLLIN - items [0].revents = 0 - items [1].socket = outsocket_ - items [1].fd = 0 - items [1].events = ZMQ_POLLIN - items [1].revents = 0 - # I don't think sidesocket should be polled? - # items [2].socket = sidesocket_ - # items [2].fd = 0 - # items [2].events = ZMQ_POLLIN - # items [2].revents = 0 - - while (True): - - # // Wait while there are either requests or replies to process. - rc = zmq_poll (&items [0], 2, -1) - if rc < 0: return rc - # // The algorithm below asumes ratio of request and replies processed - # // under full load to be 1:1. Although processing requests replies - # // first is tempting it is suspectible to DoS attacks (overloading - # // the system with unsolicited replies). - # - # // Process a request. - if (items [0].revents & ZMQ_POLLIN): - # send in_prefix to side socket - rc = zmq_msg_copy(&side_msg, in_msg_ptr) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - # relay the rest of the message - rc = _relay(insocket_, outsocket_, sidesocket_, msg, side_msg, id_msg, swap_ids) - if rc < 0: return rc - if (items [1].revents & ZMQ_POLLIN): - # send out_prefix to side socket - rc = zmq_msg_copy(&side_msg, out_msg_ptr) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - # relay the rest of the message - rc = _relay(outsocket_, insocket_, sidesocket_, msg, side_msg, id_msg, swap_ids) - if rc < 0: return rc - return rc diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.py deleted file mode 100644 index c6d91429..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueue.py +++ /dev/null @@ -1,37 +0,0 @@ -"""pure Python monitored_queue function - -For use when Cython extension is unavailable (PyPy). - -Authors -------- -* MinRK -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import zmq - -def _relay(ins, outs, sides, prefix, swap_ids): - msg = ins.recv_multipart() - if swap_ids: - msg[:2] = msg[:2][::-1] - outs.send_multipart(msg) - sides.send_multipart([prefix] + msg) - -def monitored_queue(in_socket, out_socket, mon_socket, - in_prefix=b'in', out_prefix=b'out'): - - swap_ids = in_socket.type == zmq.ROUTER and out_socket.type == zmq.ROUTER - - poller = zmq.Poller() - poller.register(in_socket, zmq.POLLIN) - poller.register(out_socket, zmq.POLLIN) - while True: - events = dict(poller.poll()) - if in_socket in events: - _relay(in_socket, out_socket, mon_socket, in_prefix, swap_ids) - if out_socket in events: - _relay(out_socket, in_socket, mon_socket, out_prefix, swap_ids) - -__all__ = ['monitored_queue'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueuedevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueuedevice.py deleted file mode 100644 index 9723f866..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/monitoredqueuedevice.py +++ /dev/null @@ -1,66 +0,0 @@ -"""MonitoredQueue classes and functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from zmq import ZMQError, PUB -from zmq.devices.proxydevice import ProxyBase, Proxy, ThreadProxy, ProcessProxy -from zmq.devices.monitoredqueue import monitored_queue - - -class MonitoredQueueBase(ProxyBase): - """Base class for overriding methods.""" - - _in_prefix = b'' - _out_prefix = b'' - - def __init__(self, in_type, out_type, mon_type=PUB, in_prefix=b'in', out_prefix=b'out'): - - ProxyBase.__init__(self, in_type=in_type, out_type=out_type, mon_type=mon_type) - - self._in_prefix = in_prefix - self._out_prefix = out_prefix - - def run_device(self): - ins,outs,mons = self._setup_sockets() - monitored_queue(ins, outs, mons, self._in_prefix, self._out_prefix) - - -class MonitoredQueue(MonitoredQueueBase, Proxy): - """Class for running monitored_queue in the background. - - See zmq.devices.Device for most of the spec. MonitoredQueue differs from Proxy, - only in that it adds a ``prefix`` to messages sent on the monitor socket, - with a different prefix for each direction. - - MQ also supports ROUTER on both sides, which zmq.proxy does not. - - If a message arrives on `in_sock`, it will be prefixed with `in_prefix` on the monitor socket. - If it arrives on out_sock, it will be prefixed with `out_prefix`. - - A PUB socket is the most logical choice for the mon_socket, but it is not required. - """ - pass - - -class ThreadMonitoredQueue(MonitoredQueueBase, ThreadProxy): - """Run zmq.monitored_queue in a background thread. - - See MonitoredQueue and Proxy for details. - """ - pass - - -class ProcessMonitoredQueue(MonitoredQueueBase, ProcessProxy): - """Run zmq.monitored_queue in a background thread. - - See MonitoredQueue and Proxy for details. - """ - - -__all__ = [ - 'MonitoredQueue', - 'ThreadMonitoredQueue', - 'ProcessMonitoredQueue' -] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/proxydevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/proxydevice.py deleted file mode 100644 index 68be3f15..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/devices/proxydevice.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Proxy classes and functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import zmq -from zmq.devices.basedevice import Device, ThreadDevice, ProcessDevice - - -class ProxyBase(object): - """Base class for overriding methods.""" - - def __init__(self, in_type, out_type, mon_type=zmq.PUB): - - Device.__init__(self, in_type=in_type, out_type=out_type) - self.mon_type = mon_type - self._mon_binds = [] - self._mon_connects = [] - self._mon_sockopts = [] - - def bind_mon(self, addr): - """Enqueue ZMQ address for binding on mon_socket. - - See zmq.Socket.bind for details. - """ - self._mon_binds.append(addr) - - def connect_mon(self, addr): - """Enqueue ZMQ address for connecting on mon_socket. - - See zmq.Socket.bind for details. - """ - self._mon_connects.append(addr) - - def setsockopt_mon(self, opt, value): - """Enqueue setsockopt(opt, value) for mon_socket - - See zmq.Socket.setsockopt for details. - """ - self._mon_sockopts.append((opt, value)) - - def _setup_sockets(self): - ins,outs = Device._setup_sockets(self) - ctx = self._context - mons = ctx.socket(self.mon_type) - - # set sockopts (must be done first, in case of zmq.IDENTITY) - for opt,value in self._mon_sockopts: - mons.setsockopt(opt, value) - - for iface in self._mon_binds: - mons.bind(iface) - - for iface in self._mon_connects: - mons.connect(iface) - - return ins,outs,mons - - def run_device(self): - ins,outs,mons = self._setup_sockets() - zmq.proxy(ins, outs, mons) - -class Proxy(ProxyBase, Device): - """Threadsafe Proxy object. - - See zmq.devices.Device for most of the spec. This subclass adds a - _mon version of each _{in|out} method, for configuring the - monitor socket. - - A Proxy is a 3-socket ZMQ Device that functions just like a - QUEUE, except each message is also sent out on the monitor socket. - - A PUB socket is the most logical choice for the mon_socket, but it is not required. - """ - pass - -class ThreadProxy(ProxyBase, ThreadDevice): - """Proxy in a Thread. See Proxy for more.""" - pass - -class ProcessProxy(ProxyBase, ProcessDevice): - """Proxy in a Process. See Proxy for more.""" - pass - - -__all__ = [ - 'Proxy', - 'ThreadProxy', - 'ProcessProxy', -] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/error.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/error.py deleted file mode 100644 index 48cdaafa..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/error.py +++ /dev/null @@ -1,164 +0,0 @@ -"""0MQ Error classes and functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -class ZMQBaseError(Exception): - """Base exception class for 0MQ errors in Python.""" - pass - -class ZMQError(ZMQBaseError): - """Wrap an errno style error. - - Parameters - ---------- - errno : int - The ZMQ errno or None. If None, then ``zmq_errno()`` is called and - used. - msg : string - Description of the error or None. - """ - errno = None - - def __init__(self, errno=None, msg=None): - """Wrap an errno style error. - - Parameters - ---------- - errno : int - The ZMQ errno or None. If None, then ``zmq_errno()`` is called and - used. - msg : string - Description of the error or None. - """ - from zmq.backend import strerror, zmq_errno - if errno is None: - errno = zmq_errno() - if isinstance(errno, int): - self.errno = errno - if msg is None: - self.strerror = strerror(errno) - else: - self.strerror = msg - else: - if msg is None: - self.strerror = str(errno) - else: - self.strerror = msg - # flush signals, because there could be a SIGINT - # waiting to pounce, resulting in uncaught exceptions. - # Doing this here means getting SIGINT during a blocking - # libzmq call will raise a *catchable* KeyboardInterrupt - # PyErr_CheckSignals() - - def __str__(self): - return self.strerror - - def __repr__(self): - return "ZMQError('%s')"%self.strerror - - -class ZMQBindError(ZMQBaseError): - """An error for ``Socket.bind_to_random_port()``. - - See Also - -------- - .Socket.bind_to_random_port - """ - pass - - -class NotDone(ZMQBaseError): - """Raised when timeout is reached while waiting for 0MQ to finish with a Message - - See Also - -------- - .MessageTracker.wait : object for tracking when ZeroMQ is done - """ - pass - - -class ContextTerminated(ZMQError): - """Wrapper for zmq.ETERM - - .. versionadded:: 13.0 - """ - pass - - -class Again(ZMQError): - """Wrapper for zmq.EAGAIN - - .. versionadded:: 13.0 - """ - pass - - -def _check_rc(rc, errno=None): - """internal utility for checking zmq return condition - - and raising the appropriate Exception class - """ - if rc < 0: - from zmq.backend import zmq_errno - if errno is None: - errno = zmq_errno() - from zmq import EAGAIN, ETERM - if errno == EAGAIN: - raise Again(errno) - elif errno == ETERM: - raise ContextTerminated(errno) - else: - raise ZMQError(errno) - -_zmq_version_info = None -_zmq_version = None - -class ZMQVersionError(NotImplementedError): - """Raised when a feature is not provided by the linked version of libzmq. - - .. versionadded:: 14.2 - """ - min_version = None - def __init__(self, min_version, msg='Feature'): - global _zmq_version - if _zmq_version is None: - from zmq import zmq_version - _zmq_version = zmq_version() - self.msg = msg - self.min_version = min_version - self.version = _zmq_version - - def __repr__(self): - return "ZMQVersionError('%s')" % str(self) - - def __str__(self): - return "%s requires libzmq >= %s, have %s" % (self.msg, self.min_version, self.version) - - -def _check_version(min_version_info, msg='Feature'): - """Check for libzmq - - raises ZMQVersionError if current zmq version is not at least min_version - - min_version_info is a tuple of integers, and will be compared against zmq.zmq_version_info(). - """ - global _zmq_version_info - if _zmq_version_info is None: - from zmq import zmq_version_info - _zmq_version_info = zmq_version_info() - if _zmq_version_info < min_version_info: - min_version = '.'.join(str(v) for v in min_version_info) - raise ZMQVersionError(min_version, msg) - - -__all__ = [ - 'ZMQBaseError', - 'ZMQBindError', - 'ZMQError', - 'NotDone', - 'ContextTerminated', - 'Again', - 'ZMQVersionError', -] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/__init__.py deleted file mode 100644 index 568e8e8d..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -"""A Tornado based event loop for PyZMQ.""" - -from zmq.eventloop.ioloop import IOLoop - -__all__ = ['IOLoop'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/ioloop.py deleted file mode 100644 index 35f4c418..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/ioloop.py +++ /dev/null @@ -1,193 +0,0 @@ -# coding: utf-8 -"""tornado IOLoop API with zmq compatibility - -If you have tornado ≥ 3.0, this is a subclass of tornado's IOLoop, -otherwise we ship a minimal subset of tornado in zmq.eventloop.minitornado. - -The minimal shipped version of tornado's IOLoop does not include -support for concurrent futures - this will only be available if you -have tornado ≥ 3.0. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from __future__ import absolute_import, division, with_statement - -import os -import time -import warnings - -from zmq import ( - Poller, - POLLIN, POLLOUT, POLLERR, - ZMQError, ETERM, -) - -try: - import tornado - tornado_version = tornado.version_info -except (ImportError, AttributeError): - tornado_version = () - -try: - # tornado ≥ 3 - from tornado.ioloop import PollIOLoop, PeriodicCallback - from tornado.log import gen_log -except ImportError: - from .minitornado.ioloop import PollIOLoop, PeriodicCallback - from .minitornado.log import gen_log - - -class DelayedCallback(PeriodicCallback): - """Schedules the given callback to be called once. - - The callback is called once, after callback_time milliseconds. - - `start` must be called after the DelayedCallback is created. - - The timeout is calculated from when `start` is called. - """ - def __init__(self, callback, callback_time, io_loop=None): - # PeriodicCallback require callback_time to be positive - warnings.warn("""DelayedCallback is deprecated. - Use loop.add_timeout instead.""", DeprecationWarning) - callback_time = max(callback_time, 1e-3) - super(DelayedCallback, self).__init__(callback, callback_time, io_loop) - - def start(self): - """Starts the timer.""" - self._running = True - self._firstrun = True - self._next_timeout = time.time() + self.callback_time / 1000.0 - self.io_loop.add_timeout(self._next_timeout, self._run) - - def _run(self): - if not self._running: return - self._running = False - try: - self.callback() - except Exception: - gen_log.error("Error in delayed callback", exc_info=True) - - -class ZMQPoller(object): - """A poller that can be used in the tornado IOLoop. - - This simply wraps a regular zmq.Poller, scaling the timeout - by 1000, so that it is in seconds rather than milliseconds. - """ - - def __init__(self): - self._poller = Poller() - - @staticmethod - def _map_events(events): - """translate IOLoop.READ/WRITE/ERROR event masks into zmq.POLLIN/OUT/ERR""" - z_events = 0 - if events & IOLoop.READ: - z_events |= POLLIN - if events & IOLoop.WRITE: - z_events |= POLLOUT - if events & IOLoop.ERROR: - z_events |= POLLERR - return z_events - - @staticmethod - def _remap_events(z_events): - """translate zmq.POLLIN/OUT/ERR event masks into IOLoop.READ/WRITE/ERROR""" - events = 0 - if z_events & POLLIN: - events |= IOLoop.READ - if z_events & POLLOUT: - events |= IOLoop.WRITE - if z_events & POLLERR: - events |= IOLoop.ERROR - return events - - def register(self, fd, events): - return self._poller.register(fd, self._map_events(events)) - - def modify(self, fd, events): - return self._poller.modify(fd, self._map_events(events)) - - def unregister(self, fd): - return self._poller.unregister(fd) - - def poll(self, timeout): - """poll in seconds rather than milliseconds. - - Event masks will be IOLoop.READ/WRITE/ERROR - """ - z_events = self._poller.poll(1000*timeout) - return [ (fd,self._remap_events(evt)) for (fd,evt) in z_events ] - - def close(self): - pass - - -class ZMQIOLoop(PollIOLoop): - """ZMQ subclass of tornado's IOLoop""" - def initialize(self, impl=None, **kwargs): - impl = ZMQPoller() if impl is None else impl - super(ZMQIOLoop, self).initialize(impl=impl, **kwargs) - - @staticmethod - def instance(): - """Returns a global `IOLoop` instance. - - Most applications have a single, global `IOLoop` running on the - main thread. Use this method to get this instance from - another thread. To get the current thread's `IOLoop`, use `current()`. - """ - # install ZMQIOLoop as the active IOLoop implementation - # when using tornado 3 - if tornado_version >= (3,): - PollIOLoop.configure(ZMQIOLoop) - return PollIOLoop.instance() - - def start(self): - try: - super(ZMQIOLoop, self).start() - except ZMQError as e: - if e.errno == ETERM: - # quietly return on ETERM - pass - else: - raise e - - -if tornado_version >= (3,0) and tornado_version < (3,1): - def backport_close(self, all_fds=False): - """backport IOLoop.close to 3.0 from 3.1 (supports fd.close() method)""" - from zmq.eventloop.minitornado.ioloop import PollIOLoop as mini_loop - return mini_loop.close.__get__(self)(all_fds) - ZMQIOLoop.close = backport_close - - -# public API name -IOLoop = ZMQIOLoop - - -def install(): - """set the tornado IOLoop instance with the pyzmq IOLoop. - - After calling this function, tornado's IOLoop.instance() and pyzmq's - IOLoop.instance() will return the same object. - - An assertion error will be raised if tornado's IOLoop has been initialized - prior to calling this function. - """ - from tornado import ioloop - # check if tornado's IOLoop is already initialized to something other - # than the pyzmq IOLoop instance: - assert (not ioloop.IOLoop.initialized()) or \ - ioloop.IOLoop.instance() is IOLoop.instance(), "tornado IOLoop already initialized" - - if tornado_version >= (3,): - # tornado 3 has an official API for registering new defaults, yay! - ioloop.IOLoop.configure(ZMQIOLoop) - else: - # we have to set the global instance explicitly - ioloop.IOLoop._instance = IOLoop.instance() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/concurrent.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/concurrent.py deleted file mode 100644 index 519b23d5..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/concurrent.py +++ /dev/null @@ -1,11 +0,0 @@ -"""pyzmq does not ship tornado's futures, -this just raises informative NotImplementedErrors to avoid having to change too much code. -""" - -class NotImplementedFuture(object): - def __init__(self, *args, **kwargs): - raise NotImplementedError("pyzmq does not ship tornado's Futures, " - "install tornado >= 3.0 for future support." - ) - -Future = TracebackFuture = NotImplementedFuture diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/ioloop.py deleted file mode 100644 index 710a3ecb..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/ioloop.py +++ /dev/null @@ -1,829 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2009 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""An I/O event loop for non-blocking sockets. - -Typical applications will use a single `IOLoop` object, in the -`IOLoop.instance` singleton. The `IOLoop.start` method should usually -be called at the end of the ``main()`` function. Atypical applications may -use more than one `IOLoop`, such as one `IOLoop` per thread, or per `unittest` -case. - -In addition to I/O events, the `IOLoop` can also schedule time-based events. -`IOLoop.add_timeout` is a non-blocking alternative to `time.sleep`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import datetime -import errno -import functools -import heapq -import logging -import numbers -import os -import select -import sys -import threading -import time -import traceback - -from .concurrent import Future, TracebackFuture -from .log import app_log, gen_log -from . import stack_context -from .util import Configurable - -try: - import signal -except ImportError: - signal = None - -try: - import thread # py2 -except ImportError: - import _thread as thread # py3 - -from .platform.auto import set_close_exec, Waker - - -class TimeoutError(Exception): - pass - - -class IOLoop(Configurable): - """A level-triggered I/O loop. - - We use ``epoll`` (Linux) or ``kqueue`` (BSD and Mac OS X) if they - are available, or else we fall back on select(). If you are - implementing a system that needs to handle thousands of - simultaneous connections, you should use a system that supports - either ``epoll`` or ``kqueue``. - - Example usage for a simple TCP server:: - - import errno - import functools - import ioloop - import socket - - def connection_ready(sock, fd, events): - while True: - try: - connection, address = sock.accept() - except socket.error, e: - if e.args[0] not in (errno.EWOULDBLOCK, errno.EAGAIN): - raise - return - connection.setblocking(0) - handle_connection(connection, address) - - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - sock.setblocking(0) - sock.bind(("", port)) - sock.listen(128) - - io_loop = ioloop.IOLoop.instance() - callback = functools.partial(connection_ready, sock) - io_loop.add_handler(sock.fileno(), callback, io_loop.READ) - io_loop.start() - - """ - # Constants from the epoll module - _EPOLLIN = 0x001 - _EPOLLPRI = 0x002 - _EPOLLOUT = 0x004 - _EPOLLERR = 0x008 - _EPOLLHUP = 0x010 - _EPOLLRDHUP = 0x2000 - _EPOLLONESHOT = (1 << 30) - _EPOLLET = (1 << 31) - - # Our events map exactly to the epoll events - NONE = 0 - READ = _EPOLLIN - WRITE = _EPOLLOUT - ERROR = _EPOLLERR | _EPOLLHUP - - # Global lock for creating global IOLoop instance - _instance_lock = threading.Lock() - - _current = threading.local() - - @staticmethod - def instance(): - """Returns a global `IOLoop` instance. - - Most applications have a single, global `IOLoop` running on the - main thread. Use this method to get this instance from - another thread. To get the current thread's `IOLoop`, use `current()`. - """ - if not hasattr(IOLoop, "_instance"): - with IOLoop._instance_lock: - if not hasattr(IOLoop, "_instance"): - # New instance after double check - IOLoop._instance = IOLoop() - return IOLoop._instance - - @staticmethod - def initialized(): - """Returns true if the singleton instance has been created.""" - return hasattr(IOLoop, "_instance") - - def install(self): - """Installs this `IOLoop` object as the singleton instance. - - This is normally not necessary as `instance()` will create - an `IOLoop` on demand, but you may want to call `install` to use - a custom subclass of `IOLoop`. - """ - assert not IOLoop.initialized() - IOLoop._instance = self - - @staticmethod - def current(): - """Returns the current thread's `IOLoop`. - - If an `IOLoop` is currently running or has been marked as current - by `make_current`, returns that instance. Otherwise returns - `IOLoop.instance()`, i.e. the main thread's `IOLoop`. - - A common pattern for classes that depend on ``IOLoops`` is to use - a default argument to enable programs with multiple ``IOLoops`` - but not require the argument for simpler applications:: - - class MyClass(object): - def __init__(self, io_loop=None): - self.io_loop = io_loop or IOLoop.current() - - In general you should use `IOLoop.current` as the default when - constructing an asynchronous object, and use `IOLoop.instance` - when you mean to communicate to the main thread from a different - one. - """ - current = getattr(IOLoop._current, "instance", None) - if current is None: - return IOLoop.instance() - return current - - def make_current(self): - """Makes this the `IOLoop` for the current thread. - - An `IOLoop` automatically becomes current for its thread - when it is started, but it is sometimes useful to call - `make_current` explictly before starting the `IOLoop`, - so that code run at startup time can find the right - instance. - """ - IOLoop._current.instance = self - - @staticmethod - def clear_current(): - IOLoop._current.instance = None - - @classmethod - def configurable_base(cls): - return IOLoop - - @classmethod - def configurable_default(cls): - # this is the only patch to IOLoop: - from zmq.eventloop.ioloop import ZMQIOLoop - return ZMQIOLoop - # the remainder of this method is unused, - # but left for preservation reasons - if hasattr(select, "epoll"): - from tornado.platform.epoll import EPollIOLoop - return EPollIOLoop - if hasattr(select, "kqueue"): - # Python 2.6+ on BSD or Mac - from tornado.platform.kqueue import KQueueIOLoop - return KQueueIOLoop - from tornado.platform.select import SelectIOLoop - return SelectIOLoop - - def initialize(self): - pass - - def close(self, all_fds=False): - """Closes the `IOLoop`, freeing any resources used. - - If ``all_fds`` is true, all file descriptors registered on the - IOLoop will be closed (not just the ones created by the - `IOLoop` itself). - - Many applications will only use a single `IOLoop` that runs for the - entire lifetime of the process. In that case closing the `IOLoop` - is not necessary since everything will be cleaned up when the - process exits. `IOLoop.close` is provided mainly for scenarios - such as unit tests, which create and destroy a large number of - ``IOLoops``. - - An `IOLoop` must be completely stopped before it can be closed. This - means that `IOLoop.stop()` must be called *and* `IOLoop.start()` must - be allowed to return before attempting to call `IOLoop.close()`. - Therefore the call to `close` will usually appear just after - the call to `start` rather than near the call to `stop`. - - .. versionchanged:: 3.1 - If the `IOLoop` implementation supports non-integer objects - for "file descriptors", those objects will have their - ``close`` method when ``all_fds`` is true. - """ - raise NotImplementedError() - - def add_handler(self, fd, handler, events): - """Registers the given handler to receive the given events for fd. - - The ``events`` argument is a bitwise or of the constants - ``IOLoop.READ``, ``IOLoop.WRITE``, and ``IOLoop.ERROR``. - - When an event occurs, ``handler(fd, events)`` will be run. - """ - raise NotImplementedError() - - def update_handler(self, fd, events): - """Changes the events we listen for fd.""" - raise NotImplementedError() - - def remove_handler(self, fd): - """Stop listening for events on fd.""" - raise NotImplementedError() - - def set_blocking_signal_threshold(self, seconds, action): - """Sends a signal if the `IOLoop` is blocked for more than - ``s`` seconds. - - Pass ``seconds=None`` to disable. Requires Python 2.6 on a unixy - platform. - - The action parameter is a Python signal handler. Read the - documentation for the `signal` module for more information. - If ``action`` is None, the process will be killed if it is - blocked for too long. - """ - raise NotImplementedError() - - def set_blocking_log_threshold(self, seconds): - """Logs a stack trace if the `IOLoop` is blocked for more than - ``s`` seconds. - - Equivalent to ``set_blocking_signal_threshold(seconds, - self.log_stack)`` - """ - self.set_blocking_signal_threshold(seconds, self.log_stack) - - def log_stack(self, signal, frame): - """Signal handler to log the stack trace of the current thread. - - For use with `set_blocking_signal_threshold`. - """ - gen_log.warning('IOLoop blocked for %f seconds in\n%s', - self._blocking_signal_threshold, - ''.join(traceback.format_stack(frame))) - - def start(self): - """Starts the I/O loop. - - The loop will run until one of the callbacks calls `stop()`, which - will make the loop stop after the current event iteration completes. - """ - raise NotImplementedError() - - def stop(self): - """Stop the I/O loop. - - If the event loop is not currently running, the next call to `start()` - will return immediately. - - To use asynchronous methods from otherwise-synchronous code (such as - unit tests), you can start and stop the event loop like this:: - - ioloop = IOLoop() - async_method(ioloop=ioloop, callback=ioloop.stop) - ioloop.start() - - ``ioloop.start()`` will return after ``async_method`` has run - its callback, whether that callback was invoked before or - after ``ioloop.start``. - - Note that even after `stop` has been called, the `IOLoop` is not - completely stopped until `IOLoop.start` has also returned. - Some work that was scheduled before the call to `stop` may still - be run before the `IOLoop` shuts down. - """ - raise NotImplementedError() - - def run_sync(self, func, timeout=None): - """Starts the `IOLoop`, runs the given function, and stops the loop. - - If the function returns a `.Future`, the `IOLoop` will run - until the future is resolved. If it raises an exception, the - `IOLoop` will stop and the exception will be re-raised to the - caller. - - The keyword-only argument ``timeout`` may be used to set - a maximum duration for the function. If the timeout expires, - a `TimeoutError` is raised. - - This method is useful in conjunction with `tornado.gen.coroutine` - to allow asynchronous calls in a ``main()`` function:: - - @gen.coroutine - def main(): - # do stuff... - - if __name__ == '__main__': - IOLoop.instance().run_sync(main) - """ - future_cell = [None] - - def run(): - try: - result = func() - except Exception: - future_cell[0] = TracebackFuture() - future_cell[0].set_exc_info(sys.exc_info()) - else: - if isinstance(result, Future): - future_cell[0] = result - else: - future_cell[0] = Future() - future_cell[0].set_result(result) - self.add_future(future_cell[0], lambda future: self.stop()) - self.add_callback(run) - if timeout is not None: - timeout_handle = self.add_timeout(self.time() + timeout, self.stop) - self.start() - if timeout is not None: - self.remove_timeout(timeout_handle) - if not future_cell[0].done(): - raise TimeoutError('Operation timed out after %s seconds' % timeout) - return future_cell[0].result() - - def time(self): - """Returns the current time according to the `IOLoop`'s clock. - - The return value is a floating-point number relative to an - unspecified time in the past. - - By default, the `IOLoop`'s time function is `time.time`. However, - it may be configured to use e.g. `time.monotonic` instead. - Calls to `add_timeout` that pass a number instead of a - `datetime.timedelta` should use this function to compute the - appropriate time, so they can work no matter what time function - is chosen. - """ - return time.time() - - def add_timeout(self, deadline, callback): - """Runs the ``callback`` at the time ``deadline`` from the I/O loop. - - Returns an opaque handle that may be passed to - `remove_timeout` to cancel. - - ``deadline`` may be a number denoting a time (on the same - scale as `IOLoop.time`, normally `time.time`), or a - `datetime.timedelta` object for a deadline relative to the - current time. - - Note that it is not safe to call `add_timeout` from other threads. - Instead, you must use `add_callback` to transfer control to the - `IOLoop`'s thread, and then call `add_timeout` from there. - """ - raise NotImplementedError() - - def remove_timeout(self, timeout): - """Cancels a pending timeout. - - The argument is a handle as returned by `add_timeout`. It is - safe to call `remove_timeout` even if the callback has already - been run. - """ - raise NotImplementedError() - - def add_callback(self, callback, *args, **kwargs): - """Calls the given callback on the next I/O loop iteration. - - It is safe to call this method from any thread at any time, - except from a signal handler. Note that this is the **only** - method in `IOLoop` that makes this thread-safety guarantee; all - other interaction with the `IOLoop` must be done from that - `IOLoop`'s thread. `add_callback()` may be used to transfer - control from other threads to the `IOLoop`'s thread. - - To add a callback from a signal handler, see - `add_callback_from_signal`. - """ - raise NotImplementedError() - - def add_callback_from_signal(self, callback, *args, **kwargs): - """Calls the given callback on the next I/O loop iteration. - - Safe for use from a Python signal handler; should not be used - otherwise. - - Callbacks added with this method will be run without any - `.stack_context`, to avoid picking up the context of the function - that was interrupted by the signal. - """ - raise NotImplementedError() - - def add_future(self, future, callback): - """Schedules a callback on the ``IOLoop`` when the given - `.Future` is finished. - - The callback is invoked with one argument, the - `.Future`. - """ - assert isinstance(future, Future) - callback = stack_context.wrap(callback) - future.add_done_callback( - lambda future: self.add_callback(callback, future)) - - def _run_callback(self, callback): - """Runs a callback with error handling. - - For use in subclasses. - """ - try: - callback() - except Exception: - self.handle_callback_exception(callback) - - def handle_callback_exception(self, callback): - """This method is called whenever a callback run by the `IOLoop` - throws an exception. - - By default simply logs the exception as an error. Subclasses - may override this method to customize reporting of exceptions. - - The exception itself is not passed explicitly, but is available - in `sys.exc_info`. - """ - app_log.error("Exception in callback %r", callback, exc_info=True) - - -class PollIOLoop(IOLoop): - """Base class for IOLoops built around a select-like function. - - For concrete implementations, see `tornado.platform.epoll.EPollIOLoop` - (Linux), `tornado.platform.kqueue.KQueueIOLoop` (BSD and Mac), or - `tornado.platform.select.SelectIOLoop` (all platforms). - """ - def initialize(self, impl, time_func=None): - super(PollIOLoop, self).initialize() - self._impl = impl - if hasattr(self._impl, 'fileno'): - set_close_exec(self._impl.fileno()) - self.time_func = time_func or time.time - self._handlers = {} - self._events = {} - self._callbacks = [] - self._callback_lock = threading.Lock() - self._timeouts = [] - self._cancellations = 0 - self._running = False - self._stopped = False - self._closing = False - self._thread_ident = None - self._blocking_signal_threshold = None - - # Create a pipe that we send bogus data to when we want to wake - # the I/O loop when it is idle - self._waker = Waker() - self.add_handler(self._waker.fileno(), - lambda fd, events: self._waker.consume(), - self.READ) - - def close(self, all_fds=False): - with self._callback_lock: - self._closing = True - self.remove_handler(self._waker.fileno()) - if all_fds: - for fd in self._handlers.keys(): - try: - close_method = getattr(fd, 'close', None) - if close_method is not None: - close_method() - else: - os.close(fd) - except Exception: - gen_log.debug("error closing fd %s", fd, exc_info=True) - self._waker.close() - self._impl.close() - - def add_handler(self, fd, handler, events): - self._handlers[fd] = stack_context.wrap(handler) - self._impl.register(fd, events | self.ERROR) - - def update_handler(self, fd, events): - self._impl.modify(fd, events | self.ERROR) - - def remove_handler(self, fd): - self._handlers.pop(fd, None) - self._events.pop(fd, None) - try: - self._impl.unregister(fd) - except Exception: - gen_log.debug("Error deleting fd from IOLoop", exc_info=True) - - def set_blocking_signal_threshold(self, seconds, action): - if not hasattr(signal, "setitimer"): - gen_log.error("set_blocking_signal_threshold requires a signal module " - "with the setitimer method") - return - self._blocking_signal_threshold = seconds - if seconds is not None: - signal.signal(signal.SIGALRM, - action if action is not None else signal.SIG_DFL) - - def start(self): - if not logging.getLogger().handlers: - # The IOLoop catches and logs exceptions, so it's - # important that log output be visible. However, python's - # default behavior for non-root loggers (prior to python - # 3.2) is to print an unhelpful "no handlers could be - # found" message rather than the actual log entry, so we - # must explicitly configure logging if we've made it this - # far without anything. - logging.basicConfig() - if self._stopped: - self._stopped = False - return - old_current = getattr(IOLoop._current, "instance", None) - IOLoop._current.instance = self - self._thread_ident = thread.get_ident() - self._running = True - - # signal.set_wakeup_fd closes a race condition in event loops: - # a signal may arrive at the beginning of select/poll/etc - # before it goes into its interruptible sleep, so the signal - # will be consumed without waking the select. The solution is - # for the (C, synchronous) signal handler to write to a pipe, - # which will then be seen by select. - # - # In python's signal handling semantics, this only matters on the - # main thread (fortunately, set_wakeup_fd only works on the main - # thread and will raise a ValueError otherwise). - # - # If someone has already set a wakeup fd, we don't want to - # disturb it. This is an issue for twisted, which does its - # SIGCHILD processing in response to its own wakeup fd being - # written to. As long as the wakeup fd is registered on the IOLoop, - # the loop will still wake up and everything should work. - old_wakeup_fd = None - if hasattr(signal, 'set_wakeup_fd') and os.name == 'posix': - # requires python 2.6+, unix. set_wakeup_fd exists but crashes - # the python process on windows. - try: - old_wakeup_fd = signal.set_wakeup_fd(self._waker.write_fileno()) - if old_wakeup_fd != -1: - # Already set, restore previous value. This is a little racy, - # but there's no clean get_wakeup_fd and in real use the - # IOLoop is just started once at the beginning. - signal.set_wakeup_fd(old_wakeup_fd) - old_wakeup_fd = None - except ValueError: # non-main thread - pass - - while True: - poll_timeout = 3600.0 - - # Prevent IO event starvation by delaying new callbacks - # to the next iteration of the event loop. - with self._callback_lock: - callbacks = self._callbacks - self._callbacks = [] - for callback in callbacks: - self._run_callback(callback) - - if self._timeouts: - now = self.time() - while self._timeouts: - if self._timeouts[0].callback is None: - # the timeout was cancelled - heapq.heappop(self._timeouts) - self._cancellations -= 1 - elif self._timeouts[0].deadline <= now: - timeout = heapq.heappop(self._timeouts) - self._run_callback(timeout.callback) - else: - seconds = self._timeouts[0].deadline - now - poll_timeout = min(seconds, poll_timeout) - break - if (self._cancellations > 512 - and self._cancellations > (len(self._timeouts) >> 1)): - # Clean up the timeout queue when it gets large and it's - # more than half cancellations. - self._cancellations = 0 - self._timeouts = [x for x in self._timeouts - if x.callback is not None] - heapq.heapify(self._timeouts) - - if self._callbacks: - # If any callbacks or timeouts called add_callback, - # we don't want to wait in poll() before we run them. - poll_timeout = 0.0 - - if not self._running: - break - - if self._blocking_signal_threshold is not None: - # clear alarm so it doesn't fire while poll is waiting for - # events. - signal.setitimer(signal.ITIMER_REAL, 0, 0) - - try: - event_pairs = self._impl.poll(poll_timeout) - except Exception as e: - # Depending on python version and IOLoop implementation, - # different exception types may be thrown and there are - # two ways EINTR might be signaled: - # * e.errno == errno.EINTR - # * e.args is like (errno.EINTR, 'Interrupted system call') - if (getattr(e, 'errno', None) == errno.EINTR or - (isinstance(getattr(e, 'args', None), tuple) and - len(e.args) == 2 and e.args[0] == errno.EINTR)): - continue - else: - raise - - if self._blocking_signal_threshold is not None: - signal.setitimer(signal.ITIMER_REAL, - self._blocking_signal_threshold, 0) - - # Pop one fd at a time from the set of pending fds and run - # its handler. Since that handler may perform actions on - # other file descriptors, there may be reentrant calls to - # this IOLoop that update self._events - self._events.update(event_pairs) - while self._events: - fd, events = self._events.popitem() - try: - self._handlers[fd](fd, events) - except (OSError, IOError) as e: - if e.args[0] == errno.EPIPE: - # Happens when the client closes the connection - pass - else: - app_log.error("Exception in I/O handler for fd %s", - fd, exc_info=True) - except Exception: - app_log.error("Exception in I/O handler for fd %s", - fd, exc_info=True) - # reset the stopped flag so another start/stop pair can be issued - self._stopped = False - if self._blocking_signal_threshold is not None: - signal.setitimer(signal.ITIMER_REAL, 0, 0) - IOLoop._current.instance = old_current - if old_wakeup_fd is not None: - signal.set_wakeup_fd(old_wakeup_fd) - - def stop(self): - self._running = False - self._stopped = True - self._waker.wake() - - def time(self): - return self.time_func() - - def add_timeout(self, deadline, callback): - timeout = _Timeout(deadline, stack_context.wrap(callback), self) - heapq.heappush(self._timeouts, timeout) - return timeout - - def remove_timeout(self, timeout): - # Removing from a heap is complicated, so just leave the defunct - # timeout object in the queue (see discussion in - # http://docs.python.org/library/heapq.html). - # If this turns out to be a problem, we could add a garbage - # collection pass whenever there are too many dead timeouts. - timeout.callback = None - self._cancellations += 1 - - def add_callback(self, callback, *args, **kwargs): - with self._callback_lock: - if self._closing: - raise RuntimeError("IOLoop is closing") - list_empty = not self._callbacks - self._callbacks.append(functools.partial( - stack_context.wrap(callback), *args, **kwargs)) - if list_empty and thread.get_ident() != self._thread_ident: - # If we're in the IOLoop's thread, we know it's not currently - # polling. If we're not, and we added the first callback to an - # empty list, we may need to wake it up (it may wake up on its - # own, but an occasional extra wake is harmless). Waking - # up a polling IOLoop is relatively expensive, so we try to - # avoid it when we can. - self._waker.wake() - - def add_callback_from_signal(self, callback, *args, **kwargs): - with stack_context.NullContext(): - if thread.get_ident() != self._thread_ident: - # if the signal is handled on another thread, we can add - # it normally (modulo the NullContext) - self.add_callback(callback, *args, **kwargs) - else: - # If we're on the IOLoop's thread, we cannot use - # the regular add_callback because it may deadlock on - # _callback_lock. Blindly insert into self._callbacks. - # This is safe because the GIL makes list.append atomic. - # One subtlety is that if the signal interrupted the - # _callback_lock block in IOLoop.start, we may modify - # either the old or new version of self._callbacks, - # but either way will work. - self._callbacks.append(functools.partial( - stack_context.wrap(callback), *args, **kwargs)) - - -class _Timeout(object): - """An IOLoop timeout, a UNIX timestamp and a callback""" - - # Reduce memory overhead when there are lots of pending callbacks - __slots__ = ['deadline', 'callback'] - - def __init__(self, deadline, callback, io_loop): - if isinstance(deadline, numbers.Real): - self.deadline = deadline - elif isinstance(deadline, datetime.timedelta): - self.deadline = io_loop.time() + _Timeout.timedelta_to_seconds(deadline) - else: - raise TypeError("Unsupported deadline %r" % deadline) - self.callback = callback - - @staticmethod - def timedelta_to_seconds(td): - """Equivalent to td.total_seconds() (introduced in python 2.7).""" - return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6) / float(10 ** 6) - - # Comparison methods to sort by deadline, with object id as a tiebreaker - # to guarantee a consistent ordering. The heapq module uses __le__ - # in python2.5, and __lt__ in 2.6+ (sort() and most other comparisons - # use __lt__). - def __lt__(self, other): - return ((self.deadline, id(self)) < - (other.deadline, id(other))) - - def __le__(self, other): - return ((self.deadline, id(self)) <= - (other.deadline, id(other))) - - -class PeriodicCallback(object): - """Schedules the given callback to be called periodically. - - The callback is called every ``callback_time`` milliseconds. - - `start` must be called after the `PeriodicCallback` is created. - """ - def __init__(self, callback, callback_time, io_loop=None): - self.callback = callback - if callback_time <= 0: - raise ValueError("Periodic callback must have a positive callback_time") - self.callback_time = callback_time - self.io_loop = io_loop or IOLoop.current() - self._running = False - self._timeout = None - - def start(self): - """Starts the timer.""" - self._running = True - self._next_timeout = self.io_loop.time() - self._schedule_next() - - def stop(self): - """Stops the timer.""" - self._running = False - if self._timeout is not None: - self.io_loop.remove_timeout(self._timeout) - self._timeout = None - - def _run(self): - if not self._running: - return - try: - self.callback() - except Exception: - app_log.error("Error in periodic callback", exc_info=True) - self._schedule_next() - - def _schedule_next(self): - if self._running: - current_time = self.io_loop.time() - while self._next_timeout <= current_time: - self._next_timeout += self.callback_time / 1000.0 - self._timeout = self.io_loop.add_timeout(self._next_timeout, self._run) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/log.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/log.py deleted file mode 100644 index 49051e89..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/log.py +++ /dev/null @@ -1,6 +0,0 @@ -"""minimal subset of tornado.log for zmq.eventloop.minitornado""" - -import logging - -app_log = logging.getLogger("tornado.application") -gen_log = logging.getLogger("tornado.general") diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/auto.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/auto.py deleted file mode 100644 index b40ccd94..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/auto.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2011 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""Implementation of platform-specific functionality. - -For each function or class described in `tornado.platform.interface`, -the appropriate platform-specific implementation exists in this module. -Most code that needs access to this functionality should do e.g.:: - - from tornado.platform.auto import set_close_exec -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import os - -if os.name == 'nt': - from .common import Waker - from .windows import set_close_exec -else: - from .posix import set_close_exec, Waker - -try: - # monotime monkey-patches the time module to have a monotonic function - # in versions of python before 3.3. - import monotime -except ImportError: - pass -try: - from time import monotonic as monotonic_time -except ImportError: - monotonic_time = None diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/common.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/common.py deleted file mode 100644 index 2d75dc1e..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/common.py +++ /dev/null @@ -1,91 +0,0 @@ -"""Lowest-common-denominator implementations of platform functionality.""" -from __future__ import absolute_import, division, print_function, with_statement - -import errno -import socket - -from . import interface - - -class Waker(interface.Waker): - """Create an OS independent asynchronous pipe. - - For use on platforms that don't have os.pipe() (or where pipes cannot - be passed to select()), but do have sockets. This includes Windows - and Jython. - """ - def __init__(self): - # Based on Zope async.py: http://svn.zope.org/zc.ngi/trunk/src/zc/ngi/async.py - - self.writer = socket.socket() - # Disable buffering -- pulling the trigger sends 1 byte, - # and we want that sent immediately, to wake up ASAP. - self.writer.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - - count = 0 - while 1: - count += 1 - # Bind to a local port; for efficiency, let the OS pick - # a free port for us. - # Unfortunately, stress tests showed that we may not - # be able to connect to that port ("Address already in - # use") despite that the OS picked it. This appears - # to be a race bug in the Windows socket implementation. - # So we loop until a connect() succeeds (almost always - # on the first try). See the long thread at - # http://mail.zope.org/pipermail/zope/2005-July/160433.html - # for hideous details. - a = socket.socket() - a.bind(("127.0.0.1", 0)) - a.listen(1) - connect_address = a.getsockname() # assigned (host, port) pair - try: - self.writer.connect(connect_address) - break # success - except socket.error as detail: - if (not hasattr(errno, 'WSAEADDRINUSE') or - detail[0] != errno.WSAEADDRINUSE): - # "Address already in use" is the only error - # I've seen on two WinXP Pro SP2 boxes, under - # Pythons 2.3.5 and 2.4.1. - raise - # (10048, 'Address already in use') - # assert count <= 2 # never triggered in Tim's tests - if count >= 10: # I've never seen it go above 2 - a.close() - self.writer.close() - raise socket.error("Cannot bind trigger!") - # Close `a` and try again. Note: I originally put a short - # sleep() here, but it didn't appear to help or hurt. - a.close() - - self.reader, addr = a.accept() - self.reader.setblocking(0) - self.writer.setblocking(0) - a.close() - self.reader_fd = self.reader.fileno() - - def fileno(self): - return self.reader.fileno() - - def write_fileno(self): - return self.writer.fileno() - - def wake(self): - try: - self.writer.send(b"x") - except (IOError, socket.error): - pass - - def consume(self): - try: - while True: - result = self.reader.recv(1024) - if not result: - break - except (IOError, socket.error): - pass - - def close(self): - self.reader.close() - self.writer.close() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/interface.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/interface.py deleted file mode 100644 index 07da6bab..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/interface.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2011 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""Interfaces for platform-specific functionality. - -This module exists primarily for documentation purposes and as base classes -for other tornado.platform modules. Most code should import the appropriate -implementation from `tornado.platform.auto`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - - -def set_close_exec(fd): - """Sets the close-on-exec bit (``FD_CLOEXEC``)for a file descriptor.""" - raise NotImplementedError() - - -class Waker(object): - """A socket-like object that can wake another thread from ``select()``. - - The `~tornado.ioloop.IOLoop` will add the Waker's `fileno()` to - its ``select`` (or ``epoll`` or ``kqueue``) calls. When another - thread wants to wake up the loop, it calls `wake`. Once it has woken - up, it will call `consume` to do any necessary per-wake cleanup. When - the ``IOLoop`` is closed, it closes its waker too. - """ - def fileno(self): - """Returns the read file descriptor for this waker. - - Must be suitable for use with ``select()`` or equivalent on the - local platform. - """ - raise NotImplementedError() - - def write_fileno(self): - """Returns the write file descriptor for this waker.""" - raise NotImplementedError() - - def wake(self): - """Triggers activity on the waker's file descriptor.""" - raise NotImplementedError() - - def consume(self): - """Called after the listen has woken up to do any necessary cleanup.""" - raise NotImplementedError() - - def close(self): - """Closes the waker's file descriptor(s).""" - raise NotImplementedError() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/posix.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/posix.py deleted file mode 100644 index ccffbb66..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/posix.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2011 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""Posix implementations of platform-specific functionality.""" - -from __future__ import absolute_import, division, print_function, with_statement - -import fcntl -import os - -from . import interface - - -def set_close_exec(fd): - flags = fcntl.fcntl(fd, fcntl.F_GETFD) - fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC) - - -def _set_nonblocking(fd): - flags = fcntl.fcntl(fd, fcntl.F_GETFL) - fcntl.fcntl(fd, fcntl.F_SETFL, flags | os.O_NONBLOCK) - - -class Waker(interface.Waker): - def __init__(self): - r, w = os.pipe() - _set_nonblocking(r) - _set_nonblocking(w) - set_close_exec(r) - set_close_exec(w) - self.reader = os.fdopen(r, "rb", 0) - self.writer = os.fdopen(w, "wb", 0) - - def fileno(self): - return self.reader.fileno() - - def write_fileno(self): - return self.writer.fileno() - - def wake(self): - try: - self.writer.write(b"x") - except IOError: - pass - - def consume(self): - try: - while True: - result = self.reader.read() - if not result: - break - except IOError: - pass - - def close(self): - self.reader.close() - self.writer.close() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/windows.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/windows.py deleted file mode 100644 index 817bdca1..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/platform/windows.py +++ /dev/null @@ -1,20 +0,0 @@ -# NOTE: win32 support is currently experimental, and not recommended -# for production use. - - -from __future__ import absolute_import, division, print_function, with_statement -import ctypes -import ctypes.wintypes - -# See: http://msdn.microsoft.com/en-us/library/ms724935(VS.85).aspx -SetHandleInformation = ctypes.windll.kernel32.SetHandleInformation -SetHandleInformation.argtypes = (ctypes.wintypes.HANDLE, ctypes.wintypes.DWORD, ctypes.wintypes.DWORD) -SetHandleInformation.restype = ctypes.wintypes.BOOL - -HANDLE_FLAG_INHERIT = 0x00000001 - - -def set_close_exec(fd): - success = SetHandleInformation(fd, HANDLE_FLAG_INHERIT, 0) - if not success: - raise ctypes.GetLastError() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/stack_context.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/stack_context.py deleted file mode 100644 index 226d8042..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/stack_context.py +++ /dev/null @@ -1,376 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2010 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""`StackContext` allows applications to maintain threadlocal-like state -that follows execution as it moves to other execution contexts. - -The motivating examples are to eliminate the need for explicit -``async_callback`` wrappers (as in `tornado.web.RequestHandler`), and to -allow some additional context to be kept for logging. - -This is slightly magic, but it's an extension of the idea that an -exception handler is a kind of stack-local state and when that stack -is suspended and resumed in a new context that state needs to be -preserved. `StackContext` shifts the burden of restoring that state -from each call site (e.g. wrapping each `.AsyncHTTPClient` callback -in ``async_callback``) to the mechanisms that transfer control from -one context to another (e.g. `.AsyncHTTPClient` itself, `.IOLoop`, -thread pools, etc). - -Example usage:: - - @contextlib.contextmanager - def die_on_error(): - try: - yield - except Exception: - logging.error("exception in asynchronous operation",exc_info=True) - sys.exit(1) - - with StackContext(die_on_error): - # Any exception thrown here *or in callback and its desendents* - # will cause the process to exit instead of spinning endlessly - # in the ioloop. - http_client.fetch(url, callback) - ioloop.start() - -Most applications shouln't have to work with `StackContext` directly. -Here are a few rules of thumb for when it's necessary: - -* If you're writing an asynchronous library that doesn't rely on a - stack_context-aware library like `tornado.ioloop` or `tornado.iostream` - (for example, if you're writing a thread pool), use - `.stack_context.wrap()` before any asynchronous operations to capture the - stack context from where the operation was started. - -* If you're writing an asynchronous library that has some shared - resources (such as a connection pool), create those shared resources - within a ``with stack_context.NullContext():`` block. This will prevent - ``StackContexts`` from leaking from one request to another. - -* If you want to write something like an exception handler that will - persist across asynchronous calls, create a new `StackContext` (or - `ExceptionStackContext`), and make your asynchronous calls in a ``with`` - block that references your `StackContext`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import sys -import threading - -from .util import raise_exc_info - - -class StackContextInconsistentError(Exception): - pass - - -class _State(threading.local): - def __init__(self): - self.contexts = (tuple(), None) -_state = _State() - - -class StackContext(object): - """Establishes the given context as a StackContext that will be transferred. - - Note that the parameter is a callable that returns a context - manager, not the context itself. That is, where for a - non-transferable context manager you would say:: - - with my_context(): - - StackContext takes the function itself rather than its result:: - - with StackContext(my_context): - - The result of ``with StackContext() as cb:`` is a deactivation - callback. Run this callback when the StackContext is no longer - needed to ensure that it is not propagated any further (note that - deactivating a context does not affect any instances of that - context that are currently pending). This is an advanced feature - and not necessary in most applications. - """ - def __init__(self, context_factory): - self.context_factory = context_factory - self.contexts = [] - self.active = True - - def _deactivate(self): - self.active = False - - # StackContext protocol - def enter(self): - context = self.context_factory() - self.contexts.append(context) - context.__enter__() - - def exit(self, type, value, traceback): - context = self.contexts.pop() - context.__exit__(type, value, traceback) - - # Note that some of this code is duplicated in ExceptionStackContext - # below. ExceptionStackContext is more common and doesn't need - # the full generality of this class. - def __enter__(self): - self.old_contexts = _state.contexts - self.new_contexts = (self.old_contexts[0] + (self,), self) - _state.contexts = self.new_contexts - - try: - self.enter() - except: - _state.contexts = self.old_contexts - raise - - return self._deactivate - - def __exit__(self, type, value, traceback): - try: - self.exit(type, value, traceback) - finally: - final_contexts = _state.contexts - _state.contexts = self.old_contexts - - # Generator coroutines and with-statements with non-local - # effects interact badly. Check here for signs of - # the stack getting out of sync. - # Note that this check comes after restoring _state.context - # so that if it fails things are left in a (relatively) - # consistent state. - if final_contexts is not self.new_contexts: - raise StackContextInconsistentError( - 'stack_context inconsistency (may be caused by yield ' - 'within a "with StackContext" block)') - - # Break up a reference to itself to allow for faster GC on CPython. - self.new_contexts = None - - -class ExceptionStackContext(object): - """Specialization of StackContext for exception handling. - - The supplied ``exception_handler`` function will be called in the - event of an uncaught exception in this context. The semantics are - similar to a try/finally clause, and intended use cases are to log - an error, close a socket, or similar cleanup actions. The - ``exc_info`` triple ``(type, value, traceback)`` will be passed to the - exception_handler function. - - If the exception handler returns true, the exception will be - consumed and will not be propagated to other exception handlers. - """ - def __init__(self, exception_handler): - self.exception_handler = exception_handler - self.active = True - - def _deactivate(self): - self.active = False - - def exit(self, type, value, traceback): - if type is not None: - return self.exception_handler(type, value, traceback) - - def __enter__(self): - self.old_contexts = _state.contexts - self.new_contexts = (self.old_contexts[0], self) - _state.contexts = self.new_contexts - - return self._deactivate - - def __exit__(self, type, value, traceback): - try: - if type is not None: - return self.exception_handler(type, value, traceback) - finally: - final_contexts = _state.contexts - _state.contexts = self.old_contexts - - if final_contexts is not self.new_contexts: - raise StackContextInconsistentError( - 'stack_context inconsistency (may be caused by yield ' - 'within a "with StackContext" block)') - - # Break up a reference to itself to allow for faster GC on CPython. - self.new_contexts = None - - -class NullContext(object): - """Resets the `StackContext`. - - Useful when creating a shared resource on demand (e.g. an - `.AsyncHTTPClient`) where the stack that caused the creating is - not relevant to future operations. - """ - def __enter__(self): - self.old_contexts = _state.contexts - _state.contexts = (tuple(), None) - - def __exit__(self, type, value, traceback): - _state.contexts = self.old_contexts - - -def _remove_deactivated(contexts): - """Remove deactivated handlers from the chain""" - # Clean ctx handlers - stack_contexts = tuple([h for h in contexts[0] if h.active]) - - # Find new head - head = contexts[1] - while head is not None and not head.active: - head = head.old_contexts[1] - - # Process chain - ctx = head - while ctx is not None: - parent = ctx.old_contexts[1] - - while parent is not None: - if parent.active: - break - ctx.old_contexts = parent.old_contexts - parent = parent.old_contexts[1] - - ctx = parent - - return (stack_contexts, head) - - -def wrap(fn): - """Returns a callable object that will restore the current `StackContext` - when executed. - - Use this whenever saving a callback to be executed later in a - different execution context (either in a different thread or - asynchronously in the same thread). - """ - # Check if function is already wrapped - if fn is None or hasattr(fn, '_wrapped'): - return fn - - # Capture current stack head - # TODO: Any other better way to store contexts and update them in wrapped function? - cap_contexts = [_state.contexts] - - def wrapped(*args, **kwargs): - ret = None - try: - # Capture old state - current_state = _state.contexts - - # Remove deactivated items - cap_contexts[0] = contexts = _remove_deactivated(cap_contexts[0]) - - # Force new state - _state.contexts = contexts - - # Current exception - exc = (None, None, None) - top = None - - # Apply stack contexts - last_ctx = 0 - stack = contexts[0] - - # Apply state - for n in stack: - try: - n.enter() - last_ctx += 1 - except: - # Exception happened. Record exception info and store top-most handler - exc = sys.exc_info() - top = n.old_contexts[1] - - # Execute callback if no exception happened while restoring state - if top is None: - try: - ret = fn(*args, **kwargs) - except: - exc = sys.exc_info() - top = contexts[1] - - # If there was exception, try to handle it by going through the exception chain - if top is not None: - exc = _handle_exception(top, exc) - else: - # Otherwise take shorter path and run stack contexts in reverse order - while last_ctx > 0: - last_ctx -= 1 - c = stack[last_ctx] - - try: - c.exit(*exc) - except: - exc = sys.exc_info() - top = c.old_contexts[1] - break - else: - top = None - - # If if exception happened while unrolling, take longer exception handler path - if top is not None: - exc = _handle_exception(top, exc) - - # If exception was not handled, raise it - if exc != (None, None, None): - raise_exc_info(exc) - finally: - _state.contexts = current_state - return ret - - wrapped._wrapped = True - return wrapped - - -def _handle_exception(tail, exc): - while tail is not None: - try: - if tail.exit(*exc): - exc = (None, None, None) - except: - exc = sys.exc_info() - - tail = tail.old_contexts[1] - - return exc - - -def run_with_stack_context(context, func): - """Run a coroutine ``func`` in the given `StackContext`. - - It is not safe to have a ``yield`` statement within a ``with StackContext`` - block, so it is difficult to use stack context with `.gen.coroutine`. - This helper function runs the function in the correct context while - keeping the ``yield`` and ``with`` statements syntactically separate. - - Example:: - - @gen.coroutine - def incorrect(): - with StackContext(ctx): - # ERROR: this will raise StackContextInconsistentError - yield other_coroutine() - - @gen.coroutine - def correct(): - yield run_with_stack_context(StackContext(ctx), other_coroutine) - - .. versionadded:: 3.1 - """ - with context: - return func() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/util.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/util.py deleted file mode 100644 index c1e2eb95..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/minitornado/util.py +++ /dev/null @@ -1,184 +0,0 @@ -"""Miscellaneous utility functions and classes. - -This module is used internally by Tornado. It is not necessarily expected -that the functions and classes defined here will be useful to other -applications, but they are documented here in case they are. - -The one public-facing part of this module is the `Configurable` class -and its `~Configurable.configure` method, which becomes a part of the -interface of its subclasses, including `.AsyncHTTPClient`, `.IOLoop`, -and `.Resolver`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import sys - - -def import_object(name): - """Imports an object by name. - - import_object('x') is equivalent to 'import x'. - import_object('x.y.z') is equivalent to 'from x.y import z'. - - >>> import tornado.escape - >>> import_object('tornado.escape') is tornado.escape - True - >>> import_object('tornado.escape.utf8') is tornado.escape.utf8 - True - >>> import_object('tornado') is tornado - True - >>> import_object('tornado.missing_module') - Traceback (most recent call last): - ... - ImportError: No module named missing_module - """ - if name.count('.') == 0: - return __import__(name, None, None) - - parts = name.split('.') - obj = __import__('.'.join(parts[:-1]), None, None, [parts[-1]], 0) - try: - return getattr(obj, parts[-1]) - except AttributeError: - raise ImportError("No module named %s" % parts[-1]) - - -# Fake unicode literal support: Python 3.2 doesn't have the u'' marker for -# literal strings, and alternative solutions like "from __future__ import -# unicode_literals" have other problems (see PEP 414). u() can be applied -# to ascii strings that include \u escapes (but they must not contain -# literal non-ascii characters). -if type('') is not type(b''): - def u(s): - return s - bytes_type = bytes - unicode_type = str - basestring_type = str -else: - def u(s): - return s.decode('unicode_escape') - bytes_type = str - unicode_type = unicode - basestring_type = basestring - - -if sys.version_info > (3,): - exec(""" -def raise_exc_info(exc_info): - raise exc_info[1].with_traceback(exc_info[2]) - -def exec_in(code, glob, loc=None): - if isinstance(code, str): - code = compile(code, '', 'exec', dont_inherit=True) - exec(code, glob, loc) -""") -else: - exec(""" -def raise_exc_info(exc_info): - raise exc_info[0], exc_info[1], exc_info[2] - -def exec_in(code, glob, loc=None): - if isinstance(code, basestring): - # exec(string) inherits the caller's future imports; compile - # the string first to prevent that. - code = compile(code, '', 'exec', dont_inherit=True) - exec code in glob, loc -""") - - -class Configurable(object): - """Base class for configurable interfaces. - - A configurable interface is an (abstract) class whose constructor - acts as a factory function for one of its implementation subclasses. - The implementation subclass as well as optional keyword arguments to - its initializer can be set globally at runtime with `configure`. - - By using the constructor as the factory method, the interface - looks like a normal class, `isinstance` works as usual, etc. This - pattern is most useful when the choice of implementation is likely - to be a global decision (e.g. when `~select.epoll` is available, - always use it instead of `~select.select`), or when a - previously-monolithic class has been split into specialized - subclasses. - - Configurable subclasses must define the class methods - `configurable_base` and `configurable_default`, and use the instance - method `initialize` instead of ``__init__``. - """ - __impl_class = None - __impl_kwargs = None - - def __new__(cls, **kwargs): - base = cls.configurable_base() - args = {} - if cls is base: - impl = cls.configured_class() - if base.__impl_kwargs: - args.update(base.__impl_kwargs) - else: - impl = cls - args.update(kwargs) - instance = super(Configurable, cls).__new__(impl) - # initialize vs __init__ chosen for compatiblity with AsyncHTTPClient - # singleton magic. If we get rid of that we can switch to __init__ - # here too. - instance.initialize(**args) - return instance - - @classmethod - def configurable_base(cls): - """Returns the base class of a configurable hierarchy. - - This will normally return the class in which it is defined. - (which is *not* necessarily the same as the cls classmethod parameter). - """ - raise NotImplementedError() - - @classmethod - def configurable_default(cls): - """Returns the implementation class to be used if none is configured.""" - raise NotImplementedError() - - def initialize(self): - """Initialize a `Configurable` subclass instance. - - Configurable classes should use `initialize` instead of ``__init__``. - """ - - @classmethod - def configure(cls, impl, **kwargs): - """Sets the class to use when the base class is instantiated. - - Keyword arguments will be saved and added to the arguments passed - to the constructor. This can be used to set global defaults for - some parameters. - """ - base = cls.configurable_base() - if isinstance(impl, (unicode_type, bytes_type)): - impl = import_object(impl) - if impl is not None and not issubclass(impl, cls): - raise ValueError("Invalid subclass of %s" % cls) - base.__impl_class = impl - base.__impl_kwargs = kwargs - - @classmethod - def configured_class(cls): - """Returns the currently configured class.""" - base = cls.configurable_base() - if cls.__impl_class is None: - base.__impl_class = cls.configurable_default() - return base.__impl_class - - @classmethod - def _save_configuration(cls): - base = cls.configurable_base() - return (base.__impl_class, base.__impl_kwargs) - - @classmethod - def _restore_configuration(cls, saved): - base = cls.configurable_base() - base.__impl_class = saved[0] - base.__impl_kwargs = saved[1] - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/zmqstream.py deleted file mode 100644 index 86a97e44..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/eventloop/zmqstream.py +++ /dev/null @@ -1,529 +0,0 @@ -# -# Copyright 2009 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""A utility class to send to and recv from a non-blocking socket.""" - -from __future__ import with_statement - -import sys - -import zmq -from zmq.utils import jsonapi - -try: - import cPickle as pickle -except ImportError: - import pickle - -from .ioloop import IOLoop - -try: - # gen_log will only import from >= 3.0 - from tornado.log import gen_log - from tornado import stack_context -except ImportError: - from .minitornado.log import gen_log - from .minitornado import stack_context - -try: - from queue import Queue -except ImportError: - from Queue import Queue - -from zmq.utils.strtypes import bytes, unicode, basestring - -try: - callable -except NameError: - callable = lambda obj: hasattr(obj, '__call__') - - -class ZMQStream(object): - """A utility class to register callbacks when a zmq socket sends and receives - - For use with zmq.eventloop.ioloop - - There are three main methods - - Methods: - - * **on_recv(callback, copy=True):** - register a callback to be run every time the socket has something to receive - * **on_send(callback):** - register a callback to be run every time you call send - * **send(self, msg, flags=0, copy=False, callback=None):** - perform a send that will trigger the callback - if callback is passed, on_send is also called. - - There are also send_multipart(), send_json(), send_pyobj() - - Three other methods for deactivating the callbacks: - - * **stop_on_recv():** - turn off the recv callback - * **stop_on_send():** - turn off the send callback - - which simply call ``on_(None)``. - - The entire socket interface, excluding direct recv methods, is also - provided, primarily through direct-linking the methods. - e.g. - - >>> stream.bind is stream.socket.bind - True - - """ - - socket = None - io_loop = None - poller = None - - def __init__(self, socket, io_loop=None): - self.socket = socket - self.io_loop = io_loop or IOLoop.instance() - self.poller = zmq.Poller() - - self._send_queue = Queue() - self._recv_callback = None - self._send_callback = None - self._close_callback = None - self._recv_copy = False - self._flushed = False - - self._state = self.io_loop.ERROR - self._init_io_state() - - # shortcircuit some socket methods - self.bind = self.socket.bind - self.bind_to_random_port = self.socket.bind_to_random_port - self.connect = self.socket.connect - self.setsockopt = self.socket.setsockopt - self.getsockopt = self.socket.getsockopt - self.setsockopt_string = self.socket.setsockopt_string - self.getsockopt_string = self.socket.getsockopt_string - self.setsockopt_unicode = self.socket.setsockopt_unicode - self.getsockopt_unicode = self.socket.getsockopt_unicode - - - def stop_on_recv(self): - """Disable callback and automatic receiving.""" - return self.on_recv(None) - - def stop_on_send(self): - """Disable callback on sending.""" - return self.on_send(None) - - def stop_on_err(self): - """DEPRECATED, does nothing""" - gen_log.warn("on_err does nothing, and will be removed") - - def on_err(self, callback): - """DEPRECATED, does nothing""" - gen_log.warn("on_err does nothing, and will be removed") - - def on_recv(self, callback, copy=True): - """Register a callback for when a message is ready to recv. - - There can be only one callback registered at a time, so each - call to `on_recv` replaces previously registered callbacks. - - on_recv(None) disables recv event polling. - - Use on_recv_stream(callback) instead, to register a callback that will receive - both this ZMQStream and the message, instead of just the message. - - Parameters - ---------- - - callback : callable - callback must take exactly one argument, which will be a - list, as returned by socket.recv_multipart() - if callback is None, recv callbacks are disabled. - copy : bool - copy is passed directly to recv, so if copy is False, - callback will receive Message objects. If copy is True, - then callback will receive bytes/str objects. - - Returns : None - """ - - self._check_closed() - assert callback is None or callable(callback) - self._recv_callback = stack_context.wrap(callback) - self._recv_copy = copy - if callback is None: - self._drop_io_state(self.io_loop.READ) - else: - self._add_io_state(self.io_loop.READ) - - def on_recv_stream(self, callback, copy=True): - """Same as on_recv, but callback will get this stream as first argument - - callback must take exactly two arguments, as it will be called as:: - - callback(stream, msg) - - Useful when a single callback should be used with multiple streams. - """ - if callback is None: - self.stop_on_recv() - else: - self.on_recv(lambda msg: callback(self, msg), copy=copy) - - def on_send(self, callback): - """Register a callback to be called on each send - - There will be two arguments:: - - callback(msg, status) - - * `msg` will be the list of sendable objects that was just sent - * `status` will be the return result of socket.send_multipart(msg) - - MessageTracker or None. - - Non-copying sends return a MessageTracker object whose - `done` attribute will be True when the send is complete. - This allows users to track when an object is safe to write to - again. - - The second argument will always be None if copy=True - on the send. - - Use on_send_stream(callback) to register a callback that will be passed - this ZMQStream as the first argument, in addition to the other two. - - on_send(None) disables recv event polling. - - Parameters - ---------- - - callback : callable - callback must take exactly two arguments, which will be - the message being sent (always a list), - and the return result of socket.send_multipart(msg) - - MessageTracker or None. - - if callback is None, send callbacks are disabled. - """ - - self._check_closed() - assert callback is None or callable(callback) - self._send_callback = stack_context.wrap(callback) - - - def on_send_stream(self, callback): - """Same as on_send, but callback will get this stream as first argument - - Callback will be passed three arguments:: - - callback(stream, msg, status) - - Useful when a single callback should be used with multiple streams. - """ - if callback is None: - self.stop_on_send() - else: - self.on_send(lambda msg, status: callback(self, msg, status)) - - - def send(self, msg, flags=0, copy=True, track=False, callback=None): - """Send a message, optionally also register a new callback for sends. - See zmq.socket.send for details. - """ - return self.send_multipart([msg], flags=flags, copy=copy, track=track, callback=callback) - - def send_multipart(self, msg, flags=0, copy=True, track=False, callback=None): - """Send a multipart message, optionally also register a new callback for sends. - See zmq.socket.send_multipart for details. - """ - kwargs = dict(flags=flags, copy=copy, track=track) - self._send_queue.put((msg, kwargs)) - callback = callback or self._send_callback - if callback is not None: - self.on_send(callback) - else: - # noop callback - self.on_send(lambda *args: None) - self._add_io_state(self.io_loop.WRITE) - - def send_string(self, u, flags=0, encoding='utf-8', callback=None): - """Send a unicode message with an encoding. - See zmq.socket.send_unicode for details. - """ - if not isinstance(u, basestring): - raise TypeError("unicode/str objects only") - return self.send(u.encode(encoding), flags=flags, callback=callback) - - send_unicode = send_string - - def send_json(self, obj, flags=0, callback=None): - """Send json-serialized version of an object. - See zmq.socket.send_json for details. - """ - if jsonapi is None: - raise ImportError('jsonlib{1,2}, json or simplejson library is required.') - else: - msg = jsonapi.dumps(obj) - return self.send(msg, flags=flags, callback=callback) - - def send_pyobj(self, obj, flags=0, protocol=-1, callback=None): - """Send a Python object as a message using pickle to serialize. - - See zmq.socket.send_json for details. - """ - msg = pickle.dumps(obj, protocol) - return self.send(msg, flags, callback=callback) - - def _finish_flush(self): - """callback for unsetting _flushed flag.""" - self._flushed = False - - def flush(self, flag=zmq.POLLIN|zmq.POLLOUT, limit=None): - """Flush pending messages. - - This method safely handles all pending incoming and/or outgoing messages, - bypassing the inner loop, passing them to the registered callbacks. - - A limit can be specified, to prevent blocking under high load. - - flush will return the first time ANY of these conditions are met: - * No more events matching the flag are pending. - * the total number of events handled reaches the limit. - - Note that if ``flag|POLLIN != 0``, recv events will be flushed even if no callback - is registered, unlike normal IOLoop operation. This allows flush to be - used to remove *and ignore* incoming messages. - - Parameters - ---------- - flag : int, default=POLLIN|POLLOUT - 0MQ poll flags. - If flag|POLLIN, recv events will be flushed. - If flag|POLLOUT, send events will be flushed. - Both flags can be set at once, which is the default. - limit : None or int, optional - The maximum number of messages to send or receive. - Both send and recv count against this limit. - - Returns - ------- - int : count of events handled (both send and recv) - """ - self._check_closed() - # unset self._flushed, so callbacks will execute, in case flush has - # already been called this iteration - already_flushed = self._flushed - self._flushed = False - # initialize counters - count = 0 - def update_flag(): - """Update the poll flag, to prevent registering POLLOUT events - if we don't have pending sends.""" - return flag & zmq.POLLIN | (self.sending() and flag & zmq.POLLOUT) - flag = update_flag() - if not flag: - # nothing to do - return 0 - self.poller.register(self.socket, flag) - events = self.poller.poll(0) - while events and (not limit or count < limit): - s,event = events[0] - if event & zmq.POLLIN: # receiving - self._handle_recv() - count += 1 - if self.socket is None: - # break if socket was closed during callback - break - if event & zmq.POLLOUT and self.sending(): - self._handle_send() - count += 1 - if self.socket is None: - # break if socket was closed during callback - break - - flag = update_flag() - if flag: - self.poller.register(self.socket, flag) - events = self.poller.poll(0) - else: - events = [] - if count: # only bypass loop if we actually flushed something - # skip send/recv callbacks this iteration - self._flushed = True - # reregister them at the end of the loop - if not already_flushed: # don't need to do it again - self.io_loop.add_callback(self._finish_flush) - elif already_flushed: - self._flushed = True - - # update ioloop poll state, which may have changed - self._rebuild_io_state() - return count - - def set_close_callback(self, callback): - """Call the given callback when the stream is closed.""" - self._close_callback = stack_context.wrap(callback) - - def close(self, linger=None): - """Close this stream.""" - if self.socket is not None: - self.io_loop.remove_handler(self.socket) - self.socket.close(linger) - self.socket = None - if self._close_callback: - self._run_callback(self._close_callback) - - def receiving(self): - """Returns True if we are currently receiving from the stream.""" - return self._recv_callback is not None - - def sending(self): - """Returns True if we are currently sending to the stream.""" - return not self._send_queue.empty() - - def closed(self): - return self.socket is None - - def _run_callback(self, callback, *args, **kwargs): - """Wrap running callbacks in try/except to allow us to - close our socket.""" - try: - # Use a NullContext to ensure that all StackContexts are run - # inside our blanket exception handler rather than outside. - with stack_context.NullContext(): - callback(*args, **kwargs) - except: - gen_log.error("Uncaught exception, closing connection.", - exc_info=True) - # Close the socket on an uncaught exception from a user callback - # (It would eventually get closed when the socket object is - # gc'd, but we don't want to rely on gc happening before we - # run out of file descriptors) - self.close() - # Re-raise the exception so that IOLoop.handle_callback_exception - # can see it and log the error - raise - - def _handle_events(self, fd, events): - """This method is the actual handler for IOLoop, that gets called whenever - an event on my socket is posted. It dispatches to _handle_recv, etc.""" - # print "handling events" - if not self.socket: - gen_log.warning("Got events for closed stream %s", fd) - return - try: - # dispatch events: - if events & IOLoop.ERROR: - gen_log.error("got POLLERR event on ZMQStream, which doesn't make sense") - return - if events & IOLoop.READ: - self._handle_recv() - if not self.socket: - return - if events & IOLoop.WRITE: - self._handle_send() - if not self.socket: - return - - # rebuild the poll state - self._rebuild_io_state() - except: - gen_log.error("Uncaught exception, closing connection.", - exc_info=True) - self.close() - raise - - def _handle_recv(self): - """Handle a recv event.""" - if self._flushed: - return - try: - msg = self.socket.recv_multipart(zmq.NOBLOCK, copy=self._recv_copy) - except zmq.ZMQError as e: - if e.errno == zmq.EAGAIN: - # state changed since poll event - pass - else: - gen_log.error("RECV Error: %s"%zmq.strerror(e.errno)) - else: - if self._recv_callback: - callback = self._recv_callback - # self._recv_callback = None - self._run_callback(callback, msg) - - # self.update_state() - - - def _handle_send(self): - """Handle a send event.""" - if self._flushed: - return - if not self.sending(): - gen_log.error("Shouldn't have handled a send event") - return - - msg, kwargs = self._send_queue.get() - try: - status = self.socket.send_multipart(msg, **kwargs) - except zmq.ZMQError as e: - gen_log.error("SEND Error: %s", e) - status = e - if self._send_callback: - callback = self._send_callback - self._run_callback(callback, msg, status) - - # self.update_state() - - def _check_closed(self): - if not self.socket: - raise IOError("Stream is closed") - - def _rebuild_io_state(self): - """rebuild io state based on self.sending() and receiving()""" - if self.socket is None: - return - state = self.io_loop.ERROR - if self.receiving(): - state |= self.io_loop.READ - if self.sending(): - state |= self.io_loop.WRITE - if state != self._state: - self._state = state - self._update_handler(state) - - def _add_io_state(self, state): - """Add io_state to poller.""" - if not self._state & state: - self._state = self._state | state - self._update_handler(self._state) - - def _drop_io_state(self, state): - """Stop poller from watching an io_state.""" - if self._state & state: - self._state = self._state & (~state) - self._update_handler(self._state) - - def _update_handler(self, state): - """Update IOLoop handler with state.""" - if self.socket is None: - return - self.io_loop.update_handler(self.socket, state) - - def _init_io_state(self): - """initialize the ioloop event handler""" - with stack_context.NullContext(): - self.io_loop.add_handler(self.socket, self._handle_events, self._state) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/__init__.py deleted file mode 100644 index ff7e5965..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/__init__.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -#----------------------------------------------------------------------------- -# Copyright (C) 2011-2012 Travis Cline -# -# This file is part of pyzmq -# It is adapted from upstream project zeromq_gevent under the New BSD License -# -# Distributed under the terms of the New BSD License. The full license is in -# the file COPYING.BSD, distributed as part of this software. -#----------------------------------------------------------------------------- - -"""zmq.green - gevent compatibility with zeromq. - -Usage ------ - -Instead of importing zmq directly, do so in the following manner: - -.. - - import zmq.green as zmq - - -Any calls that would have blocked the current thread will now only block the -current green thread. - -This compatibility is accomplished by ensuring the nonblocking flag is set -before any blocking operation and the ØMQ file descriptor is polled internally -to trigger needed events. -""" - -from zmq import * -from zmq.green.core import _Context, _Socket -from zmq.green.poll import _Poller -Context = _Context -Socket = _Socket -Poller = _Poller - -from zmq.green.device import device - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/core.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/core.py deleted file mode 100644 index 9fc73e32..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/core.py +++ /dev/null @@ -1,287 +0,0 @@ -#----------------------------------------------------------------------------- -# Copyright (C) 2011-2012 Travis Cline -# -# This file is part of pyzmq -# It is adapted from upstream project zeromq_gevent under the New BSD License -# -# Distributed under the terms of the New BSD License. The full license is in -# the file COPYING.BSD, distributed as part of this software. -#----------------------------------------------------------------------------- - -"""This module wraps the :class:`Socket` and :class:`Context` found in :mod:`pyzmq ` to be non blocking -""" - -from __future__ import print_function - -import sys -import time -import warnings - -import zmq - -from zmq import Context as _original_Context -from zmq import Socket as _original_Socket -from .poll import _Poller - -import gevent -from gevent.event import AsyncResult -from gevent.hub import get_hub - -if hasattr(zmq, 'RCVTIMEO'): - TIMEOS = (zmq.RCVTIMEO, zmq.SNDTIMEO) -else: - TIMEOS = () - -def _stop(evt): - """simple wrapper for stopping an Event, allowing for method rename in gevent 1.0""" - try: - evt.stop() - except AttributeError as e: - # gevent<1.0 compat - evt.cancel() - -class _Socket(_original_Socket): - """Green version of :class:`zmq.Socket` - - The following methods are overridden: - - * send - * recv - - To ensure that the ``zmq.NOBLOCK`` flag is set and that sending or receiving - is deferred to the hub if a ``zmq.EAGAIN`` (retry) error is raised. - - The `__state_changed` method is triggered when the zmq.FD for the socket is - marked as readable and triggers the necessary read and write events (which - are waited for in the recv and send methods). - - Some double underscore prefixes are used to minimize pollution of - :class:`zmq.Socket`'s namespace. - """ - __in_send_multipart = False - __in_recv_multipart = False - __writable = None - __readable = None - _state_event = None - _gevent_bug_timeout = 11.6 # timeout for not trusting gevent - _debug_gevent = False # turn on if you think gevent is missing events - _poller_class = _Poller - - def __init__(self, context, socket_type): - _original_Socket.__init__(self, context, socket_type) - self.__in_send_multipart = False - self.__in_recv_multipart = False - self.__setup_events() - - - def __del__(self): - self.close() - - def close(self, linger=None): - super(_Socket, self).close(linger) - self.__cleanup_events() - - def __cleanup_events(self): - # close the _state_event event, keeps the number of active file descriptors down - if getattr(self, '_state_event', None): - _stop(self._state_event) - self._state_event = None - # if the socket has entered a close state resume any waiting greenlets - self.__writable.set() - self.__readable.set() - - def __setup_events(self): - self.__readable = AsyncResult() - self.__writable = AsyncResult() - self.__readable.set() - self.__writable.set() - - try: - self._state_event = get_hub().loop.io(self.getsockopt(zmq.FD), 1) # read state watcher - self._state_event.start(self.__state_changed) - except AttributeError: - # for gevent<1.0 compatibility - from gevent.core import read_event - self._state_event = read_event(self.getsockopt(zmq.FD), self.__state_changed, persist=True) - - def __state_changed(self, event=None, _evtype=None): - if self.closed: - self.__cleanup_events() - return - try: - # avoid triggering __state_changed from inside __state_changed - events = super(_Socket, self).getsockopt(zmq.EVENTS) - except zmq.ZMQError as exc: - self.__writable.set_exception(exc) - self.__readable.set_exception(exc) - else: - if events & zmq.POLLOUT: - self.__writable.set() - if events & zmq.POLLIN: - self.__readable.set() - - def _wait_write(self): - assert self.__writable.ready(), "Only one greenlet can be waiting on this event" - self.__writable = AsyncResult() - # timeout is because libzmq cannot be trusted to properly signal a new send event: - # this is effectively a maximum poll interval of 1s - tic = time.time() - dt = self._gevent_bug_timeout - if dt: - timeout = gevent.Timeout(seconds=dt) - else: - timeout = None - try: - if timeout: - timeout.start() - self.__writable.get(block=True) - except gevent.Timeout as t: - if t is not timeout: - raise - toc = time.time() - # gevent bug: get can raise timeout even on clean return - # don't display zmq bug warning for gevent bug (this is getting ridiculous) - if self._debug_gevent and timeout and toc-tic > dt and \ - self.getsockopt(zmq.EVENTS) & zmq.POLLOUT: - print("BUG: gevent may have missed a libzmq send event on %i!" % self.FD, file=sys.stderr) - finally: - if timeout: - timeout.cancel() - self.__writable.set() - - def _wait_read(self): - assert self.__readable.ready(), "Only one greenlet can be waiting on this event" - self.__readable = AsyncResult() - # timeout is because libzmq cannot always be trusted to play nice with libevent. - # I can only confirm that this actually happens for send, but lets be symmetrical - # with our dirty hacks. - # this is effectively a maximum poll interval of 1s - tic = time.time() - dt = self._gevent_bug_timeout - if dt: - timeout = gevent.Timeout(seconds=dt) - else: - timeout = None - try: - if timeout: - timeout.start() - self.__readable.get(block=True) - except gevent.Timeout as t: - if t is not timeout: - raise - toc = time.time() - # gevent bug: get can raise timeout even on clean return - # don't display zmq bug warning for gevent bug (this is getting ridiculous) - if self._debug_gevent and timeout and toc-tic > dt and \ - self.getsockopt(zmq.EVENTS) & zmq.POLLIN: - print("BUG: gevent may have missed a libzmq recv event on %i!" % self.FD, file=sys.stderr) - finally: - if timeout: - timeout.cancel() - self.__readable.set() - - def send(self, data, flags=0, copy=True, track=False): - """send, which will only block current greenlet - - state_changed always fires exactly once (success or fail) at the - end of this method. - """ - - # if we're given the NOBLOCK flag act as normal and let the EAGAIN get raised - if flags & zmq.NOBLOCK: - try: - msg = super(_Socket, self).send(data, flags, copy, track) - finally: - if not self.__in_send_multipart: - self.__state_changed() - return msg - # ensure the zmq.NOBLOCK flag is part of flags - flags |= zmq.NOBLOCK - while True: # Attempt to complete this operation indefinitely, blocking the current greenlet - try: - # attempt the actual call - msg = super(_Socket, self).send(data, flags, copy, track) - except zmq.ZMQError as e: - # if the raised ZMQError is not EAGAIN, reraise - if e.errno != zmq.EAGAIN: - if not self.__in_send_multipart: - self.__state_changed() - raise - else: - if not self.__in_send_multipart: - self.__state_changed() - return msg - # defer to the event loop until we're notified the socket is writable - self._wait_write() - - def recv(self, flags=0, copy=True, track=False): - """recv, which will only block current greenlet - - state_changed always fires exactly once (success or fail) at the - end of this method. - """ - if flags & zmq.NOBLOCK: - try: - msg = super(_Socket, self).recv(flags, copy, track) - finally: - if not self.__in_recv_multipart: - self.__state_changed() - return msg - - flags |= zmq.NOBLOCK - while True: - try: - msg = super(_Socket, self).recv(flags, copy, track) - except zmq.ZMQError as e: - if e.errno != zmq.EAGAIN: - if not self.__in_recv_multipart: - self.__state_changed() - raise - else: - if not self.__in_recv_multipart: - self.__state_changed() - return msg - self._wait_read() - - def send_multipart(self, *args, **kwargs): - """wrap send_multipart to prevent state_changed on each partial send""" - self.__in_send_multipart = True - try: - msg = super(_Socket, self).send_multipart(*args, **kwargs) - finally: - self.__in_send_multipart = False - self.__state_changed() - return msg - - def recv_multipart(self, *args, **kwargs): - """wrap recv_multipart to prevent state_changed on each partial recv""" - self.__in_recv_multipart = True - try: - msg = super(_Socket, self).recv_multipart(*args, **kwargs) - finally: - self.__in_recv_multipart = False - self.__state_changed() - return msg - - def get(self, opt): - """trigger state_changed on getsockopt(EVENTS)""" - if opt in TIMEOS: - warnings.warn("TIMEO socket options have no effect in zmq.green", UserWarning) - optval = super(_Socket, self).get(opt) - if opt == zmq.EVENTS: - self.__state_changed() - return optval - - def set(self, opt, val): - """set socket option""" - if opt in TIMEOS: - warnings.warn("TIMEO socket options have no effect in zmq.green", UserWarning) - return super(_Socket, self).set(opt, val) - - -class _Context(_original_Context): - """Replacement for :class:`zmq.Context` - - Ensures that the greened Socket above is used in calls to `socket`. - """ - _socket_class = _Socket diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/device.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/device.py deleted file mode 100644 index 4b070237..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/device.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import zmq -from zmq.green import Poller - -def device(device_type, isocket, osocket): - """Start a zeromq device (gevent-compatible). - - Unlike the true zmq.device, this does not release the GIL. - - Parameters - ---------- - device_type : (QUEUE, FORWARDER, STREAMER) - The type of device to start (ignored). - isocket : Socket - The Socket instance for the incoming traffic. - osocket : Socket - The Socket instance for the outbound traffic. - """ - p = Poller() - if osocket == -1: - osocket = isocket - p.register(isocket, zmq.POLLIN) - p.register(osocket, zmq.POLLIN) - - while True: - events = dict(p.poll()) - if isocket in events: - osocket.send_multipart(isocket.recv_multipart()) - if osocket in events: - isocket.send_multipart(osocket.recv_multipart()) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/__init__.py deleted file mode 100644 index c5150efe..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from zmq.green.eventloop.ioloop import IOLoop - -__all__ = ['IOLoop'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/ioloop.py deleted file mode 100644 index e12fd5e9..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/ioloop.py +++ /dev/null @@ -1,33 +0,0 @@ -from zmq.eventloop.ioloop import * -from zmq.green import Poller - -RealIOLoop = IOLoop -RealZMQPoller = ZMQPoller - -class IOLoop(RealIOLoop): - - def initialize(self, impl=None): - impl = _poll() if impl is None else impl - super(IOLoop, self).initialize(impl) - - @staticmethod - def instance(): - """Returns a global `IOLoop` instance. - - Most applications have a single, global `IOLoop` running on the - main thread. Use this method to get this instance from - another thread. To get the current thread's `IOLoop`, use `current()`. - """ - # install this class as the active IOLoop implementation - # when using tornado 3 - if tornado_version >= (3,): - PollIOLoop.configure(IOLoop) - return PollIOLoop.instance() - - -class ZMQPoller(RealZMQPoller): - """gevent-compatible version of ioloop.ZMQPoller""" - def __init__(self): - self._poller = Poller() - -_poll = ZMQPoller diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/zmqstream.py deleted file mode 100644 index 90fbd1f5..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/eventloop/zmqstream.py +++ /dev/null @@ -1,11 +0,0 @@ -from zmq.eventloop.zmqstream import * - -from zmq.green.eventloop.ioloop import IOLoop - -RealZMQStream = ZMQStream - -class ZMQStream(RealZMQStream): - - def __init__(self, socket, io_loop=None): - io_loop = io_loop or IOLoop.instance() - super(ZMQStream, self).__init__(socket, io_loop=io_loop) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/poll.py deleted file mode 100644 index 8f016129..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/green/poll.py +++ /dev/null @@ -1,95 +0,0 @@ -import zmq -import gevent -from gevent import select - -from zmq import Poller as _original_Poller - - -class _Poller(_original_Poller): - """Replacement for :class:`zmq.Poller` - - Ensures that the greened Poller below is used in calls to - :meth:`zmq.Poller.poll`. - """ - _gevent_bug_timeout = 1.33 # minimum poll interval, for working around gevent bug - - def _get_descriptors(self): - """Returns three elements tuple with socket descriptors ready - for gevent.select.select - """ - rlist = [] - wlist = [] - xlist = [] - - for socket, flags in self.sockets: - if isinstance(socket, zmq.Socket): - rlist.append(socket.getsockopt(zmq.FD)) - continue - elif isinstance(socket, int): - fd = socket - elif hasattr(socket, 'fileno'): - try: - fd = int(socket.fileno()) - except: - raise ValueError('fileno() must return an valid integer fd') - else: - raise TypeError('Socket must be a 0MQ socket, an integer fd ' - 'or have a fileno() method: %r' % socket) - - if flags & zmq.POLLIN: - rlist.append(fd) - if flags & zmq.POLLOUT: - wlist.append(fd) - if flags & zmq.POLLERR: - xlist.append(fd) - - return (rlist, wlist, xlist) - - def poll(self, timeout=-1): - """Overridden method to ensure that the green version of - Poller is used. - - Behaves the same as :meth:`zmq.core.Poller.poll` - """ - - if timeout is None: - timeout = -1 - - if timeout < 0: - timeout = -1 - - rlist = None - wlist = None - xlist = None - - if timeout > 0: - tout = gevent.Timeout.start_new(timeout/1000.0) - - try: - # Loop until timeout or events available - rlist, wlist, xlist = self._get_descriptors() - while True: - events = super(_Poller, self).poll(0) - if events or timeout == 0: - return events - - # wait for activity on sockets in a green way - # set a minimum poll frequency, - # because gevent < 1.0 cannot be trusted to catch edge-triggered FD events - _bug_timeout = gevent.Timeout.start_new(self._gevent_bug_timeout) - try: - select.select(rlist, wlist, xlist) - except gevent.Timeout as t: - if t is not _bug_timeout: - raise - finally: - _bug_timeout.cancel() - - except gevent.Timeout as t: - if t is not tout: - raise - return [] - finally: - if timeout > 0: - tout.cancel() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/log/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/log/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/log/handlers.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/log/handlers.py deleted file mode 100644 index 5ff21bf3..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/log/handlers.py +++ /dev/null @@ -1,146 +0,0 @@ -"""pyzmq logging handlers. - -This mainly defines the PUBHandler object for publishing logging messages over -a zmq.PUB socket. - -The PUBHandler can be used with the regular logging module, as in:: - - >>> import logging - >>> handler = PUBHandler('tcp://127.0.0.1:12345') - >>> handler.root_topic = 'foo' - >>> logger = logging.getLogger('foobar') - >>> logger.setLevel(logging.DEBUG) - >>> logger.addHandler(handler) - -After this point, all messages logged by ``logger`` will be published on the -PUB socket. - -Code adapted from StarCluster: - - http://github.com/jtriley/StarCluster/blob/master/starcluster/logger.py -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import logging -from logging import INFO, DEBUG, WARN, ERROR, FATAL - -import zmq -from zmq.utils.strtypes import bytes, unicode, cast_bytes - - -TOPIC_DELIM="::" # delimiter for splitting topics on the receiving end. - - -class PUBHandler(logging.Handler): - """A basic logging handler that emits log messages through a PUB socket. - - Takes a PUB socket already bound to interfaces or an interface to bind to. - - Example:: - - sock = context.socket(zmq.PUB) - sock.bind('inproc://log') - handler = PUBHandler(sock) - - Or:: - - handler = PUBHandler('inproc://loc') - - These are equivalent. - - Log messages handled by this handler are broadcast with ZMQ topics - ``this.root_topic`` comes first, followed by the log level - (DEBUG,INFO,etc.), followed by any additional subtopics specified in the - message by: log.debug("subtopic.subsub::the real message") - """ - root_topic="" - socket = None - - formatters = { - logging.DEBUG: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n"), - logging.INFO: logging.Formatter("%(message)s\n"), - logging.WARN: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n"), - logging.ERROR: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s - %(exc_info)s\n"), - logging.CRITICAL: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n")} - - def __init__(self, interface_or_socket, context=None): - logging.Handler.__init__(self) - if isinstance(interface_or_socket, zmq.Socket): - self.socket = interface_or_socket - self.ctx = self.socket.context - else: - self.ctx = context or zmq.Context() - self.socket = self.ctx.socket(zmq.PUB) - self.socket.bind(interface_or_socket) - - def format(self,record): - """Format a record.""" - return self.formatters[record.levelno].format(record) - - def emit(self, record): - """Emit a log message on my socket.""" - try: - topic, record.msg = record.msg.split(TOPIC_DELIM,1) - except Exception: - topic = "" - try: - bmsg = cast_bytes(self.format(record)) - except Exception: - self.handleError(record) - return - - topic_list = [] - - if self.root_topic: - topic_list.append(self.root_topic) - - topic_list.append(record.levelname) - - if topic: - topic_list.append(topic) - - btopic = b'.'.join(cast_bytes(t) for t in topic_list) - - self.socket.send_multipart([btopic, bmsg]) - - -class TopicLogger(logging.Logger): - """A simple wrapper that takes an additional argument to log methods. - - All the regular methods exist, but instead of one msg argument, two - arguments: topic, msg are passed. - - That is:: - - logger.debug('msg') - - Would become:: - - logger.debug('topic.sub', 'msg') - """ - def log(self, level, topic, msg, *args, **kwargs): - """Log 'msg % args' with level and topic. - - To pass exception information, use the keyword argument exc_info - with a True value:: - - logger.log(level, "zmq.fun", "We have a %s", - "mysterious problem", exc_info=1) - """ - logging.Logger.log(self, level, '%s::%s'%(topic,msg), *args, **kwargs) - -# Generate the methods of TopicLogger, since they are just adding a -# topic prefix to a message. -for name in "debug warn warning error critical fatal".split(): - meth = getattr(logging.Logger,name) - setattr(TopicLogger, name, - lambda self, level, topic, msg, *args, **kwargs: - meth(self, level, topic+TOPIC_DELIM+msg,*args, **kwargs)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/__init__.py deleted file mode 100644 index 57f09568..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from zmq.ssh.tunnel import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/forward.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/forward.py deleted file mode 100644 index 2d619462..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/forward.py +++ /dev/null @@ -1,91 +0,0 @@ -# -# This file is adapted from a paramiko demo, and thus licensed under LGPL 2.1. -# Original Copyright (C) 2003-2007 Robey Pointer -# Edits Copyright (C) 2010 The IPython Team -# -# Paramiko is free software; you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free -# Software Foundation; either version 2.1 of the License, or (at your option) -# any later version. -# -# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with Paramiko; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA. - -""" -Sample script showing how to do local port forwarding over paramiko. - -This script connects to the requested SSH server and sets up local port -forwarding (the openssh -L option) from a local port through a tunneled -connection to a destination reachable from the SSH server machine. -""" - -from __future__ import print_function - -import logging -import select -try: # Python 3 - import socketserver -except ImportError: # Python 2 - import SocketServer as socketserver - -logger = logging.getLogger('ssh') - -class ForwardServer (socketserver.ThreadingTCPServer): - daemon_threads = True - allow_reuse_address = True - - -class Handler (socketserver.BaseRequestHandler): - - def handle(self): - try: - chan = self.ssh_transport.open_channel('direct-tcpip', - (self.chain_host, self.chain_port), - self.request.getpeername()) - except Exception as e: - logger.debug('Incoming request to %s:%d failed: %s' % (self.chain_host, - self.chain_port, - repr(e))) - return - if chan is None: - logger.debug('Incoming request to %s:%d was rejected by the SSH server.' % - (self.chain_host, self.chain_port)) - return - - logger.debug('Connected! Tunnel open %r -> %r -> %r' % (self.request.getpeername(), - chan.getpeername(), (self.chain_host, self.chain_port))) - while True: - r, w, x = select.select([self.request, chan], [], []) - if self.request in r: - data = self.request.recv(1024) - if len(data) == 0: - break - chan.send(data) - if chan in r: - data = chan.recv(1024) - if len(data) == 0: - break - self.request.send(data) - chan.close() - self.request.close() - logger.debug('Tunnel closed ') - - -def forward_tunnel(local_port, remote_host, remote_port, transport): - # this is a little convoluted, but lets me configure things for the Handler - # object. (SocketServer doesn't give Handlers any way to access the outer - # server normally.) - class SubHander (Handler): - chain_host = remote_host - chain_port = remote_port - ssh_transport = transport - ForwardServer(('127.0.0.1', local_port), SubHander).serve_forever() - - -__all__ = ['forward_tunnel'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/tunnel.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/tunnel.py deleted file mode 100644 index 5a0c5433..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/ssh/tunnel.py +++ /dev/null @@ -1,376 +0,0 @@ -"""Basic ssh tunnel utilities, and convenience functions for tunneling -zeromq connections. -""" - -# Copyright (C) 2010-2011 IPython Development Team -# Copyright (C) 2011- PyZMQ Developers -# -# Redistributed from IPython under the terms of the BSD License. - - -from __future__ import print_function - -import atexit -import os -import signal -import socket -import sys -import warnings -from getpass import getpass, getuser -from multiprocessing import Process - -try: - with warnings.catch_warnings(): - warnings.simplefilter('ignore', DeprecationWarning) - import paramiko - SSHException = paramiko.ssh_exception.SSHException -except ImportError: - paramiko = None - class SSHException(Exception): - pass -else: - from .forward import forward_tunnel - -try: - import pexpect -except ImportError: - pexpect = None - - -_random_ports = set() - -def select_random_ports(n): - """Selects and return n random ports that are available.""" - ports = [] - for i in range(n): - sock = socket.socket() - sock.bind(('', 0)) - while sock.getsockname()[1] in _random_ports: - sock.close() - sock = socket.socket() - sock.bind(('', 0)) - ports.append(sock) - for i, sock in enumerate(ports): - port = sock.getsockname()[1] - sock.close() - ports[i] = port - _random_ports.add(port) - return ports - - -#----------------------------------------------------------------------------- -# Check for passwordless login -#----------------------------------------------------------------------------- - -def try_passwordless_ssh(server, keyfile, paramiko=None): - """Attempt to make an ssh connection without a password. - This is mainly used for requiring password input only once - when many tunnels may be connected to the same server. - - If paramiko is None, the default for the platform is chosen. - """ - if paramiko is None: - paramiko = sys.platform == 'win32' - if not paramiko: - f = _try_passwordless_openssh - else: - f = _try_passwordless_paramiko - return f(server, keyfile) - -def _try_passwordless_openssh(server, keyfile): - """Try passwordless login with shell ssh command.""" - if pexpect is None: - raise ImportError("pexpect unavailable, use paramiko") - cmd = 'ssh -f '+ server - if keyfile: - cmd += ' -i ' + keyfile - cmd += ' exit' - - # pop SSH_ASKPASS from env - env = os.environ.copy() - env.pop('SSH_ASKPASS', None) - - ssh_newkey = 'Are you sure you want to continue connecting' - p = pexpect.spawn(cmd, env=env) - while True: - try: - i = p.expect([ssh_newkey, '[Pp]assword:'], timeout=.1) - if i==0: - raise SSHException('The authenticity of the host can\'t be established.') - except pexpect.TIMEOUT: - continue - except pexpect.EOF: - return True - else: - return False - -def _try_passwordless_paramiko(server, keyfile): - """Try passwordless login with paramiko.""" - if paramiko is None: - msg = "Paramiko unavaliable, " - if sys.platform == 'win32': - msg += "Paramiko is required for ssh tunneled connections on Windows." - else: - msg += "use OpenSSH." - raise ImportError(msg) - username, server, port = _split_server(server) - client = paramiko.SSHClient() - client.load_system_host_keys() - client.set_missing_host_key_policy(paramiko.WarningPolicy()) - try: - client.connect(server, port, username=username, key_filename=keyfile, - look_for_keys=True) - except paramiko.AuthenticationException: - return False - else: - client.close() - return True - - -def tunnel_connection(socket, addr, server, keyfile=None, password=None, paramiko=None, timeout=60): - """Connect a socket to an address via an ssh tunnel. - - This is a wrapper for socket.connect(addr), when addr is not accessible - from the local machine. It simply creates an ssh tunnel using the remaining args, - and calls socket.connect('tcp://localhost:lport') where lport is the randomly - selected local port of the tunnel. - - """ - new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout) - socket.connect(new_url) - return tunnel - - -def open_tunnel(addr, server, keyfile=None, password=None, paramiko=None, timeout=60): - """Open a tunneled connection from a 0MQ url. - - For use inside tunnel_connection. - - Returns - ------- - - (url, tunnel) : (str, object) - The 0MQ url that has been forwarded, and the tunnel object - """ - - lport = select_random_ports(1)[0] - transport, addr = addr.split('://') - ip,rport = addr.split(':') - rport = int(rport) - if paramiko is None: - paramiko = sys.platform == 'win32' - if paramiko: - tunnelf = paramiko_tunnel - else: - tunnelf = openssh_tunnel - - tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout) - return 'tcp://127.0.0.1:%i'%lport, tunnel - -def openssh_tunnel(lport, rport, server, remoteip='127.0.0.1', keyfile=None, password=None, timeout=60): - """Create an ssh tunnel using command-line ssh that connects port lport - on this machine to localhost:rport on server. The tunnel - will automatically close when not in use, remaining open - for a minimum of timeout seconds for an initial connection. - - This creates a tunnel redirecting `localhost:lport` to `remoteip:rport`, - as seen from `server`. - - keyfile and password may be specified, but ssh config is checked for defaults. - - Parameters - ---------- - - lport : int - local port for connecting to the tunnel from this machine. - rport : int - port on the remote machine to connect to. - server : str - The ssh server to connect to. The full ssh server string will be parsed. - user@server:port - remoteip : str [Default: 127.0.0.1] - The remote ip, specifying the destination of the tunnel. - Default is localhost, which means that the tunnel would redirect - localhost:lport on this machine to localhost:rport on the *server*. - - keyfile : str; path to public key file - This specifies a key to be used in ssh login, default None. - Regular default ssh keys will be used without specifying this argument. - password : str; - Your ssh password to the ssh server. Note that if this is left None, - you will be prompted for it if passwordless key based login is unavailable. - timeout : int [default: 60] - The time (in seconds) after which no activity will result in the tunnel - closing. This prevents orphaned tunnels from running forever. - """ - if pexpect is None: - raise ImportError("pexpect unavailable, use paramiko_tunnel") - ssh="ssh " - if keyfile: - ssh += "-i " + keyfile - - if ':' in server: - server, port = server.split(':') - ssh += " -p %s" % port - - cmd = "%s -O check %s" % (ssh, server) - (output, exitstatus) = pexpect.run(cmd, withexitstatus=True) - if not exitstatus: - pid = int(output[output.find("(pid=")+5:output.find(")")]) - cmd = "%s -O forward -L 127.0.0.1:%i:%s:%i %s" % ( - ssh, lport, remoteip, rport, server) - (output, exitstatus) = pexpect.run(cmd, withexitstatus=True) - if not exitstatus: - atexit.register(_stop_tunnel, cmd.replace("-O forward", "-O cancel", 1)) - return pid - cmd = "%s -f -S none -L 127.0.0.1:%i:%s:%i %s sleep %i" % ( - ssh, lport, remoteip, rport, server, timeout) - - # pop SSH_ASKPASS from env - env = os.environ.copy() - env.pop('SSH_ASKPASS', None) - - ssh_newkey = 'Are you sure you want to continue connecting' - tunnel = pexpect.spawn(cmd, env=env) - failed = False - while True: - try: - i = tunnel.expect([ssh_newkey, '[Pp]assword:'], timeout=.1) - if i==0: - raise SSHException('The authenticity of the host can\'t be established.') - except pexpect.TIMEOUT: - continue - except pexpect.EOF: - if tunnel.exitstatus: - print(tunnel.exitstatus) - print(tunnel.before) - print(tunnel.after) - raise RuntimeError("tunnel '%s' failed to start"%(cmd)) - else: - return tunnel.pid - else: - if failed: - print("Password rejected, try again") - password=None - if password is None: - password = getpass("%s's password: "%(server)) - tunnel.sendline(password) - failed = True - -def _stop_tunnel(cmd): - pexpect.run(cmd) - -def _split_server(server): - if '@' in server: - username,server = server.split('@', 1) - else: - username = getuser() - if ':' in server: - server, port = server.split(':') - port = int(port) - else: - port = 22 - return username, server, port - -def paramiko_tunnel(lport, rport, server, remoteip='127.0.0.1', keyfile=None, password=None, timeout=60): - """launch a tunner with paramiko in a subprocess. This should only be used - when shell ssh is unavailable (e.g. Windows). - - This creates a tunnel redirecting `localhost:lport` to `remoteip:rport`, - as seen from `server`. - - If you are familiar with ssh tunnels, this creates the tunnel: - - ssh server -L localhost:lport:remoteip:rport - - keyfile and password may be specified, but ssh config is checked for defaults. - - - Parameters - ---------- - - lport : int - local port for connecting to the tunnel from this machine. - rport : int - port on the remote machine to connect to. - server : str - The ssh server to connect to. The full ssh server string will be parsed. - user@server:port - remoteip : str [Default: 127.0.0.1] - The remote ip, specifying the destination of the tunnel. - Default is localhost, which means that the tunnel would redirect - localhost:lport on this machine to localhost:rport on the *server*. - - keyfile : str; path to public key file - This specifies a key to be used in ssh login, default None. - Regular default ssh keys will be used without specifying this argument. - password : str; - Your ssh password to the ssh server. Note that if this is left None, - you will be prompted for it if passwordless key based login is unavailable. - timeout : int [default: 60] - The time (in seconds) after which no activity will result in the tunnel - closing. This prevents orphaned tunnels from running forever. - - """ - if paramiko is None: - raise ImportError("Paramiko not available") - - if password is None: - if not _try_passwordless_paramiko(server, keyfile): - password = getpass("%s's password: "%(server)) - - p = Process(target=_paramiko_tunnel, - args=(lport, rport, server, remoteip), - kwargs=dict(keyfile=keyfile, password=password)) - p.daemon=False - p.start() - atexit.register(_shutdown_process, p) - return p - -def _shutdown_process(p): - if p.is_alive(): - p.terminate() - -def _paramiko_tunnel(lport, rport, server, remoteip, keyfile=None, password=None): - """Function for actually starting a paramiko tunnel, to be passed - to multiprocessing.Process(target=this), and not called directly. - """ - username, server, port = _split_server(server) - client = paramiko.SSHClient() - client.load_system_host_keys() - client.set_missing_host_key_policy(paramiko.WarningPolicy()) - - try: - client.connect(server, port, username=username, key_filename=keyfile, - look_for_keys=True, password=password) -# except paramiko.AuthenticationException: -# if password is None: -# password = getpass("%s@%s's password: "%(username, server)) -# client.connect(server, port, username=username, password=password) -# else: -# raise - except Exception as e: - print('*** Failed to connect to %s:%d: %r' % (server, port, e)) - sys.exit(1) - - # Don't let SIGINT kill the tunnel subprocess - signal.signal(signal.SIGINT, signal.SIG_IGN) - - try: - forward_tunnel(lport, remoteip, rport, client.get_transport()) - except KeyboardInterrupt: - print('SIGINT: Port forwarding stopped cleanly') - sys.exit(0) - except Exception as e: - print("Port forwarding stopped uncleanly: %s"%e) - sys.exit(255) - -if sys.platform == 'win32': - ssh_tunnel = paramiko_tunnel -else: - ssh_tunnel = openssh_tunnel - - -__all__ = ['tunnel_connection', 'ssh_tunnel', 'openssh_tunnel', 'paramiko_tunnel', 'try_passwordless_ssh'] - - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/__init__.py deleted file mode 100644 index d0510a44..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -"""pure-Python sugar wrappers for core 0MQ objects.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from zmq.sugar import ( - constants, context, frame, poll, socket, tracker, version -) -from zmq import error - -__all__ = ['constants'] -for submod in ( - constants, context, error, frame, poll, socket, tracker, version -): - __all__.extend(submod.__all__) - -from zmq.error import * -from zmq.sugar.context import * -from zmq.sugar.tracker import * -from zmq.sugar.socket import * -from zmq.sugar.constants import * -from zmq.sugar.frame import * -from zmq.sugar.poll import * -# from zmq.sugar.stopwatch import * -# from zmq.sugar._device import * -from zmq.sugar.version import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/attrsettr.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/attrsettr.py deleted file mode 100644 index 4bbd36d6..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/attrsettr.py +++ /dev/null @@ -1,52 +0,0 @@ -# coding: utf-8 -"""Mixin for mapping set/getattr to self.set/get""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from . import constants - -class AttributeSetter(object): - - def __setattr__(self, key, value): - """set zmq options by attribute""" - - # regular setattr only allowed for class-defined attributes - for obj in [self] + self.__class__.mro(): - if key in obj.__dict__: - object.__setattr__(self, key, value) - return - - upper_key = key.upper() - try: - opt = getattr(constants, upper_key) - except AttributeError: - raise AttributeError("%s has no such option: %s" % ( - self.__class__.__name__, upper_key) - ) - else: - self._set_attr_opt(upper_key, opt, value) - - def _set_attr_opt(self, name, opt, value): - """override if setattr should do something other than call self.set""" - self.set(opt, value) - - def __getattr__(self, key): - """get zmq options by attribute""" - upper_key = key.upper() - try: - opt = getattr(constants, upper_key) - except AttributeError: - raise AttributeError("%s has no such option: %s" % ( - self.__class__.__name__, upper_key) - ) - else: - return self._get_attr_opt(upper_key, opt) - - def _get_attr_opt(self, name, opt): - """override if getattr should do something other than call self.get""" - return self.get(opt) - - -__all__ = ['AttributeSetter'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/constants.py deleted file mode 100644 index 88281176..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/constants.py +++ /dev/null @@ -1,98 +0,0 @@ -"""0MQ Constants.""" - -# Copyright (c) PyZMQ Developers. -# Distributed under the terms of the Modified BSD License. - -from zmq.backend import constants -from zmq.utils.constant_names import ( - base_names, - switched_sockopt_names, - int_sockopt_names, - int64_sockopt_names, - bytes_sockopt_names, - fd_sockopt_names, - ctx_opt_names, - msg_opt_names, -) - -#----------------------------------------------------------------------------- -# Python module level constants -#----------------------------------------------------------------------------- - -__all__ = [ - 'int_sockopts', - 'int64_sockopts', - 'bytes_sockopts', - 'ctx_opts', - 'ctx_opt_names', - ] - -int_sockopts = set() -int64_sockopts = set() -bytes_sockopts = set() -fd_sockopts = set() -ctx_opts = set() -msg_opts = set() - - -if constants.VERSION < 30000: - int64_sockopt_names.extend(switched_sockopt_names) -else: - int_sockopt_names.extend(switched_sockopt_names) - -_UNDEFINED = -9999 - -def _add_constant(name, container=None): - """add a constant to be defined - - optionally add it to one of the sets for use in get/setopt checkers - """ - c = getattr(constants, name, _UNDEFINED) - if c == _UNDEFINED: - return - globals()[name] = c - __all__.append(name) - if container is not None: - container.add(c) - return c - -for name in base_names: - _add_constant(name) - -for name in int_sockopt_names: - _add_constant(name, int_sockopts) - -for name in int64_sockopt_names: - _add_constant(name, int64_sockopts) - -for name in bytes_sockopt_names: - _add_constant(name, bytes_sockopts) - -for name in fd_sockopt_names: - _add_constant(name, fd_sockopts) - -for name in ctx_opt_names: - _add_constant(name, ctx_opts) - -for name in msg_opt_names: - _add_constant(name, msg_opts) - -# ensure some aliases are always defined -aliases = [ - ('DONTWAIT', 'NOBLOCK'), - ('XREQ', 'DEALER'), - ('XREP', 'ROUTER'), -] -for group in aliases: - undefined = set() - found = None - for name in group: - value = getattr(constants, name, -1) - if value != -1: - found = value - else: - undefined.add(name) - if found is not None: - for name in undefined: - globals()[name] = found - __all__.append(name) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/context.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/context.py deleted file mode 100644 index 692e0256..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/context.py +++ /dev/null @@ -1,190 +0,0 @@ -# coding: utf-8 -"""Python bindings for 0MQ.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import atexit - -from zmq.backend import Context as ContextBase -from . import constants -from .attrsettr import AttributeSetter -from .constants import ENOTSUP, ctx_opt_names -from .socket import Socket -from zmq.error import ZMQError - -# notice when exiting, to avoid triggering term on exit -_exiting = False -def _notice_atexit(): - global _exiting - _exiting = True -atexit.register(_notice_atexit) - - -from zmq.utils.interop import cast_int_addr - - -class Context(ContextBase, AttributeSetter): - """Create a zmq Context - - A zmq Context creates sockets via its ``ctx.socket`` method. - """ - sockopts = None - _instance = None - _shadow = False - - def __init__(self, io_threads=1, **kwargs): - super(Context, self).__init__(io_threads=io_threads, **kwargs) - if kwargs.get('shadow', False): - self._shadow = True - else: - self._shadow = False - self.sockopts = {} - - - def __del__(self): - """deleting a Context should terminate it, without trying non-threadsafe destroy""" - if not self._shadow and not _exiting: - self.term() - - def __enter__(self): - return self - - def __exit__(self, *args, **kwargs): - self.term() - - @classmethod - def shadow(cls, address): - """Shadow an existing libzmq context - - address is the integer address of the libzmq context - or an FFI pointer to it. - - .. versionadded:: 14.1 - """ - address = cast_int_addr(address) - return cls(shadow=address) - - @classmethod - def shadow_pyczmq(cls, ctx): - """Shadow an existing pyczmq context - - ctx is the FFI `zctx_t *` pointer - - .. versionadded:: 14.1 - """ - from pyczmq import zctx - - underlying = zctx.underlying(ctx) - address = cast_int_addr(underlying) - return cls(shadow=address) - - # static method copied from tornado IOLoop.instance - @classmethod - def instance(cls, io_threads=1): - """Returns a global Context instance. - - Most single-threaded applications have a single, global Context. - Use this method instead of passing around Context instances - throughout your code. - - A common pattern for classes that depend on Contexts is to use - a default argument to enable programs with multiple Contexts - but not require the argument for simpler applications: - - class MyClass(object): - def __init__(self, context=None): - self.context = context or Context.instance() - """ - if cls._instance is None or cls._instance.closed: - cls._instance = cls(io_threads=io_threads) - return cls._instance - - #------------------------------------------------------------------------- - # Hooks for ctxopt completion - #------------------------------------------------------------------------- - - def __dir__(self): - keys = dir(self.__class__) - - for collection in ( - ctx_opt_names, - ): - keys.extend(collection) - return keys - - #------------------------------------------------------------------------- - # Creating Sockets - #------------------------------------------------------------------------- - - @property - def _socket_class(self): - return Socket - - def socket(self, socket_type): - """Create a Socket associated with this Context. - - Parameters - ---------- - socket_type : int - The socket type, which can be any of the 0MQ socket types: - REQ, REP, PUB, SUB, PAIR, DEALER, ROUTER, PULL, PUSH, etc. - """ - if self.closed: - raise ZMQError(ENOTSUP) - s = self._socket_class(self, socket_type) - for opt, value in self.sockopts.items(): - try: - s.setsockopt(opt, value) - except ZMQError: - # ignore ZMQErrors, which are likely for socket options - # that do not apply to a particular socket type, e.g. - # SUBSCRIBE for non-SUB sockets. - pass - return s - - def setsockopt(self, opt, value): - """set default socket options for new sockets created by this Context - - .. versionadded:: 13.0 - """ - self.sockopts[opt] = value - - def getsockopt(self, opt): - """get default socket options for new sockets created by this Context - - .. versionadded:: 13.0 - """ - return self.sockopts[opt] - - def _set_attr_opt(self, name, opt, value): - """set default sockopts as attributes""" - if name in constants.ctx_opt_names: - return self.set(opt, value) - else: - self.sockopts[opt] = value - - def _get_attr_opt(self, name, opt): - """get default sockopts as attributes""" - if name in constants.ctx_opt_names: - return self.get(opt) - else: - if opt not in self.sockopts: - raise AttributeError(name) - else: - return self.sockopts[opt] - - def __delattr__(self, key): - """delete default sockopts as attributes""" - key = key.upper() - try: - opt = getattr(constants, key) - except AttributeError: - raise AttributeError("no such socket option: %s" % key) - else: - if opt not in self.sockopts: - raise AttributeError(key) - else: - del self.sockopts[opt] - -__all__ = ['Context'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/frame.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/frame.py deleted file mode 100644 index 9f556c86..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/frame.py +++ /dev/null @@ -1,19 +0,0 @@ -# coding: utf-8 -"""0MQ Frame pure Python methods.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from .attrsettr import AttributeSetter -from zmq.backend import Frame as FrameBase - - -class Frame(FrameBase, AttributeSetter): - def __getitem__(self, key): - # map Frame['User-Id'] to Frame.get('User-Id') - return self.get(key) - -# keep deprecated alias -Message = Frame -__all__ = ['Frame', 'Message'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/poll.py deleted file mode 100644 index c7b1d1bb..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/poll.py +++ /dev/null @@ -1,161 +0,0 @@ -"""0MQ polling related functions and classes.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import zmq -from zmq.backend import zmq_poll -from .constants import POLLIN, POLLOUT, POLLERR - -#----------------------------------------------------------------------------- -# Polling related methods -#----------------------------------------------------------------------------- - - -class Poller(object): - """A stateful poll interface that mirrors Python's built-in poll.""" - sockets = None - _map = {} - - def __init__(self): - self.sockets = [] - self._map = {} - - def __contains__(self, socket): - return socket in self._map - - def register(self, socket, flags=POLLIN|POLLOUT): - """p.register(socket, flags=POLLIN|POLLOUT) - - Register a 0MQ socket or native fd for I/O monitoring. - - register(s,0) is equivalent to unregister(s). - - Parameters - ---------- - socket : zmq.Socket or native socket - A zmq.Socket or any Python object having a ``fileno()`` - method that returns a valid file descriptor. - flags : int - The events to watch for. Can be POLLIN, POLLOUT or POLLIN|POLLOUT. - If `flags=0`, socket will be unregistered. - """ - if flags: - if socket in self._map: - idx = self._map[socket] - self.sockets[idx] = (socket, flags) - else: - idx = len(self.sockets) - self.sockets.append((socket, flags)) - self._map[socket] = idx - elif socket in self._map: - # uregister sockets registered with no events - self.unregister(socket) - else: - # ignore new sockets with no events - pass - - def modify(self, socket, flags=POLLIN|POLLOUT): - """Modify the flags for an already registered 0MQ socket or native fd.""" - self.register(socket, flags) - - def unregister(self, socket): - """Remove a 0MQ socket or native fd for I/O monitoring. - - Parameters - ---------- - socket : Socket - The socket instance to stop polling. - """ - idx = self._map.pop(socket) - self.sockets.pop(idx) - # shift indices after deletion - for socket, flags in self.sockets[idx:]: - self._map[socket] -= 1 - - def poll(self, timeout=None): - """Poll the registered 0MQ or native fds for I/O. - - Parameters - ---------- - timeout : float, int - The timeout in milliseconds. If None, no `timeout` (infinite). This - is in milliseconds to be compatible with ``select.poll()``. The - underlying zmq_poll uses microseconds and we convert to that in - this function. - - Returns - ------- - events : list of tuples - The list of events that are ready to be processed. - This is a list of tuples of the form ``(socket, event)``, where the 0MQ Socket - or integer fd is the first element, and the poll event mask (POLLIN, POLLOUT) is the second. - It is common to call ``events = dict(poller.poll())``, - which turns the list of tuples into a mapping of ``socket : event``. - """ - if timeout is None or timeout < 0: - timeout = -1 - elif isinstance(timeout, float): - timeout = int(timeout) - return zmq_poll(self.sockets, timeout=timeout) - - -def select(rlist, wlist, xlist, timeout=None): - """select(rlist, wlist, xlist, timeout=None) -> (rlist, wlist, xlist) - - Return the result of poll as a lists of sockets ready for r/w/exception. - - This has the same interface as Python's built-in ``select.select()`` function. - - Parameters - ---------- - timeout : float, int, optional - The timeout in seconds. If None, no timeout (infinite). This is in seconds to be - compatible with ``select.select()``. The underlying zmq_poll uses microseconds - and we convert to that in this function. - rlist : list of sockets/FDs - sockets/FDs to be polled for read events - wlist : list of sockets/FDs - sockets/FDs to be polled for write events - xlist : list of sockets/FDs - sockets/FDs to be polled for error events - - Returns - ------- - (rlist, wlist, xlist) : tuple of lists of sockets (length 3) - Lists correspond to sockets available for read/write/error events respectively. - """ - if timeout is None: - timeout = -1 - # Convert from sec -> us for zmq_poll. - # zmq_poll accepts 3.x style timeout in ms - timeout = int(timeout*1000.0) - if timeout < 0: - timeout = -1 - sockets = [] - for s in set(rlist + wlist + xlist): - flags = 0 - if s in rlist: - flags |= POLLIN - if s in wlist: - flags |= POLLOUT - if s in xlist: - flags |= POLLERR - sockets.append((s, flags)) - return_sockets = zmq_poll(sockets, timeout) - rlist, wlist, xlist = [], [], [] - for s, flags in return_sockets: - if flags & POLLIN: - rlist.append(s) - if flags & POLLOUT: - wlist.append(s) - if flags & POLLERR: - xlist.append(s) - return rlist, wlist, xlist - -#----------------------------------------------------------------------------- -# Symbols to export -#----------------------------------------------------------------------------- - -__all__ = [ 'Poller', 'select' ] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/socket.py deleted file mode 100644 index c91589d7..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/socket.py +++ /dev/null @@ -1,495 +0,0 @@ -# coding: utf-8 -"""0MQ Socket pure Python methods.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import codecs -import random -import warnings - -import zmq -from zmq.backend import Socket as SocketBase -from .poll import Poller -from . import constants -from .attrsettr import AttributeSetter -from zmq.error import ZMQError, ZMQBindError -from zmq.utils import jsonapi -from zmq.utils.strtypes import bytes,unicode,basestring -from zmq.utils.interop import cast_int_addr - -from .constants import ( - SNDMORE, ENOTSUP, POLLIN, - int64_sockopt_names, - int_sockopt_names, - bytes_sockopt_names, - fd_sockopt_names, -) -try: - import cPickle - pickle = cPickle -except: - cPickle = None - import pickle - -try: - DEFAULT_PROTOCOL = pickle.DEFAULT_PROTOCOL -except AttributeError: - DEFAULT_PROTOCOL = pickle.HIGHEST_PROTOCOL - - -class Socket(SocketBase, AttributeSetter): - """The ZMQ socket object - - To create a Socket, first create a Context:: - - ctx = zmq.Context.instance() - - then call ``ctx.socket(socket_type)``:: - - s = ctx.socket(zmq.ROUTER) - - """ - _shadow = False - - def __del__(self): - if not self._shadow: - self.close() - - # socket as context manager: - def __enter__(self): - """Sockets are context managers - - .. versionadded:: 14.4 - """ - return self - - def __exit__(self, *args, **kwargs): - self.close() - - #------------------------------------------------------------------------- - # Socket creation - #------------------------------------------------------------------------- - - @classmethod - def shadow(cls, address): - """Shadow an existing libzmq socket - - address is the integer address of the libzmq socket - or an FFI pointer to it. - - .. versionadded:: 14.1 - """ - address = cast_int_addr(address) - return cls(shadow=address) - - #------------------------------------------------------------------------- - # Deprecated aliases - #------------------------------------------------------------------------- - - @property - def socket_type(self): - warnings.warn("Socket.socket_type is deprecated, use Socket.type", - DeprecationWarning - ) - return self.type - - #------------------------------------------------------------------------- - # Hooks for sockopt completion - #------------------------------------------------------------------------- - - def __dir__(self): - keys = dir(self.__class__) - for collection in ( - bytes_sockopt_names, - int_sockopt_names, - int64_sockopt_names, - fd_sockopt_names, - ): - keys.extend(collection) - return keys - - #------------------------------------------------------------------------- - # Getting/Setting options - #------------------------------------------------------------------------- - setsockopt = SocketBase.set - getsockopt = SocketBase.get - - def set_string(self, option, optval, encoding='utf-8'): - """set socket options with a unicode object - - This is simply a wrapper for setsockopt to protect from encoding ambiguity. - - See the 0MQ documentation for details on specific options. - - Parameters - ---------- - option : int - The name of the option to set. Can be any of: SUBSCRIBE, - UNSUBSCRIBE, IDENTITY - optval : unicode string (unicode on py2, str on py3) - The value of the option to set. - encoding : str - The encoding to be used, default is utf8 - """ - if not isinstance(optval, unicode): - raise TypeError("unicode strings only") - return self.set(option, optval.encode(encoding)) - - setsockopt_unicode = setsockopt_string = set_string - - def get_string(self, option, encoding='utf-8'): - """get the value of a socket option - - See the 0MQ documentation for details on specific options. - - Parameters - ---------- - option : int - The option to retrieve. - - Returns - ------- - optval : unicode string (unicode on py2, str on py3) - The value of the option as a unicode string. - """ - - if option not in constants.bytes_sockopts: - raise TypeError("option %i will not return a string to be decoded"%option) - return self.getsockopt(option).decode(encoding) - - getsockopt_unicode = getsockopt_string = get_string - - def bind_to_random_port(self, addr, min_port=49152, max_port=65536, max_tries=100): - """bind this socket to a random port in a range - - Parameters - ---------- - addr : str - The address string without the port to pass to ``Socket.bind()``. - min_port : int, optional - The minimum port in the range of ports to try (inclusive). - max_port : int, optional - The maximum port in the range of ports to try (exclusive). - max_tries : int, optional - The maximum number of bind attempts to make. - - Returns - ------- - port : int - The port the socket was bound to. - - Raises - ------ - ZMQBindError - if `max_tries` reached before successful bind - """ - for i in range(max_tries): - try: - port = random.randrange(min_port, max_port) - self.bind('%s:%s' % (addr, port)) - except ZMQError as exception: - if not exception.errno == zmq.EADDRINUSE: - raise - else: - return port - raise ZMQBindError("Could not bind socket to random port.") - - def get_hwm(self): - """get the High Water Mark - - On libzmq ≥ 3, this gets SNDHWM if available, otherwise RCVHWM - """ - major = zmq.zmq_version_info()[0] - if major >= 3: - # return sndhwm, fallback on rcvhwm - try: - return self.getsockopt(zmq.SNDHWM) - except zmq.ZMQError as e: - pass - - return self.getsockopt(zmq.RCVHWM) - else: - return self.getsockopt(zmq.HWM) - - def set_hwm(self, value): - """set the High Water Mark - - On libzmq ≥ 3, this sets both SNDHWM and RCVHWM - """ - major = zmq.zmq_version_info()[0] - if major >= 3: - raised = None - try: - self.sndhwm = value - except Exception as e: - raised = e - try: - self.rcvhwm = value - except Exception: - raised = e - - if raised: - raise raised - else: - return self.setsockopt(zmq.HWM, value) - - hwm = property(get_hwm, set_hwm, - """property for High Water Mark - - Setting hwm sets both SNDHWM and RCVHWM as appropriate. - It gets SNDHWM if available, otherwise RCVHWM. - """ - ) - - #------------------------------------------------------------------------- - # Sending and receiving messages - #------------------------------------------------------------------------- - - def send_multipart(self, msg_parts, flags=0, copy=True, track=False): - """send a sequence of buffers as a multipart message - - The zmq.SNDMORE flag is added to all msg parts before the last. - - Parameters - ---------- - msg_parts : iterable - A sequence of objects to send as a multipart message. Each element - can be any sendable object (Frame, bytes, buffer-providers) - flags : int, optional - SNDMORE is handled automatically for frames before the last. - copy : bool, optional - Should the frame(s) be sent in a copying or non-copying manner. - track : bool, optional - Should the frame(s) be tracked for notification that ZMQ has - finished with it (ignored if copy=True). - - Returns - ------- - None : if copy or not track - MessageTracker : if track and not copy - a MessageTracker object, whose `pending` property will - be True until the last send is completed. - """ - for msg in msg_parts[:-1]: - self.send(msg, SNDMORE|flags, copy=copy, track=track) - # Send the last part without the extra SNDMORE flag. - return self.send(msg_parts[-1], flags, copy=copy, track=track) - - def recv_multipart(self, flags=0, copy=True, track=False): - """receive a multipart message as a list of bytes or Frame objects - - Parameters - ---------- - flags : int, optional - Any supported flag: NOBLOCK. If NOBLOCK is set, this method - will raise a ZMQError with EAGAIN if a message is not ready. - If NOBLOCK is not set, then this method will block until a - message arrives. - copy : bool, optional - Should the message frame(s) be received in a copying or non-copying manner? - If False a Frame object is returned for each part, if True a copy of - the bytes is made for each frame. - track : bool, optional - Should the message frame(s) be tracked for notification that ZMQ has - finished with it? (ignored if copy=True) - - Returns - ------- - msg_parts : list - A list of frames in the multipart message; either Frames or bytes, - depending on `copy`. - - """ - parts = [self.recv(flags, copy=copy, track=track)] - # have first part already, only loop while more to receive - while self.getsockopt(zmq.RCVMORE): - part = self.recv(flags, copy=copy, track=track) - parts.append(part) - - return parts - - def send_string(self, u, flags=0, copy=True, encoding='utf-8'): - """send a Python unicode string as a message with an encoding - - 0MQ communicates with raw bytes, so you must encode/decode - text (unicode on py2, str on py3) around 0MQ. - - Parameters - ---------- - u : Python unicode string (unicode on py2, str on py3) - The unicode string to send. - flags : int, optional - Any valid send flag. - encoding : str [default: 'utf-8'] - The encoding to be used - """ - if not isinstance(u, basestring): - raise TypeError("unicode/str objects only") - return self.send(u.encode(encoding), flags=flags, copy=copy) - - send_unicode = send_string - - def recv_string(self, flags=0, encoding='utf-8'): - """receive a unicode string, as sent by send_string - - Parameters - ---------- - flags : int - Any valid recv flag. - encoding : str [default: 'utf-8'] - The encoding to be used - - Returns - ------- - s : unicode string (unicode on py2, str on py3) - The Python unicode string that arrives as encoded bytes. - """ - b = self.recv(flags=flags) - return b.decode(encoding) - - recv_unicode = recv_string - - def send_pyobj(self, obj, flags=0, protocol=DEFAULT_PROTOCOL): - """send a Python object as a message using pickle to serialize - - Parameters - ---------- - obj : Python object - The Python object to send. - flags : int - Any valid send flag. - protocol : int - The pickle protocol number to use. The default is pickle.DEFAULT_PROTOCOl - where defined, and pickle.HIGHEST_PROTOCOL elsewhere. - """ - msg = pickle.dumps(obj, protocol) - return self.send(msg, flags) - - def recv_pyobj(self, flags=0): - """receive a Python object as a message using pickle to serialize - - Parameters - ---------- - flags : int - Any valid recv flag. - - Returns - ------- - obj : Python object - The Python object that arrives as a message. - """ - s = self.recv(flags) - return pickle.loads(s) - - def send_json(self, obj, flags=0, **kwargs): - """send a Python object as a message using json to serialize - - Keyword arguments are passed on to json.dumps - - Parameters - ---------- - obj : Python object - The Python object to send - flags : int - Any valid send flag - """ - msg = jsonapi.dumps(obj, **kwargs) - return self.send(msg, flags) - - def recv_json(self, flags=0, **kwargs): - """receive a Python object as a message using json to serialize - - Keyword arguments are passed on to json.loads - - Parameters - ---------- - flags : int - Any valid recv flag. - - Returns - ------- - obj : Python object - The Python object that arrives as a message. - """ - msg = self.recv(flags) - return jsonapi.loads(msg, **kwargs) - - _poller_class = Poller - - def poll(self, timeout=None, flags=POLLIN): - """poll the socket for events - - The default is to poll forever for incoming - events. Timeout is in milliseconds, if specified. - - Parameters - ---------- - timeout : int [default: None] - The timeout (in milliseconds) to wait for an event. If unspecified - (or specified None), will wait forever for an event. - flags : bitfield (int) [default: POLLIN] - The event flags to poll for (any combination of POLLIN|POLLOUT). - The default is to check for incoming events (POLLIN). - - Returns - ------- - events : bitfield (int) - The events that are ready and waiting. Will be 0 if no events were ready - by the time timeout was reached. - """ - - if self.closed: - raise ZMQError(ENOTSUP) - - p = self._poller_class() - p.register(self, flags) - evts = dict(p.poll(timeout)) - # return 0 if no events, otherwise return event bitfield - return evts.get(self, 0) - - def get_monitor_socket(self, events=None, addr=None): - """Return a connected PAIR socket ready to receive the event notifications. - - .. versionadded:: libzmq-4.0 - .. versionadded:: 14.0 - - Parameters - ---------- - events : bitfield (int) [default: ZMQ_EVENTS_ALL] - The bitmask defining which events are wanted. - addr : string [default: None] - The optional endpoint for the monitoring sockets. - - Returns - ------- - socket : (PAIR) - The socket is already connected and ready to receive messages. - """ - # safe-guard, method only available on libzmq >= 4 - if zmq.zmq_version_info() < (4,): - raise NotImplementedError("get_monitor_socket requires libzmq >= 4, have %s" % zmq.zmq_version()) - if addr is None: - # create endpoint name from internal fd - addr = "inproc://monitor.s-%d" % self.FD - if events is None: - # use all events - events = zmq.EVENT_ALL - # attach monitoring socket - self.monitor(addr, events) - # create new PAIR socket and connect it - ret = self.context.socket(zmq.PAIR) - ret.connect(addr) - return ret - - def disable_monitor(self): - """Shutdown the PAIR socket (created using get_monitor_socket) - that is serving socket events. - - .. versionadded:: 14.4 - """ - self.monitor(None, 0) - - -__all__ = ['Socket'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/tracker.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/tracker.py deleted file mode 100644 index fb8c007f..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/tracker.py +++ /dev/null @@ -1,120 +0,0 @@ -"""Tracker for zero-copy messages with 0MQ.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time - -try: - # below 3.3 - from threading import _Event as Event -except (ImportError, AttributeError): - # python throws ImportError, cython throws AttributeError - from threading import Event - -from zmq.error import NotDone -from zmq.backend import Frame - -class MessageTracker(object): - """MessageTracker(*towatch) - - A class for tracking if 0MQ is done using one or more messages. - - When you send a 0MQ message, it is not sent immediately. The 0MQ IO thread - sends the message at some later time. Often you want to know when 0MQ has - actually sent the message though. This is complicated by the fact that - a single 0MQ message can be sent multiple times using different sockets. - This class allows you to track all of the 0MQ usages of a message. - - Parameters - ---------- - *towatch : tuple of Event, MessageTracker, Message instances. - This list of objects to track. This class can track the low-level - Events used by the Message class, other MessageTrackers or - actual Messages. - """ - events = None - peers = None - - def __init__(self, *towatch): - """MessageTracker(*towatch) - - Create a message tracker to track a set of mesages. - - Parameters - ---------- - *towatch : tuple of Event, MessageTracker, Message instances. - This list of objects to track. This class can track the low-level - Events used by the Message class, other MessageTrackers or - actual Messages. - """ - self.events = set() - self.peers = set() - for obj in towatch: - if isinstance(obj, Event): - self.events.add(obj) - elif isinstance(obj, MessageTracker): - self.peers.add(obj) - elif isinstance(obj, Frame): - if not obj.tracker: - raise ValueError("Not a tracked message") - self.peers.add(obj.tracker) - else: - raise TypeError("Require Events or Message Frames, not %s"%type(obj)) - - @property - def done(self): - """Is 0MQ completely done with the message(s) being tracked?""" - for evt in self.events: - if not evt.is_set(): - return False - for pm in self.peers: - if not pm.done: - return False - return True - - def wait(self, timeout=-1): - """mt.wait(timeout=-1) - - Wait for 0MQ to be done with the message or until `timeout`. - - Parameters - ---------- - timeout : float [default: -1, wait forever] - Maximum time in (s) to wait before raising NotDone. - - Returns - ------- - None - if done before `timeout` - - Raises - ------ - NotDone - if `timeout` reached before I am done. - """ - tic = time.time() - if timeout is False or timeout < 0: - remaining = 3600*24*7 # a week - else: - remaining = timeout - done = False - for evt in self.events: - if remaining < 0: - raise NotDone - evt.wait(timeout=remaining) - if not evt.is_set(): - raise NotDone - toc = time.time() - remaining -= (toc-tic) - tic = toc - - for peer in self.peers: - if remaining < 0: - raise NotDone - peer.wait(timeout=remaining) - toc = time.time() - remaining -= (toc-tic) - tic = toc - -__all__ = ['MessageTracker'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/version.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/version.py deleted file mode 100644 index ea8fbbc4..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/sugar/version.py +++ /dev/null @@ -1,48 +0,0 @@ -"""PyZMQ and 0MQ version functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from zmq.backend import zmq_version_info - - -VERSION_MAJOR = 14 -VERSION_MINOR = 5 -VERSION_PATCH = 0 -VERSION_EXTRA = "" -__version__ = '%i.%i.%i' % (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH) - -if VERSION_EXTRA: - __version__ = "%s-%s" % (__version__, VERSION_EXTRA) - version_info = (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, float('inf')) -else: - version_info = (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH) - -__revision__ = '' - -def pyzmq_version(): - """return the version of pyzmq as a string""" - if __revision__: - return '@'.join([__version__,__revision__[:6]]) - else: - return __version__ - -def pyzmq_version_info(): - """return the pyzmq version as a tuple of at least three numbers - - If pyzmq is a development version, `inf` will be appended after the third integer. - """ - return version_info - - -def zmq_version(): - """return the version of libzmq as a string""" - return "%i.%i.%i" % zmq_version_info() - - -__all__ = ['zmq_version', 'zmq_version_info', - 'pyzmq_version','pyzmq_version_info', - '__version__', '__revision__' -] - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/__init__.py deleted file mode 100644 index 325a3f19..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/__init__.py +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) PyZMQ Developers. -# Distributed under the terms of the Modified BSD License. - -import functools -import sys -import time -from threading import Thread - -from unittest import TestCase - -import zmq -from zmq.utils import jsonapi - -try: - import gevent - from zmq import green as gzmq - have_gevent = True -except ImportError: - have_gevent = False - -try: - from unittest import SkipTest -except ImportError: - try: - from nose import SkipTest - except ImportError: - class SkipTest(Exception): - pass - -PYPY = 'PyPy' in sys.version - -#----------------------------------------------------------------------------- -# skip decorators (directly from unittest) -#----------------------------------------------------------------------------- - -_id = lambda x: x - -def skip(reason): - """ - Unconditionally skip a test. - """ - def decorator(test_item): - if not (isinstance(test_item, type) and issubclass(test_item, TestCase)): - @functools.wraps(test_item) - def skip_wrapper(*args, **kwargs): - raise SkipTest(reason) - test_item = skip_wrapper - - test_item.__unittest_skip__ = True - test_item.__unittest_skip_why__ = reason - return test_item - return decorator - -def skip_if(condition, reason="Skipped"): - """ - Skip a test if the condition is true. - """ - if condition: - return skip(reason) - return _id - -skip_pypy = skip_if(PYPY, "Doesn't work on PyPy") - -#----------------------------------------------------------------------------- -# Base test class -#----------------------------------------------------------------------------- - -class BaseZMQTestCase(TestCase): - green = False - - @property - def Context(self): - if self.green: - return gzmq.Context - else: - return zmq.Context - - def socket(self, socket_type): - s = self.context.socket(socket_type) - self.sockets.append(s) - return s - - def setUp(self): - if self.green and not have_gevent: - raise SkipTest("requires gevent") - self.context = self.Context.instance() - self.sockets = [] - - def tearDown(self): - contexts = set([self.context]) - while self.sockets: - sock = self.sockets.pop() - contexts.add(sock.context) # in case additional contexts are created - sock.close(0) - for ctx in contexts: - t = Thread(target=ctx.term) - t.daemon = True - t.start() - t.join(timeout=2) - if t.is_alive(): - # reset Context.instance, so the failure to term doesn't corrupt subsequent tests - zmq.sugar.context.Context._instance = None - raise RuntimeError("context could not terminate, open sockets likely remain in test") - - def create_bound_pair(self, type1=zmq.PAIR, type2=zmq.PAIR, interface='tcp://127.0.0.1'): - """Create a bound socket pair using a random port.""" - s1 = self.context.socket(type1) - s1.setsockopt(zmq.LINGER, 0) - port = s1.bind_to_random_port(interface) - s2 = self.context.socket(type2) - s2.setsockopt(zmq.LINGER, 0) - s2.connect('%s:%s' % (interface, port)) - self.sockets.extend([s1,s2]) - return s1, s2 - - def ping_pong(self, s1, s2, msg): - s1.send(msg) - msg2 = s2.recv() - s2.send(msg2) - msg3 = s1.recv() - return msg3 - - def ping_pong_json(self, s1, s2, o): - if jsonapi.jsonmod is None: - raise SkipTest("No json library") - s1.send_json(o) - o2 = s2.recv_json() - s2.send_json(o2) - o3 = s1.recv_json() - return o3 - - def ping_pong_pyobj(self, s1, s2, o): - s1.send_pyobj(o) - o2 = s2.recv_pyobj() - s2.send_pyobj(o2) - o3 = s1.recv_pyobj() - return o3 - - def assertRaisesErrno(self, errno, func, *args, **kwargs): - try: - func(*args, **kwargs) - except zmq.ZMQError as e: - self.assertEqual(e.errno, errno, "wrong error raised, expected '%s' \ -got '%s'" % (zmq.ZMQError(errno), zmq.ZMQError(e.errno))) - else: - self.fail("Function did not raise any error") - - def _select_recv(self, multipart, socket, **kwargs): - """call recv[_multipart] in a way that raises if there is nothing to receive""" - if zmq.zmq_version_info() >= (3,1,0): - # zmq 3.1 has a bug, where poll can return false positives, - # so we wait a little bit just in case - # See LIBZMQ-280 on JIRA - time.sleep(0.1) - - r,w,x = zmq.select([socket], [], [], timeout=5) - assert len(r) > 0, "Should have received a message" - kwargs['flags'] = zmq.DONTWAIT | kwargs.get('flags', 0) - - recv = socket.recv_multipart if multipart else socket.recv - return recv(**kwargs) - - def recv(self, socket, **kwargs): - """call recv in a way that raises if there is nothing to receive""" - return self._select_recv(False, socket, **kwargs) - - def recv_multipart(self, socket, **kwargs): - """call recv_multipart in a way that raises if there is nothing to receive""" - return self._select_recv(True, socket, **kwargs) - - -class PollZMQTestCase(BaseZMQTestCase): - pass - -class GreenTest: - """Mixin for making green versions of test classes""" - green = True - - def assertRaisesErrno(self, errno, func, *args, **kwargs): - if errno == zmq.EAGAIN: - raise SkipTest("Skipping because we're green.") - try: - func(*args, **kwargs) - except zmq.ZMQError: - e = sys.exc_info()[1] - self.assertEqual(e.errno, errno, "wrong error raised, expected '%s' \ -got '%s'" % (zmq.ZMQError(errno), zmq.ZMQError(e.errno))) - else: - self.fail("Function did not raise any error") - - def tearDown(self): - contexts = set([self.context]) - while self.sockets: - sock = self.sockets.pop() - contexts.add(sock.context) # in case additional contexts are created - sock.close() - try: - gevent.joinall([gevent.spawn(ctx.term) for ctx in contexts], timeout=2, raise_error=True) - except gevent.Timeout: - raise RuntimeError("context could not terminate, open sockets likely remain in test") - - def skip_green(self): - raise SkipTest("Skipping because we are green") - -def skip_green(f): - def skipping_test(self, *args, **kwargs): - if self.green: - raise SkipTest("Skipping because we are green") - else: - return f(self, *args, **kwargs) - return skipping_test diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_auth.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_auth.py deleted file mode 100644 index d350f61f..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_auth.py +++ /dev/null @@ -1,431 +0,0 @@ -# -*- coding: utf8 -*- - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import logging -import os -import shutil -import sys -import tempfile - -import zmq.auth -from zmq.auth.ioloop import IOLoopAuthenticator -from zmq.auth.thread import ThreadAuthenticator - -from zmq.eventloop import ioloop, zmqstream -from zmq.tests import (BaseZMQTestCase, SkipTest) - -class BaseAuthTestCase(BaseZMQTestCase): - def setUp(self): - if zmq.zmq_version_info() < (4,0): - raise SkipTest("security is new in libzmq 4.0") - try: - zmq.curve_keypair() - except zmq.ZMQError: - raise SkipTest("security requires libzmq to be linked against libsodium") - super(BaseAuthTestCase, self).setUp() - # enable debug logging while we run tests - logging.getLogger('zmq.auth').setLevel(logging.DEBUG) - self.auth = self.make_auth() - self.auth.start() - self.base_dir, self.public_keys_dir, self.secret_keys_dir = self.create_certs() - - def make_auth(self): - raise NotImplementedError() - - def tearDown(self): - if self.auth: - self.auth.stop() - self.auth = None - self.remove_certs(self.base_dir) - super(BaseAuthTestCase, self).tearDown() - - def create_certs(self): - """Create CURVE certificates for a test""" - - # Create temporary CURVE keypairs for this test run. We create all keys in a - # temp directory and then move them into the appropriate private or public - # directory. - - base_dir = tempfile.mkdtemp() - keys_dir = os.path.join(base_dir, 'certificates') - public_keys_dir = os.path.join(base_dir, 'public_keys') - secret_keys_dir = os.path.join(base_dir, 'private_keys') - - os.mkdir(keys_dir) - os.mkdir(public_keys_dir) - os.mkdir(secret_keys_dir) - - server_public_file, server_secret_file = zmq.auth.create_certificates(keys_dir, "server") - client_public_file, client_secret_file = zmq.auth.create_certificates(keys_dir, "client") - - for key_file in os.listdir(keys_dir): - if key_file.endswith(".key"): - shutil.move(os.path.join(keys_dir, key_file), - os.path.join(public_keys_dir, '.')) - - for key_file in os.listdir(keys_dir): - if key_file.endswith(".key_secret"): - shutil.move(os.path.join(keys_dir, key_file), - os.path.join(secret_keys_dir, '.')) - - return (base_dir, public_keys_dir, secret_keys_dir) - - def remove_certs(self, base_dir): - """Remove certificates for a test""" - shutil.rmtree(base_dir) - - def load_certs(self, secret_keys_dir): - """Return server and client certificate keys""" - server_secret_file = os.path.join(secret_keys_dir, "server.key_secret") - client_secret_file = os.path.join(secret_keys_dir, "client.key_secret") - - server_public, server_secret = zmq.auth.load_certificate(server_secret_file) - client_public, client_secret = zmq.auth.load_certificate(client_secret_file) - - return server_public, server_secret, client_public, client_secret - - -class TestThreadAuthentication(BaseAuthTestCase): - """Test authentication running in a thread""" - - def make_auth(self): - return ThreadAuthenticator(self.context) - - def can_connect(self, server, client): - """Check if client can connect to server using tcp transport""" - result = False - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - msg = [b"Hello World"] - server.send_multipart(msg) - if client.poll(1000): - rcvd_msg = client.recv_multipart() - self.assertEqual(rcvd_msg, msg) - result = True - return result - - def test_null(self): - """threaded auth - NULL""" - # A default NULL connection should always succeed, and not - # go through our authentication infrastructure at all. - self.auth.stop() - self.auth = None - - server = self.socket(zmq.PUSH) - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. The client connection - # should still be allowed. - server = self.socket(zmq.PUSH) - server.zap_domain = b'global' - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - def test_blacklist(self): - """threaded auth - Blacklist""" - # Blacklist 127.0.0.1, connection should fail - self.auth.deny('127.0.0.1') - server = self.socket(zmq.PUSH) - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. - server.zap_domain = b'global' - client = self.socket(zmq.PULL) - self.assertFalse(self.can_connect(server, client)) - - def test_whitelist(self): - """threaded auth - Whitelist""" - # Whitelist 127.0.0.1, connection should pass" - self.auth.allow('127.0.0.1') - server = self.socket(zmq.PUSH) - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. - server.zap_domain = b'global' - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - def test_plain(self): - """threaded auth - PLAIN""" - - # Try PLAIN authentication - without configuring server, connection should fail - server = self.socket(zmq.PUSH) - server.plain_server = True - client = self.socket(zmq.PULL) - client.plain_username = b'admin' - client.plain_password = b'Password' - self.assertFalse(self.can_connect(server, client)) - - # Try PLAIN authentication - with server configured, connection should pass - server = self.socket(zmq.PUSH) - server.plain_server = True - client = self.socket(zmq.PULL) - client.plain_username = b'admin' - client.plain_password = b'Password' - self.auth.configure_plain(domain='*', passwords={'admin': 'Password'}) - self.assertTrue(self.can_connect(server, client)) - - # Try PLAIN authentication - with bogus credentials, connection should fail - server = self.socket(zmq.PUSH) - server.plain_server = True - client = self.socket(zmq.PULL) - client.plain_username = b'admin' - client.plain_password = b'Bogus' - self.assertFalse(self.can_connect(server, client)) - - # Remove authenticator and check that a normal connection works - self.auth.stop() - self.auth = None - - server = self.socket(zmq.PUSH) - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - client.close() - server.close() - - def test_curve(self): - """threaded auth - CURVE""" - self.auth.allow('127.0.0.1') - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - #Try CURVE authentication - without configuring server, connection should fail - server = self.socket(zmq.PUSH) - server.curve_publickey = server_public - server.curve_secretkey = server_secret - server.curve_server = True - client = self.socket(zmq.PULL) - client.curve_publickey = client_public - client.curve_secretkey = client_secret - client.curve_serverkey = server_public - self.assertFalse(self.can_connect(server, client)) - - #Try CURVE authentication - with server configured to CURVE_ALLOW_ANY, connection should pass - self.auth.configure_curve(domain='*', location=zmq.auth.CURVE_ALLOW_ANY) - server = self.socket(zmq.PUSH) - server.curve_publickey = server_public - server.curve_secretkey = server_secret - server.curve_server = True - client = self.socket(zmq.PULL) - client.curve_publickey = client_public - client.curve_secretkey = client_secret - client.curve_serverkey = server_public - self.assertTrue(self.can_connect(server, client)) - - # Try CURVE authentication - with server configured, connection should pass - self.auth.configure_curve(domain='*', location=self.public_keys_dir) - server = self.socket(zmq.PUSH) - server.curve_publickey = server_public - server.curve_secretkey = server_secret - server.curve_server = True - client = self.socket(zmq.PULL) - client.curve_publickey = client_public - client.curve_secretkey = client_secret - client.curve_serverkey = server_public - self.assertTrue(self.can_connect(server, client)) - - # Remove authenticator and check that a normal connection works - self.auth.stop() - self.auth = None - - # Try connecting using NULL and no authentication enabled, connection should pass - server = self.socket(zmq.PUSH) - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - -def with_ioloop(method, expect_success=True): - """decorator for running tests with an IOLoop""" - def test_method(self): - r = method(self) - - loop = self.io_loop - if expect_success: - self.pullstream.on_recv(self.on_message_succeed) - else: - self.pullstream.on_recv(self.on_message_fail) - - t = loop.time() - loop.add_callback(self.attempt_connection) - loop.add_callback(self.send_msg) - if expect_success: - loop.add_timeout(t + 1, self.on_test_timeout_fail) - else: - loop.add_timeout(t + 1, self.on_test_timeout_succeed) - - loop.start() - if self.fail_msg: - self.fail(self.fail_msg) - - return r - return test_method - -def should_auth(method): - return with_ioloop(method, True) - -def should_not_auth(method): - return with_ioloop(method, False) - -class TestIOLoopAuthentication(BaseAuthTestCase): - """Test authentication running in ioloop""" - - def setUp(self): - self.fail_msg = None - self.io_loop = ioloop.IOLoop() - super(TestIOLoopAuthentication, self).setUp() - self.server = self.socket(zmq.PUSH) - self.client = self.socket(zmq.PULL) - self.pushstream = zmqstream.ZMQStream(self.server, self.io_loop) - self.pullstream = zmqstream.ZMQStream(self.client, self.io_loop) - - def make_auth(self): - return IOLoopAuthenticator(self.context, io_loop=self.io_loop) - - def tearDown(self): - if self.auth: - self.auth.stop() - self.auth = None - self.io_loop.close(all_fds=True) - super(TestIOLoopAuthentication, self).tearDown() - - def attempt_connection(self): - """Check if client can connect to server using tcp transport""" - iface = 'tcp://127.0.0.1' - port = self.server.bind_to_random_port(iface) - self.client.connect("%s:%i" % (iface, port)) - - def send_msg(self): - """Send a message from server to a client""" - msg = [b"Hello World"] - self.pushstream.send_multipart(msg) - - def on_message_succeed(self, frames): - """A message was received, as expected.""" - if frames != [b"Hello World"]: - self.fail_msg = "Unexpected message received" - self.io_loop.stop() - - def on_message_fail(self, frames): - """A message was received, unexpectedly.""" - self.fail_msg = 'Received messaged unexpectedly, security failed' - self.io_loop.stop() - - def on_test_timeout_succeed(self): - """Test timer expired, indicates test success""" - self.io_loop.stop() - - def on_test_timeout_fail(self): - """Test timer expired, indicates test failure""" - self.fail_msg = 'Test timed out' - self.io_loop.stop() - - @should_auth - def test_none(self): - """ioloop auth - NONE""" - # A default NULL connection should always succeed, and not - # go through our authentication infrastructure at all. - # no auth should be running - self.auth.stop() - self.auth = None - - @should_auth - def test_null(self): - """ioloop auth - NULL""" - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. The client connection - # should still be allowed. - self.server.zap_domain = b'global' - - @should_not_auth - def test_blacklist(self): - """ioloop auth - Blacklist""" - # Blacklist 127.0.0.1, connection should fail - self.auth.deny('127.0.0.1') - self.server.zap_domain = b'global' - - @should_auth - def test_whitelist(self): - """ioloop auth - Whitelist""" - # Whitelist 127.0.0.1, which overrides the blacklist, connection should pass" - self.auth.allow('127.0.0.1') - - self.server.setsockopt(zmq.ZAP_DOMAIN, b'global') - - @should_not_auth - def test_plain_unconfigured_server(self): - """ioloop auth - PLAIN, unconfigured server""" - self.client.plain_username = b'admin' - self.client.plain_password = b'Password' - # Try PLAIN authentication - without configuring server, connection should fail - self.server.plain_server = True - - @should_auth - def test_plain_configured_server(self): - """ioloop auth - PLAIN, configured server""" - self.client.plain_username = b'admin' - self.client.plain_password = b'Password' - # Try PLAIN authentication - with server configured, connection should pass - self.server.plain_server = True - self.auth.configure_plain(domain='*', passwords={'admin': 'Password'}) - - @should_not_auth - def test_plain_bogus_credentials(self): - """ioloop auth - PLAIN, bogus credentials""" - self.client.plain_username = b'admin' - self.client.plain_password = b'Bogus' - self.server.plain_server = True - - self.auth.configure_plain(domain='*', passwords={'admin': 'Password'}) - - @should_not_auth - def test_curve_unconfigured_server(self): - """ioloop auth - CURVE, unconfigured server""" - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - self.auth.allow('127.0.0.1') - - self.server.curve_publickey = server_public - self.server.curve_secretkey = server_secret - self.server.curve_server = True - - self.client.curve_publickey = client_public - self.client.curve_secretkey = client_secret - self.client.curve_serverkey = server_public - - @should_auth - def test_curve_allow_any(self): - """ioloop auth - CURVE, CURVE_ALLOW_ANY""" - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - self.auth.allow('127.0.0.1') - self.auth.configure_curve(domain='*', location=zmq.auth.CURVE_ALLOW_ANY) - - self.server.curve_publickey = server_public - self.server.curve_secretkey = server_secret - self.server.curve_server = True - - self.client.curve_publickey = client_public - self.client.curve_secretkey = client_secret - self.client.curve_serverkey = server_public - - @should_auth - def test_curve_configured_server(self): - """ioloop auth - CURVE, configured server""" - self.auth.allow('127.0.0.1') - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - self.auth.configure_curve(domain='*', location=self.public_keys_dir) - - self.server.curve_publickey = server_public - self.server.curve_secretkey = server_secret - self.server.curve_server = True - - self.client.curve_publickey = client_public - self.client.curve_secretkey = client_secret - self.client.curve_serverkey = server_public diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_cffi_backend.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_cffi_backend.py deleted file mode 100644 index 1f85eebf..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_cffi_backend.py +++ /dev/null @@ -1,310 +0,0 @@ -# -*- coding: utf8 -*- - -import sys -import time - -from unittest import TestCase - -from zmq.tests import BaseZMQTestCase, SkipTest - -try: - from zmq.backend.cffi import ( - zmq_version_info, - PUSH, PULL, IDENTITY, - REQ, REP, POLLIN, POLLOUT, - ) - from zmq.backend.cffi._cffi import ffi, C - have_ffi_backend = True -except ImportError: - have_ffi_backend = False - - -class TestCFFIBackend(TestCase): - - def setUp(self): - if not have_ffi_backend or not 'PyPy' in sys.version: - raise SkipTest('PyPy Tests Only') - - def test_zmq_version_info(self): - version = zmq_version_info() - - assert version[0] in range(2,11) - - def test_zmq_ctx_new_destroy(self): - ctx = C.zmq_ctx_new() - - assert ctx != ffi.NULL - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_socket_open_close(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, PUSH) - - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_setsockopt(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, PUSH) - - identity = ffi.new('char[3]', 'zmq') - ret = C.zmq_setsockopt(socket, IDENTITY, ffi.cast('void*', identity), 3) - - assert ret == 0 - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_getsockopt(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, PUSH) - - identity = ffi.new('char[]', 'zmq') - ret = C.zmq_setsockopt(socket, IDENTITY, ffi.cast('void*', identity), 3) - assert ret == 0 - - option_len = ffi.new('size_t*', 3) - option = ffi.new('char*') - ret = C.zmq_getsockopt(socket, - IDENTITY, - ffi.cast('void*', option), - option_len) - - assert ret == 0 - assert ffi.string(ffi.cast('char*', option))[0] == "z" - assert ffi.string(ffi.cast('char*', option))[1] == "m" - assert ffi.string(ffi.cast('char*', option))[2] == "q" - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_bind(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, 8) - - assert 0 == C.zmq_bind(socket, 'tcp://*:4444') - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_bind_connect(self): - ctx = C.zmq_ctx_new() - - socket1 = C.zmq_socket(ctx, PUSH) - socket2 = C.zmq_socket(ctx, PULL) - - assert 0 == C.zmq_bind(socket1, 'tcp://*:4444') - assert 0 == C.zmq_connect(socket2, 'tcp://127.0.0.1:4444') - assert ctx != ffi.NULL - assert ffi.NULL != socket1 - assert ffi.NULL != socket2 - assert 0 == C.zmq_close(socket1) - assert 0 == C.zmq_close(socket2) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_msg_init_close(self): - zmq_msg = ffi.new('zmq_msg_t*') - - assert ffi.NULL != zmq_msg - assert 0 == C.zmq_msg_init(zmq_msg) - assert 0 == C.zmq_msg_close(zmq_msg) - - def test_zmq_msg_init_size(self): - zmq_msg = ffi.new('zmq_msg_t*') - - assert ffi.NULL != zmq_msg - assert 0 == C.zmq_msg_init_size(zmq_msg, 10) - assert 0 == C.zmq_msg_close(zmq_msg) - - def test_zmq_msg_init_data(self): - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - assert 0 == C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - 5, - ffi.NULL, - ffi.NULL) - - assert ffi.NULL != zmq_msg - assert 0 == C.zmq_msg_close(zmq_msg) - - def test_zmq_msg_data(self): - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[]', 'Hello') - assert 0 == C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - 5, - ffi.NULL, - ffi.NULL) - - data = C.zmq_msg_data(zmq_msg) - - assert ffi.NULL != zmq_msg - assert ffi.string(ffi.cast("char*", data)) == 'Hello' - assert 0 == C.zmq_msg_close(zmq_msg) - - - def test_zmq_send(self): - ctx = C.zmq_ctx_new() - - sender = C.zmq_socket(ctx, REQ) - receiver = C.zmq_socket(ctx, REP) - - assert 0 == C.zmq_bind(receiver, 'tcp://*:7777') - assert 0 == C.zmq_connect(sender, 'tcp://127.0.0.1:7777') - - time.sleep(0.1) - - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - ffi.cast('size_t', 5), - ffi.NULL, - ffi.NULL) - - assert 5 == C.zmq_msg_send(zmq_msg, sender, 0) - assert 0 == C.zmq_msg_close(zmq_msg) - assert C.zmq_close(sender) == 0 - assert C.zmq_close(receiver) == 0 - assert C.zmq_ctx_destroy(ctx) == 0 - - def test_zmq_recv(self): - ctx = C.zmq_ctx_new() - - sender = C.zmq_socket(ctx, REQ) - receiver = C.zmq_socket(ctx, REP) - - assert 0 == C.zmq_bind(receiver, 'tcp://*:2222') - assert 0 == C.zmq_connect(sender, 'tcp://127.0.0.1:2222') - - time.sleep(0.1) - - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - ffi.cast('size_t', 5), - ffi.NULL, - ffi.NULL) - - zmq_msg2 = ffi.new('zmq_msg_t*') - C.zmq_msg_init(zmq_msg2) - - assert 5 == C.zmq_msg_send(zmq_msg, sender, 0) - assert 5 == C.zmq_msg_recv(zmq_msg2, receiver, 0) - assert 5 == C.zmq_msg_size(zmq_msg2) - assert b"Hello" == ffi.buffer(C.zmq_msg_data(zmq_msg2), - C.zmq_msg_size(zmq_msg2))[:] - assert C.zmq_close(sender) == 0 - assert C.zmq_close(receiver) == 0 - assert C.zmq_ctx_destroy(ctx) == 0 - - def test_zmq_poll(self): - ctx = C.zmq_ctx_new() - - sender = C.zmq_socket(ctx, REQ) - receiver = C.zmq_socket(ctx, REP) - - r1 = C.zmq_bind(receiver, 'tcp://*:3333') - r2 = C.zmq_connect(sender, 'tcp://127.0.0.1:3333') - - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - ffi.cast('size_t', 5), - ffi.NULL, - ffi.NULL) - - receiver_pollitem = ffi.new('zmq_pollitem_t*') - receiver_pollitem.socket = receiver - receiver_pollitem.fd = 0 - receiver_pollitem.events = POLLIN | POLLOUT - receiver_pollitem.revents = 0 - - ret = C.zmq_poll(ffi.NULL, 0, 0) - assert ret == 0 - - ret = C.zmq_poll(receiver_pollitem, 1, 0) - assert ret == 0 - - ret = C.zmq_msg_send(zmq_msg, sender, 0) - print(ffi.string(C.zmq_strerror(C.zmq_errno()))) - assert ret == 5 - - time.sleep(0.2) - - ret = C.zmq_poll(receiver_pollitem, 1, 0) - assert ret == 1 - - assert int(receiver_pollitem.revents) & POLLIN - assert not int(receiver_pollitem.revents) & POLLOUT - - zmq_msg2 = ffi.new('zmq_msg_t*') - C.zmq_msg_init(zmq_msg2) - - ret_recv = C.zmq_msg_recv(zmq_msg2, receiver, 0) - assert ret_recv == 5 - - assert 5 == C.zmq_msg_size(zmq_msg2) - assert b"Hello" == ffi.buffer(C.zmq_msg_data(zmq_msg2), - C.zmq_msg_size(zmq_msg2))[:] - - sender_pollitem = ffi.new('zmq_pollitem_t*') - sender_pollitem.socket = sender - sender_pollitem.fd = 0 - sender_pollitem.events = POLLIN | POLLOUT - sender_pollitem.revents = 0 - - ret = C.zmq_poll(sender_pollitem, 1, 0) - assert ret == 0 - - zmq_msg_again = ffi.new('zmq_msg_t*') - message_again = ffi.new('char[11]', 'Hello Again') - - C.zmq_msg_init_data(zmq_msg_again, - ffi.cast('void*', message_again), - ffi.cast('size_t', 11), - ffi.NULL, - ffi.NULL) - - assert 11 == C.zmq_msg_send(zmq_msg_again, receiver, 0) - - time.sleep(0.2) - - assert 0 <= C.zmq_poll(sender_pollitem, 1, 0) - assert int(sender_pollitem.revents) & POLLIN - assert 11 == C.zmq_msg_recv(zmq_msg2, sender, 0) - assert 11 == C.zmq_msg_size(zmq_msg2) - assert b"Hello Again" == ffi.buffer(C.zmq_msg_data(zmq_msg2), - int(C.zmq_msg_size(zmq_msg2)))[:] - assert 0 == C.zmq_close(sender) - assert 0 == C.zmq_close(receiver) - assert 0 == C.zmq_ctx_destroy(ctx) - assert 0 == C.zmq_msg_close(zmq_msg) - assert 0 == C.zmq_msg_close(zmq_msg2) - assert 0 == C.zmq_msg_close(zmq_msg_again) - - def test_zmq_stopwatch_functions(self): - stopwatch = C.zmq_stopwatch_start() - ret = C.zmq_stopwatch_stop(stopwatch) - - assert ffi.NULL != stopwatch - assert 0 < int(ret) - - def test_zmq_sleep(self): - try: - C.zmq_sleep(1) - except Exception as e: - raise AssertionError("Error executing zmq_sleep(int)") - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_constants.py deleted file mode 100644 index d32b2b48..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_constants.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import json -from unittest import TestCase - -import zmq - -from zmq.utils import constant_names -from zmq.sugar import constants as sugar_constants -from zmq.backend import constants as backend_constants - -all_set = set(constant_names.all_names) - -class TestConstants(TestCase): - - def _duplicate_test(self, namelist, listname): - """test that a given list has no duplicates""" - dupes = {} - for name in set(namelist): - cnt = namelist.count(name) - if cnt > 1: - dupes[name] = cnt - if dupes: - self.fail("The following names occur more than once in %s: %s" % (listname, json.dumps(dupes, indent=2))) - - def test_duplicate_all(self): - return self._duplicate_test(constant_names.all_names, "all_names") - - def _change_key(self, change, version): - """return changed-in key""" - return "%s-in %d.%d.%d" % tuple([change] + list(version)) - - def test_duplicate_changed(self): - all_changed = [] - for change in ("new", "removed"): - d = getattr(constant_names, change + "_in") - for version, namelist in d.items(): - all_changed.extend(namelist) - self._duplicate_test(namelist, self._change_key(change, version)) - - self._duplicate_test(all_changed, "all-changed") - - def test_changed_in_all(self): - missing = {} - for change in ("new", "removed"): - d = getattr(constant_names, change + "_in") - for version, namelist in d.items(): - key = self._change_key(change, version) - for name in namelist: - if name not in all_set: - if key not in missing: - missing[key] = [] - missing[key].append(name) - - if missing: - self.fail( - "The following names are missing in `all_names`: %s" % json.dumps(missing, indent=2) - ) - - def test_no_negative_constants(self): - for name in sugar_constants.__all__: - self.assertNotEqual(getattr(zmq, name), sugar_constants._UNDEFINED) - - def test_undefined_constants(self): - all_aliases = [] - for alias_group in sugar_constants.aliases: - all_aliases.extend(alias_group) - - for name in all_set.difference(all_aliases): - raw = getattr(backend_constants, name) - if raw == sugar_constants._UNDEFINED: - self.assertRaises(AttributeError, getattr, zmq, name) - else: - self.assertEqual(getattr(zmq, name), raw) - - def test_new(self): - zmq_version = zmq.zmq_version_info() - for version, new_names in constant_names.new_in.items(): - should_have = zmq_version >= version - for name in new_names: - try: - value = getattr(zmq, name) - except AttributeError: - if should_have: - self.fail("AttributeError: zmq.%s" % name) - else: - if not should_have: - self.fail("Shouldn't have: zmq.%s=%s" % (name, value)) - - def test_removed(self): - zmq_version = zmq.zmq_version_info() - for version, new_names in constant_names.removed_in.items(): - should_have = zmq_version < version - for name in new_names: - try: - value = getattr(zmq, name) - except AttributeError: - if should_have: - self.fail("AttributeError: zmq.%s" % name) - else: - if not should_have: - self.fail("Shouldn't have: zmq.%s=%s" % (name, value)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_context.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_context.py deleted file mode 100644 index e3280778..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_context.py +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import gc -import sys -import time -from threading import Thread, Event - -import zmq -from zmq.tests import ( - BaseZMQTestCase, have_gevent, GreenTest, skip_green, PYPY, SkipTest, -) - - -class TestContext(BaseZMQTestCase): - - def test_init(self): - c1 = self.Context() - self.assert_(isinstance(c1, self.Context)) - del c1 - c2 = self.Context() - self.assert_(isinstance(c2, self.Context)) - del c2 - c3 = self.Context() - self.assert_(isinstance(c3, self.Context)) - del c3 - - def test_dir(self): - ctx = self.Context() - self.assertTrue('socket' in dir(ctx)) - if zmq.zmq_version_info() > (3,): - self.assertTrue('IO_THREADS' in dir(ctx)) - ctx.term() - - def test_term(self): - c = self.Context() - c.term() - self.assert_(c.closed) - - def test_context_manager(self): - with self.Context() as c: - pass - self.assert_(c.closed) - - def test_fail_init(self): - self.assertRaisesErrno(zmq.EINVAL, self.Context, -1) - - def test_term_hang(self): - rep,req = self.create_bound_pair(zmq.ROUTER, zmq.DEALER) - req.setsockopt(zmq.LINGER, 0) - req.send(b'hello', copy=False) - req.close() - rep.close() - self.context.term() - - def test_instance(self): - ctx = self.Context.instance() - c2 = self.Context.instance(io_threads=2) - self.assertTrue(c2 is ctx) - c2.term() - c3 = self.Context.instance() - c4 = self.Context.instance() - self.assertFalse(c3 is c2) - self.assertFalse(c3.closed) - self.assertTrue(c3 is c4) - - def test_many_sockets(self): - """opening and closing many sockets shouldn't cause problems""" - ctx = self.Context() - for i in range(16): - sockets = [ ctx.socket(zmq.REP) for i in range(65) ] - [ s.close() for s in sockets ] - # give the reaper a chance - time.sleep(1e-2) - ctx.term() - - def test_sockopts(self): - """setting socket options with ctx attributes""" - ctx = self.Context() - ctx.linger = 5 - self.assertEqual(ctx.linger, 5) - s = ctx.socket(zmq.REQ) - self.assertEqual(s.linger, 5) - self.assertEqual(s.getsockopt(zmq.LINGER), 5) - s.close() - # check that subscribe doesn't get set on sockets that don't subscribe: - ctx.subscribe = b'' - s = ctx.socket(zmq.REQ) - s.close() - - ctx.term() - - - def test_destroy(self): - """Context.destroy should close sockets""" - ctx = self.Context() - sockets = [ ctx.socket(zmq.REP) for i in range(65) ] - - # close half of the sockets - [ s.close() for s in sockets[::2] ] - - ctx.destroy() - # reaper is not instantaneous - time.sleep(1e-2) - for s in sockets: - self.assertTrue(s.closed) - - def test_destroy_linger(self): - """Context.destroy should set linger on closing sockets""" - req,rep = self.create_bound_pair(zmq.REQ, zmq.REP) - req.send(b'hi') - time.sleep(1e-2) - self.context.destroy(linger=0) - # reaper is not instantaneous - time.sleep(1e-2) - for s in (req,rep): - self.assertTrue(s.closed) - - def test_term_noclose(self): - """Context.term won't close sockets""" - ctx = self.Context() - s = ctx.socket(zmq.REQ) - self.assertFalse(s.closed) - t = Thread(target=ctx.term) - t.start() - t.join(timeout=0.1) - self.assertTrue(t.is_alive(), "Context should be waiting") - s.close() - t.join(timeout=0.1) - self.assertFalse(t.is_alive(), "Context should have closed") - - def test_gc(self): - """test close&term by garbage collection alone""" - if PYPY: - raise SkipTest("GC doesn't work ") - - # test credit @dln (GH #137): - def gcf(): - def inner(): - ctx = self.Context() - s = ctx.socket(zmq.PUSH) - inner() - gc.collect() - t = Thread(target=gcf) - t.start() - t.join(timeout=1) - self.assertFalse(t.is_alive(), "Garbage collection should have cleaned up context") - - def test_cyclic_destroy(self): - """ctx.destroy should succeed when cyclic ref prevents gc""" - # test credit @dln (GH #137): - class CyclicReference(object): - def __init__(self, parent=None): - self.parent = parent - - def crash(self, sock): - self.sock = sock - self.child = CyclicReference(self) - - def crash_zmq(): - ctx = self.Context() - sock = ctx.socket(zmq.PULL) - c = CyclicReference() - c.crash(sock) - ctx.destroy() - - crash_zmq() - - def test_term_thread(self): - """ctx.term should not crash active threads (#139)""" - ctx = self.Context() - evt = Event() - evt.clear() - - def block(): - s = ctx.socket(zmq.REP) - s.bind_to_random_port('tcp://127.0.0.1') - evt.set() - try: - s.recv() - except zmq.ZMQError as e: - self.assertEqual(e.errno, zmq.ETERM) - return - finally: - s.close() - self.fail("recv should have been interrupted with ETERM") - t = Thread(target=block) - t.start() - - evt.wait(1) - self.assertTrue(evt.is_set(), "sync event never fired") - time.sleep(0.01) - ctx.term() - t.join(timeout=1) - self.assertFalse(t.is_alive(), "term should have interrupted s.recv()") - - def test_destroy_no_sockets(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - s.bind_to_random_port('tcp://127.0.0.1') - s.close() - ctx.destroy() - assert s.closed - assert ctx.closed - - def test_ctx_opts(self): - if zmq.zmq_version_info() < (3,): - raise SkipTest("context options require libzmq 3") - ctx = self.Context() - ctx.set(zmq.MAX_SOCKETS, 2) - self.assertEqual(ctx.get(zmq.MAX_SOCKETS), 2) - ctx.max_sockets = 100 - self.assertEqual(ctx.max_sockets, 100) - self.assertEqual(ctx.get(zmq.MAX_SOCKETS), 100) - - def test_shadow(self): - ctx = self.Context() - ctx2 = self.Context.shadow(ctx.underlying) - self.assertEqual(ctx.underlying, ctx2.underlying) - s = ctx.socket(zmq.PUB) - s.close() - del ctx2 - self.assertFalse(ctx.closed) - s = ctx.socket(zmq.PUB) - ctx2 = self.Context.shadow(ctx.underlying) - s2 = ctx2.socket(zmq.PUB) - s.close() - s2.close() - ctx.term() - self.assertRaisesErrno(zmq.EFAULT, ctx2.socket, zmq.PUB) - del ctx2 - - def test_shadow_pyczmq(self): - try: - from pyczmq import zctx, zsocket, zstr - except Exception: - raise SkipTest("Requires pyczmq") - - ctx = zctx.new() - a = zsocket.new(ctx, zmq.PUSH) - zsocket.bind(a, "inproc://a") - ctx2 = self.Context.shadow_pyczmq(ctx) - b = ctx2.socket(zmq.PULL) - b.connect("inproc://a") - zstr.send(a, b'hi') - rcvd = self.recv(b) - self.assertEqual(rcvd, b'hi') - b.close() - - -if False: # disable green context tests - class TestContextGreen(GreenTest, TestContext): - """gevent subclass of context tests""" - # skip tests that use real threads: - test_gc = GreenTest.skip_green - test_term_thread = GreenTest.skip_green - test_destroy_linger = GreenTest.skip_green diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_device.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_device.py deleted file mode 100644 index f8305074..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_device.py +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time - -import zmq -from zmq import devices -from zmq.tests import BaseZMQTestCase, SkipTest, have_gevent, GreenTest, PYPY -from zmq.utils.strtypes import (bytes,unicode,basestring) - -if PYPY: - # cleanup of shared Context doesn't work on PyPy - devices.Device.context_factory = zmq.Context - -class TestDevice(BaseZMQTestCase): - - def test_device_types(self): - for devtype in (zmq.STREAMER, zmq.FORWARDER, zmq.QUEUE): - dev = devices.Device(devtype, zmq.PAIR, zmq.PAIR) - self.assertEqual(dev.device_type, devtype) - del dev - - def test_device_attributes(self): - dev = devices.Device(zmq.QUEUE, zmq.SUB, zmq.PUB) - self.assertEqual(dev.in_type, zmq.SUB) - self.assertEqual(dev.out_type, zmq.PUB) - self.assertEqual(dev.device_type, zmq.QUEUE) - self.assertEqual(dev.daemon, True) - del dev - - def test_tsdevice_attributes(self): - dev = devices.Device(zmq.QUEUE, zmq.SUB, zmq.PUB) - self.assertEqual(dev.in_type, zmq.SUB) - self.assertEqual(dev.out_type, zmq.PUB) - self.assertEqual(dev.device_type, zmq.QUEUE) - self.assertEqual(dev.daemon, True) - del dev - - - def test_single_socket_forwarder_connect(self): - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - req = self.context.socket(zmq.REQ) - port = req.bind_to_random_port('tcp://127.0.0.1') - dev.connect_in('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - req = self.context.socket(zmq.REQ) - port = req.bind_to_random_port('tcp://127.0.0.1') - dev.connect_out('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello again' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - - def test_single_socket_forwarder_bind(self): - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - # select random port: - binder = self.context.socket(zmq.REQ) - port = binder.bind_to_random_port('tcp://127.0.0.1') - binder.close() - time.sleep(0.1) - req = self.context.socket(zmq.REQ) - req.connect('tcp://127.0.0.1:%i'%port) - dev.bind_in('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - # select random port: - binder = self.context.socket(zmq.REQ) - port = binder.bind_to_random_port('tcp://127.0.0.1') - binder.close() - time.sleep(0.1) - req = self.context.socket(zmq.REQ) - req.connect('tcp://127.0.0.1:%i'%port) - dev.bind_in('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello again' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - - def test_proxy(self): - if zmq.zmq_version_info() < (3,2): - raise SkipTest("Proxies only in libzmq >= 3") - dev = devices.ThreadProxy(zmq.PULL, zmq.PUSH, zmq.PUSH) - binder = self.context.socket(zmq.REQ) - iface = 'tcp://127.0.0.1' - port = binder.bind_to_random_port(iface) - port2 = binder.bind_to_random_port(iface) - port3 = binder.bind_to_random_port(iface) - binder.close() - time.sleep(0.1) - dev.bind_in("%s:%i" % (iface, port)) - dev.bind_out("%s:%i" % (iface, port2)) - dev.bind_mon("%s:%i" % (iface, port3)) - dev.start() - time.sleep(0.25) - msg = b'hello' - push = self.context.socket(zmq.PUSH) - push.connect("%s:%i" % (iface, port)) - pull = self.context.socket(zmq.PULL) - pull.connect("%s:%i" % (iface, port2)) - mon = self.context.socket(zmq.PULL) - mon.connect("%s:%i" % (iface, port3)) - push.send(msg) - self.sockets.extend([push, pull, mon]) - self.assertEqual(msg, self.recv(pull)) - self.assertEqual(msg, self.recv(mon)) - -if have_gevent: - import gevent - import zmq.green - - class TestDeviceGreen(GreenTest, BaseZMQTestCase): - - def test_green_device(self): - rep = self.context.socket(zmq.REP) - req = self.context.socket(zmq.REQ) - self.sockets.extend([req, rep]) - port = rep.bind_to_random_port('tcp://127.0.0.1') - g = gevent.spawn(zmq.green.device, zmq.QUEUE, rep, rep) - req.connect('tcp://127.0.0.1:%i' % port) - req.send(b'hi') - timeout = gevent.Timeout(3) - timeout.start() - receiver = gevent.spawn(req.recv) - self.assertEqual(receiver.get(2), b'hi') - timeout.cancel() - g.kill(block=True) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_error.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_error.py deleted file mode 100644 index a2eee14a..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_error.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys -import time - -import zmq -from zmq import ZMQError, strerror, Again, ContextTerminated -from zmq.tests import BaseZMQTestCase - -if sys.version_info[0] >= 3: - long = int - -class TestZMQError(BaseZMQTestCase): - - def test_strerror(self): - """test that strerror gets the right type.""" - for i in range(10): - e = strerror(i) - self.assertTrue(isinstance(e, str)) - - def test_zmqerror(self): - for errno in range(10): - e = ZMQError(errno) - self.assertEqual(e.errno, errno) - self.assertEqual(str(e), strerror(errno)) - - def test_again(self): - s = self.context.socket(zmq.REP) - self.assertRaises(Again, s.recv, zmq.NOBLOCK) - self.assertRaisesErrno(zmq.EAGAIN, s.recv, zmq.NOBLOCK) - s.close() - - def atest_ctxterm(self): - s = self.context.socket(zmq.REP) - t = Thread(target=self.context.term) - t.start() - self.assertRaises(ContextTerminated, s.recv, zmq.NOBLOCK) - self.assertRaisesErrno(zmq.TERM, s.recv, zmq.NOBLOCK) - s.close() - t.join() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_etc.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_etc.py deleted file mode 100644 index ad224064..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_etc.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) PyZMQ Developers. -# Distributed under the terms of the Modified BSD License. - -import sys - -import zmq - -from . import skip_if - -@skip_if(zmq.zmq_version_info() < (4,1), "libzmq < 4.1") -def test_has(): - assert not zmq.has('something weird') - has_ipc = zmq.has('ipc') - not_windows = not sys.platform.startswith('win') - assert has_ipc == not_windows diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_imports.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_imports.py deleted file mode 100644 index c0ddfaac..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_imports.py +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys -from unittest import TestCase - -class TestImports(TestCase): - """Test Imports - the quickest test to ensure that we haven't - introduced version-incompatible syntax errors.""" - - def test_toplevel(self): - """test toplevel import""" - import zmq - - def test_core(self): - """test core imports""" - from zmq import Context - from zmq import Socket - from zmq import Poller - from zmq import Frame - from zmq import constants - from zmq import device, proxy - from zmq import Stopwatch - from zmq import ( - zmq_version, - zmq_version_info, - pyzmq_version, - pyzmq_version_info, - ) - - def test_devices(self): - """test device imports""" - import zmq.devices - from zmq.devices import basedevice - from zmq.devices import monitoredqueue - from zmq.devices import monitoredqueuedevice - - def test_log(self): - """test log imports""" - import zmq.log - from zmq.log import handlers - - def test_eventloop(self): - """test eventloop imports""" - import zmq.eventloop - from zmq.eventloop import ioloop - from zmq.eventloop import zmqstream - from zmq.eventloop.minitornado.platform import auto - from zmq.eventloop.minitornado import ioloop - - def test_utils(self): - """test util imports""" - import zmq.utils - from zmq.utils import strtypes - from zmq.utils import jsonapi - - def test_ssh(self): - """test ssh imports""" - from zmq.ssh import tunnel - - - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_ioloop.py deleted file mode 100644 index 2a8b1153..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_ioloop.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time -import os -import threading - -import zmq -from zmq.tests import BaseZMQTestCase -from zmq.eventloop import ioloop -from zmq.eventloop.minitornado.ioloop import _Timeout -try: - from tornado.ioloop import PollIOLoop, IOLoop as BaseIOLoop -except ImportError: - from zmq.eventloop.minitornado.ioloop import IOLoop as BaseIOLoop - - -def printer(): - os.system("say hello") - raise Exception - print (time.time()) - - -class Delay(threading.Thread): - def __init__(self, f, delay=1): - self.f=f - self.delay=delay - self.aborted=False - self.cond=threading.Condition() - super(Delay, self).__init__() - - def run(self): - self.cond.acquire() - self.cond.wait(self.delay) - self.cond.release() - if not self.aborted: - self.f() - - def abort(self): - self.aborted=True - self.cond.acquire() - self.cond.notify() - self.cond.release() - - -class TestIOLoop(BaseZMQTestCase): - - def test_simple(self): - """simple IOLoop creation test""" - loop = ioloop.IOLoop() - dc = ioloop.PeriodicCallback(loop.stop, 200, loop) - pc = ioloop.PeriodicCallback(lambda : None, 10, loop) - pc.start() - dc.start() - t = Delay(loop.stop,1) - t.start() - loop.start() - if t.isAlive(): - t.abort() - else: - self.fail("IOLoop failed to exit") - - def test_timeout_compare(self): - """test timeout comparisons""" - loop = ioloop.IOLoop() - t = _Timeout(1, 2, loop) - t2 = _Timeout(1, 3, loop) - self.assertEqual(t < t2, id(t) < id(t2)) - t2 = _Timeout(2,1, loop) - self.assertTrue(t < t2) - - def test_poller_events(self): - """Tornado poller implementation maps events correctly""" - req,rep = self.create_bound_pair(zmq.REQ, zmq.REP) - poller = ioloop.ZMQPoller() - poller.register(req, ioloop.IOLoop.READ) - poller.register(rep, ioloop.IOLoop.READ) - events = dict(poller.poll(0)) - self.assertEqual(events.get(rep), None) - self.assertEqual(events.get(req), None) - - poller.register(req, ioloop.IOLoop.WRITE) - poller.register(rep, ioloop.IOLoop.WRITE) - events = dict(poller.poll(1)) - self.assertEqual(events.get(req), ioloop.IOLoop.WRITE) - self.assertEqual(events.get(rep), None) - - poller.register(rep, ioloop.IOLoop.READ) - req.send(b'hi') - events = dict(poller.poll(1)) - self.assertEqual(events.get(rep), ioloop.IOLoop.READ) - self.assertEqual(events.get(req), None) - - def test_instance(self): - """Test IOLoop.instance returns the right object""" - loop = ioloop.IOLoop.instance() - self.assertEqual(loop.__class__, ioloop.IOLoop) - loop = BaseIOLoop.instance() - self.assertEqual(loop.__class__, ioloop.IOLoop) - - def test_close_all(self): - """Test close(all_fds=True)""" - loop = ioloop.IOLoop.instance() - req,rep = self.create_bound_pair(zmq.REQ, zmq.REP) - loop.add_handler(req, lambda msg: msg, ioloop.IOLoop.READ) - loop.add_handler(rep, lambda msg: msg, ioloop.IOLoop.READ) - self.assertEqual(req.closed, False) - self.assertEqual(rep.closed, False) - loop.close(all_fds=True) - self.assertEqual(req.closed, True) - self.assertEqual(rep.closed, True) - - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_log.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_log.py deleted file mode 100644 index 9206f095..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_log.py +++ /dev/null @@ -1,116 +0,0 @@ -# encoding: utf-8 - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import logging -import time -from unittest import TestCase - -import zmq -from zmq.log import handlers -from zmq.utils.strtypes import b, u -from zmq.tests import BaseZMQTestCase - - -class TestPubLog(BaseZMQTestCase): - - iface = 'inproc://zmqlog' - topic= 'zmq' - - @property - def logger(self): - # print dir(self) - logger = logging.getLogger('zmqtest') - logger.setLevel(logging.DEBUG) - return logger - - def connect_handler(self, topic=None): - topic = self.topic if topic is None else topic - logger = self.logger - pub,sub = self.create_bound_pair(zmq.PUB, zmq.SUB) - handler = handlers.PUBHandler(pub) - handler.setLevel(logging.DEBUG) - handler.root_topic = topic - logger.addHandler(handler) - sub.setsockopt(zmq.SUBSCRIBE, b(topic)) - time.sleep(0.1) - return logger, handler, sub - - def test_init_iface(self): - logger = self.logger - ctx = self.context - handler = handlers.PUBHandler(self.iface) - self.assertFalse(handler.ctx is ctx) - self.sockets.append(handler.socket) - # handler.ctx.term() - handler = handlers.PUBHandler(self.iface, self.context) - self.sockets.append(handler.socket) - self.assertTrue(handler.ctx is ctx) - handler.setLevel(logging.DEBUG) - handler.root_topic = self.topic - logger.addHandler(handler) - sub = ctx.socket(zmq.SUB) - self.sockets.append(sub) - sub.setsockopt(zmq.SUBSCRIBE, b(self.topic)) - sub.connect(self.iface) - import time; time.sleep(0.25) - msg1 = 'message' - logger.info(msg1) - - (topic, msg2) = sub.recv_multipart() - self.assertEqual(topic, b'zmq.INFO') - self.assertEqual(msg2, b(msg1)+b'\n') - logger.removeHandler(handler) - - def test_init_socket(self): - pub,sub = self.create_bound_pair(zmq.PUB, zmq.SUB) - logger = self.logger - handler = handlers.PUBHandler(pub) - handler.setLevel(logging.DEBUG) - handler.root_topic = self.topic - logger.addHandler(handler) - - self.assertTrue(handler.socket is pub) - self.assertTrue(handler.ctx is pub.context) - self.assertTrue(handler.ctx is self.context) - sub.setsockopt(zmq.SUBSCRIBE, b(self.topic)) - import time; time.sleep(0.1) - msg1 = 'message' - logger.info(msg1) - - (topic, msg2) = sub.recv_multipart() - self.assertEqual(topic, b'zmq.INFO') - self.assertEqual(msg2, b(msg1)+b'\n') - logger.removeHandler(handler) - - def test_root_topic(self): - logger, handler, sub = self.connect_handler() - handler.socket.bind(self.iface) - sub2 = sub.context.socket(zmq.SUB) - self.sockets.append(sub2) - sub2.connect(self.iface) - sub2.setsockopt(zmq.SUBSCRIBE, b'') - handler.root_topic = b'twoonly' - msg1 = 'ignored' - logger.info(msg1) - self.assertRaisesErrno(zmq.EAGAIN, sub.recv, zmq.NOBLOCK) - topic,msg2 = sub2.recv_multipart() - self.assertEqual(topic, b'twoonly.INFO') - self.assertEqual(msg2, b(msg1)+b'\n') - - logger.removeHandler(handler) - - def test_unicode_message(self): - logger, handler, sub = self.connect_handler() - base_topic = b(self.topic + '.INFO') - for msg, expected in [ - (u('hello'), [base_topic, b('hello\n')]), - (u('héllo'), [base_topic, b('héllo\n')]), - (u('tøpic::héllo'), [base_topic + b('.tøpic'), b('héllo\n')]), - ]: - logger.info(msg) - received = sub.recv_multipart() - self.assertEqual(received, expected) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_message.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_message.py deleted file mode 100644 index d8770bdf..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_message.py +++ /dev/null @@ -1,362 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import copy -import sys -try: - from sys import getrefcount as grc -except ImportError: - grc = None - -import time -from pprint import pprint -from unittest import TestCase - -import zmq -from zmq.tests import BaseZMQTestCase, SkipTest, skip_pypy, PYPY -from zmq.utils.strtypes import unicode, bytes, b, u - - -# some useful constants: - -x = b'x' - -try: - view = memoryview -except NameError: - view = buffer - -if grc: - rc0 = grc(x) - v = view(x) - view_rc = grc(x) - rc0 - -def await_gc(obj, rc): - """wait for refcount on an object to drop to an expected value - - Necessary because of the zero-copy gc thread, - which can take some time to receive its DECREF message. - """ - for i in range(50): - # rc + 2 because of the refs in this function - if grc(obj) <= rc + 2: - return - time.sleep(0.05) - -class TestFrame(BaseZMQTestCase): - - @skip_pypy - def test_above_30(self): - """Message above 30 bytes are never copied by 0MQ.""" - for i in range(5, 16): # 32, 64,..., 65536 - s = (2**i)*x - self.assertEqual(grc(s), 2) - m = zmq.Frame(s) - self.assertEqual(grc(s), 4) - del m - await_gc(s, 2) - self.assertEqual(grc(s), 2) - del s - - def test_str(self): - """Test the str representations of the Frames.""" - for i in range(16): - s = (2**i)*x - m = zmq.Frame(s) - m_str = str(m) - m_str_b = b(m_str) # py3compat - self.assertEqual(s, m_str_b) - - def test_bytes(self): - """Test the Frame.bytes property.""" - for i in range(1,16): - s = (2**i)*x - m = zmq.Frame(s) - b = m.bytes - self.assertEqual(s, m.bytes) - if not PYPY: - # check that it copies - self.assert_(b is not s) - # check that it copies only once - self.assert_(b is m.bytes) - - def test_unicode(self): - """Test the unicode representations of the Frames.""" - s = u('asdf') - self.assertRaises(TypeError, zmq.Frame, s) - for i in range(16): - s = (2**i)*u('§') - m = zmq.Frame(s.encode('utf8')) - self.assertEqual(s, unicode(m.bytes,'utf8')) - - def test_len(self): - """Test the len of the Frames.""" - for i in range(16): - s = (2**i)*x - m = zmq.Frame(s) - self.assertEqual(len(s), len(m)) - - @skip_pypy - def test_lifecycle1(self): - """Run through a ref counting cycle with a copy.""" - for i in range(5, 16): # 32, 64,..., 65536 - s = (2**i)*x - rc = 2 - self.assertEqual(grc(s), rc) - m = zmq.Frame(s) - rc += 2 - self.assertEqual(grc(s), rc) - m2 = copy.copy(m) - rc += 1 - self.assertEqual(grc(s), rc) - buf = m2.buffer - - rc += view_rc - self.assertEqual(grc(s), rc) - - self.assertEqual(s, b(str(m))) - self.assertEqual(s, bytes(m2)) - self.assertEqual(s, m.bytes) - # self.assert_(s is str(m)) - # self.assert_(s is str(m2)) - del m2 - rc -= 1 - self.assertEqual(grc(s), rc) - rc -= view_rc - del buf - self.assertEqual(grc(s), rc) - del m - rc -= 2 - await_gc(s, rc) - self.assertEqual(grc(s), rc) - self.assertEqual(rc, 2) - del s - - @skip_pypy - def test_lifecycle2(self): - """Run through a different ref counting cycle with a copy.""" - for i in range(5, 16): # 32, 64,..., 65536 - s = (2**i)*x - rc = 2 - self.assertEqual(grc(s), rc) - m = zmq.Frame(s) - rc += 2 - self.assertEqual(grc(s), rc) - m2 = copy.copy(m) - rc += 1 - self.assertEqual(grc(s), rc) - buf = m.buffer - rc += view_rc - self.assertEqual(grc(s), rc) - self.assertEqual(s, b(str(m))) - self.assertEqual(s, bytes(m2)) - self.assertEqual(s, m2.bytes) - self.assertEqual(s, m.bytes) - # self.assert_(s is str(m)) - # self.assert_(s is str(m2)) - del buf - self.assertEqual(grc(s), rc) - del m - # m.buffer is kept until m is del'd - rc -= view_rc - rc -= 1 - self.assertEqual(grc(s), rc) - del m2 - rc -= 2 - await_gc(s, rc) - self.assertEqual(grc(s), rc) - self.assertEqual(rc, 2) - del s - - @skip_pypy - def test_tracker(self): - m = zmq.Frame(b'asdf', track=True) - self.assertFalse(m.tracker.done) - pm = zmq.MessageTracker(m) - self.assertFalse(pm.done) - del m - for i in range(10): - if pm.done: - break - time.sleep(0.1) - self.assertTrue(pm.done) - - def test_no_tracker(self): - m = zmq.Frame(b'asdf', track=False) - self.assertEqual(m.tracker, None) - m2 = copy.copy(m) - self.assertEqual(m2.tracker, None) - self.assertRaises(ValueError, zmq.MessageTracker, m) - - @skip_pypy - def test_multi_tracker(self): - m = zmq.Frame(b'asdf', track=True) - m2 = zmq.Frame(b'whoda', track=True) - mt = zmq.MessageTracker(m,m2) - self.assertFalse(m.tracker.done) - self.assertFalse(mt.done) - self.assertRaises(zmq.NotDone, mt.wait, 0.1) - del m - time.sleep(0.1) - self.assertRaises(zmq.NotDone, mt.wait, 0.1) - self.assertFalse(mt.done) - del m2 - self.assertTrue(mt.wait() is None) - self.assertTrue(mt.done) - - - def test_buffer_in(self): - """test using a buffer as input""" - ins = b("§§¶•ªº˜µ¬˚…∆˙åß∂©œ∑´†≈ç√") - m = zmq.Frame(view(ins)) - - def test_bad_buffer_in(self): - """test using a bad object""" - self.assertRaises(TypeError, zmq.Frame, 5) - self.assertRaises(TypeError, zmq.Frame, object()) - - def test_buffer_out(self): - """receiving buffered output""" - ins = b("§§¶•ªº˜µ¬˚…∆˙åß∂©œ∑´†≈ç√") - m = zmq.Frame(ins) - outb = m.buffer - self.assertTrue(isinstance(outb, view)) - self.assert_(outb is m.buffer) - self.assert_(m.buffer is m.buffer) - - def test_multisend(self): - """ensure that a message remains intact after multiple sends""" - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - s = b"message" - m = zmq.Frame(s) - self.assertEqual(s, m.bytes) - - a.send(m, copy=False) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - a.send(m, copy=False) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - a.send(m, copy=True) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - a.send(m, copy=True) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - for i in range(4): - r = b.recv() - self.assertEqual(s,r) - self.assertEqual(s, m.bytes) - - def test_buffer_numpy(self): - """test non-copying numpy array messages""" - try: - import numpy - except ImportError: - raise SkipTest("numpy required") - rand = numpy.random.randint - shapes = [ rand(2,16) for i in range(5) ] - for i in range(1,len(shapes)+1): - shape = shapes[:i] - A = numpy.random.random(shape) - m = zmq.Frame(A) - if view.__name__ == 'buffer': - self.assertEqual(A.data, m.buffer) - B = numpy.frombuffer(m.buffer,dtype=A.dtype).reshape(A.shape) - else: - self.assertEqual(memoryview(A), m.buffer) - B = numpy.array(m.buffer,dtype=A.dtype).reshape(A.shape) - self.assertEqual((A==B).all(), True) - - def test_memoryview(self): - """test messages from memoryview""" - major,minor = sys.version_info[:2] - if not (major >= 3 or (major == 2 and minor >= 7)): - raise SkipTest("memoryviews only in python >= 2.7") - - s = b'carrotjuice' - v = memoryview(s) - m = zmq.Frame(s) - buf = m.buffer - s2 = buf.tobytes() - self.assertEqual(s2,s) - self.assertEqual(m.bytes,s) - - def test_noncopying_recv(self): - """check for clobbering message buffers""" - null = b'\0'*64 - sa,sb = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - for i in range(32): - # try a few times - sb.send(null, copy=False) - m = sa.recv(copy=False) - mb = m.bytes - # buf = view(m) - buf = m.buffer - del m - for i in range(5): - ff=b'\xff'*(40 + i*10) - sb.send(ff, copy=False) - m2 = sa.recv(copy=False) - if view.__name__ == 'buffer': - b = bytes(buf) - else: - b = buf.tobytes() - self.assertEqual(b, null) - self.assertEqual(mb, null) - self.assertEqual(m2.bytes, ff) - - @skip_pypy - def test_buffer_numpy(self): - """test non-copying numpy array messages""" - try: - import numpy - except ImportError: - raise SkipTest("requires numpy") - if sys.version_info < (2,7): - raise SkipTest("requires new-style buffer interface (py >= 2.7)") - rand = numpy.random.randint - shapes = [ rand(2,5) for i in range(5) ] - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - dtypes = [int, float, '>i4', 'B'] - for i in range(1,len(shapes)+1): - shape = shapes[:i] - for dt in dtypes: - A = numpy.empty(shape, dtype=dt) - while numpy.isnan(A).any(): - # don't let nan sneak in - A = numpy.ndarray(shape, dtype=dt) - a.send(A, copy=False) - msg = b.recv(copy=False) - - B = numpy.frombuffer(msg, A.dtype).reshape(A.shape) - self.assertEqual(A.shape, B.shape) - self.assertTrue((A==B).all()) - A = numpy.empty(shape, dtype=[('a', int), ('b', float), ('c', 'a32')]) - A['a'] = 1024 - A['b'] = 1e9 - A['c'] = 'hello there' - a.send(A, copy=False) - msg = b.recv(copy=False) - - B = numpy.frombuffer(msg, A.dtype).reshape(A.shape) - self.assertEqual(A.shape, B.shape) - self.assertTrue((A==B).all()) - - def test_frame_more(self): - """test Frame.more attribute""" - frame = zmq.Frame(b"hello") - self.assertFalse(frame.more) - sa,sb = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - sa.send_multipart([b'hi', b'there']) - frame = self.recv(sb, copy=False) - self.assertTrue(frame.more) - if zmq.zmq_version_info()[0] >= 3 and not PYPY: - self.assertTrue(frame.get(zmq.MORE)) - frame = self.recv(sb, copy=False) - self.assertFalse(frame.more) - if zmq.zmq_version_info()[0] >= 3 and not PYPY: - self.assertFalse(frame.get(zmq.MORE)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monitor.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monitor.py deleted file mode 100644 index 4f035388..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monitor.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import sys -import time -import struct - -from unittest import TestCase - -import zmq -from zmq.tests import BaseZMQTestCase, skip_if, skip_pypy -from zmq.utils.monitor import recv_monitor_message - -skip_lt_4 = skip_if(zmq.zmq_version_info() < (4,), "requires zmq >= 4") - -class TestSocketMonitor(BaseZMQTestCase): - - @skip_lt_4 - def test_monitor(self): - """Test monitoring interface for sockets.""" - s_rep = self.context.socket(zmq.REP) - s_req = self.context.socket(zmq.REQ) - self.sockets.extend([s_rep, s_req]) - s_req.bind("tcp://127.0.0.1:6666") - # try monitoring the REP socket - - s_rep.monitor("inproc://monitor.rep", zmq.EVENT_ALL) - # create listening socket for monitor - s_event = self.context.socket(zmq.PAIR) - self.sockets.append(s_event) - s_event.connect("inproc://monitor.rep") - s_event.linger = 0 - # test receive event for connect event - s_rep.connect("tcp://127.0.0.1:6666") - m = recv_monitor_message(s_event) - if m['event'] == zmq.EVENT_CONNECT_DELAYED: - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6666") - # test receive event for connected event - m = recv_monitor_message(s_event) - self.assertEqual(m['event'], zmq.EVENT_CONNECTED) - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6666") - - # test monitor can be disabled. - s_rep.disable_monitor() - m = recv_monitor_message(s_event) - self.assertEqual(m['event'], zmq.EVENT_MONITOR_STOPPED) - - - @skip_lt_4 - def test_monitor_connected(self): - """Test connected monitoring socket.""" - s_rep = self.context.socket(zmq.REP) - s_req = self.context.socket(zmq.REQ) - self.sockets.extend([s_rep, s_req]) - s_req.bind("tcp://127.0.0.1:6667") - # try monitoring the REP socket - # create listening socket for monitor - s_event = s_rep.get_monitor_socket() - s_event.linger = 0 - self.sockets.append(s_event) - # test receive event for connect event - s_rep.connect("tcp://127.0.0.1:6667") - m = recv_monitor_message(s_event) - if m['event'] == zmq.EVENT_CONNECT_DELAYED: - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6667") - # test receive event for connected event - m = recv_monitor_message(s_event) - self.assertEqual(m['event'], zmq.EVENT_CONNECTED) - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6667") diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monqueue.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monqueue.py deleted file mode 100644 index e855602e..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_monqueue.py +++ /dev/null @@ -1,227 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time -from unittest import TestCase - -import zmq -from zmq import devices - -from zmq.tests import BaseZMQTestCase, SkipTest, PYPY -from zmq.utils.strtypes import unicode - - -if PYPY or zmq.zmq_version_info() >= (4,1): - # cleanup of shared Context doesn't work on PyPy - # there also seems to be a bug in cleanup in libzmq-4.1 (zeromq/libzmq#1052) - devices.Device.context_factory = zmq.Context - - -class TestMonitoredQueue(BaseZMQTestCase): - - sockets = [] - - def build_device(self, mon_sub=b"", in_prefix=b'in', out_prefix=b'out'): - self.device = devices.ThreadMonitoredQueue(zmq.PAIR, zmq.PAIR, zmq.PUB, - in_prefix, out_prefix) - alice = self.context.socket(zmq.PAIR) - bob = self.context.socket(zmq.PAIR) - mon = self.context.socket(zmq.SUB) - - aport = alice.bind_to_random_port('tcp://127.0.0.1') - bport = bob.bind_to_random_port('tcp://127.0.0.1') - mport = mon.bind_to_random_port('tcp://127.0.0.1') - mon.setsockopt(zmq.SUBSCRIBE, mon_sub) - - self.device.connect_in("tcp://127.0.0.1:%i"%aport) - self.device.connect_out("tcp://127.0.0.1:%i"%bport) - self.device.connect_mon("tcp://127.0.0.1:%i"%mport) - self.device.start() - time.sleep(.2) - try: - # this is currenlty necessary to ensure no dropped monitor messages - # see LIBZMQ-248 for more info - mon.recv_multipart(zmq.NOBLOCK) - except zmq.ZMQError: - pass - self.sockets.extend([alice, bob, mon]) - return alice, bob, mon - - - def teardown_device(self): - for socket in self.sockets: - socket.close() - del socket - del self.device - - def test_reply(self): - alice, bob, mon = self.build_device() - alices = b"hello bob".split() - alice.send_multipart(alices) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - self.teardown_device() - - def test_queue(self): - alice, bob, mon = self.build_device() - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - self.teardown_device() - - def test_monitor(self): - alice, bob, mon = self.build_device() - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'in']+bobs, mons) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'in']+alices2, mons) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'in']+alices3, mons) - mons = self.recv_multipart(mon) - self.assertEqual([b'out']+bobs, mons) - self.teardown_device() - - def test_prefix(self): - alice, bob, mon = self.build_device(b"", b'foo', b'bar') - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'foo']+bobs, mons) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'foo']+alices2, mons) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'foo']+alices3, mons) - mons = self.recv_multipart(mon) - self.assertEqual([b'bar']+bobs, mons) - self.teardown_device() - - def test_monitor_subscribe(self): - alice, bob, mon = self.build_device(b"out") - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'out']+bobs, mons) - self.teardown_device() - - def test_router_router(self): - """test router-router MQ devices""" - dev = devices.ThreadMonitoredQueue(zmq.ROUTER, zmq.ROUTER, zmq.PUB, b'in', b'out') - self.device = dev - dev.setsockopt_in(zmq.LINGER, 0) - dev.setsockopt_out(zmq.LINGER, 0) - dev.setsockopt_mon(zmq.LINGER, 0) - - binder = self.context.socket(zmq.DEALER) - porta = binder.bind_to_random_port('tcp://127.0.0.1') - portb = binder.bind_to_random_port('tcp://127.0.0.1') - binder.close() - time.sleep(0.1) - a = self.context.socket(zmq.DEALER) - a.identity = b'a' - b = self.context.socket(zmq.DEALER) - b.identity = b'b' - self.sockets.extend([a, b]) - - a.connect('tcp://127.0.0.1:%i'%porta) - dev.bind_in('tcp://127.0.0.1:%i'%porta) - b.connect('tcp://127.0.0.1:%i'%portb) - dev.bind_out('tcp://127.0.0.1:%i'%portb) - dev.start() - time.sleep(0.2) - if zmq.zmq_version_info() >= (3,1,0): - # flush erroneous poll state, due to LIBZMQ-280 - ping_msg = [ b'ping', b'pong' ] - for s in (a,b): - s.send_multipart(ping_msg) - try: - s.recv(zmq.NOBLOCK) - except zmq.ZMQError: - pass - msg = [ b'hello', b'there' ] - a.send_multipart([b'b']+msg) - bmsg = self.recv_multipart(b) - self.assertEqual(bmsg, [b'a']+msg) - b.send_multipart(bmsg) - amsg = self.recv_multipart(a) - self.assertEqual(amsg, [b'b']+msg) - self.teardown_device() - - def test_default_mq_args(self): - self.device = dev = devices.ThreadMonitoredQueue(zmq.ROUTER, zmq.DEALER, zmq.PUB) - dev.setsockopt_in(zmq.LINGER, 0) - dev.setsockopt_out(zmq.LINGER, 0) - dev.setsockopt_mon(zmq.LINGER, 0) - # this will raise if default args are wrong - dev.start() - self.teardown_device() - - def test_mq_check_prefix(self): - ins = self.context.socket(zmq.ROUTER) - outs = self.context.socket(zmq.DEALER) - mons = self.context.socket(zmq.PUB) - self.sockets.extend([ins, outs, mons]) - - ins = unicode('in') - outs = unicode('out') - self.assertRaises(TypeError, devices.monitoredqueue, ins, outs, mons) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_multipart.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_multipart.py deleted file mode 100644 index 24d41be0..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_multipart.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import zmq - - -from zmq.tests import BaseZMQTestCase, SkipTest, have_gevent, GreenTest - - -class TestMultipart(BaseZMQTestCase): - - def test_router_dealer(self): - router, dealer = self.create_bound_pair(zmq.ROUTER, zmq.DEALER) - - msg1 = b'message1' - dealer.send(msg1) - ident = self.recv(router) - more = router.rcvmore - self.assertEqual(more, True) - msg2 = self.recv(router) - self.assertEqual(msg1, msg2) - more = router.rcvmore - self.assertEqual(more, False) - - def test_basic_multipart(self): - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - msg = [ b'hi', b'there', b'b'] - a.send_multipart(msg) - recvd = b.recv_multipart() - self.assertEqual(msg, recvd) - -if have_gevent: - class TestMultipartGreen(GreenTest, TestMultipart): - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pair.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pair.py deleted file mode 100644 index e88c1e8b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pair.py +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import zmq - - -from zmq.tests import BaseZMQTestCase, have_gevent, GreenTest - - -x = b' ' -class TestPair(BaseZMQTestCase): - - def test_basic(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - msg1 = b'message1' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_multiple(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - for i in range(10): - msg = i*x - s1.send(msg) - - for i in range(10): - msg = i*x - s2.send(msg) - - for i in range(10): - msg = s1.recv() - self.assertEqual(msg, i*x) - - for i in range(10): - msg = s2.recv() - self.assertEqual(msg, i*x) - - def test_json(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - o = dict(a=10,b=list(range(10))) - o2 = self.ping_pong_json(s1, s2, o) - - def test_pyobj(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - o = dict(a=10,b=range(10)) - o2 = self.ping_pong_pyobj(s1, s2, o) - -if have_gevent: - class TestReqRepGreen(GreenTest, TestPair): - pass - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_poll.py deleted file mode 100644 index 57346c89..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_poll.py +++ /dev/null @@ -1,229 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import time -from unittest import TestCase - -import zmq - -from zmq.tests import PollZMQTestCase, have_gevent, GreenTest - -def wait(): - time.sleep(.25) - - -class TestPoll(PollZMQTestCase): - - Poller = zmq.Poller - - # This test is failing due to this issue: - # http://github.com/sustrik/zeromq2/issues#issue/26 - def test_pair(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - # Sleep to allow sockets to connect. - wait() - - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, zmq.POLLIN|zmq.POLLOUT) - # Poll result should contain both sockets - socks = dict(poller.poll()) - # Now make sure that both are send ready. - self.assertEqual(socks[s1], zmq.POLLOUT) - self.assertEqual(socks[s2], zmq.POLLOUT) - # Now do a send on both, wait and test for zmq.POLLOUT|zmq.POLLIN - s1.send(b'msg1') - s2.send(b'msg2') - wait() - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT|zmq.POLLIN) - self.assertEqual(socks[s2], zmq.POLLOUT|zmq.POLLIN) - # Make sure that both are in POLLOUT after recv. - s1.recv() - s2.recv() - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - self.assertEqual(socks[s2], zmq.POLLOUT) - - poller.unregister(s1) - poller.unregister(s2) - - # Wait for everything to finish. - wait() - - def test_reqrep(self): - s1, s2 = self.create_bound_pair(zmq.REP, zmq.REQ) - - # Sleep to allow sockets to connect. - wait() - - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, zmq.POLLIN|zmq.POLLOUT) - - # Make sure that s1 is in state 0 and s2 is in POLLOUT - socks = dict(poller.poll()) - self.assertEqual(s1 in socks, 0) - self.assertEqual(socks[s2], zmq.POLLOUT) - - # Make sure that s2 goes immediately into state 0 after send. - s2.send(b'msg1') - socks = dict(poller.poll()) - self.assertEqual(s2 in socks, 0) - - # Make sure that s1 goes into POLLIN state after a time.sleep(). - time.sleep(0.5) - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLIN) - - # Make sure that s1 goes into POLLOUT after recv. - s1.recv() - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - - # Make sure s1 goes into state 0 after send. - s1.send(b'msg2') - socks = dict(poller.poll()) - self.assertEqual(s1 in socks, 0) - - # Wait and then see that s2 is in POLLIN. - time.sleep(0.5) - socks = dict(poller.poll()) - self.assertEqual(socks[s2], zmq.POLLIN) - - # Make sure that s2 is in POLLOUT after recv. - s2.recv() - socks = dict(poller.poll()) - self.assertEqual(socks[s2], zmq.POLLOUT) - - poller.unregister(s1) - poller.unregister(s2) - - # Wait for everything to finish. - wait() - - def test_no_events(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, 0) - self.assertTrue(s1 in poller) - self.assertFalse(s2 in poller) - poller.register(s1, 0) - self.assertFalse(s1 in poller) - - def test_pubsub(self): - s1, s2 = self.create_bound_pair(zmq.PUB, zmq.SUB) - s2.setsockopt(zmq.SUBSCRIBE, b'') - - # Sleep to allow sockets to connect. - wait() - - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, zmq.POLLIN) - - # Now make sure that both are send ready. - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - self.assertEqual(s2 in socks, 0) - # Make sure that s1 stays in POLLOUT after a send. - s1.send(b'msg1') - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - - # Make sure that s2 is POLLIN after waiting. - wait() - socks = dict(poller.poll()) - self.assertEqual(socks[s2], zmq.POLLIN) - - # Make sure that s2 goes into 0 after recv. - s2.recv() - socks = dict(poller.poll()) - self.assertEqual(s2 in socks, 0) - - poller.unregister(s1) - poller.unregister(s2) - - # Wait for everything to finish. - wait() - def test_timeout(self): - """make sure Poller.poll timeout has the right units (milliseconds).""" - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - poller = self.Poller() - poller.register(s1, zmq.POLLIN) - tic = time.time() - evt = poller.poll(.005) - toc = time.time() - self.assertTrue(toc-tic < 0.1) - tic = time.time() - evt = poller.poll(5) - toc = time.time() - self.assertTrue(toc-tic < 0.1) - self.assertTrue(toc-tic > .001) - tic = time.time() - evt = poller.poll(500) - toc = time.time() - self.assertTrue(toc-tic < 1) - self.assertTrue(toc-tic > 0.1) - -class TestSelect(PollZMQTestCase): - - def test_pair(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - # Sleep to allow sockets to connect. - wait() - - rlist, wlist, xlist = zmq.select([s1, s2], [s1, s2], [s1, s2]) - self.assert_(s1 in wlist) - self.assert_(s2 in wlist) - self.assert_(s1 not in rlist) - self.assert_(s2 not in rlist) - - def test_timeout(self): - """make sure select timeout has the right units (seconds).""" - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - tic = time.time() - r,w,x = zmq.select([s1,s2],[],[],.005) - toc = time.time() - self.assertTrue(toc-tic < 1) - self.assertTrue(toc-tic > 0.001) - tic = time.time() - r,w,x = zmq.select([s1,s2],[],[],.25) - toc = time.time() - self.assertTrue(toc-tic < 1) - self.assertTrue(toc-tic > 0.1) - - -if have_gevent: - import gevent - from zmq import green as gzmq - - class TestPollGreen(GreenTest, TestPoll): - Poller = gzmq.Poller - - def test_wakeup(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - poller = self.Poller() - poller.register(s2, zmq.POLLIN) - - tic = time.time() - r = gevent.spawn(lambda: poller.poll(10000)) - s = gevent.spawn(lambda: s1.send(b'msg1')) - r.join() - toc = time.time() - self.assertTrue(toc-tic < 1) - - def test_socket_poll(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - tic = time.time() - r = gevent.spawn(lambda: s2.poll(10000)) - s = gevent.spawn(lambda: s1.send(b'msg1')) - r.join() - toc = time.time() - self.assertTrue(toc-tic < 1) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pubsub.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pubsub.py deleted file mode 100644 index a3ee22aa..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_pubsub.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import time -from unittest import TestCase - -import zmq - -from zmq.tests import BaseZMQTestCase, have_gevent, GreenTest - - -class TestPubSub(BaseZMQTestCase): - - pass - - # We are disabling this test while an issue is being resolved. - def test_basic(self): - s1, s2 = self.create_bound_pair(zmq.PUB, zmq.SUB) - s2.setsockopt(zmq.SUBSCRIBE,b'') - time.sleep(0.1) - msg1 = b'message' - s1.send(msg1) - msg2 = s2.recv() # This is blocking! - self.assertEqual(msg1, msg2) - - def test_topic(self): - s1, s2 = self.create_bound_pair(zmq.PUB, zmq.SUB) - s2.setsockopt(zmq.SUBSCRIBE, b'x') - time.sleep(0.1) - msg1 = b'message' - s1.send(msg1) - self.assertRaisesErrno(zmq.EAGAIN, s2.recv, zmq.NOBLOCK) - msg1 = b'xmessage' - s1.send(msg1) - msg2 = s2.recv() - self.assertEqual(msg1, msg2) - -if have_gevent: - class TestPubSubGreen(GreenTest, TestPubSub): - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_reqrep.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_reqrep.py deleted file mode 100644 index de17f2b3..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_reqrep.py +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from unittest import TestCase - -import zmq -from zmq.tests import BaseZMQTestCase, have_gevent, GreenTest - - -class TestReqRep(BaseZMQTestCase): - - def test_basic(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - - msg1 = b'message 1' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_multiple(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - - for i in range(10): - msg1 = i*b' ' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_bad_send_recv(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - - if zmq.zmq_version() != '2.1.8': - # this doesn't work on 2.1.8 - for copy in (True,False): - self.assertRaisesErrno(zmq.EFSM, s1.recv, copy=copy) - self.assertRaisesErrno(zmq.EFSM, s2.send, b'asdf', copy=copy) - - # I have to have this or we die on an Abort trap. - msg1 = b'asdf' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_json(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - o = dict(a=10,b=list(range(10))) - o2 = self.ping_pong_json(s1, s2, o) - - def test_pyobj(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - o = dict(a=10,b=range(10)) - o2 = self.ping_pong_pyobj(s1, s2, o) - - def test_large_msg(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - msg1 = 10000*b'X' - - for i in range(10): - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - -if have_gevent: - class TestReqRepGreen(GreenTest, TestReqRep): - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_security.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_security.py deleted file mode 100644 index 687b7e0f..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_security.py +++ /dev/null @@ -1,212 +0,0 @@ -"""Test libzmq security (libzmq >= 3.3.0)""" -# -*- coding: utf8 -*- - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import os -from threading import Thread - -import zmq -from zmq.tests import ( - BaseZMQTestCase, SkipTest, PYPY -) -from zmq.utils import z85 - - -USER = b"admin" -PASS = b"password" - -class TestSecurity(BaseZMQTestCase): - - def setUp(self): - if zmq.zmq_version_info() < (4,0): - raise SkipTest("security is new in libzmq 4.0") - try: - zmq.curve_keypair() - except zmq.ZMQError: - raise SkipTest("security requires libzmq to be linked against libsodium") - super(TestSecurity, self).setUp() - - - def zap_handler(self): - socket = self.context.socket(zmq.REP) - socket.bind("inproc://zeromq.zap.01") - try: - msg = self.recv_multipart(socket) - - version, sequence, domain, address, identity, mechanism = msg[:6] - if mechanism == b'PLAIN': - username, password = msg[6:] - elif mechanism == b'CURVE': - key = msg[6] - - self.assertEqual(version, b"1.0") - self.assertEqual(identity, b"IDENT") - reply = [version, sequence] - if mechanism == b'CURVE' or \ - (mechanism == b'PLAIN' and username == USER and password == PASS) or \ - (mechanism == b'NULL'): - reply.extend([ - b"200", - b"OK", - b"anonymous", - b"\5Hello\0\0\0\5World", - ]) - else: - reply.extend([ - b"400", - b"Invalid username or password", - b"", - b"", - ]) - socket.send_multipart(reply) - finally: - socket.close() - - def start_zap(self): - self.zap_thread = Thread(target=self.zap_handler) - self.zap_thread.start() - - def stop_zap(self): - self.zap_thread.join() - - def bounce(self, server, client, test_metadata=True): - msg = [os.urandom(64), os.urandom(64)] - client.send_multipart(msg) - frames = self.recv_multipart(server, copy=False) - recvd = list(map(lambda x: x.bytes, frames)) - - try: - if test_metadata and not PYPY: - for frame in frames: - self.assertEqual(frame.get('User-Id'), 'anonymous') - self.assertEqual(frame.get('Hello'), 'World') - self.assertEqual(frame['Socket-Type'], 'DEALER') - except zmq.ZMQVersionError: - pass - - self.assertEqual(recvd, msg) - server.send_multipart(recvd) - msg2 = self.recv_multipart(client) - self.assertEqual(msg2, msg) - - def test_null(self): - """test NULL (default) security""" - server = self.socket(zmq.DEALER) - client = self.socket(zmq.DEALER) - self.assertEqual(client.MECHANISM, zmq.NULL) - self.assertEqual(server.mechanism, zmq.NULL) - self.assertEqual(client.plain_server, 0) - self.assertEqual(server.plain_server, 0) - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - self.bounce(server, client, False) - - def test_plain(self): - """test PLAIN authentication""" - server = self.socket(zmq.DEALER) - server.identity = b'IDENT' - client = self.socket(zmq.DEALER) - self.assertEqual(client.plain_username, b'') - self.assertEqual(client.plain_password, b'') - client.plain_username = USER - client.plain_password = PASS - self.assertEqual(client.getsockopt(zmq.PLAIN_USERNAME), USER) - self.assertEqual(client.getsockopt(zmq.PLAIN_PASSWORD), PASS) - self.assertEqual(client.plain_server, 0) - self.assertEqual(server.plain_server, 0) - server.plain_server = True - self.assertEqual(server.mechanism, zmq.PLAIN) - self.assertEqual(client.mechanism, zmq.PLAIN) - - assert not client.plain_server - assert server.plain_server - - self.start_zap() - - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - self.bounce(server, client) - self.stop_zap() - - def skip_plain_inauth(self): - """test PLAIN failed authentication""" - server = self.socket(zmq.DEALER) - server.identity = b'IDENT' - client = self.socket(zmq.DEALER) - self.sockets.extend([server, client]) - client.plain_username = USER - client.plain_password = b'incorrect' - server.plain_server = True - self.assertEqual(server.mechanism, zmq.PLAIN) - self.assertEqual(client.mechanism, zmq.PLAIN) - - self.start_zap() - - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - client.send(b'ping') - server.rcvtimeo = 250 - self.assertRaisesErrno(zmq.EAGAIN, server.recv) - self.stop_zap() - - def test_keypair(self): - """test curve_keypair""" - try: - public, secret = zmq.curve_keypair() - except zmq.ZMQError: - raise SkipTest("CURVE unsupported") - - self.assertEqual(type(secret), bytes) - self.assertEqual(type(public), bytes) - self.assertEqual(len(secret), 40) - self.assertEqual(len(public), 40) - - # verify that it is indeed Z85 - bsecret, bpublic = [ z85.decode(key) for key in (public, secret) ] - self.assertEqual(type(bsecret), bytes) - self.assertEqual(type(bpublic), bytes) - self.assertEqual(len(bsecret), 32) - self.assertEqual(len(bpublic), 32) - - - def test_curve(self): - """test CURVE encryption""" - server = self.socket(zmq.DEALER) - server.identity = b'IDENT' - client = self.socket(zmq.DEALER) - self.sockets.extend([server, client]) - try: - server.curve_server = True - except zmq.ZMQError as e: - # will raise EINVAL if not linked against libsodium - if e.errno == zmq.EINVAL: - raise SkipTest("CURVE unsupported") - - server_public, server_secret = zmq.curve_keypair() - client_public, client_secret = zmq.curve_keypair() - - server.curve_secretkey = server_secret - server.curve_publickey = server_public - client.curve_serverkey = server_public - client.curve_publickey = client_public - client.curve_secretkey = client_secret - - self.assertEqual(server.mechanism, zmq.CURVE) - self.assertEqual(client.mechanism, zmq.CURVE) - - self.assertEqual(server.get(zmq.CURVE_SERVER), True) - self.assertEqual(client.get(zmq.CURVE_SERVER), False) - - self.start_zap() - - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - self.bounce(server, client) - self.stop_zap() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_socket.py deleted file mode 100644 index 5c842edc..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_socket.py +++ /dev/null @@ -1,450 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time -import warnings - -import zmq -from zmq.tests import ( - BaseZMQTestCase, SkipTest, have_gevent, GreenTest, skip_pypy, skip_if -) -from zmq.utils.strtypes import bytes, unicode - - -class TestSocket(BaseZMQTestCase): - - def test_create(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - # Superluminal protocol not yet implemented - self.assertRaisesErrno(zmq.EPROTONOSUPPORT, s.bind, 'ftl://a') - self.assertRaisesErrno(zmq.EPROTONOSUPPORT, s.connect, 'ftl://a') - self.assertRaisesErrno(zmq.EINVAL, s.bind, 'tcp://') - s.close() - del ctx - - def test_context_manager(self): - url = 'inproc://a' - with self.Context() as ctx: - with ctx.socket(zmq.PUSH) as a: - a.bind(url) - with ctx.socket(zmq.PULL) as b: - b.connect(url) - msg = b'hi' - a.send(msg) - rcvd = self.recv(b) - self.assertEqual(rcvd, msg) - self.assertEqual(b.closed, True) - self.assertEqual(a.closed, True) - self.assertEqual(ctx.closed, True) - - def test_dir(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - self.assertTrue('send' in dir(s)) - self.assertTrue('IDENTITY' in dir(s)) - self.assertTrue('AFFINITY' in dir(s)) - self.assertTrue('FD' in dir(s)) - s.close() - ctx.term() - - def test_bind_unicode(self): - s = self.socket(zmq.PUB) - p = s.bind_to_random_port(unicode("tcp://*")) - - def test_connect_unicode(self): - s = self.socket(zmq.PUB) - s.connect(unicode("tcp://127.0.0.1:5555")) - - def test_bind_to_random_port(self): - # Check that bind_to_random_port do not hide usefull exception - ctx = self.Context() - c = ctx.socket(zmq.PUB) - # Invalid format - try: - c.bind_to_random_port('tcp:*') - except zmq.ZMQError as e: - self.assertEqual(e.errno, zmq.EINVAL) - # Invalid protocol - try: - c.bind_to_random_port('rand://*') - except zmq.ZMQError as e: - self.assertEqual(e.errno, zmq.EPROTONOSUPPORT) - - def test_identity(self): - s = self.context.socket(zmq.PULL) - self.sockets.append(s) - ident = b'identity\0\0' - s.identity = ident - self.assertEqual(s.get(zmq.IDENTITY), ident) - - def test_unicode_sockopts(self): - """test setting/getting sockopts with unicode strings""" - topic = "tést" - if str is not unicode: - topic = topic.decode('utf8') - p,s = self.create_bound_pair(zmq.PUB, zmq.SUB) - self.assertEqual(s.send_unicode, s.send_unicode) - self.assertEqual(p.recv_unicode, p.recv_unicode) - self.assertRaises(TypeError, s.setsockopt, zmq.SUBSCRIBE, topic) - self.assertRaises(TypeError, s.setsockopt, zmq.IDENTITY, topic) - s.setsockopt_unicode(zmq.IDENTITY, topic, 'utf16') - self.assertRaises(TypeError, s.setsockopt, zmq.AFFINITY, topic) - s.setsockopt_unicode(zmq.SUBSCRIBE, topic) - self.assertRaises(TypeError, s.getsockopt_unicode, zmq.AFFINITY) - self.assertRaisesErrno(zmq.EINVAL, s.getsockopt_unicode, zmq.SUBSCRIBE) - - identb = s.getsockopt(zmq.IDENTITY) - identu = identb.decode('utf16') - identu2 = s.getsockopt_unicode(zmq.IDENTITY, 'utf16') - self.assertEqual(identu, identu2) - time.sleep(0.1) # wait for connection/subscription - p.send_unicode(topic,zmq.SNDMORE) - p.send_unicode(topic*2, encoding='latin-1') - self.assertEqual(topic, s.recv_unicode()) - self.assertEqual(topic*2, s.recv_unicode(encoding='latin-1')) - - def test_int_sockopts(self): - "test integer sockopts" - v = zmq.zmq_version_info() - if v < (3,0): - default_hwm = 0 - else: - default_hwm = 1000 - p,s = self.create_bound_pair(zmq.PUB, zmq.SUB) - p.setsockopt(zmq.LINGER, 0) - self.assertEqual(p.getsockopt(zmq.LINGER), 0) - p.setsockopt(zmq.LINGER, -1) - self.assertEqual(p.getsockopt(zmq.LINGER), -1) - self.assertEqual(p.hwm, default_hwm) - p.hwm = 11 - self.assertEqual(p.hwm, 11) - # p.setsockopt(zmq.EVENTS, zmq.POLLIN) - self.assertEqual(p.getsockopt(zmq.EVENTS), zmq.POLLOUT) - self.assertRaisesErrno(zmq.EINVAL, p.setsockopt,zmq.EVENTS, 2**7-1) - self.assertEqual(p.getsockopt(zmq.TYPE), p.socket_type) - self.assertEqual(p.getsockopt(zmq.TYPE), zmq.PUB) - self.assertEqual(s.getsockopt(zmq.TYPE), s.socket_type) - self.assertEqual(s.getsockopt(zmq.TYPE), zmq.SUB) - - # check for overflow / wrong type: - errors = [] - backref = {} - constants = zmq.constants - for name in constants.__all__: - value = getattr(constants, name) - if isinstance(value, int): - backref[value] = name - for opt in zmq.constants.int_sockopts.union(zmq.constants.int64_sockopts): - sopt = backref[opt] - if sopt.startswith(( - 'ROUTER', 'XPUB', 'TCP', 'FAIL', - 'REQ_', 'CURVE_', 'PROBE_ROUTER', - 'IPC_FILTER', 'GSSAPI', - )): - # some sockopts are write-only - continue - try: - n = p.getsockopt(opt) - except zmq.ZMQError as e: - errors.append("getsockopt(zmq.%s) raised '%s'."%(sopt, e)) - else: - if n > 2**31: - errors.append("getsockopt(zmq.%s) returned a ridiculous value." - " It is probably the wrong type."%sopt) - if errors: - self.fail('\n'.join([''] + errors)) - - def test_bad_sockopts(self): - """Test that appropriate errors are raised on bad socket options""" - s = self.context.socket(zmq.PUB) - self.sockets.append(s) - s.setsockopt(zmq.LINGER, 0) - # unrecognized int sockopts pass through to libzmq, and should raise EINVAL - self.assertRaisesErrno(zmq.EINVAL, s.setsockopt, 9999, 5) - self.assertRaisesErrno(zmq.EINVAL, s.getsockopt, 9999) - # but only int sockopts are allowed through this way, otherwise raise a TypeError - self.assertRaises(TypeError, s.setsockopt, 9999, b"5") - # some sockopts are valid in general, but not on every socket: - self.assertRaisesErrno(zmq.EINVAL, s.setsockopt, zmq.SUBSCRIBE, b'hi') - - def test_sockopt_roundtrip(self): - "test set/getsockopt roundtrip." - p = self.context.socket(zmq.PUB) - self.sockets.append(p) - p.setsockopt(zmq.LINGER, 11) - self.assertEqual(p.getsockopt(zmq.LINGER), 11) - - def test_send_unicode(self): - "test sending unicode objects" - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - self.sockets.extend([a,b]) - u = "çπ§" - if str is not unicode: - u = u.decode('utf8') - self.assertRaises(TypeError, a.send, u,copy=False) - self.assertRaises(TypeError, a.send, u,copy=True) - a.send_unicode(u) - s = b.recv() - self.assertEqual(s,u.encode('utf8')) - self.assertEqual(s.decode('utf8'),u) - a.send_unicode(u,encoding='utf16') - s = b.recv_unicode(encoding='utf16') - self.assertEqual(s,u) - - @skip_pypy - def test_tracker(self): - "test the MessageTracker object for tracking when zmq is done with a buffer" - addr = 'tcp://127.0.0.1' - a = self.context.socket(zmq.PUB) - port = a.bind_to_random_port(addr) - a.close() - iface = "%s:%i"%(addr,port) - a = self.context.socket(zmq.PAIR) - # a.setsockopt(zmq.IDENTITY, b"a") - b = self.context.socket(zmq.PAIR) - self.sockets.extend([a,b]) - a.connect(iface) - time.sleep(0.1) - p1 = a.send(b'something', copy=False, track=True) - self.assertTrue(isinstance(p1, zmq.MessageTracker)) - self.assertFalse(p1.done) - p2 = a.send_multipart([b'something', b'else'], copy=False, track=True) - self.assert_(isinstance(p2, zmq.MessageTracker)) - self.assertEqual(p2.done, False) - self.assertEqual(p1.done, False) - - b.bind(iface) - msg = b.recv_multipart() - for i in range(10): - if p1.done: - break - time.sleep(0.1) - self.assertEqual(p1.done, True) - self.assertEqual(msg, [b'something']) - msg = b.recv_multipart() - for i in range(10): - if p2.done: - break - time.sleep(0.1) - self.assertEqual(p2.done, True) - self.assertEqual(msg, [b'something', b'else']) - m = zmq.Frame(b"again", track=True) - self.assertEqual(m.tracker.done, False) - p1 = a.send(m, copy=False) - p2 = a.send(m, copy=False) - self.assertEqual(m.tracker.done, False) - self.assertEqual(p1.done, False) - self.assertEqual(p2.done, False) - msg = b.recv_multipart() - self.assertEqual(m.tracker.done, False) - self.assertEqual(msg, [b'again']) - msg = b.recv_multipart() - self.assertEqual(m.tracker.done, False) - self.assertEqual(msg, [b'again']) - self.assertEqual(p1.done, False) - self.assertEqual(p2.done, False) - pm = m.tracker - del m - for i in range(10): - if p1.done: - break - time.sleep(0.1) - self.assertEqual(p1.done, True) - self.assertEqual(p2.done, True) - m = zmq.Frame(b'something', track=False) - self.assertRaises(ValueError, a.send, m, copy=False, track=True) - - - def test_close(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - s.close() - self.assertRaisesErrno(zmq.ENOTSOCK, s.bind, b'') - self.assertRaisesErrno(zmq.ENOTSOCK, s.connect, b'') - self.assertRaisesErrno(zmq.ENOTSOCK, s.setsockopt, zmq.SUBSCRIBE, b'') - self.assertRaisesErrno(zmq.ENOTSOCK, s.send, b'asdf') - self.assertRaisesErrno(zmq.ENOTSOCK, s.recv) - del ctx - - def test_attr(self): - """set setting/getting sockopts as attributes""" - s = self.context.socket(zmq.DEALER) - self.sockets.append(s) - linger = 10 - s.linger = linger - self.assertEqual(linger, s.linger) - self.assertEqual(linger, s.getsockopt(zmq.LINGER)) - self.assertEqual(s.fd, s.getsockopt(zmq.FD)) - - def test_bad_attr(self): - s = self.context.socket(zmq.DEALER) - self.sockets.append(s) - try: - s.apple='foo' - except AttributeError: - pass - else: - self.fail("bad setattr should have raised AttributeError") - try: - s.apple - except AttributeError: - pass - else: - self.fail("bad getattr should have raised AttributeError") - - def test_subclass(self): - """subclasses can assign attributes""" - class S(zmq.Socket): - a = None - def __init__(self, *a, **kw): - self.a=-1 - super(S, self).__init__(*a, **kw) - - s = S(self.context, zmq.REP) - self.sockets.append(s) - self.assertEqual(s.a, -1) - s.a=1 - self.assertEqual(s.a, 1) - a=s.a - self.assertEqual(a, 1) - - def test_recv_multipart(self): - a,b = self.create_bound_pair() - msg = b'hi' - for i in range(3): - a.send(msg) - time.sleep(0.1) - for i in range(3): - self.assertEqual(b.recv_multipart(), [msg]) - - def test_close_after_destroy(self): - """s.close() after ctx.destroy() should be fine""" - ctx = self.Context() - s = ctx.socket(zmq.REP) - ctx.destroy() - # reaper is not instantaneous - time.sleep(1e-2) - s.close() - self.assertTrue(s.closed) - - def test_poll(self): - a,b = self.create_bound_pair() - tic = time.time() - evt = a.poll(50) - self.assertEqual(evt, 0) - evt = a.poll(50, zmq.POLLOUT) - self.assertEqual(evt, zmq.POLLOUT) - msg = b'hi' - a.send(msg) - evt = b.poll(50) - self.assertEqual(evt, zmq.POLLIN) - msg2 = self.recv(b) - evt = b.poll(50) - self.assertEqual(evt, 0) - self.assertEqual(msg2, msg) - - def test_ipc_path_max_length(self): - """IPC_PATH_MAX_LEN is a sensible value""" - if zmq.IPC_PATH_MAX_LEN == 0: - raise SkipTest("IPC_PATH_MAX_LEN undefined") - - msg = "Surprising value for IPC_PATH_MAX_LEN: %s" % zmq.IPC_PATH_MAX_LEN - self.assertTrue(zmq.IPC_PATH_MAX_LEN > 30, msg) - self.assertTrue(zmq.IPC_PATH_MAX_LEN < 1025, msg) - - def test_ipc_path_max_length_msg(self): - if zmq.IPC_PATH_MAX_LEN == 0: - raise SkipTest("IPC_PATH_MAX_LEN undefined") - - s = self.context.socket(zmq.PUB) - self.sockets.append(s) - try: - s.bind('ipc://{0}'.format('a' * (zmq.IPC_PATH_MAX_LEN + 1))) - except zmq.ZMQError as e: - self.assertTrue(str(zmq.IPC_PATH_MAX_LEN) in e.strerror) - - def test_hwm(self): - zmq3 = zmq.zmq_version_info()[0] >= 3 - for stype in (zmq.PUB, zmq.ROUTER, zmq.SUB, zmq.REQ, zmq.DEALER): - s = self.context.socket(stype) - s.hwm = 100 - self.assertEqual(s.hwm, 100) - if zmq3: - try: - self.assertEqual(s.sndhwm, 100) - except AttributeError: - pass - try: - self.assertEqual(s.rcvhwm, 100) - except AttributeError: - pass - s.close() - - def test_shadow(self): - p = self.socket(zmq.PUSH) - p.bind("tcp://127.0.0.1:5555") - p2 = zmq.Socket.shadow(p.underlying) - self.assertEqual(p.underlying, p2.underlying) - s = self.socket(zmq.PULL) - s2 = zmq.Socket.shadow(s.underlying) - self.assertNotEqual(s.underlying, p.underlying) - self.assertEqual(s.underlying, s2.underlying) - s2.connect("tcp://127.0.0.1:5555") - sent = b'hi' - p2.send(sent) - rcvd = self.recv(s2) - self.assertEqual(rcvd, sent) - - def test_shadow_pyczmq(self): - try: - from pyczmq import zctx, zsocket - except Exception: - raise SkipTest("Requires pyczmq") - - ctx = zctx.new() - ca = zsocket.new(ctx, zmq.PUSH) - cb = zsocket.new(ctx, zmq.PULL) - a = zmq.Socket.shadow(ca) - b = zmq.Socket.shadow(cb) - a.bind("inproc://a") - b.connect("inproc://a") - a.send(b'hi') - rcvd = self.recv(b) - self.assertEqual(rcvd, b'hi') - - -if have_gevent: - import gevent - - class TestSocketGreen(GreenTest, TestSocket): - test_bad_attr = GreenTest.skip_green - test_close_after_destroy = GreenTest.skip_green - - def test_timeout(self): - a,b = self.create_bound_pair() - g = gevent.spawn_later(0.5, lambda: a.send(b'hi')) - timeout = gevent.Timeout(0.1) - timeout.start() - self.assertRaises(gevent.Timeout, b.recv) - g.kill() - - @skip_if(not hasattr(zmq, 'RCVTIMEO')) - def test_warn_set_timeo(self): - s = self.context.socket(zmq.REQ) - with warnings.catch_warnings(record=True) as w: - s.rcvtimeo = 5 - s.close() - self.assertEqual(len(w), 1) - self.assertEqual(w[0].category, UserWarning) - - - @skip_if(not hasattr(zmq, 'SNDTIMEO')) - def test_warn_get_timeo(self): - s = self.context.socket(zmq.REQ) - with warnings.catch_warnings(record=True) as w: - s.sndtimeo - s.close() - self.assertEqual(len(w), 1) - self.assertEqual(w[0].category, UserWarning) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_stopwatch.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_stopwatch.py deleted file mode 100644 index 49fb79f2..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_stopwatch.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import sys -import time - -from unittest import TestCase - -from zmq import Stopwatch, ZMQError - -if sys.version_info[0] >= 3: - long = int - -class TestStopWatch(TestCase): - - def test_stop_long(self): - """Ensure stop returns a long int.""" - watch = Stopwatch() - watch.start() - us = watch.stop() - self.assertTrue(isinstance(us, long)) - - def test_stop_microseconds(self): - """Test that stop/sleep have right units.""" - watch = Stopwatch() - watch.start() - tic = time.time() - watch.sleep(1) - us = watch.stop() - toc = time.time() - self.assertAlmostEqual(us/1e6,(toc-tic),places=0) - - def test_double_stop(self): - """Test error raised on multiple calls to stop.""" - watch = Stopwatch() - watch.start() - watch.stop() - self.assertRaises(ZMQError, watch.stop) - self.assertRaises(ZMQError, watch.stop) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_version.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_version.py deleted file mode 100644 index 6ebebf30..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_version.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from unittest import TestCase -import zmq -from zmq.sugar import version - - -class TestVersion(TestCase): - - def test_pyzmq_version(self): - vs = zmq.pyzmq_version() - vs2 = zmq.__version__ - self.assertTrue(isinstance(vs, str)) - if zmq.__revision__: - self.assertEqual(vs, '@'.join(vs2, zmq.__revision__)) - else: - self.assertEqual(vs, vs2) - if version.VERSION_EXTRA: - self.assertTrue(version.VERSION_EXTRA in vs) - self.assertTrue(version.VERSION_EXTRA in vs2) - - def test_pyzmq_version_info(self): - info = zmq.pyzmq_version_info() - self.assertTrue(isinstance(info, tuple)) - for n in info[:3]: - self.assertTrue(isinstance(n, int)) - if version.VERSION_EXTRA: - self.assertEqual(len(info), 4) - self.assertEqual(info[-1], float('inf')) - else: - self.assertEqual(len(info), 3) - - def test_zmq_version_info(self): - info = zmq.zmq_version_info() - self.assertTrue(isinstance(info, tuple)) - for n in info[:3]: - self.assertTrue(isinstance(n, int)) - - def test_zmq_version(self): - v = zmq.zmq_version() - self.assertTrue(isinstance(v, str)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py deleted file mode 100644 index 55657bda..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_win32_shim.py +++ /dev/null @@ -1,56 +0,0 @@ -from __future__ import print_function - -import os - -from functools import wraps -from zmq.tests import BaseZMQTestCase -from zmq.utils.win32 import allow_interrupt - - -def count_calls(f): - @wraps(f) - def _(*args, **kwds): - try: - return f(*args, **kwds) - finally: - _.__calls__ += 1 - _.__calls__ = 0 - return _ - - -class TestWindowsConsoleControlHandler(BaseZMQTestCase): - - def test_handler(self): - @count_calls - def interrupt_polling(): - print('Caught CTRL-C!') - - if os.name == 'nt': - from ctypes import windll - from ctypes.wintypes import BOOL, DWORD - - kernel32 = windll.LoadLibrary('kernel32') - - # - GenerateConsoleCtrlEvent = kernel32.GenerateConsoleCtrlEvent - GenerateConsoleCtrlEvent.argtypes = (DWORD, DWORD) - GenerateConsoleCtrlEvent.restype = BOOL - - try: - # Simulate CTRL-C event while handler is active. - with allow_interrupt(interrupt_polling): - result = GenerateConsoleCtrlEvent(0, 0) - if result == 0: - raise WindowsError - except KeyboardInterrupt: - pass - else: - self.fail('Expecting `KeyboardInterrupt` exception!') - - # Make sure our handler was called. - self.assertEqual(interrupt_polling.__calls__, 1) - else: - # On non-Windows systems, this utility is just a no-op! - with allow_interrupt(interrupt_polling): - pass - self.assertEqual(interrupt_polling.__calls__, 0) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_z85.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_z85.py deleted file mode 100644 index 8a73cb4d..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_z85.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf8 -*- -"""Test Z85 encoding - -confirm values and roundtrip with test values from the reference implementation. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from unittest import TestCase -from zmq.utils import z85 - - -class TestZ85(TestCase): - - def test_client_public(self): - client_public = \ - b"\xBB\x88\x47\x1D\x65\xE2\x65\x9B" \ - b"\x30\xC5\x5A\x53\x21\xCE\xBB\x5A" \ - b"\xAB\x2B\x70\xA3\x98\x64\x5C\x26" \ - b"\xDC\xA2\xB2\xFC\xB4\x3F\xC5\x18" - encoded = z85.encode(client_public) - - self.assertEqual(encoded, b"Yne@$w-vo}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7") - decoded = z85.decode(encoded) - self.assertEqual(decoded, server_public) - - def test_server_secret(self): - server_secret = \ - b"\x8E\x0B\xDD\x69\x76\x28\xB9\x1D" \ - b"\x8F\x24\x55\x87\xEE\x95\xC5\xB0" \ - b"\x4D\x48\x96\x3F\x79\x25\x98\x77" \ - b"\xB4\x9C\xD9\x06\x3A\xEA\xD3\xB7" - encoded = z85.encode(server_secret) - - self.assertEqual(encoded, b"JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6") - decoded = z85.decode(encoded) - self.assertEqual(decoded, server_secret) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_zmqstream.py deleted file mode 100644 index cdb3a171..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/tests/test_zmqstream.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import sys -import time - -from unittest import TestCase - -import zmq -from zmq.eventloop import ioloop, zmqstream - -class TestZMQStream(TestCase): - - def setUp(self): - self.context = zmq.Context() - self.socket = self.context.socket(zmq.REP) - self.loop = ioloop.IOLoop.instance() - self.stream = zmqstream.ZMQStream(self.socket) - - def tearDown(self): - self.socket.close() - self.context.term() - - def test_callable_check(self): - """Ensure callable check works (py3k).""" - - self.stream.on_send(lambda *args: None) - self.stream.on_recv(lambda *args: None) - self.assertRaises(AssertionError, self.stream.on_recv, 1) - self.assertRaises(AssertionError, self.stream.on_send, 1) - self.assertRaises(AssertionError, self.stream.on_recv, zmq) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/buffers.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/buffers.pxd deleted file mode 100644 index 998aa551..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/buffers.pxd +++ /dev/null @@ -1,313 +0,0 @@ -"""Python version-independent methods for C/Python buffers. - -This file was copied and adapted from mpi4py. - -Authors -------- -* MinRK -""" - -#----------------------------------------------------------------------------- -# Copyright (c) 2010 Lisandro Dalcin -# All rights reserved. -# Used under BSD License: http://www.opensource.org/licenses/bsd-license.php -# -# Retrieval: -# Jul 23, 2010 18:00 PST (r539) -# http://code.google.com/p/mpi4py/source/browse/trunk/src/MPI/asbuffer.pxi -# -# Modifications from original: -# Copyright (c) 2010-2012 Brian Granger, Min Ragan-Kelley -# -# Distributed under the terms of the New BSD License. The full license is in -# the file COPYING.BSD, distributed as part of this software. -#----------------------------------------------------------------------------- - - -#----------------------------------------------------------------------------- -# Python includes. -#----------------------------------------------------------------------------- - -# get version-independent aliases: -cdef extern from "pyversion_compat.h": - pass - -# Python 3 buffer interface (PEP 3118) -cdef extern from "Python.h": - int PY_MAJOR_VERSION - int PY_MINOR_VERSION - ctypedef int Py_ssize_t - ctypedef struct PyMemoryViewObject: - pass - ctypedef struct Py_buffer: - void *buf - Py_ssize_t len - int readonly - char *format - int ndim - Py_ssize_t *shape - Py_ssize_t *strides - Py_ssize_t *suboffsets - Py_ssize_t itemsize - void *internal - cdef enum: - PyBUF_SIMPLE - PyBUF_WRITABLE - PyBUF_FORMAT - PyBUF_ANY_CONTIGUOUS - int PyObject_CheckBuffer(object) - int PyObject_GetBuffer(object, Py_buffer *, int) except -1 - void PyBuffer_Release(Py_buffer *) - - int PyBuffer_FillInfo(Py_buffer *view, object obj, void *buf, - Py_ssize_t len, int readonly, int infoflags) except -1 - object PyMemoryView_FromBuffer(Py_buffer *info) - - object PyMemoryView_FromObject(object) - -# Python 2 buffer interface (legacy) -cdef extern from "Python.h": - ctypedef void const_void "const void" - Py_ssize_t Py_END_OF_BUFFER - int PyObject_CheckReadBuffer(object) - int PyObject_AsReadBuffer (object, const_void **, Py_ssize_t *) except -1 - int PyObject_AsWriteBuffer(object, void **, Py_ssize_t *) except -1 - - object PyBuffer_FromMemory(void *ptr, Py_ssize_t s) - object PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t s) - - object PyBuffer_FromObject(object, Py_ssize_t offset, Py_ssize_t size) - object PyBuffer_FromReadWriteObject(object, Py_ssize_t offset, Py_ssize_t size) - - -#----------------------------------------------------------------------------- -# asbuffer: C buffer from python object -#----------------------------------------------------------------------------- - - -cdef inline int memoryview_available(): - return PY_MAJOR_VERSION >= 3 or (PY_MAJOR_VERSION >=2 and PY_MINOR_VERSION >= 7) - -cdef inline int oldstyle_available(): - return PY_MAJOR_VERSION < 3 - - -cdef inline int check_buffer(object ob): - """Version independent check for whether an object is a buffer. - - Parameters - ---------- - object : object - Any Python object - - Returns - ------- - int : 0 if no buffer interface, 3 if newstyle buffer interface, 2 if oldstyle. - """ - if PyObject_CheckBuffer(ob): - return 3 - if oldstyle_available(): - return PyObject_CheckReadBuffer(ob) and 2 - return 0 - - -cdef inline object asbuffer(object ob, int writable, int format, - void **base, Py_ssize_t *size, - Py_ssize_t *itemsize): - """Turn an object into a C buffer in a Python version-independent way. - - Parameters - ---------- - ob : object - The object to be turned into a buffer. - Must provide a Python Buffer interface - writable : int - Whether the resulting buffer should be allowed to write - to the object. - format : int - The format of the buffer. See Python buffer docs. - base : void ** - The pointer that will be used to store the resulting C buffer. - size : Py_ssize_t * - The size of the buffer(s). - itemsize : Py_ssize_t * - The size of an item, if the buffer is non-contiguous. - - Returns - ------- - An object describing the buffer format. Generally a str, such as 'B'. - """ - - cdef void *bptr = NULL - cdef Py_ssize_t blen = 0, bitemlen = 0 - cdef Py_buffer view - cdef int flags = PyBUF_SIMPLE - cdef int mode = 0 - - bfmt = None - - mode = check_buffer(ob) - if mode == 0: - raise TypeError("%r does not provide a buffer interface."%ob) - - if mode == 3: - flags = PyBUF_ANY_CONTIGUOUS - if writable: - flags |= PyBUF_WRITABLE - if format: - flags |= PyBUF_FORMAT - PyObject_GetBuffer(ob, &view, flags) - bptr = view.buf - blen = view.len - if format: - if view.format != NULL: - bfmt = view.format - bitemlen = view.itemsize - PyBuffer_Release(&view) - else: # oldstyle - if writable: - PyObject_AsWriteBuffer(ob, &bptr, &blen) - else: - PyObject_AsReadBuffer(ob, &bptr, &blen) - if format: - try: # numpy.ndarray - dtype = ob.dtype - bfmt = dtype.char - bitemlen = dtype.itemsize - except AttributeError: - try: # array.array - bfmt = ob.typecode - bitemlen = ob.itemsize - except AttributeError: - if isinstance(ob, bytes): - bfmt = b"B" - bitemlen = 1 - else: - # nothing found - bfmt = None - bitemlen = 0 - if base: base[0] = bptr - if size: size[0] = blen - if itemsize: itemsize[0] = bitemlen - - if PY_MAJOR_VERSION >= 3 and bfmt is not None: - return bfmt.decode('ascii') - return bfmt - - -cdef inline object asbuffer_r(object ob, void **base, Py_ssize_t *size): - """Wrapper for standard calls to asbuffer with a readonly buffer.""" - asbuffer(ob, 0, 0, base, size, NULL) - return ob - - -cdef inline object asbuffer_w(object ob, void **base, Py_ssize_t *size): - """Wrapper for standard calls to asbuffer with a writable buffer.""" - asbuffer(ob, 1, 0, base, size, NULL) - return ob - -#------------------------------------------------------------------------------ -# frombuffer: python buffer/view from C buffer -#------------------------------------------------------------------------------ - - -cdef inline object frombuffer_3(void *ptr, Py_ssize_t s, int readonly): - """Python 3 version of frombuffer. - - This is the Python 3 model, but will work on Python >= 2.6. Currently, - we use it only on >= 3.0. - """ - cdef Py_buffer pybuf - cdef Py_ssize_t *shape = [s] - cdef str astr="" - PyBuffer_FillInfo(&pybuf, astr, ptr, s, readonly, PyBUF_SIMPLE) - pybuf.format = "B" - pybuf.shape = shape - return PyMemoryView_FromBuffer(&pybuf) - - -cdef inline object frombuffer_2(void *ptr, Py_ssize_t s, int readonly): - """Python 2 version of frombuffer. - - This must be used for Python <= 2.6, but we use it for all Python < 3. - """ - - if oldstyle_available(): - if readonly: - return PyBuffer_FromMemory(ptr, s) - else: - return PyBuffer_FromReadWriteMemory(ptr, s) - else: - raise NotImplementedError("Old style buffers not available.") - - -cdef inline object frombuffer(void *ptr, Py_ssize_t s, int readonly): - """Create a Python Buffer/View of a C array. - - Parameters - ---------- - ptr : void * - Pointer to the array to be copied. - s : size_t - Length of the buffer. - readonly : int - whether the resulting object should be allowed to write to the buffer. - - Returns - ------- - Python Buffer/View of the C buffer. - """ - # oldstyle first priority for now - if oldstyle_available(): - return frombuffer_2(ptr, s, readonly) - else: - return frombuffer_3(ptr, s, readonly) - - -cdef inline object frombuffer_r(void *ptr, Py_ssize_t s): - """Wrapper for readonly view frombuffer.""" - return frombuffer(ptr, s, 1) - - -cdef inline object frombuffer_w(void *ptr, Py_ssize_t s): - """Wrapper for writable view frombuffer.""" - return frombuffer(ptr, s, 0) - -#------------------------------------------------------------------------------ -# viewfromobject: python buffer/view from python object, refcounts intact -# frombuffer(asbuffer(obj)) would lose track of refs -#------------------------------------------------------------------------------ - -cdef inline object viewfromobject(object obj, int readonly): - """Construct a Python Buffer/View object from another Python object. - - This work in a Python version independent manner. - - Parameters - ---------- - obj : object - The input object to be cast as a buffer - readonly : int - Whether the result should be prevented from overwriting the original. - - Returns - ------- - Buffer/View of the original object. - """ - if not memoryview_available(): - if readonly: - return PyBuffer_FromObject(obj, 0, Py_END_OF_BUFFER) - else: - return PyBuffer_FromReadWriteObject(obj, 0, Py_END_OF_BUFFER) - else: - return PyMemoryView_FromObject(obj) - - -cdef inline object viewfromobject_r(object obj): - """Wrapper for readonly viewfromobject.""" - return viewfromobject(obj, 1) - - -cdef inline object viewfromobject_w(object obj): - """Wrapper for writable viewfromobject.""" - return viewfromobject(obj, 0) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/compiler.json b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/compiler.json deleted file mode 100644 index de3c54c1..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/compiler.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "include_dirs": [ - "/tmp/zmq/zmq-bin/include", - "zmq/utils", - "zmq/backend/cython", - "zmq/devices" - ], - "define_macros": [], - "library_dirs": [ - "/tmp/zmq/zmq-bin/lib" - ], - "runtime_library_dirs": [ - "/tmp/zmq/zmq-bin/lib" - ], - "libraries": [ - "zmq" - ], - "extra_link_args": [] -} \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/config.json b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/config.json deleted file mode 100644 index f332fd20..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "skip_check_zmq": false, - "zmq_prefix": "/tmp/zmq/zmq-bin", - "libzmq_extension": false, - "bdist_egg": {}, - "have_sys_un_h": false, - "no_libzmq_extension": true, - "build_ext": { - "libraries": "python2.7 util dl", - "include_dirs": "/tmp/zmq/zmq-bin/include:/sw/packages/python/2.7.6/include", - "library_dirs": "/tmp/zmq/zmq-bin/lib:/sw/packages/python/2.7.6/lib" - } -} \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/constant_names.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/constant_names.py deleted file mode 100644 index 47da9dc2..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/constant_names.py +++ /dev/null @@ -1,365 +0,0 @@ -"""0MQ Constant names""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -# dictionaries of constants new or removed in particular versions - -new_in = { - (2,2,0) : [ - 'RCVTIMEO', - 'SNDTIMEO', - ], - (3,2,2) : [ - # errnos - 'EMSGSIZE', - 'EAFNOSUPPORT', - 'ENETUNREACH', - 'ECONNABORTED', - 'ECONNRESET', - 'ENOTCONN', - 'ETIMEDOUT', - 'EHOSTUNREACH', - 'ENETRESET', - - # ctx opts - 'IO_THREADS', - 'MAX_SOCKETS', - 'IO_THREADS_DFLT', - 'MAX_SOCKETS_DFLT', - - # socket opts - 'ROUTER_BEHAVIOR', - 'ROUTER_MANDATORY', - 'FAIL_UNROUTABLE', - 'TCP_KEEPALIVE', - 'TCP_KEEPALIVE_CNT', - 'TCP_KEEPALIVE_IDLE', - 'TCP_KEEPALIVE_INTVL', - 'DELAY_ATTACH_ON_CONNECT', - 'XPUB_VERBOSE', - - # msg opts - 'MORE', - - 'EVENT_CONNECTED', - 'EVENT_CONNECT_DELAYED', - 'EVENT_CONNECT_RETRIED', - 'EVENT_LISTENING', - 'EVENT_BIND_FAILED', - 'EVENT_ACCEPTED', - 'EVENT_ACCEPT_FAILED', - 'EVENT_CLOSED', - 'EVENT_CLOSE_FAILED', - 'EVENT_DISCONNECTED', - 'EVENT_ALL', - ], - (4,0,0) : [ - # socket types - 'STREAM', - - # socket opts - 'IMMEDIATE', - 'ROUTER_RAW', - 'IPV6', - 'MECHANISM', - 'PLAIN_SERVER', - 'PLAIN_USERNAME', - 'PLAIN_PASSWORD', - 'CURVE_SERVER', - 'CURVE_PUBLICKEY', - 'CURVE_SECRETKEY', - 'CURVE_SERVERKEY', - 'PROBE_ROUTER', - 'REQ_RELAXED', - 'REQ_CORRELATE', - 'CONFLATE', - 'ZAP_DOMAIN', - - # security - 'NULL', - 'PLAIN', - 'CURVE', - - # events - 'EVENT_MONITOR_STOPPED', - ], - (4,1,0) : [ - # ctx opts - 'SOCKET_LIMIT', - 'THREAD_PRIORITY', - 'THREAD_PRIORITY_DFLT', - 'THREAD_SCHED_POLICY', - 'THREAD_SCHED_POLICY_DFLT', - - # socket opts - 'ROUTER_HANDOVER', - 'TOS', - 'IPC_FILTER_PID', - 'IPC_FILTER_UID', - 'IPC_FILTER_GID', - 'CONNECT_RID', - 'GSSAPI_SERVER', - 'GSSAPI_PRINCIPAL', - 'GSSAPI_SERVICE_PRINCIPAL', - 'GSSAPI_PLAINTEXT', - 'HANDSHAKE_IVL', - 'IDENTITY_FD', - 'XPUB_NODROP', - 'SOCKS_PROXY', - - # msg opts - 'SRCFD', - 'SHARED', - - # security - 'GSSAPI', - - ], -} - - -removed_in = { - (3,2,2) : [ - 'UPSTREAM', - 'DOWNSTREAM', - - 'HWM', - 'SWAP', - 'MCAST_LOOP', - 'RECOVERY_IVL_MSEC', - ] -} - -# collections of zmq constant names based on their role -# base names have no specific use -# opt names are validated in get/set methods of various objects - -base_names = [ - # base - 'VERSION', - 'VERSION_MAJOR', - 'VERSION_MINOR', - 'VERSION_PATCH', - 'NOBLOCK', - 'DONTWAIT', - - 'POLLIN', - 'POLLOUT', - 'POLLERR', - - 'SNDMORE', - - 'STREAMER', - 'FORWARDER', - 'QUEUE', - - 'IO_THREADS_DFLT', - 'MAX_SOCKETS_DFLT', - 'POLLITEMS_DFLT', - 'THREAD_PRIORITY_DFLT', - 'THREAD_SCHED_POLICY_DFLT', - - # socktypes - 'PAIR', - 'PUB', - 'SUB', - 'REQ', - 'REP', - 'DEALER', - 'ROUTER', - 'XREQ', - 'XREP', - 'PULL', - 'PUSH', - 'XPUB', - 'XSUB', - 'UPSTREAM', - 'DOWNSTREAM', - 'STREAM', - - # events - 'EVENT_CONNECTED', - 'EVENT_CONNECT_DELAYED', - 'EVENT_CONNECT_RETRIED', - 'EVENT_LISTENING', - 'EVENT_BIND_FAILED', - 'EVENT_ACCEPTED', - 'EVENT_ACCEPT_FAILED', - 'EVENT_CLOSED', - 'EVENT_CLOSE_FAILED', - 'EVENT_DISCONNECTED', - 'EVENT_ALL', - 'EVENT_MONITOR_STOPPED', - - # security - 'NULL', - 'PLAIN', - 'CURVE', - 'GSSAPI', - - ## ERRNO - # Often used (these are alse in errno.) - 'EAGAIN', - 'EINVAL', - 'EFAULT', - 'ENOMEM', - 'ENODEV', - 'EMSGSIZE', - 'EAFNOSUPPORT', - 'ENETUNREACH', - 'ECONNABORTED', - 'ECONNRESET', - 'ENOTCONN', - 'ETIMEDOUT', - 'EHOSTUNREACH', - 'ENETRESET', - - # For Windows compatability - 'HAUSNUMERO', - 'ENOTSUP', - 'EPROTONOSUPPORT', - 'ENOBUFS', - 'ENETDOWN', - 'EADDRINUSE', - 'EADDRNOTAVAIL', - 'ECONNREFUSED', - 'EINPROGRESS', - 'ENOTSOCK', - - # 0MQ Native - 'EFSM', - 'ENOCOMPATPROTO', - 'ETERM', - 'EMTHREAD', -] - -int64_sockopt_names = [ - 'AFFINITY', - 'MAXMSGSIZE', - - # sockopts removed in 3.0.0 - 'HWM', - 'SWAP', - 'MCAST_LOOP', - 'RECOVERY_IVL_MSEC', -] - -bytes_sockopt_names = [ - 'IDENTITY', - 'SUBSCRIBE', - 'UNSUBSCRIBE', - 'LAST_ENDPOINT', - 'TCP_ACCEPT_FILTER', - - 'PLAIN_USERNAME', - 'PLAIN_PASSWORD', - - 'CURVE_PUBLICKEY', - 'CURVE_SECRETKEY', - 'CURVE_SERVERKEY', - 'ZAP_DOMAIN', - 'CONNECT_RID', - 'GSSAPI_PRINCIPAL', - 'GSSAPI_SERVICE_PRINCIPAL', - 'SOCKS_PROXY', -] - -fd_sockopt_names = [ - 'FD', - 'IDENTITY_FD', -] - -int_sockopt_names = [ - # sockopts - 'RECONNECT_IVL_MAX', - - # sockopts new in 2.2.0 - 'SNDTIMEO', - 'RCVTIMEO', - - # new in 3.x - 'SNDHWM', - 'RCVHWM', - 'MULTICAST_HOPS', - 'IPV4ONLY', - - 'ROUTER_BEHAVIOR', - 'TCP_KEEPALIVE', - 'TCP_KEEPALIVE_CNT', - 'TCP_KEEPALIVE_IDLE', - 'TCP_KEEPALIVE_INTVL', - 'DELAY_ATTACH_ON_CONNECT', - 'XPUB_VERBOSE', - - 'EVENTS', - 'TYPE', - 'LINGER', - 'RECONNECT_IVL', - 'BACKLOG', - - 'ROUTER_MANDATORY', - 'FAIL_UNROUTABLE', - - 'ROUTER_RAW', - 'IMMEDIATE', - 'IPV6', - 'MECHANISM', - 'PLAIN_SERVER', - 'CURVE_SERVER', - 'PROBE_ROUTER', - 'REQ_RELAXED', - 'REQ_CORRELATE', - 'CONFLATE', - 'ROUTER_HANDOVER', - 'TOS', - 'IPC_FILTER_PID', - 'IPC_FILTER_UID', - 'IPC_FILTER_GID', - 'GSSAPI_SERVER', - 'GSSAPI_PLAINTEXT', - 'HANDSHAKE_IVL', - 'XPUB_NODROP', -] - -switched_sockopt_names = [ - 'RATE', - 'RECOVERY_IVL', - 'SNDBUF', - 'RCVBUF', - 'RCVMORE', -] - -ctx_opt_names = [ - 'IO_THREADS', - 'MAX_SOCKETS', - 'SOCKET_LIMIT', - 'THREAD_PRIORITY', - 'THREAD_SCHED_POLICY', -] - -msg_opt_names = [ - 'MORE', - 'SRCFD', - 'SHARED', -] - -from itertools import chain - -all_names = list(chain( - base_names, - ctx_opt_names, - bytes_sockopt_names, - fd_sockopt_names, - int_sockopt_names, - int64_sockopt_names, - switched_sockopt_names, - msg_opt_names, -)) - -del chain - -def no_prefix(name): - """does the given constant have a ZMQ_ prefix?""" - return name.startswith('E') and not name.startswith('EVENT') - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/garbage.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/garbage.py deleted file mode 100644 index 80a8725a..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/garbage.py +++ /dev/null @@ -1,180 +0,0 @@ -"""Garbage collection thread for representing zmq refcount of Python objects -used in zero-copy sends. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import atexit -import struct - -from os import getpid -from collections import namedtuple -from threading import Thread, Event, Lock -import warnings - -import zmq - - -gcref = namedtuple('gcref', ['obj', 'event']) - -class GarbageCollectorThread(Thread): - """Thread in which garbage collection actually happens.""" - def __init__(self, gc): - super(GarbageCollectorThread, self).__init__() - self.gc = gc - self.daemon = True - self.pid = getpid() - self.ready = Event() - - def run(self): - # detect fork at begining of the thread - if getpid is None or getpid() != self.pid: - self.ready.set() - return - try: - s = self.gc.context.socket(zmq.PULL) - s.linger = 0 - s.bind(self.gc.url) - finally: - self.ready.set() - - while True: - # detect fork - if getpid is None or getpid() != self.pid: - return - msg = s.recv() - if msg == b'DIE': - break - fmt = 'L' if len(msg) == 4 else 'Q' - key = struct.unpack(fmt, msg)[0] - tup = self.gc.refs.pop(key, None) - if tup and tup.event: - tup.event.set() - del tup - s.close() - - -class GarbageCollector(object): - """PyZMQ Garbage Collector - - Used for representing the reference held by libzmq during zero-copy sends. - This object holds a dictionary, keyed by Python id, - of the Python objects whose memory are currently in use by zeromq. - - When zeromq is done with the memory, it sends a message on an inproc PUSH socket - containing the packed size_t (32 or 64-bit unsigned int), - which is the key in the dict. - When the PULL socket in the gc thread receives that message, - the reference is popped from the dict, - and any tracker events that should be signaled fire. - """ - - refs = None - _context = None - _lock = None - url = "inproc://pyzmq.gc.01" - - def __init__(self, context=None): - super(GarbageCollector, self).__init__() - self.refs = {} - self.pid = None - self.thread = None - self._context = context - self._lock = Lock() - self._stay_down = False - atexit.register(self._atexit) - - @property - def context(self): - if self._context is None: - self._context = zmq.Context() - return self._context - - @context.setter - def context(self, ctx): - if self.is_alive(): - if self.refs: - warnings.warn("Replacing gc context while gc is running", RuntimeWarning) - self.stop() - self._context = ctx - - def _atexit(self): - """atexit callback - - sets _stay_down flag so that gc doesn't try to start up again in other atexit handlers - """ - self._stay_down = True - self.stop() - - def stop(self): - """stop the garbage-collection thread""" - if not self.is_alive(): - return - self._stop() - - def _stop(self): - push = self.context.socket(zmq.PUSH) - push.connect(self.url) - push.send(b'DIE') - push.close() - self.thread.join() - self.context.term() - self.refs.clear() - self.context = None - - def start(self): - """Start a new garbage collection thread. - - Creates a new zmq Context used for garbage collection. - Under most circumstances, this will only be called once per process. - """ - if self.thread is not None and self.pid != getpid(): - # It's re-starting, must free earlier thread's context - # since a fork probably broke it - self._stop() - self.pid = getpid() - self.refs = {} - self.thread = GarbageCollectorThread(self) - self.thread.start() - self.thread.ready.wait() - - def is_alive(self): - """Is the garbage collection thread currently running? - - Includes checks for process shutdown or fork. - """ - if (getpid is None or - getpid() != self.pid or - self.thread is None or - not self.thread.is_alive() - ): - return False - return True - - def store(self, obj, event=None): - """store an object and (optionally) event for zero-copy""" - if not self.is_alive(): - if self._stay_down: - return 0 - # safely start the gc thread - # use lock and double check, - # so we don't start multiple threads - with self._lock: - if not self.is_alive(): - self.start() - tup = gcref(obj, event) - theid = id(tup) - self.refs[theid] = tup - return theid - - def __del__(self): - if not self.is_alive(): - return - try: - self.stop() - except Exception as e: - raise (e) - -gc = GarbageCollector() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/getpid_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/getpid_compat.h deleted file mode 100644 index 47ce90fa..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/getpid_compat.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef _WIN32 - #include - #define getpid _getpid -#else - #include -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/interop.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/interop.py deleted file mode 100644 index 26c01969..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/interop.py +++ /dev/null @@ -1,33 +0,0 @@ -"""Utils for interoperability with other libraries. - -Just CFFI pointer casting for now. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -try: - long -except NameError: - long = int # Python 3 - - -def cast_int_addr(n): - """Cast an address to a Python int - - This could be a Python integer or a CFFI pointer - """ - if isinstance(n, (int, long)): - return n - try: - import cffi - except ImportError: - pass - else: - # from pyzmq, this is an FFI void * - ffi = cffi.FFI() - if isinstance(n, ffi.CData): - return int(ffi.cast("size_t", n)) - - raise ValueError("Cannot cast %r to int" % n) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/ipcmaxlen.h b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/ipcmaxlen.h deleted file mode 100644 index 7218db78..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/ipcmaxlen.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - -Platform-independant detection of IPC path max length - -Copyright (c) 2012 Godefroid Chapelle - -Distributed under the terms of the New BSD License. The full license is in -the file COPYING.BSD, distributed as part of this software. - */ - -#if defined(HAVE_SYS_UN_H) -#include "sys/un.h" -int get_ipc_path_max_len(void) { - struct sockaddr_un *dummy; - return sizeof(dummy->sun_path) - 1; -} -#else -int get_ipc_path_max_len(void) { - return 0; -} -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/jsonapi.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/jsonapi.py deleted file mode 100644 index 865ca6d5..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/jsonapi.py +++ /dev/null @@ -1,59 +0,0 @@ -"""Priority based json library imports. - -Always serializes to bytes instead of unicode for zeromq compatibility -on Python 2 and 3. - -Use ``jsonapi.loads()`` and ``jsonapi.dumps()`` for guaranteed symmetry. - -Priority: ``simplejson`` > ``jsonlib2`` > stdlib ``json`` - -``jsonapi.loads/dumps`` provide kwarg-compatibility with stdlib json. - -``jsonapi.jsonmod`` will be the module of the actual underlying implementation. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq.utils.strtypes import bytes, unicode - -jsonmod = None - -priority = ['simplejson', 'jsonlib2', 'json'] -for mod in priority: - try: - jsonmod = __import__(mod) - except ImportError: - pass - else: - break - -def dumps(o, **kwargs): - """Serialize object to JSON bytes (utf-8). - - See jsonapi.jsonmod.dumps for details on kwargs. - """ - - if 'separators' not in kwargs: - kwargs['separators'] = (',', ':') - - s = jsonmod.dumps(o, **kwargs) - - if isinstance(s, unicode): - s = s.encode('utf8') - - return s - -def loads(s, **kwargs): - """Load object from JSON bytes (utf-8). - - See jsonapi.jsonmod.loads for details on kwargs. - """ - - if str is unicode and isinstance(s, bytes): - s = s.decode('utf8') - - return jsonmod.loads(s, **kwargs) - -__all__ = ['jsonmod', 'dumps', 'loads'] - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/monitor.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/monitor.py deleted file mode 100644 index 734d54b1..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/monitor.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -"""Module holding utility and convenience functions for zmq event monitoring.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import struct -import zmq -from zmq.error import _check_version - -def parse_monitor_message(msg): - """decode zmq_monitor event messages. - - Parameters - ---------- - msg : list(bytes) - zmq multipart message that has arrived on a monitor PAIR socket. - - First frame is:: - - 16 bit event id - 32 bit event value - no padding - - Second frame is the endpoint as a bytestring - - Returns - ------- - event : dict - event description as dict with the keys `event`, `value`, and `endpoint`. - """ - - if len(msg) != 2 or len(msg[0]) != 6: - raise RuntimeError("Invalid event message format: %s" % msg) - event = {} - event['event'], event['value'] = struct.unpack("=hi", msg[0]) - event['endpoint'] = msg[1] - return event - -def recv_monitor_message(socket, flags=0): - """Receive and decode the given raw message from the monitoring socket and return a dict. - - Requires libzmq ≥ 4.0 - - The returned dict will have the following entries: - event : int, the event id as described in libzmq.zmq_socket_monitor - value : int, the event value associated with the event, see libzmq.zmq_socket_monitor - endpoint : string, the affected endpoint - - Parameters - ---------- - socket : zmq PAIR socket - The PAIR socket (created by other.get_monitor_socket()) on which to recv the message - flags : bitfield (int) - standard zmq recv flags - - Returns - ------- - event : dict - event description as dict with the keys `event`, `value`, and `endpoint`. - """ - _check_version((4,0), 'libzmq event API') - # will always return a list - msg = socket.recv_multipart(flags) - # 4.0-style event API - return parse_monitor_message(msg) - -__all__ = ['parse_monitor_message', 'recv_monitor_message'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/pyversion_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/pyversion_compat.h deleted file mode 100644 index fac09046..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/pyversion_compat.h +++ /dev/null @@ -1,25 +0,0 @@ -#include "Python.h" - -#if PY_VERSION_HEX < 0x02070000 - #define PyMemoryView_FromBuffer(info) (PyErr_SetString(PyExc_NotImplementedError, \ - "new buffer interface is not available"), (PyObject *)NULL) - #define PyMemoryView_FromObject(object) (PyErr_SetString(PyExc_NotImplementedError, \ - "new buffer interface is not available"), (PyObject *)NULL) -#endif - -#if PY_VERSION_HEX >= 0x03000000 - // for buffers - #define Py_END_OF_BUFFER ((Py_ssize_t) 0) - - #define PyObject_CheckReadBuffer(object) (0) - - #define PyBuffer_FromMemory(ptr, s) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - #define PyBuffer_FromReadWriteMemory(ptr, s) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - #define PyBuffer_FromObject(object, offset, size) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - #define PyBuffer_FromReadWriteObject(object, offset, size) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/sixcerpt.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/sixcerpt.py deleted file mode 100644 index 5492fd59..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/sixcerpt.py +++ /dev/null @@ -1,52 +0,0 @@ -"""Excerpts of six.py""" - -# Copyright (C) 2010-2014 Benjamin Peterson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -import sys - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 - -if PY3: - - def reraise(tp, value, tb=None): - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - - exec_("""def reraise(tp, value, tb=None): - raise tp, value, tb -""") diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/strtypes.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/strtypes.py deleted file mode 100644 index 548410dc..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/strtypes.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Declare basic string types unambiguously for various Python versions. - -Authors -------- -* MinRK -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys - -if sys.version_info[0] >= 3: - bytes = bytes - unicode = str - basestring = (bytes, unicode) -else: - unicode = unicode - bytes = str - basestring = basestring - -def cast_bytes(s, encoding='utf8', errors='strict'): - """cast unicode or bytes to bytes""" - if isinstance(s, bytes): - return s - elif isinstance(s, unicode): - return s.encode(encoding, errors) - else: - raise TypeError("Expected unicode or bytes, got %r" % s) - -def cast_unicode(s, encoding='utf8', errors='strict'): - """cast bytes or unicode to unicode""" - if isinstance(s, bytes): - return s.decode(encoding, errors) - elif isinstance(s, unicode): - return s - else: - raise TypeError("Expected unicode or bytes, got %r" % s) - -# give short 'b' alias for cast_bytes, so that we can use fake b('stuff') -# to simulate b'stuff' -b = asbytes = cast_bytes -u = cast_unicode - -__all__ = ['asbytes', 'bytes', 'unicode', 'basestring', 'b', 'u', 'cast_bytes', 'cast_unicode'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/win32.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/win32.py deleted file mode 100644 index ea758299..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/win32.py +++ /dev/null @@ -1,132 +0,0 @@ -"""Win32 compatibility utilities.""" - -#----------------------------------------------------------------------------- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. -#----------------------------------------------------------------------------- - -import os - -# No-op implementation for other platforms. -class _allow_interrupt(object): - """Utility for fixing CTRL-C events on Windows. - - On Windows, the Python interpreter intercepts CTRL-C events in order to - translate them into ``KeyboardInterrupt`` exceptions. It (presumably) - does this by setting a flag in its "control control handler" and - checking it later at a convenient location in the interpreter. - - However, when the Python interpreter is blocked waiting for the ZMQ - poll operation to complete, it must wait for ZMQ's ``select()`` - operation to complete before translating the CTRL-C event into the - ``KeyboardInterrupt`` exception. - - The only way to fix this seems to be to add our own "console control - handler" and perform some application-defined operation that will - unblock the ZMQ polling operation in order to force ZMQ to pass control - back to the Python interpreter. - - This context manager performs all that Windows-y stuff, providing you - with a hook that is called when a CTRL-C event is intercepted. This - hook allows you to unblock your ZMQ poll operation immediately, which - will then result in the expected ``KeyboardInterrupt`` exception. - - Without this context manager, your ZMQ-based application will not - respond normally to CTRL-C events on Windows. If a CTRL-C event occurs - while blocked on ZMQ socket polling, the translation to a - ``KeyboardInterrupt`` exception will be delayed until the I/O completes - and control returns to the Python interpreter (this may never happen if - you use an infinite timeout). - - A no-op implementation is provided on non-Win32 systems to avoid the - application from having to conditionally use it. - - Example usage: - - .. sourcecode:: python - - def stop_my_application(): - # ... - - with allow_interrupt(stop_my_application): - # main polling loop. - - In a typical ZMQ application, you would use the "self pipe trick" to - send message to a ``PAIR`` socket in order to interrupt your blocking - socket polling operation. - - In a Tornado event loop, you can use the ``IOLoop.stop`` method to - unblock your I/O loop. - """ - - def __init__(self, action=None): - """Translate ``action`` into a CTRL-C handler. - - ``action`` is a callable that takes no arguments and returns no - value (returned value is ignored). It must *NEVER* raise an - exception. - - If unspecified, a no-op will be used. - """ - self._init_action(action) - - def _init_action(self, action): - pass - - def __enter__(self): - return self - - def __exit__(self, *args): - return - -if os.name == 'nt': - from ctypes import WINFUNCTYPE, windll - from ctypes.wintypes import BOOL, DWORD - - kernel32 = windll.LoadLibrary('kernel32') - - # - PHANDLER_ROUTINE = WINFUNCTYPE(BOOL, DWORD) - SetConsoleCtrlHandler = kernel32.SetConsoleCtrlHandler - SetConsoleCtrlHandler.argtypes = (PHANDLER_ROUTINE, BOOL) - SetConsoleCtrlHandler.restype = BOOL - - class allow_interrupt(_allow_interrupt): - __doc__ = _allow_interrupt.__doc__ - - def _init_action(self, action): - if action is None: - action = lambda: None - self.action = action - @PHANDLER_ROUTINE - def handle(event): - if event == 0: # CTRL_C_EVENT - action() - # Typical C implementations would return 1 to indicate that - # the event was processed and other control handlers in the - # stack should not be executed. However, that would - # prevent the Python interpreter's handler from translating - # CTRL-C to a `KeyboardInterrupt` exception, so we pretend - # that we didn't handle it. - return 0 - self.handle = handle - - def __enter__(self): - """Install the custom CTRL-C handler.""" - result = SetConsoleCtrlHandler(self.handle, 1) - if result == 0: - # Have standard library automatically call `GetLastError()` and - # `FormatMessage()` into a nice exception object :-) - raise WindowsError() - - def __exit__(self, *args): - """Remove the custom CTRL-C handler.""" - result = SetConsoleCtrlHandler(self.handle, 0) - if result == 0: - # Have standard library automatically call `GetLastError()` and - # `FormatMessage()` into a nice exception object :-) - raise WindowsError() -else: - class allow_interrupt(_allow_interrupt): - __doc__ = _allow_interrupt.__doc__ - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/z85.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/z85.py deleted file mode 100644 index 1bb1784e..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/z85.py +++ /dev/null @@ -1,56 +0,0 @@ -"""Python implementation of Z85 85-bit encoding - -Z85 encoding is a plaintext encoding for a bytestring interpreted as 32bit integers. -Since the chunks are 32bit, a bytestring must be a multiple of 4 bytes. -See ZMQ RFC 32 for details. - - -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys -import struct - -PY3 = sys.version_info[0] >= 3 -# Z85CHARS is the base 85 symbol table -Z85CHARS = b"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#" -# Z85MAP maps integers in [0,84] to the appropriate character in Z85CHARS -Z85MAP = dict([(c, idx) for idx, c in enumerate(Z85CHARS)]) - -_85s = [ 85**i for i in range(5) ][::-1] - -def encode(rawbytes): - """encode raw bytes into Z85""" - # Accepts only byte arrays bounded to 4 bytes - if len(rawbytes) % 4: - raise ValueError("length must be multiple of 4, not %i" % len(rawbytes)) - - nvalues = len(rawbytes) / 4 - - values = struct.unpack('>%dI' % nvalues, rawbytes) - encoded = [] - for v in values: - for offset in _85s: - encoded.append(Z85CHARS[(v // offset) % 85]) - - # In Python 3, encoded is a list of integers (obviously?!) - if PY3: - return bytes(encoded) - else: - return b''.join(encoded) - -def decode(z85bytes): - """decode Z85 bytes to raw bytes""" - if len(z85bytes) % 5: - raise ValueError("Z85 length must be multiple of 5, not %i" % len(z85bytes)) - - nvalues = len(z85bytes) / 5 - values = [] - for i in range(0, len(z85bytes), 5): - value = 0 - for j, offset in enumerate(_85s): - value += Z85MAP[z85bytes[i+j]] * offset - values.append(value) - return struct.pack('>%dI' % nvalues, *values) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_compat.h deleted file mode 100644 index 81c57b69..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_compat.h +++ /dev/null @@ -1,80 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (c) 2010 Brian Granger, Min Ragan-Kelley -// -// Distributed under the terms of the New BSD License. The full license is in -// the file COPYING.BSD, distributed as part of this software. -//----------------------------------------------------------------------------- - -#if defined(_MSC_VER) -#define pyzmq_int64_t __int64 -#else -#include -#define pyzmq_int64_t int64_t -#endif - - -#include "zmq.h" -// version compatibility for constants: -#include "zmq_constants.h" - -#define _missing (-1) - - -// define fd type (from libzmq's fd.hpp) -#ifdef _WIN32 - #ifdef _MSC_VER && _MSC_VER <= 1400 - #define ZMQ_FD_T UINT_PTR - #else - #define ZMQ_FD_T SOCKET - #endif -#else - #define ZMQ_FD_T int -#endif - -// use unambiguous aliases for zmq_send/recv functions - -#if ZMQ_VERSION_MAJOR >= 4 -// nothing to remove -#else - #define zmq_curve_keypair(z85_public_key, z85_secret_key) _missing -#endif - -#if ZMQ_VERSION_MAJOR >= 4 && ZMQ_VERSION_MINOR >= 1 -// nothing to remove -#else - #define zmq_msg_gets(msg, prop) _missing - #define zmq_has(capability) _missing -#endif - -#if ZMQ_VERSION_MAJOR >= 3 - #define zmq_sendbuf zmq_send - #define zmq_recvbuf zmq_recv - - // 3.x deprecations - these symbols haven't been removed, - // but let's protect against their planned removal - #define zmq_device(device_type, isocket, osocket) _missing - #define zmq_init(io_threads) ((void*)NULL) - #define zmq_term zmq_ctx_destroy -#else - #define zmq_ctx_set(ctx, opt, val) _missing - #define zmq_ctx_get(ctx, opt) _missing - #define zmq_ctx_destroy zmq_term - #define zmq_ctx_new() ((void*)NULL) - - #define zmq_proxy(a,b,c) _missing - - #define zmq_disconnect(s, addr) _missing - #define zmq_unbind(s, addr) _missing - - #define zmq_msg_more(msg) _missing - #define zmq_msg_get(msg, opt) _missing - #define zmq_msg_set(msg, opt, val) _missing - #define zmq_msg_send(msg, s, flags) zmq_send(s, msg, flags) - #define zmq_msg_recv(msg, s, flags) zmq_recv(s, msg, flags) - - #define zmq_sendbuf(s, buf, len, flags) _missing - #define zmq_recvbuf(s, buf, len, flags) _missing - - #define zmq_socket_monitor(s, addr, flags) _missing - -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_constants.h b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_constants.h deleted file mode 100644 index 97683022..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/utils/zmq_constants.h +++ /dev/null @@ -1,622 +0,0 @@ -#ifndef _PYZMQ_CONSTANT_DEFS -#define _PYZMQ_CONSTANT_DEFS - -#define _PYZMQ_UNDEFINED (-9999) -#ifndef ZMQ_VERSION - #define ZMQ_VERSION (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_VERSION_MAJOR - #define ZMQ_VERSION_MAJOR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_VERSION_MINOR - #define ZMQ_VERSION_MINOR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_VERSION_PATCH - #define ZMQ_VERSION_PATCH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_NOBLOCK - #define ZMQ_NOBLOCK (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DONTWAIT - #define ZMQ_DONTWAIT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLIN - #define ZMQ_POLLIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLOUT - #define ZMQ_POLLOUT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLERR - #define ZMQ_POLLERR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDMORE - #define ZMQ_SNDMORE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_STREAMER - #define ZMQ_STREAMER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_FORWARDER - #define ZMQ_FORWARDER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_QUEUE - #define ZMQ_QUEUE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IO_THREADS_DFLT - #define ZMQ_IO_THREADS_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MAX_SOCKETS_DFLT - #define ZMQ_MAX_SOCKETS_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLITEMS_DFLT - #define ZMQ_POLLITEMS_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_PRIORITY_DFLT - #define ZMQ_THREAD_PRIORITY_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_SCHED_POLICY_DFLT - #define ZMQ_THREAD_SCHED_POLICY_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PAIR - #define ZMQ_PAIR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PUB - #define ZMQ_PUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SUB - #define ZMQ_SUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REQ - #define ZMQ_REQ (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REP - #define ZMQ_REP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DEALER - #define ZMQ_DEALER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER - #define ZMQ_ROUTER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XREQ - #define ZMQ_XREQ (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XREP - #define ZMQ_XREP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PULL - #define ZMQ_PULL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PUSH - #define ZMQ_PUSH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XPUB - #define ZMQ_XPUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XSUB - #define ZMQ_XSUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_UPSTREAM - #define ZMQ_UPSTREAM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DOWNSTREAM - #define ZMQ_DOWNSTREAM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_STREAM - #define ZMQ_STREAM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CONNECTED - #define ZMQ_EVENT_CONNECTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CONNECT_DELAYED - #define ZMQ_EVENT_CONNECT_DELAYED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CONNECT_RETRIED - #define ZMQ_EVENT_CONNECT_RETRIED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_LISTENING - #define ZMQ_EVENT_LISTENING (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_BIND_FAILED - #define ZMQ_EVENT_BIND_FAILED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_ACCEPTED - #define ZMQ_EVENT_ACCEPTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_ACCEPT_FAILED - #define ZMQ_EVENT_ACCEPT_FAILED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CLOSED - #define ZMQ_EVENT_CLOSED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CLOSE_FAILED - #define ZMQ_EVENT_CLOSE_FAILED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_DISCONNECTED - #define ZMQ_EVENT_DISCONNECTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_ALL - #define ZMQ_EVENT_ALL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_MONITOR_STOPPED - #define ZMQ_EVENT_MONITOR_STOPPED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_NULL - #define ZMQ_NULL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN - #define ZMQ_PLAIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE - #define ZMQ_CURVE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI - #define ZMQ_GSSAPI (_PYZMQ_UNDEFINED) -#endif - -#ifndef EAGAIN - #define EAGAIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef EINVAL - #define EINVAL (_PYZMQ_UNDEFINED) -#endif - -#ifndef EFAULT - #define EFAULT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOMEM - #define ENOMEM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENODEV - #define ENODEV (_PYZMQ_UNDEFINED) -#endif - -#ifndef EMSGSIZE - #define EMSGSIZE (_PYZMQ_UNDEFINED) -#endif - -#ifndef EAFNOSUPPORT - #define EAFNOSUPPORT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENETUNREACH - #define ENETUNREACH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ECONNABORTED - #define ECONNABORTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ECONNRESET - #define ECONNRESET (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOTCONN - #define ENOTCONN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ETIMEDOUT - #define ETIMEDOUT (_PYZMQ_UNDEFINED) -#endif - -#ifndef EHOSTUNREACH - #define EHOSTUNREACH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENETRESET - #define ENETRESET (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_HAUSNUMERO - #define ZMQ_HAUSNUMERO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOTSUP - #define ENOTSUP (_PYZMQ_UNDEFINED) -#endif - -#ifndef EPROTONOSUPPORT - #define EPROTONOSUPPORT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOBUFS - #define ENOBUFS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENETDOWN - #define ENETDOWN (_PYZMQ_UNDEFINED) -#endif - -#ifndef EADDRINUSE - #define EADDRINUSE (_PYZMQ_UNDEFINED) -#endif - -#ifndef EADDRNOTAVAIL - #define EADDRNOTAVAIL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ECONNREFUSED - #define ECONNREFUSED (_PYZMQ_UNDEFINED) -#endif - -#ifndef EINPROGRESS - #define EINPROGRESS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOTSOCK - #define ENOTSOCK (_PYZMQ_UNDEFINED) -#endif - -#ifndef EFSM - #define EFSM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOCOMPATPROTO - #define ENOCOMPATPROTO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ETERM - #define ETERM (_PYZMQ_UNDEFINED) -#endif - -#ifndef EMTHREAD - #define EMTHREAD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IO_THREADS - #define ZMQ_IO_THREADS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MAX_SOCKETS - #define ZMQ_MAX_SOCKETS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SOCKET_LIMIT - #define ZMQ_SOCKET_LIMIT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_PRIORITY - #define ZMQ_THREAD_PRIORITY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_SCHED_POLICY - #define ZMQ_THREAD_SCHED_POLICY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IDENTITY - #define ZMQ_IDENTITY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SUBSCRIBE - #define ZMQ_SUBSCRIBE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_UNSUBSCRIBE - #define ZMQ_UNSUBSCRIBE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_LAST_ENDPOINT - #define ZMQ_LAST_ENDPOINT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_ACCEPT_FILTER - #define ZMQ_TCP_ACCEPT_FILTER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN_USERNAME - #define ZMQ_PLAIN_USERNAME (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN_PASSWORD - #define ZMQ_PLAIN_PASSWORD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_PUBLICKEY - #define ZMQ_CURVE_PUBLICKEY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_SECRETKEY - #define ZMQ_CURVE_SECRETKEY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_SERVERKEY - #define ZMQ_CURVE_SERVERKEY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ZAP_DOMAIN - #define ZMQ_ZAP_DOMAIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CONNECT_RID - #define ZMQ_CONNECT_RID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_PRINCIPAL - #define ZMQ_GSSAPI_PRINCIPAL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_SERVICE_PRINCIPAL - #define ZMQ_GSSAPI_SERVICE_PRINCIPAL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SOCKS_PROXY - #define ZMQ_SOCKS_PROXY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_FD - #define ZMQ_FD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IDENTITY_FD - #define ZMQ_IDENTITY_FD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECONNECT_IVL_MAX - #define ZMQ_RECONNECT_IVL_MAX (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDTIMEO - #define ZMQ_SNDTIMEO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVTIMEO - #define ZMQ_RCVTIMEO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDHWM - #define ZMQ_SNDHWM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVHWM - #define ZMQ_RCVHWM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MULTICAST_HOPS - #define ZMQ_MULTICAST_HOPS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPV4ONLY - #define ZMQ_IPV4ONLY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_BEHAVIOR - #define ZMQ_ROUTER_BEHAVIOR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE - #define ZMQ_TCP_KEEPALIVE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE_CNT - #define ZMQ_TCP_KEEPALIVE_CNT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE_IDLE - #define ZMQ_TCP_KEEPALIVE_IDLE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE_INTVL - #define ZMQ_TCP_KEEPALIVE_INTVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DELAY_ATTACH_ON_CONNECT - #define ZMQ_DELAY_ATTACH_ON_CONNECT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XPUB_VERBOSE - #define ZMQ_XPUB_VERBOSE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENTS - #define ZMQ_EVENTS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TYPE - #define ZMQ_TYPE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_LINGER - #define ZMQ_LINGER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECONNECT_IVL - #define ZMQ_RECONNECT_IVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_BACKLOG - #define ZMQ_BACKLOG (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_MANDATORY - #define ZMQ_ROUTER_MANDATORY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_FAIL_UNROUTABLE - #define ZMQ_FAIL_UNROUTABLE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_RAW - #define ZMQ_ROUTER_RAW (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IMMEDIATE - #define ZMQ_IMMEDIATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPV6 - #define ZMQ_IPV6 (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MECHANISM - #define ZMQ_MECHANISM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN_SERVER - #define ZMQ_PLAIN_SERVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_SERVER - #define ZMQ_CURVE_SERVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PROBE_ROUTER - #define ZMQ_PROBE_ROUTER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REQ_RELAXED - #define ZMQ_REQ_RELAXED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REQ_CORRELATE - #define ZMQ_REQ_CORRELATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CONFLATE - #define ZMQ_CONFLATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_HANDOVER - #define ZMQ_ROUTER_HANDOVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TOS - #define ZMQ_TOS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPC_FILTER_PID - #define ZMQ_IPC_FILTER_PID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPC_FILTER_UID - #define ZMQ_IPC_FILTER_UID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPC_FILTER_GID - #define ZMQ_IPC_FILTER_GID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_SERVER - #define ZMQ_GSSAPI_SERVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_PLAINTEXT - #define ZMQ_GSSAPI_PLAINTEXT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_HANDSHAKE_IVL - #define ZMQ_HANDSHAKE_IVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XPUB_NODROP - #define ZMQ_XPUB_NODROP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_AFFINITY - #define ZMQ_AFFINITY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MAXMSGSIZE - #define ZMQ_MAXMSGSIZE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_HWM - #define ZMQ_HWM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SWAP - #define ZMQ_SWAP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MCAST_LOOP - #define ZMQ_MCAST_LOOP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECOVERY_IVL_MSEC - #define ZMQ_RECOVERY_IVL_MSEC (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RATE - #define ZMQ_RATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECOVERY_IVL - #define ZMQ_RECOVERY_IVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDBUF - #define ZMQ_SNDBUF (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVBUF - #define ZMQ_RCVBUF (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVMORE - #define ZMQ_RCVMORE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MORE - #define ZMQ_MORE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SRCFD - #define ZMQ_SRCFD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SHARED - #define ZMQ_SHARED (_PYZMQ_UNDEFINED) -#endif - - -#endif // ifndef _PYZMQ_CONSTANT_DEFS diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/__init__.py deleted file mode 100644 index 3408b3ba..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/__init__.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Python bindings for 0MQ.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import os -import sys -import glob - -# load bundled libzmq, if there is one: - -here = os.path.dirname(__file__) - -bundled = [] -bundled_sodium = [] -for ext in ('pyd', 'so', 'dll', 'dylib'): - bundled_sodium.extend(glob.glob(os.path.join(here, 'libsodium*.%s*' % ext))) - bundled.extend(glob.glob(os.path.join(here, 'libzmq*.%s*' % ext))) - -if bundled: - import ctypes - if bundled_sodium: - if bundled[0].endswith('.pyd'): - # a Windows Extension - _libsodium = ctypes.cdll.LoadLibrary(bundled_sodium[0]) - else: - _libsodium = ctypes.CDLL(bundled_sodium[0], mode=ctypes.RTLD_GLOBAL) - if bundled[0].endswith('.pyd'): - # a Windows Extension - _libzmq = ctypes.cdll.LoadLibrary(bundled[0]) - else: - _libzmq = ctypes.CDLL(bundled[0], mode=ctypes.RTLD_GLOBAL) - del ctypes -else: - import zipimport - try: - if isinstance(__loader__, zipimport.zipimporter): - # a zipped pyzmq egg - from zmq import libzmq as _libzmq - except (NameError, ImportError): - pass - finally: - del zipimport - -del os, sys, glob, here, bundled, bundled_sodium, ext - -# zmq top-level imports - -from zmq import backend -from zmq.backend import * -from zmq import sugar -from zmq.sugar import * -from zmq import devices - -def get_includes(): - """Return a list of directories to include for linking against pyzmq with cython.""" - from os.path import join, dirname, abspath, pardir - base = dirname(__file__) - parent = abspath(join(base, pardir)) - return [ parent ] + [ join(parent, base, subdir) for subdir in ('utils',) ] - - -__all__ = ['get_includes'] + sugar.__all__ + backend.__all__ - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/__init__.py deleted file mode 100644 index 11d3ad6b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Utilities for ZAP authentication. - -To run authentication in a background thread, see :mod:`zmq.auth.thread`. -For integration with the tornado eventloop, see :mod:`zmq.auth.ioloop`. - -.. versionadded:: 14.1 -""" - -from .base import * -from .certs import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/base.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/base.py deleted file mode 100644 index 9b4aaed7..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/base.py +++ /dev/null @@ -1,272 +0,0 @@ -"""Base implementation of 0MQ authentication.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import logging - -import zmq -from zmq.utils import z85 -from zmq.utils.strtypes import bytes, unicode, b, u -from zmq.error import _check_version - -from .certs import load_certificates - - -CURVE_ALLOW_ANY = '*' -VERSION = b'1.0' - -class Authenticator(object): - """Implementation of ZAP authentication for zmq connections. - - Note: - - libzmq provides four levels of security: default NULL (which the Authenticator does - not see), and authenticated NULL, PLAIN, and CURVE, which the Authenticator can see. - - until you add policies, all incoming NULL connections are allowed - (classic ZeroMQ behavior), and all PLAIN and CURVE connections are denied. - """ - - def __init__(self, context=None, encoding='utf-8', log=None): - _check_version((4,0), "security") - self.context = context or zmq.Context.instance() - self.encoding = encoding - self.allow_any = False - self.zap_socket = None - self.whitelist = set() - self.blacklist = set() - # passwords is a dict keyed by domain and contains values - # of dicts with username:password pairs. - self.passwords = {} - # certs is dict keyed by domain and contains values - # of dicts keyed by the public keys from the specified location. - self.certs = {} - self.log = log or logging.getLogger('zmq.auth') - - def start(self): - """Create and bind the ZAP socket""" - self.zap_socket = self.context.socket(zmq.REP) - self.zap_socket.linger = 1 - self.zap_socket.bind("inproc://zeromq.zap.01") - - def stop(self): - """Close the ZAP socket""" - if self.zap_socket: - self.zap_socket.close() - self.zap_socket = None - - def allow(self, *addresses): - """Allow (whitelist) IP address(es). - - Connections from addresses not in the whitelist will be rejected. - - - For NULL, all clients from this address will be accepted. - - For PLAIN and CURVE, they will be allowed to continue with authentication. - - whitelist is mutually exclusive with blacklist. - """ - if self.blacklist: - raise ValueError("Only use a whitelist or a blacklist, not both") - self.whitelist.update(addresses) - - def deny(self, *addresses): - """Deny (blacklist) IP address(es). - - Addresses not in the blacklist will be allowed to continue with authentication. - - Blacklist is mutually exclusive with whitelist. - """ - if self.whitelist: - raise ValueError("Only use a whitelist or a blacklist, not both") - self.blacklist.update(addresses) - - def configure_plain(self, domain='*', passwords=None): - """Configure PLAIN authentication for a given domain. - - PLAIN authentication uses a plain-text password file. - To cover all domains, use "*". - You can modify the password file at any time; it is reloaded automatically. - """ - if passwords: - self.passwords[domain] = passwords - - def configure_curve(self, domain='*', location=None): - """Configure CURVE authentication for a given domain. - - CURVE authentication uses a directory that holds all public client certificates, - i.e. their public keys. - - To cover all domains, use "*". - - You can add and remove certificates in that directory at any time. - - To allow all client keys without checking, specify CURVE_ALLOW_ANY for the location. - """ - # If location is CURVE_ALLOW_ANY then allow all clients. Otherwise - # treat location as a directory that holds the certificates. - if location == CURVE_ALLOW_ANY: - self.allow_any = True - else: - self.allow_any = False - try: - self.certs[domain] = load_certificates(location) - except Exception as e: - self.log.error("Failed to load CURVE certs from %s: %s", location, e) - - def handle_zap_message(self, msg): - """Perform ZAP authentication""" - if len(msg) < 6: - self.log.error("Invalid ZAP message, not enough frames: %r", msg) - if len(msg) < 2: - self.log.error("Not enough information to reply") - else: - self._send_zap_reply(msg[1], b"400", b"Not enough frames") - return - - version, request_id, domain, address, identity, mechanism = msg[:6] - credentials = msg[6:] - - domain = u(domain, self.encoding, 'replace') - address = u(address, self.encoding, 'replace') - - if (version != VERSION): - self.log.error("Invalid ZAP version: %r", msg) - self._send_zap_reply(request_id, b"400", b"Invalid version") - return - - self.log.debug("version: %r, request_id: %r, domain: %r," - " address: %r, identity: %r, mechanism: %r", - version, request_id, domain, - address, identity, mechanism, - ) - - - # Is address is explicitly whitelisted or blacklisted? - allowed = False - denied = False - reason = b"NO ACCESS" - - if self.whitelist: - if address in self.whitelist: - allowed = True - self.log.debug("PASSED (whitelist) address=%s", address) - else: - denied = True - reason = b"Address not in whitelist" - self.log.debug("DENIED (not in whitelist) address=%s", address) - - elif self.blacklist: - if address in self.blacklist: - denied = True - reason = b"Address is blacklisted" - self.log.debug("DENIED (blacklist) address=%s", address) - else: - allowed = True - self.log.debug("PASSED (not in blacklist) address=%s", address) - - # Perform authentication mechanism-specific checks if necessary - username = u("user") - if not denied: - - if mechanism == b'NULL' and not allowed: - # For NULL, we allow if the address wasn't blacklisted - self.log.debug("ALLOWED (NULL)") - allowed = True - - elif mechanism == b'PLAIN': - # For PLAIN, even a whitelisted address must authenticate - if len(credentials) != 2: - self.log.error("Invalid PLAIN credentials: %r", credentials) - self._send_zap_reply(request_id, b"400", b"Invalid credentials") - return - username, password = [ u(c, self.encoding, 'replace') for c in credentials ] - allowed, reason = self._authenticate_plain(domain, username, password) - - elif mechanism == b'CURVE': - # For CURVE, even a whitelisted address must authenticate - if len(credentials) != 1: - self.log.error("Invalid CURVE credentials: %r", credentials) - self._send_zap_reply(request_id, b"400", b"Invalid credentials") - return - key = credentials[0] - allowed, reason = self._authenticate_curve(domain, key) - - if allowed: - self._send_zap_reply(request_id, b"200", b"OK", username) - else: - self._send_zap_reply(request_id, b"400", reason) - - def _authenticate_plain(self, domain, username, password): - """PLAIN ZAP authentication""" - allowed = False - reason = b"" - if self.passwords: - # If no domain is not specified then use the default domain - if not domain: - domain = '*' - - if domain in self.passwords: - if username in self.passwords[domain]: - if password == self.passwords[domain][username]: - allowed = True - else: - reason = b"Invalid password" - else: - reason = b"Invalid username" - else: - reason = b"Invalid domain" - - if allowed: - self.log.debug("ALLOWED (PLAIN) domain=%s username=%s password=%s", - domain, username, password, - ) - else: - self.log.debug("DENIED %s", reason) - - else: - reason = b"No passwords defined" - self.log.debug("DENIED (PLAIN) %s", reason) - - return allowed, reason - - def _authenticate_curve(self, domain, client_key): - """CURVE ZAP authentication""" - allowed = False - reason = b"" - if self.allow_any: - allowed = True - reason = b"OK" - self.log.debug("ALLOWED (CURVE allow any client)") - else: - # If no explicit domain is specified then use the default domain - if not domain: - domain = '*' - - if domain in self.certs: - # The certs dict stores keys in z85 format, convert binary key to z85 bytes - z85_client_key = z85.encode(client_key) - if z85_client_key in self.certs[domain] or self.certs[domain] == b'OK': - allowed = True - reason = b"OK" - else: - reason = b"Unknown key" - - status = "ALLOWED" if allowed else "DENIED" - self.log.debug("%s (CURVE) domain=%s client_key=%s", - status, domain, z85_client_key, - ) - else: - reason = b"Unknown domain" - - return allowed, reason - - def _send_zap_reply(self, request_id, status_code, status_text, user_id='user'): - """Send a ZAP reply to finish the authentication.""" - user_id = user_id if status_code == b'200' else b'' - if isinstance(user_id, unicode): - user_id = user_id.encode(self.encoding, 'replace') - metadata = b'' # not currently used - self.log.debug("ZAP reply code=%s text=%s", status_code, status_text) - reply = [VERSION, request_id, status_code, status_text, user_id, metadata] - self.zap_socket.send_multipart(reply) - -__all__ = ['Authenticator', 'CURVE_ALLOW_ANY'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/certs.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/certs.py deleted file mode 100644 index 4d26ad7b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/certs.py +++ /dev/null @@ -1,119 +0,0 @@ -"""0MQ authentication related functions and classes.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import datetime -import glob -import io -import os -import zmq -from zmq.utils.strtypes import bytes, unicode, b, u - - -_cert_secret_banner = u("""# **** Generated on {0} by pyzmq **** -# ZeroMQ CURVE **Secret** Certificate -# DO NOT PROVIDE THIS FILE TO OTHER USERS nor change its permissions. - -""") - -_cert_public_banner = u("""# **** Generated on {0} by pyzmq **** -# ZeroMQ CURVE Public Certificate -# Exchange securely, or use a secure mechanism to verify the contents -# of this file after exchange. Store public certificates in your home -# directory, in the .curve subdirectory. - -""") - -def _write_key_file(key_filename, banner, public_key, secret_key=None, metadata=None, encoding='utf-8'): - """Create a certificate file""" - if isinstance(public_key, bytes): - public_key = public_key.decode(encoding) - if isinstance(secret_key, bytes): - secret_key = secret_key.decode(encoding) - with io.open(key_filename, 'w', encoding='utf8') as f: - f.write(banner.format(datetime.datetime.now())) - - f.write(u('metadata\n')) - if metadata: - for k, v in metadata.items(): - if isinstance(v, bytes): - v = v.decode(encoding) - f.write(u(" {0} = {1}\n").format(k, v)) - - f.write(u('curve\n')) - f.write(u(" public-key = \"{0}\"\n").format(public_key)) - - if secret_key: - f.write(u(" secret-key = \"{0}\"\n").format(secret_key)) - - -def create_certificates(key_dir, name, metadata=None): - """Create zmq certificates. - - Returns the file paths to the public and secret certificate files. - """ - public_key, secret_key = zmq.curve_keypair() - base_filename = os.path.join(key_dir, name) - secret_key_file = "{0}.key_secret".format(base_filename) - public_key_file = "{0}.key".format(base_filename) - now = datetime.datetime.now() - - _write_key_file(public_key_file, - _cert_public_banner.format(now), - public_key) - - _write_key_file(secret_key_file, - _cert_secret_banner.format(now), - public_key, - secret_key=secret_key, - metadata=metadata) - - return public_key_file, secret_key_file - - -def load_certificate(filename): - """Load public and secret key from a zmq certificate. - - Returns (public_key, secret_key) - - If the certificate file only contains the public key, - secret_key will be None. - """ - public_key = None - secret_key = None - if not os.path.exists(filename): - raise IOError("Invalid certificate file: {0}".format(filename)) - - with open(filename, 'rb') as f: - for line in f: - line = line.strip() - if line.startswith(b'#'): - continue - if line.startswith(b'public-key'): - public_key = line.split(b"=", 1)[1].strip(b' \t\'"') - if line.startswith(b'secret-key'): - secret_key = line.split(b"=", 1)[1].strip(b' \t\'"') - if public_key and secret_key: - break - - return public_key, secret_key - - -def load_certificates(directory='.'): - """Load public keys from all certificates in a directory""" - certs = {} - if not os.path.isdir(directory): - raise IOError("Invalid certificate directory: {0}".format(directory)) - # Follow czmq pattern of public keys stored in *.key files. - glob_string = os.path.join(directory, "*.key") - - cert_files = glob.glob(glob_string) - for cert_file in cert_files: - public_key, _ = load_certificate(cert_file) - if public_key: - certs[public_key] = 'OK' - return certs - -__all__ = ['create_certificates', 'load_certificate', 'load_certificates'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/ioloop.py deleted file mode 100644 index 1f448b47..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/ioloop.py +++ /dev/null @@ -1,34 +0,0 @@ -"""ZAP Authenticator integrated with the tornado IOLoop. - -.. versionadded:: 14.1 -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq.eventloop import ioloop, zmqstream -from .base import Authenticator - - -class IOLoopAuthenticator(Authenticator): - """ZAP authentication for use in the tornado IOLoop""" - - def __init__(self, context=None, encoding='utf-8', log=None, io_loop=None): - super(IOLoopAuthenticator, self).__init__(context) - self.zap_stream = None - self.io_loop = io_loop or ioloop.IOLoop.instance() - - def start(self): - """Start ZAP authentication""" - super(IOLoopAuthenticator, self).start() - self.zap_stream = zmqstream.ZMQStream(self.zap_socket, self.io_loop) - self.zap_stream.on_recv(self.handle_zap_message) - - def stop(self): - """Stop ZAP authentication""" - if self.zap_stream: - self.zap_stream.close() - self.zap_stream = None - super(IOLoopAuthenticator, self).stop() - -__all__ = ['IOLoopAuthenticator'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/thread.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/thread.py deleted file mode 100644 index 8c3355a9..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/auth/thread.py +++ /dev/null @@ -1,184 +0,0 @@ -"""ZAP Authenticator in a Python Thread. - -.. versionadded:: 14.1 -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import logging -from threading import Thread - -import zmq -from zmq.utils import jsonapi -from zmq.utils.strtypes import bytes, unicode, b, u - -from .base import Authenticator - -class AuthenticationThread(Thread): - """A Thread for running a zmq Authenticator - - This is run in the background by ThreadedAuthenticator - """ - - def __init__(self, context, endpoint, encoding='utf-8', log=None): - super(AuthenticationThread, self).__init__() - self.context = context or zmq.Context.instance() - self.encoding = encoding - self.log = log = log or logging.getLogger('zmq.auth') - self.authenticator = Authenticator(context, encoding=encoding, log=log) - - # create a socket to communicate back to main thread. - self.pipe = context.socket(zmq.PAIR) - self.pipe.linger = 1 - self.pipe.connect(endpoint) - - def run(self): - """ Start the Authentication Agent thread task """ - self.authenticator.start() - zap = self.authenticator.zap_socket - poller = zmq.Poller() - poller.register(self.pipe, zmq.POLLIN) - poller.register(zap, zmq.POLLIN) - while True: - try: - socks = dict(poller.poll()) - except zmq.ZMQError: - break # interrupted - - if self.pipe in socks and socks[self.pipe] == zmq.POLLIN: - terminate = self._handle_pipe() - if terminate: - break - - if zap in socks and socks[zap] == zmq.POLLIN: - self._handle_zap() - - self.pipe.close() - self.authenticator.stop() - - def _handle_zap(self): - """ - Handle a message from the ZAP socket. - """ - msg = self.authenticator.zap_socket.recv_multipart() - if not msg: return - self.authenticator.handle_zap_message(msg) - - def _handle_pipe(self): - """ - Handle a message from front-end API. - """ - terminate = False - - # Get the whole message off the pipe in one go - msg = self.pipe.recv_multipart() - - if msg is None: - terminate = True - return terminate - - command = msg[0] - self.log.debug("auth received API command %r", command) - - if command == b'ALLOW': - addresses = [u(m, self.encoding) for m in msg[1:]] - try: - self.authenticator.allow(*addresses) - except Exception as e: - self.log.exception("Failed to allow %s", addresses) - - elif command == b'DENY': - addresses = [u(m, self.encoding) for m in msg[1:]] - try: - self.authenticator.deny(*addresses) - except Exception as e: - self.log.exception("Failed to deny %s", addresses) - - elif command == b'PLAIN': - domain = u(msg[1], self.encoding) - json_passwords = msg[2] - self.authenticator.configure_plain(domain, jsonapi.loads(json_passwords)) - - elif command == b'CURVE': - # For now we don't do anything with domains - domain = u(msg[1], self.encoding) - - # If location is CURVE_ALLOW_ANY, allow all clients. Otherwise - # treat location as a directory that holds the certificates. - location = u(msg[2], self.encoding) - self.authenticator.configure_curve(domain, location) - - elif command == b'TERMINATE': - terminate = True - - else: - self.log.error("Invalid auth command from API: %r", command) - - return terminate - -def _inherit_docstrings(cls): - """inherit docstrings from Authenticator, so we don't duplicate them""" - for name, method in cls.__dict__.items(): - if name.startswith('_'): - continue - upstream_method = getattr(Authenticator, name, None) - if not method.__doc__: - method.__doc__ = upstream_method.__doc__ - return cls - -@_inherit_docstrings -class ThreadAuthenticator(object): - """Run ZAP authentication in a background thread""" - - def __init__(self, context=None, encoding='utf-8', log=None): - self.context = context or zmq.Context.instance() - self.log = log - self.encoding = encoding - self.pipe = None - self.pipe_endpoint = "inproc://{0}.inproc".format(id(self)) - self.thread = None - - def allow(self, *addresses): - self.pipe.send_multipart([b'ALLOW'] + [b(a, self.encoding) for a in addresses]) - - def deny(self, *addresses): - self.pipe.send_multipart([b'DENY'] + [b(a, self.encoding) for a in addresses]) - - def configure_plain(self, domain='*', passwords=None): - self.pipe.send_multipart([b'PLAIN', b(domain, self.encoding), jsonapi.dumps(passwords or {})]) - - def configure_curve(self, domain='*', location=''): - domain = b(domain, self.encoding) - location = b(location, self.encoding) - self.pipe.send_multipart([b'CURVE', domain, location]) - - def start(self): - """Start the authentication thread""" - # create a socket to communicate with auth thread. - self.pipe = self.context.socket(zmq.PAIR) - self.pipe.linger = 1 - self.pipe.bind(self.pipe_endpoint) - self.thread = AuthenticationThread(self.context, self.pipe_endpoint, encoding=self.encoding, log=self.log) - self.thread.start() - - def stop(self): - """Stop the authentication thread""" - if self.pipe: - self.pipe.send(b'TERMINATE') - if self.is_alive(): - self.thread.join() - self.thread = None - self.pipe.close() - self.pipe = None - - def is_alive(self): - """Is the ZAP thread currently running?""" - if self.thread and self.thread.is_alive(): - return True - return False - - def __del__(self): - self.stop() - -__all__ = ['ThreadAuthenticator'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/__init__.py deleted file mode 100644 index 7cac725c..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Import basic exposure of libzmq C API as a backend""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import os -import platform -import sys - -from zmq.utils.sixcerpt import reraise - -from .select import public_api, select_backend - -if 'PYZMQ_BACKEND' in os.environ: - backend = os.environ['PYZMQ_BACKEND'] - if backend in ('cython', 'cffi'): - backend = 'zmq.backend.%s' % backend - _ns = select_backend(backend) -else: - # default to cython, fallback to cffi - # (reverse on PyPy) - if platform.python_implementation() == 'PyPy': - first, second = ('zmq.backend.cffi', 'zmq.backend.cython') - else: - first, second = ('zmq.backend.cython', 'zmq.backend.cffi') - - try: - _ns = select_backend(first) - except Exception: - exc_info = sys.exc_info() - exc = exc_info[1] - try: - _ns = select_backend(second) - except ImportError: - # prevent 'During handling of the above exception...' on py3 - # can't use `raise ... from` on Python 2 - if hasattr(exc, '__cause__'): - exc.__cause__ = None - # raise the *first* error, not the fallback - reraise(*exc_info) - -globals().update(_ns) - -__all__ = public_api diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/__init__.py deleted file mode 100644 index ca3164d3..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -"""CFFI backend (for PyPY)""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq.backend.cffi import (constants, error, message, context, socket, - _poll, devices, utils) - -__all__ = [] -for submod in (constants, error, message, context, socket, - _poll, devices, utils): - __all__.extend(submod.__all__) - -from .constants import * -from .error import * -from .message import * -from .context import * -from .socket import * -from .devices import * -from ._poll import * -from ._cffi import zmq_version_info, ffi -from .utils import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cdefs.h b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cdefs.h deleted file mode 100644 index d3300575..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cdefs.h +++ /dev/null @@ -1,68 +0,0 @@ -void zmq_version(int *major, int *minor, int *patch); - -void* zmq_socket(void *context, int type); -int zmq_close(void *socket); - -int zmq_bind(void *socket, const char *endpoint); -int zmq_connect(void *socket, const char *endpoint); - -int zmq_errno(void); -const char * zmq_strerror(int errnum); - -void* zmq_stopwatch_start(void); -unsigned long zmq_stopwatch_stop(void *watch); -void zmq_sleep(int seconds_); -int zmq_device(int device, void *frontend, void *backend); - -int zmq_unbind(void *socket, const char *endpoint); -int zmq_disconnect(void *socket, const char *endpoint); -void* zmq_ctx_new(); -int zmq_ctx_destroy(void *context); -int zmq_ctx_get(void *context, int opt); -int zmq_ctx_set(void *context, int opt, int optval); -int zmq_proxy(void *frontend, void *backend, void *capture); -int zmq_socket_monitor(void *socket, const char *addr, int events); - -int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key); -int zmq_has (const char *capability); - -typedef struct { ...; } zmq_msg_t; -typedef ... zmq_free_fn; - -int zmq_msg_init(zmq_msg_t *msg); -int zmq_msg_init_size(zmq_msg_t *msg, size_t size); -int zmq_msg_init_data(zmq_msg_t *msg, - void *data, - size_t size, - zmq_free_fn *ffn, - void *hint); - -size_t zmq_msg_size(zmq_msg_t *msg); -void *zmq_msg_data(zmq_msg_t *msg); -int zmq_msg_close(zmq_msg_t *msg); - -int zmq_msg_send(zmq_msg_t *msg, void *socket, int flags); -int zmq_msg_recv(zmq_msg_t *msg, void *socket, int flags); - -int zmq_getsockopt(void *socket, - int option_name, - void *option_value, - size_t *option_len); - -int zmq_setsockopt(void *socket, - int option_name, - const void *option_value, - size_t option_len); -typedef struct -{ - void *socket; - int fd; - short events; - short revents; -} zmq_pollitem_t; - -int zmq_poll(zmq_pollitem_t *items, int nitems, long timeout); - -// miscellany -void * memcpy(void *restrict s1, const void *restrict s2, size_t n); -int get_ipc_path_max_len(void); diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cffi.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cffi.py deleted file mode 100644 index c73ebf83..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_cffi.py +++ /dev/null @@ -1,127 +0,0 @@ -# coding: utf-8 -"""The main CFFI wrapping of libzmq""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import json -import os -from os.path import dirname, join -from cffi import FFI - -from zmq.utils.constant_names import all_names, no_prefix - - -base_zmq_version = (3,2,2) - -def load_compiler_config(): - """load pyzmq compiler arguments""" - import zmq - zmq_dir = dirname(zmq.__file__) - zmq_parent = dirname(zmq_dir) - - fname = join(zmq_dir, 'utils', 'compiler.json') - if os.path.exists(fname): - with open(fname) as f: - cfg = json.load(f) - else: - cfg = {} - - cfg.setdefault("include_dirs", []) - cfg.setdefault("library_dirs", []) - cfg.setdefault("runtime_library_dirs", []) - cfg.setdefault("libraries", ["zmq"]) - - # cast to str, because cffi can't handle unicode paths (?!) - cfg['libraries'] = [str(lib) for lib in cfg['libraries']] - for key in ("include_dirs", "library_dirs", "runtime_library_dirs"): - # interpret paths relative to parent of zmq (like source tree) - abs_paths = [] - for p in cfg[key]: - if p.startswith('zmq'): - p = join(zmq_parent, p) - abs_paths.append(str(p)) - cfg[key] = abs_paths - return cfg - - -def zmq_version_info(): - """Get libzmq version as tuple of ints""" - major = ffi.new('int*') - minor = ffi.new('int*') - patch = ffi.new('int*') - - C.zmq_version(major, minor, patch) - - return (int(major[0]), int(minor[0]), int(patch[0])) - - -cfg = load_compiler_config() -ffi = FFI() - -def _make_defines(names): - _names = [] - for name in names: - define_line = "#define %s ..." % (name) - _names.append(define_line) - - return "\n".join(_names) - -c_constant_names = [] -for name in all_names: - if no_prefix(name): - c_constant_names.append(name) - else: - c_constant_names.append("ZMQ_" + name) - -# load ffi definitions -here = os.path.dirname(__file__) -with open(os.path.join(here, '_cdefs.h')) as f: - _cdefs = f.read() - -with open(os.path.join(here, '_verify.c')) as f: - _verify = f.read() - -ffi.cdef(_cdefs) -ffi.cdef(_make_defines(c_constant_names)) - -try: - C = ffi.verify(_verify, - modulename='_cffi_ext', - libraries=cfg['libraries'], - include_dirs=cfg['include_dirs'], - library_dirs=cfg['library_dirs'], - runtime_library_dirs=cfg['runtime_library_dirs'], - ) - _version_info = zmq_version_info() -except Exception as e: - raise ImportError("PyZMQ CFFI backend couldn't find zeromq: %s\n" - "Please check that you have zeromq headers and libraries." % e) - -if _version_info < (3,2,2): - raise ImportError("PyZMQ CFFI backend requires zeromq >= 3.2.2," - " but found %i.%i.%i" % _version_info - ) - -nsp = new_sizet_pointer = lambda length: ffi.new('size_t*', length) - -new_uint64_pointer = lambda: (ffi.new('uint64_t*'), - nsp(ffi.sizeof('uint64_t'))) -new_int64_pointer = lambda: (ffi.new('int64_t*'), - nsp(ffi.sizeof('int64_t'))) -new_int_pointer = lambda: (ffi.new('int*'), - nsp(ffi.sizeof('int'))) -new_binary_data = lambda length: (ffi.new('char[%d]' % (length)), - nsp(ffi.sizeof('char') * length)) - -value_uint64_pointer = lambda val : (ffi.new('uint64_t*', val), - ffi.sizeof('uint64_t')) -value_int64_pointer = lambda val: (ffi.new('int64_t*', val), - ffi.sizeof('int64_t')) -value_int_pointer = lambda val: (ffi.new('int*', val), - ffi.sizeof('int')) -value_binary_data = lambda val, length: (ffi.new('char[%d]' % (length + 1), val), - ffi.sizeof('char') * length) - -IPC_PATH_MAX_LEN = C.get_ipc_path_max_len() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_poll.py deleted file mode 100644 index 9bca34ca..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_poll.py +++ /dev/null @@ -1,56 +0,0 @@ -# coding: utf-8 -"""zmq poll function""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import C, ffi, zmq_version_info - -from .constants import * - -from zmq.error import _check_rc - - -def _make_zmq_pollitem(socket, flags): - zmq_socket = socket._zmq_socket - zmq_pollitem = ffi.new('zmq_pollitem_t*') - zmq_pollitem.socket = zmq_socket - zmq_pollitem.fd = 0 - zmq_pollitem.events = flags - zmq_pollitem.revents = 0 - return zmq_pollitem[0] - -def _make_zmq_pollitem_fromfd(socket_fd, flags): - zmq_pollitem = ffi.new('zmq_pollitem_t*') - zmq_pollitem.socket = ffi.NULL - zmq_pollitem.fd = socket_fd - zmq_pollitem.events = flags - zmq_pollitem.revents = 0 - return zmq_pollitem[0] - -def zmq_poll(sockets, timeout): - cffi_pollitem_list = [] - low_level_to_socket_obj = {} - for item in sockets: - if isinstance(item[0], int): - low_level_to_socket_obj[item[0]] = item - cffi_pollitem_list.append(_make_zmq_pollitem_fromfd(item[0], item[1])) - else: - low_level_to_socket_obj[item[0]._zmq_socket] = item - cffi_pollitem_list.append(_make_zmq_pollitem(item[0], item[1])) - items = ffi.new('zmq_pollitem_t[]', cffi_pollitem_list) - list_length = ffi.cast('int', len(cffi_pollitem_list)) - c_timeout = ffi.cast('long', timeout) - rc = C.zmq_poll(items, list_length, c_timeout) - _check_rc(rc) - result = [] - for index in range(len(items)): - if not items[index].socket == ffi.NULL: - if items[index].revents > 0: - result.append((low_level_to_socket_obj[items[index].socket][0], - items[index].revents)) - else: - result.append((items[index].fd, items[index].revents)) - return result - -__all__ = ['zmq_poll'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_verify.c b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_verify.c deleted file mode 100644 index 547840eb..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/_verify.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include -#include - -#include -#include -#include "zmq_compat.h" - -int get_ipc_path_max_len(void) { - struct sockaddr_un *dummy; - return sizeof(dummy->sun_path) - 1; -} diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/constants.py deleted file mode 100644 index ee293e74..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/constants.py +++ /dev/null @@ -1,15 +0,0 @@ -# coding: utf-8 -"""zmq constants""" - -from ._cffi import C, c_constant_names -from zmq.utils.constant_names import all_names - -g = globals() -for cname in c_constant_names: - if cname.startswith("ZMQ_"): - name = cname[4:] - else: - name = cname - g[name] = getattr(C, cname) - -__all__ = all_names diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/context.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/context.py deleted file mode 100644 index 16a7b257..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/context.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 -"""zmq Context class""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import weakref - -from ._cffi import C, ffi - -from .socket import * -from .constants import * - -from zmq.error import ZMQError, _check_rc - -class Context(object): - _zmq_ctx = None - _iothreads = None - _closed = None - _sockets = None - _shadow = False - - def __init__(self, io_threads=1, shadow=None): - - if shadow: - self._zmq_ctx = ffi.cast("void *", shadow) - self._shadow = True - else: - self._shadow = False - if not io_threads >= 0: - raise ZMQError(EINVAL) - - self._zmq_ctx = C.zmq_ctx_new() - if self._zmq_ctx == ffi.NULL: - raise ZMQError(C.zmq_errno()) - if not shadow: - C.zmq_ctx_set(self._zmq_ctx, IO_THREADS, io_threads) - self._closed = False - self._sockets = set() - - @property - def underlying(self): - """The address of the underlying libzmq context""" - return int(ffi.cast('size_t', self._zmq_ctx)) - - @property - def closed(self): - return self._closed - - def _add_socket(self, socket): - ref = weakref.ref(socket) - self._sockets.add(ref) - return ref - - def _rm_socket(self, ref): - if ref in self._sockets: - self._sockets.remove(ref) - - def set(self, option, value): - """set a context option - - see zmq_ctx_set - """ - rc = C.zmq_ctx_set(self._zmq_ctx, option, value) - _check_rc(rc) - - def get(self, option): - """get context option - - see zmq_ctx_get - """ - rc = C.zmq_ctx_get(self._zmq_ctx, option) - _check_rc(rc) - return rc - - def term(self): - if self.closed: - return - - C.zmq_ctx_destroy(self._zmq_ctx) - - self._zmq_ctx = None - self._closed = True - - def destroy(self, linger=None): - if self.closed: - return - - sockets = self._sockets - self._sockets = set() - for s in sockets: - s = s() - if s and not s.closed: - if linger: - s.setsockopt(LINGER, linger) - s.close() - - self.term() - -__all__ = ['Context'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/devices.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/devices.py deleted file mode 100644 index c7a514a8..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/devices.py +++ /dev/null @@ -1,24 +0,0 @@ -# coding: utf-8 -"""zmq device functions""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import C, ffi, zmq_version_info -from .socket import Socket -from zmq.error import ZMQError, _check_rc - -def device(device_type, frontend, backend): - rc = C.zmq_proxy(frontend._zmq_socket, backend._zmq_socket, ffi.NULL) - _check_rc(rc) - -def proxy(frontend, backend, capture=None): - if isinstance(capture, Socket): - capture = capture._zmq_socket - else: - capture = ffi.NULL - - rc = C.zmq_proxy(frontend._zmq_socket, backend._zmq_socket, capture) - _check_rc(rc) - -__all__ = ['device', 'proxy'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/error.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/error.py deleted file mode 100644 index 3bb64de0..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/error.py +++ /dev/null @@ -1,13 +0,0 @@ -"""zmq error functions""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import C, ffi - -def strerror(errno): - return ffi.string(C.zmq_strerror(errno)) - -zmq_errno = C.zmq_errno - -__all__ = ['strerror', 'zmq_errno'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/message.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/message.py deleted file mode 100644 index c35decb6..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/message.py +++ /dev/null @@ -1,69 +0,0 @@ -"""Dummy Frame object""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import ffi, C - -import zmq -from zmq.utils.strtypes import unicode - -try: - view = memoryview -except NameError: - view = buffer - -_content = lambda x: x.tobytes() if type(x) == memoryview else x - -class Frame(object): - _data = None - tracker = None - closed = False - more = False - buffer = None - - - def __init__(self, data, track=False): - try: - view(data) - except TypeError: - raise - - self._data = data - - if isinstance(data, unicode): - raise TypeError("Unicode objects not allowed. Only: str/bytes, " + - "buffer interfaces.") - - self.more = False - self.tracker = None - self.closed = False - if track: - self.tracker = zmq.MessageTracker() - - self.buffer = view(self.bytes) - - @property - def bytes(self): - data = _content(self._data) - return data - - def __len__(self): - return len(self.bytes) - - def __eq__(self, other): - return self.bytes == _content(other) - - def __str__(self): - if str is unicode: - return self.bytes.decode() - else: - return self.bytes - - @property - def done(self): - return True - -Message = Frame - -__all__ = ['Frame', 'Message'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/socket.py deleted file mode 100644 index 3c427739..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/socket.py +++ /dev/null @@ -1,244 +0,0 @@ -# coding: utf-8 -"""zmq Socket class""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import random -import codecs - -import errno as errno_mod - -from ._cffi import (C, ffi, new_uint64_pointer, new_int64_pointer, - new_int_pointer, new_binary_data, value_uint64_pointer, - value_int64_pointer, value_int_pointer, value_binary_data, - IPC_PATH_MAX_LEN) - -from .message import Frame -from .constants import * - -import zmq -from zmq.error import ZMQError, _check_rc, _check_version -from zmq.utils.strtypes import unicode - - -def new_pointer_from_opt(option, length=0): - from zmq.sugar.constants import ( - int64_sockopts, bytes_sockopts, - ) - if option in int64_sockopts: - return new_int64_pointer() - elif option in bytes_sockopts: - return new_binary_data(length) - else: - # default - return new_int_pointer() - -def value_from_opt_pointer(option, opt_pointer, length=0): - from zmq.sugar.constants import ( - int64_sockopts, bytes_sockopts, - ) - if option in int64_sockopts: - return int(opt_pointer[0]) - elif option in bytes_sockopts: - return ffi.buffer(opt_pointer, length)[:] - else: - return int(opt_pointer[0]) - -def initialize_opt_pointer(option, value, length=0): - from zmq.sugar.constants import ( - int64_sockopts, bytes_sockopts, - ) - if option in int64_sockopts: - return value_int64_pointer(value) - elif option in bytes_sockopts: - return value_binary_data(value, length) - else: - return value_int_pointer(value) - - -class Socket(object): - context = None - socket_type = None - _zmq_socket = None - _closed = None - _ref = None - _shadow = False - - def __init__(self, context=None, socket_type=None, shadow=None): - self.context = context - if shadow is not None: - self._zmq_socket = ffi.cast("void *", shadow) - self._shadow = True - else: - self._shadow = False - self._zmq_socket = C.zmq_socket(context._zmq_ctx, socket_type) - if self._zmq_socket == ffi.NULL: - raise ZMQError() - self._closed = False - if context: - self._ref = context._add_socket(self) - - @property - def underlying(self): - """The address of the underlying libzmq socket""" - return int(ffi.cast('size_t', self._zmq_socket)) - - @property - def closed(self): - return self._closed - - def close(self, linger=None): - rc = 0 - if not self._closed and hasattr(self, '_zmq_socket'): - if self._zmq_socket is not None: - rc = C.zmq_close(self._zmq_socket) - self._closed = True - if self.context: - self.context._rm_socket(self._ref) - return rc - - def bind(self, address): - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_bind(self._zmq_socket, address) - if rc < 0: - if IPC_PATH_MAX_LEN and C.zmq_errno() == errno_mod.ENAMETOOLONG: - # py3compat: address is bytes, but msg wants str - if str is unicode: - address = address.decode('utf-8', 'replace') - path = address.split('://', 1)[-1] - msg = ('ipc path "{0}" is longer than {1} ' - 'characters (sizeof(sockaddr_un.sun_path)).' - .format(path, IPC_PATH_MAX_LEN)) - raise ZMQError(C.zmq_errno(), msg=msg) - else: - _check_rc(rc) - - def unbind(self, address): - _check_version((3,2), "unbind") - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_unbind(self._zmq_socket, address) - _check_rc(rc) - - def connect(self, address): - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_connect(self._zmq_socket, address) - _check_rc(rc) - - def disconnect(self, address): - _check_version((3,2), "disconnect") - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_disconnect(self._zmq_socket, address) - _check_rc(rc) - - def set(self, option, value): - length = None - if isinstance(value, unicode): - raise TypeError("unicode not allowed, use bytes") - - if isinstance(value, bytes): - if option not in zmq.constants.bytes_sockopts: - raise TypeError("not a bytes sockopt: %s" % option) - length = len(value) - - c_data = initialize_opt_pointer(option, value, length) - - c_value_pointer = c_data[0] - c_sizet = c_data[1] - - rc = C.zmq_setsockopt(self._zmq_socket, - option, - ffi.cast('void*', c_value_pointer), - c_sizet) - _check_rc(rc) - - def get(self, option): - c_data = new_pointer_from_opt(option, length=255) - - c_value_pointer = c_data[0] - c_sizet_pointer = c_data[1] - - rc = C.zmq_getsockopt(self._zmq_socket, - option, - c_value_pointer, - c_sizet_pointer) - _check_rc(rc) - - sz = c_sizet_pointer[0] - v = value_from_opt_pointer(option, c_value_pointer, sz) - if option != zmq.IDENTITY and option in zmq.constants.bytes_sockopts and v.endswith(b'\0'): - v = v[:-1] - return v - - def send(self, message, flags=0, copy=False, track=False): - if isinstance(message, unicode): - raise TypeError("Message must be in bytes, not an unicode Object") - - if isinstance(message, Frame): - message = message.bytes - - zmq_msg = ffi.new('zmq_msg_t*') - c_message = ffi.new('char[]', message) - rc = C.zmq_msg_init_size(zmq_msg, len(message)) - C.memcpy(C.zmq_msg_data(zmq_msg), c_message, len(message)) - - rc = C.zmq_msg_send(zmq_msg, self._zmq_socket, flags) - C.zmq_msg_close(zmq_msg) - _check_rc(rc) - - if track: - return zmq.MessageTracker() - - def recv(self, flags=0, copy=True, track=False): - zmq_msg = ffi.new('zmq_msg_t*') - C.zmq_msg_init(zmq_msg) - - rc = C.zmq_msg_recv(zmq_msg, self._zmq_socket, flags) - - if rc < 0: - C.zmq_msg_close(zmq_msg) - _check_rc(rc) - - _buffer = ffi.buffer(C.zmq_msg_data(zmq_msg), C.zmq_msg_size(zmq_msg)) - value = _buffer[:] - C.zmq_msg_close(zmq_msg) - - frame = Frame(value, track=track) - frame.more = self.getsockopt(RCVMORE) - - if copy: - return frame.bytes - else: - return frame - - def monitor(self, addr, events=-1): - """s.monitor(addr, flags) - - Start publishing socket events on inproc. - See libzmq docs for zmq_monitor for details. - - Note: requires libzmq >= 3.2 - - Parameters - ---------- - addr : str - The inproc url used for monitoring. Passing None as - the addr will cause an existing socket monitor to be - deregistered. - events : int [default: zmq.EVENT_ALL] - The zmq event bitmask for which events will be sent to the monitor. - """ - - _check_version((3,2), "monitor") - if events < 0: - events = zmq.EVENT_ALL - if addr is None: - addr = ffi.NULL - rc = C.zmq_socket_monitor(self._zmq_socket, addr, events) - - -__all__ = ['Socket', 'IPC_PATH_MAX_LEN'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/utils.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/utils.py deleted file mode 100644 index fde7827b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cffi/utils.py +++ /dev/null @@ -1,62 +0,0 @@ -# coding: utf-8 -"""miscellaneous zmq_utils wrapping""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import ffi, C - -from zmq.error import ZMQError, _check_rc, _check_version -from zmq.utils.strtypes import unicode - -def has(capability): - """Check for zmq capability by name (e.g. 'ipc', 'curve') - - .. versionadded:: libzmq-4.1 - .. versionadded:: 14.1 - """ - _check_version((4,1), 'zmq.has') - if isinstance(capability, unicode): - capability = capability.encode('utf8') - return bool(C.zmq_has(capability)) - -def curve_keypair(): - """generate a Z85 keypair for use with zmq.CURVE security - - Requires libzmq (≥ 4.0) to have been linked with libsodium. - - Returns - ------- - (public, secret) : two bytestrings - The public and private keypair as 40 byte z85-encoded bytestrings. - """ - _check_version((3,2), "monitor") - public = ffi.new('char[64]') - private = ffi.new('char[64]') - rc = C.zmq_curve_keypair(public, private) - _check_rc(rc) - return ffi.buffer(public)[:40], ffi.buffer(private)[:40] - - -class Stopwatch(object): - def __init__(self): - self.watch = ffi.NULL - - def start(self): - if self.watch == ffi.NULL: - self.watch = C.zmq_stopwatch_start() - else: - raise ZMQError('Stopwatch is already runing.') - - def stop(self): - if self.watch == ffi.NULL: - raise ZMQError('Must start the Stopwatch before calling stop.') - else: - time = C.zmq_stopwatch_stop(self.watch) - self.watch = ffi.NULL - return time - - def sleep(self, seconds): - C.zmq_sleep(seconds) - -__all__ = ['has', 'curve_keypair', 'Stopwatch'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/__init__.py deleted file mode 100644 index e5358185..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Python bindings for core 0MQ objects.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Lesser GNU Public License (LGPL). - -from . import (constants, error, message, context, - socket, utils, _poll, _version, _device ) - -__all__ = [] -for submod in (constants, error, message, context, - socket, utils, _poll, _version, _device): - __all__.extend(submod.__all__) - -from .constants import * -from .error import * -from .message import * -from .context import * -from .socket import * -from ._poll import * -from .utils import * -from ._device import * -from ._version import * - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_device.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_device.cpython-34m.so deleted file mode 100644 index c33342f75006d8d341135b1979db7b7179726681..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29296 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 EZ&$>N{{R30 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_device.cpython-35m-x86_64-linux-gnu.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_device.cpython-35m-x86_64-linux-gnu.so deleted file mode 100755 index d42896f56119210b06be4be3f79699e086d92d9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33504 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_poll.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_poll.cpython-34m.so deleted file mode 100644 index b6e425572311ae9ac3a51b8f32314b2a2e3c67dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42288 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_version.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_version.cpython-34m.so deleted file mode 100644 index ee4f4400398026423d6ca719c6ef7c42a4adfb54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15472 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_version.cpython-35m-x86_64-linux-gnu.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/_version.cpython-35m-x86_64-linux-gnu.so deleted file mode 100755 index 1c9c00c19a4a9f47e29cec5472b573ead502c928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15520 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/checkrc.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/checkrc.pxd deleted file mode 100644 index 3bf69fc3..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/checkrc.pxd +++ /dev/null @@ -1,23 +0,0 @@ -from libc.errno cimport EINTR, EAGAIN -from cpython cimport PyErr_CheckSignals -from libzmq cimport zmq_errno, ZMQ_ETERM - -cdef inline int _check_rc(int rc) except -1: - """internal utility for checking zmq return condition - - and raising the appropriate Exception class - """ - cdef int errno = zmq_errno() - PyErr_CheckSignals() - if rc < 0: - if errno == EAGAIN: - from zmq.error import Again - raise Again(errno) - elif errno == ZMQ_ETERM: - from zmq.error import ContextTerminated - raise ContextTerminated(errno) - else: - from zmq.error import ZMQError - raise ZMQError(errno) - # return -1 - return 0 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/constants.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/constants.cpython-34m.so deleted file mode 100644 index b16865ea3df50609fb85be704c6a084785e3469c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51736 zcmeHwdt6l28umsdF-_3CkY!G$iJFKdi5kfOqch26>Aor>&Kv+YK9QaVMR@;(h_6Q16w4z8`kXwzfwVG}Y=rGU!^$25P8jt6%E-_dDIJB0hBjz>;@SgBz zR!XMw;^H5B?A)-T_pzUruh~`o*qyJ=3cn3?=fEEXry=Sg*J~@KWH|j)y;& z;tMz;;SX;G(T@^8>BqS>w~tJ)z4z^jcYf&q;j*j?_HF#J|An{DC}2V^iwKXSW~xSwDGh@PohY2mjqqo&YNr_#+=*0N|_6)BNPw z$B)122k-A^|5W+$U*g9n2lBMY$wPmUAD{ky@Jv7cxB0<``N3oSKlBfL9CM(L z>&9|{_f^`WNdNspYG<-fOsjXfSk?hLL zFU!BKu)HF_EF(E#X-RQ@M$Y1;`4saVaphL#ph3>k!c{=LdW9>E9TJx2l$Yn1E6$Y; z7{!%aQVhcuS0Ip@?kX=XEh{XpSOPuQto(|(`DNvWCB@LQm6f^X<&+iMDixP=Wkx|+ zeokI`MNUP&D`9zAS$=T^aAua}6y>{8@^6IK8D%-S`SCfqH@NJOJOay0mukWIl@
#fHR8=b4&8_U5WYF7yw5xRI=DRydmTTwVYh8(v_92BFd|<+*OoQ zSnOI=w9MsN471BG&U3kPS5_3j@|kMMX+qwVCTEWg7S>Ub&vS>tlS+!O6V<>M&=(|_ z4U(YC(@QKY(_#rF#TAeSt{JXNYHlvBL7o<7sa^faZxdk`4mgE#J1tx}*DXPx_W{yh)QSX}Z zER$e=v$2>zj9DpJ2@Y^-#u&bDoTr4=aQZ z89kM3#s(D@!bhJT%2JfVp?%KOJ|Bkh^`nhHPilCZ_Bpu0f-*(J;~Fg3RkEL?R>M1v zQolgL&uk~WTEg3zUn}8>JBZ&X;cd*{E8!>Ezg@yxncpGd$F`BbvXj~ng^m{Hhe-Ix zoKJ*=?`3|Jgf~7xzD^luewKvSGrv;8cQC(7!t*%)dI_&*{tgMRW&c(QuVa3jgg5bg zJ0-l9`CT&JK=TcMidwCn)y%g@xVoKqaS~p|e7l54GrvH>E16#^;p3QJE8(Tguaoe@ zTPdHt5?;Xk773rn_3x1IZ036;d^guKPWtX{bhna7Ya0~Mz zBz!yPZ^vkD&b+wuaxi)m|rL1Aj>r9 zDdGFLK4H(8>(k}j49_GhMcnqH}*%IEt`~nHDXa8ymZ)bk3gg?amMhS0Y z{$2?`%=KxP@K)w`NO%+Tm1oWMX<>edgiq#tA|!k-^P?oZO1u6`cq8+(B>X-0uaxi| z%&(I0GS0tV!t0s8L&EQ2|5gdFV}6^2kLC64l<->ScS(5Z<5b7+Msq!@nQxKs0?t29 z!mF5Xm+;apbV~S>>>u`mxo(}z50~&kT+bK@ z_b@+B!ZUfjvL(EO`2`aG0{d4>csuiJC4AR5%DYj*+nB#s!ZX;vUBX+L-yz|Bn6LcZ zT%Q)^he&uF@8<{!-^=_c2_LqVe4P^B$own`@5}s33E#o|DhdCU^Qo8cdgkwt@SQy0 zRtc|Tew&0(e@b3AZr6O~Rv?-!9>AaXwuV9>IKN zkGXE2@_a24Zef0egb(5MvP*b4^PLj@7W;R^Fx zCA@|6@kn^rt5lax3BQ2-!}gl%*2(;E3Gc)8iIH#*^W!9Z4zF*vgm*B%K*G;wezk* znV%)$gP30_;X9aLCE*QxJ*k)Qdgkwt@Qqt(o~;sI$NV-4ck=bHQ^ISR-zDL{vVZtX z=6Y5$-y-2r>>nrLRm`_bcrve7frM8wzf{5<%&(R3Qs&o5_-f97uY?yczeU3D*RKB( zp3QuZgctDohP-U9PZsmTBs}T~;zdcglld_cZef0wgxi^)E#b9X|0)TOV}7-Sdw9M( zBs_-sjS`;2^KFyxDCW0I_%+P$lJE%TD^2FQr8D0m;TGmcNO(Wy+a)}l`A!M19U5BVHof4kJ{IF(o-8z{cF5!3a zd}Acs!~8f2xAFOvE#V!^FOcv!_OF)kcIMYgct7@Ul<+p@@0IYdEi}(|32$Y7hlDTV z^-^9j*QbT~Arjun_ty~;zL)t?5?;%Er-U~$KTE=$%&(O29n7zi@USN+?|KQZXZ{We z4`csU39n;*n}kO(zf;0%ncpSh&IZaSe80J#)y%g@xRuv8PQt60ZX)k=6N^Xnvh1Mknh5?;Xk776dg=U0b>XEWa;;kmruLR!rA$zpz(gl958O2VDY zkCE_M%+Hc=JM*(8ya(5_O2XrqUoGLwwClfw$1uN9!jE%4Z4w^E{B{ZdjqBMZ;StPN z4w&oK#e9o|TbLgq;Xg6oF5%(KcS`stJl|3Y4`Y6%giqyq)=78>^Xn!21n1Kt;R^Fx zCH!+O|AQ6|>#__-PgZJPlfYQWnK z_y_~uVZbd0++)B;8}Lp89$~<{4EQ($9$s$|z25M%hXJ=3@SX-d!hrWO;86xV*nr0v za2!KB;taU91{kv&@ID$DTBiX&+kj^o@V*8-+kp2o-~|T!90Oiz!228UN&_Bhz^e>+ zm;tXg-~$YJtpOis!0Qb7AOl`+zy}-f9R_@e0dF+m#(lNdfQK9SEe8BN1Kw)DhZ*oT z1Ae{%Z#Uo<81N1QKHPwN4ETixywiYRWWc)&_(%h;G+0Cr_teGW75xZlu!t9kj}ouw zM_7YJyg>XC@rr(gH(10A#K(wN^uy9%5ibxoo<|V|e5_#55Bu70L+tM0!(|r5zP_a* z*fTo_HuKt7Lk>~AJNh_;x<~&Teuj>SgICxuz@XaE4aew@un!_dZ4>>sv5%*u+9LX| zV;@gNwNdmBVjoXIwO;gJ!akmQYOUx$kA1u(sa2xC6Z<$FwN&&U$3C8VYPRSJ)Hu<<1N(T2sZpZ82K#twsTR>+g?&7w)G*O6!#9{b|_8Q$?*6{mZbA zr-)i5`s1*Vr-oW8`XjNAr-Yg<`opk~r-JGf{ejrWQ$URq{j;%;TVIV5{T|rIEw5Tc z|G&$ik6T?06aACe$1ScZqJIMWcxhKVf5Z77$G!#o9ismc_Hpa0ZKD4+_HoOrEzq}b z434-L_SVMOVbEmS$9CCkzO=9H>VIR8g@<6{U0F&S@8rVn4%}bB|M4EdKLL%#KhV|F zUUSfX;KU4jP@DZ&*K#2qJVuD$t~j~SUUQ`TIO?lnUjv=8e2jf#l*!r<8MIfuV1d`iRLdgxwg#32`3|`%B z3)OjG5IUj?`RZ(V?UmPBYdWoKJwcV%IdWTTI_(EO?=^K$=*@F%>sxNkuuXdHn}Mvm zbxPt!dysAFfm=o=Z0r?ObKrnFBB=FPmmOqBQ0DFzI`#Ei+O0J$K)U(kNi9=f58d1n z)cMn)&=HA>0(pzp9XjdMH^;pRSm)U{4*qPBqFDFhIkpc^yjSp*b*?qjnvt1qzwKK) zp5hy?9p$udTskT{&+hIu8ZQ<0nsuXMAT+7PUh|pfTv$9$BSzG6XBdobjO|#{hAXngT$KOJ;ji}b?VX3O#>llud^TM=w%N&GM zX2IpnzW%$40rs^;O3?DN?QUBLRHfS)1^euy`yoenZ~I0kIJ|AI8M?f;-90a)J1xq7 zG6GW?|MEbN5CTM=KY1c7+#wV+GWjoa_TVP|379s4nK>>H!qK!H=%lLRbS!0J~a zTf2M0cgrD)t2YQHY2P^f6X<_)b?6AC>ZXxO==xU#D?QxqP6)HRZwkQzZY=E%UDu2? zd(Cqd=2T+?r=Iq;F-pZ0``SYhcK3K;c>p+}FD6`cc7kPjqwWB5&z@gQvgNPARp!h! zigGkK7_!B^b~N}jT%In3z1O_Ry8&y0KLONHb3`qLvq7A1&DTOWX=8K~$Z4CZ84%Og z1GDzrh^2uv)eO8i2%YC%4a0XO@A(RO!q)i=wvM_Jd}?7M=Gi7=WT+5 zxntKu9#GZz1yJ~3x~QaM;Z4hPDNYSH>Y>ne1H{rspMcbG0S{0pbX^1x_s2g1>_rCl z46$C(xir89H~_5IKY@YkH45G#X|rDsulB>F6_3TBerF)W-OS^9!5Jp`}z;|B@Pc7u8|sqZ6oKC1__`Y~O75Z?0l zykG()w ze|OqDZ%>#|-$NyPiq#8PeTA-`iE1(LXASBDq)sGt5vzx@`XXJOgle%|%M9wFX=3aP zNj;I(p8*3GdyKB0qK|#KL45~}-Fc^&_m8zS?*>*6)YT(VEvokODet^DFR(h7 z)xYUAKSv*Xk3oGpRAhcLWxkx%qgn0I)tJS8e7EzgG^igZ^;b0Z6jpx?3~^D?)nC9X z%6z&(J$a58yKbYH_b<3dQ%;Oa(ZFs|W?y#_BV=`Z&Cz)9$}Nd1v2D>Y=3G%jyDFug9nudnt~M z_duQ|gL($3f4oyEJVMZ;z~C{3YWhjFn9C*X@jfuH9^Jm`f%lf4Q3j8LRF6J1m*coCp&s|J z#~r>r&PI=pAHDTRCXYuqh&&!+j}-P8?88Gly&pEXyiaG>c5=yLmk@S&45QM@Xf7EB z7Z~RVhIF}q>9^%b1(cm$PJf@OI5B7MT zJ-$uyk%!o4ioxSqWVxfiq&@NqZds^DF?-zT%OebH+Vq3B9@EI>`gV*yAf;U_CZsRN5i?;M?c>c3TqAw5p{d7;qciwvRCXeRzAa=(-#vUo` zaSVo(^ME(j%?1O-F7Al)sG#}KIM&*fAkUd^d62`Q>n;lc8+Tk-65Ir(Y`pSkSQI6B z{i)FEIU-;SPpbJL#XTwp@5ReO2PIf{I}Ghu`+bmO?GGW}yj|;AKx2lkYlr24yOT38 zYjp;klXPDLw?Z{=x-_qa30j-*t;06yJ2`c6zdix>tpo3uL)VYQmvGMv!{d$5xzN?_ zXT2Y#)Z6hbNdIJ|PK5Wp<`-ZX7;*>IC5qkU5g_m9nYQRG)RE38dtQA91*@4uRJ zDc(yc@iVIW2y7g<-_kz1shKby^ar1Z>$)*|3tk1_LCCakL}6-Pf~#tCA-TLFMiDM^ z!3D?v8%1sw5vU>7LH!AzpLj=zgb|vz6ER&7VI2hVbu;lcB;v;jnCmz}Je!FPX5s@# z{09+(1hFp@E6v2GkoW-++u@A0HuYm-svrixbFG*)=8q3R{&S+cTRq3@u@ybOAdmZm z$2siL*Gzl~i9ZnW20`r4#N%*}YbeNDNIXNtctH$h;yyF+-$?8Y+Y1VEo*?4Y5=&eQ z#O8A;(hZjYYtsOZtT0=A1{Q{)`@?ohsyXd>872yMrf`!Vy6!4G$u|zpf&pLyEE7%a z2hdDvsZl*aDl_5C3Kb{A;P=;B;IY&>N1?GzYMJ!fq*If+6KnED#n@{SM@89dGDcbO zM>zfn!yj<3KWJ1^P12~iNpC0BRE&!7EC5%>+Q=Yr2Y(Dw7w5?Gv%TkseLXzg+5)E` zJOH!7NaAc-02elR+BE_CH7DRa!lzwTuv3$AJ8e@>-#XBd3r`U{dL;#UrbocDu|!}` zkL?NU#G0;()rnI(YYyIe3G7>Y?#Z<$g6s#r>XkV4WU@Ocx-;3G5#5zslN7Ba*JMP8 zEdRs-!L=>$h-~obH86V6_cg&U!V7Cnq@!k02tGYio8jVtlL%dpmmi0FCY;)*@znm- z)P?cX;c!Y?*B*_7oE^ERabQoK$6MGvSlF82g)l&3O>7!8?qECoR2`se9zp9o6fU0D zrh&Z9o8Y04XEJy+PoZ!ZTpF!SgE(A*&y2k1U>%;ulS5HOyLP@1Blva!L$ZoG3*oH< zmkKxp;V6VRgCAVK<_q{TfN{Os;0aFib0nA{BKWqZc0=hM?nJm?xMQnVTa;5(PXQbj zx~>KqyL%R#U|-qYRkhfIM};f9+u#Acef?_{aMgJoVsLud;WA_QocR*pzU*#z9a?iS z3}#!nNovd}J*@!~VkssQD>MyxxYDy&Q(b#D{_xesK5*27s}@S@Q=Y`273H zO%^zvKZ0yLZ+}6bv7%=9y2i;Lx^SU9&;A>%`QhgAt8m`YH>06Dw&+&$J?I%OW*1t$ z6Qi;RTp|_E4F-=Q@@Tz9c#LI_4}pOn{-S+&XtztF4KAl*VJvs_amwTiG=og;WtUel zDrbTxfah~4fHs@k$m7$SMJAisBb7ZIzC7?6<9XEJ(T_Z?A&&*@(U(2mz0yY>c(Qor z8$2FFmOJ_i@)*ht(}8-Fv&Rr$9@nAAfzQ45_;9Mo<3;jV%^nlkqXDCG9tG%e zi@_t0JQkD3boTfL7+8->eRYA>6TFqZQQSLH79K3Lkm6Fpn=k^VVY=+R*Cm_#0@ZWJCa_6TKq->?|tg6$J>*QdECn$3GDGOM&&)0iyn6yJQkA2 zW0XfKdvpT>=Q7%tM+tf)8$3Ml&Ia|EMjn0H<7M_}#HgG{IePRlc$AaJn=351KaQdm z)Z<3>nC{CX3q1~h;;qN;@X-MB7)Ks!+2eBdID%0*k2APWZ!>t*kjGr|n86-D00ZkW z$Ct;i=n-r17(^Zimy5ZaK`WTcQ|$4tNj~!U4LyGOmv=6kk>!q_NgjLH<2v@Z&X>pU z=&{@2F^)VIlSeswT+ALPqkQBcK0Pcmc)9jH zmj`^BR6Or|2c-1`M1_qAw2% zddxO>^d^r=TAM!Xv5!68y3|J=m!L;)gU3C{az|HC9*1$WKs}bT$2Gn@U{u9(=tFNk zhLcAn)#Enyn8Y4mj`xuV)LHSYHhAnnmODC;JYw17J78cvN_~024puzV4IY=1M=h=G zFWA6bo@9?R<9y^X2|Z4?d*|{BvLFxg*v%gK?6JX@$7Sg8g2BT<9-Xu<%h=;0_88#H zV+wkd7(Ct`EAkjs1e1X0ChYMEFt8qvU{u;;+IctD;IfchHc=*DV*?d=kX=UqiOUxs zcx&=igvh0q_DBP}%wd;jFzP3lM-46|9>aaLYkeZex$xK0LJAzVW`dD*ebMo?P7QGM!!C zg){9BnGD8EY78C^BFi293e9E~dz=Oa&c@}-;{x=s89YXk$A51Sv+2nmFR;gn(LVAx zA3cH$9=nhQ?|YQTeq17`NC|r^_vJAZJ(}P1)+2^I)=(ZdvB!A!P<(lWqsK~v$DvUo zk2lF<3VVDF46KJ6qw?yWhaS-ej}-D4NptxLmj~vug*}G&@)&_0Kfddo%ZC?>JR-^C zS@v+TM*~LXJT5|yT?UUl@_77uNWdL?1ACm$9+&#^7>OQ*29F;AfpvMaP z_1J?^IS=qvJfjUBtH@&wd3=Ev6sX6&>=EzF18M~K|L=I~5lkLekjG~BNM(;VVD5j& z1J)bv{|z3s$b!%B1(1L{b^&|zWsfXh9&m=i{lCHEeDc^p>oSx*jsgSg@rA`l9&lZO z`+tMSHe^8_*NHsdK`W@oTK0ev|8Xv%=yB|AZ#^cFM}OLd)Nb>U;i%D=$IeBM1IN7eSV$gMP(4<&$3*rR?aKpJ67K&E9-iSMkHu7v>Fn_h zFt8qt7?tx79#ah-<>b+y>Tw!RJ($aO_L%O=1KtDS{=dyTm*3$E3+wXs5)iv%Uto`1 z_Beu3IS;WhDfK1>3>H_aaZ00!10#Fs}jdYotQ_y@dOKpq#8 z#|M}W)Z=#cxEG`H+D=A~_ull@V=j3d&l7pv%N_~raiK4dE70R^gU9Fa&Ift?PV17& z9^JsexjczcDG%)v$ZUhl_2d#mne<_oee81CpST1YTz-Oga>!*|u9(juObO3_c6k}2 zesbCWhPNs=lS@CU>@Dmvfn5^+#AT(yC74`Zp&3nKm#=|=b$Mfm|6DFNxNJh6JGz=& ze#DInGiqR$xqssF-9NoE8cHtrkjqo-vVdJagU@pQ>ayM7Qja`$^tI%Y&n|=61%Hvo zpG%IxWh}XzqBR=9E^h$?>+<6u|1RenT%JdsJGv{|0!{3PxKvP=8g^Ob!-c*g_`yHC zRf#2!3|i;=*~7*j!M;48j*91AgGVd8e?T6Mi$xxD*dvHNYBB0($0ZwF=8((V1}ZN2;L7Nmz$|3hjE#pCd=97ag6%O<-qISs^pT(ksOe_V^_1wM0Oef zCoVS`T)u_(cgUrla+%65Dll+Hf5)hl%l;6o?G%H@jpXqNdHjqU2IjMsJ!bgw=z|_V zz2==w5Av{($8+qF!yd20Cz(Iw(HA|QHF#`97Sz=R3BccfvBz-s$n@pW4?S)$c!ZNj zD|w7%j}L)?_2__4Wq-)y9P}7t@YsSZc)md%U*cwgdfd+*H~8`hLXR(6z4eGBk9P8C zV2?TMaSHA)IR^(Ij6}OXwIgT1V&rvv0jX zVHWP-+c6>vvt|czZ!vQl30-ZP_?o?hPBL>_2>s$3Q@*W)zGp_;2rV%?v6 z%({p>$GofYpLu{?(%0+|Lg;s9ZWy7VW^Op41I(y}&>PHXgg`}R4vbJ{QN$f;=Hma0 z3Nri9oI@O;xn|T(XtNo05<1U}W)a%QjAjc|WR{8%%B+C6KW72rJzMbqb_AK-WkxFr z9Wc+tts?Z^xhAxl&>}NhOXy~^Z=FCzX6unpnbi}wui0S-q34(#8VQ|Z=I$l5(421z zp}A(XmC#S-n`Y4_P?6co7@^GCiTjY5+d=4=43mS0(EH8YPC}2GbLb+p!HmNHj04x= z-b|Bkh(JYVf=`)+5qFB&A)L_9%?=hqXPeOoLJynKC_*Qi(HKIXG^23>6`76kuBM&1 z`Q{aJ658ABkVR;Yxsut0CYVwD7b2iKqs?e3`n{#L-G}_EzxFYY|T9 z05fV4sK{&t&V*_fLEK>T+@c8WHs=sS=u|T|j?l}^sGZQ?%nnXMC(beDi{HZKPqVvm zJt(tm;wG3K3JAU5jFu8wV)m^hR5jP3iqN0T+-gFHo4K_D6*c<@@+q@A;?6fa)D!xS z8QnqXE;HIl=nV5{dkH<}G*zdC(4Wj`t3ac7rvkU;Be*X+1oii(buEY9qYz*gFDOVB%OoO(DgUrQz`w++^`*&0!?jv1-?UjC)|X=w`|BA@FKwV@f{2S|VqT5a)%yKuSUW31eXiAjs+*+$xSo zLvtFz0|fj43#w7zq{!)ToHRz%Jt&w-aEE~JXTdxaBvRyv9#J=-U>d>C3iv)2T!Mla zirlY9)Jzma5`3$G?`6Ty@NlO2Qi|m15p@&_MiQJX;Coo`DhezVxm=H^KfMI-5P~ld z@ZBu97X^bT(nF7^2T^b~!QTwUTGX;&F$zK`a!ik?ccb9`6C5kxH7xi$3bHA3u^v&s z*aPrfg8K>hHWsW!K?X%m4#G)eM139wR}=iPfU8)Lh5|c94(Ji}HWXY%@J<1*X2C@$ zxRN5ZdPH@i;4*?&3iwtQbRL076h&NmL>+;GO9-|L_!buIN5LqHMCuXs`xgNoM(|Jp z-^_wdCZ|CBqF`_o3pg+N13HT-!EJQ&+iu_ZLsCS~E2f@1qyov>vqCla@-}H#O z00pPuX*XQd*9mwf3(g#d$bTquy&h4=q2L6;=>o1~!RsjSP-LneQGeMD@TUZi6!48K zcnAgmqDY7yQCm^)Ho-p*#9FLiK>-TdDDr_GQ6EIX5rSI;yqpD7Q1B{6w&@Xd2?|~! z_$~ogu;45d?4`(ZJ)%aV;2DA!3AmgE@4X603dsBtJLBe+n&#VqJJ1d&pTr0Nkh6a`BNjuCJX3!X(m9z`zHBkHFw0DKL> zy#>6K1-GIgiz45JVL33O?m|Hd!S4(B1{NfvAc-PPdPKb$1@Q!L74Y>exBvxl6mjbj zbv6pFAh<%ng)I2yAVelpf)fN>z=D@h5J8c#dPG&92lzsQ2MYK)7Sy2N z0*Z9OU$0o3Frw~7!9apP7w{4mWT7C8B1iRzdOHfvBDhh&`79WNf?gDPK#!<%QSjdo zaS>Q8;5-(bIslO_isb7NbuSRViw$of)0xG z)FbL46ueLHxBameIV{LU!MhZBTaT#spx||aUlwpS3ob)JD@7Xgh?;|fR|vjCz%CX9 zp`eK(rFuk-Lc#L{&lm6_7PPfMq>&;s^oZKs2=F$7BLuvV1)EXu1V#Gm5%o00 zIvoWo2+kAmd=`AXA0ibLxmu5?XQSYHf-e_v77KQw0RPobc&j;2kEkC$3-BU>dkA*`r6)8&NQm;CcaPvS26*5-GAlkEkKqjO z-dilsDgmdm;77cz{goowdPKFL;3UBg0jIE_1qGcHnW#t9A9ex!6~W;GPG-SfDEK!; z@D|3}gc0=>6nsSR*8)yr!6Fp2Q{)XjqHaXNn*`&Bd~4He7ED0FKPiGA!6~9%i-Lm$ zuNUyuEcg{~Yg;ICgC0@Gqu@n?@k6S$$-#nupy2NmnWjh7|2_@yPJ%BMu$=`DqhJR` z`sfk$H55EX@JYB-TbpLFpb!O*P^4XtsC6i~hu{MOp2>n36x32=yB<-mL%{}uYXxj$ zL2neSqsR(9qF#Z5RRp^PoXCRr@jkecA~rpu2BV;u;79={uwW|+mQrMp9#P+Y3gE>A z{{~yr+7!=%3KV2h}(kUM#_O52X$A{E$NS(bDS}rUil|{IxQyVb0=|j`jVOqs$Ot{6ezp_fO9;mE z(b^Qtg4HM(MUn5Jp@{kn3WgE4_8?f^)=MyljR1X4M*)vgohJcB4D^tQPhbD&nGxbz(WxZ zNBB{ig;l_pAsmG8y#$XF@FaloDMbU`H{VT>Fg>ESZ3p;vg7M#hur@`ppcDn`De{>f zQ8%ODCW7&qwY6y?3ud5TB}JamBWf`UN(g>Xz>zHIkAfnK+@eR+SQO+EyhOkgSnvtn z2Io*DNsp-gP%w|+XaQf!f~QfCNs;sQi2Ct1fM*ljOTgnAM%0xkxSZg}1w57o=b>N{Mey&~tW6kE?I;*S@G=2Mu)u?N zwWBFAPmicWQE)!NaRMI0f;}iWk0O`o5%sIB0EZGBD&R|4umJ_huqR+M{|tWxYi)uD zVv4#O1-Q2W{#3y5$VgEiL%5vaqXLG<$zqFLg+9wDvP+MsMIiA0)q@&}pI}xK>vq8! z#`@p!R`wQ(6zLIlf?0nzei+zAEd2MRtxXqVTD>u?Ed)micsSc`N81L94ACR%`%eJ; zAi>>1=yL%JR-oX1ihQX@)U6;e%ws*~;U?C8!8)JySD?OzB3t!{nvVmXLkqA;z_KweHjIx5&Ulfk7U6D6nsLF*Y${c2MXRH_yqx9#DZ}sI7X3&^oTki1xE>9 zBVY>)e!;uk!xSmdBWeT+UM3hngj?~KR>ZDrMZrFb;F}ah)YFdx{4Bv10pm8oE8&A6 zP~flr;Q!ySR{!5MD65K=Ofi{wc}(j+4FNpNDL^CCy*DWl7A!v497mlrOr zC@d~lTrTaU%LSd{oT7Yq0TYQBT|RAe-dH8*{GQWs|G^bS34gS^I}TcVeRnsmT`ROz z(Bgq_n|K7RN>hR=!-CH5*Ex?#4%x+JQGGc*7nCV||ae`tkk4?&>kWfB2@J@%=3ud&T#UxHH(=KWf8S z*8VYTd(Y}$)wAd3ptJkO0A}qU0i5{$;h>4{A2JJWkN!ITs=!|r_^SecRp74*{8fR! zD)3hY{;I%V75J+H|KC<144?PG(T0!l3`Uc&7a+|J~7F1Jg#UBT@JZXe)w z8@DfVdxYEfx&4aUQ{0}#=gSaoFX8qIZf9~kms`r#`!lY=;_bkz411c*n&?VTu-g({ z&eSAF!hBca%%lvBG%G#b>U6l$ZE15I2{xBA&5@Gea9Z*4hd2^#N!Ix;Yet4O!R|^; zaV4atq}UR4xni4ZOUZC0r=~bEQqx@N8L3XE4WFlI2gOcw9mnu7KW%8yW+XUWvu!q*kz=mS*%CO;A3yepaEg^NTEp5KbF*nJT zoNh}n2H`cv#flNZnkB_){_&2KM4#y?X{nhos4Ll;l4yk$o-fIjWNVfyJvCvrEhF8u zuQVR-uRrW7Ii6&NwXtQ%)7RElTYoJdJLH4&*81@_yLB#X5yg?}qAkJc;F7vBQ*avA zcvw7|Z;~TD!qLQ4Ml;KFQrf0b9sm^r8 z;Y@JN6pQT2bR-(PPIGq_bd4Jq^G-=kNKJNHGerIhWSj1Q(-nXOyWUH7q(F(ZShDqM z=$SS+Y?nE3il?Q)S)XAuZyqHH6SbuzI#Xe(6kLIHyLC34RB%ceE+eogaK%YXOG(Xu z|Hr8#Nr_6HV@c4Tc`I2^EEnVu52u7eTgR2;NOok1;UFOPvI6snx4CHhaouPYv?aq+ z3g&H3P0xV!wZZjC5qmw&HWTU%5#0FJcvwX2SZDfPQ%WZ#H8CyKsbr?4XU3-|q&ea# zvvjx~re@6-Rl$;EfsgtO9Y>FJ7g`lZ2|U1N2+5>u05 zOKAHx%{os>7CRs*6%qjR~%eFjplpbzVw( z2Gk%~@lGJwmH=zyNKaNA$;q}v2QKK$)U7($FI7oPm`g7l&bgCQQ8ykoJio-$l#F>+ zSal%I6uZqjbEX5{M&@f96vs?XO@nQiFjusAZegC-+S1aLl+^enZ8$hzaoG6GndwTr zHDPvA>MTW@LrS839#keJ5uyt0*)&*2-dJFbF=#L*PTmwH2`&sUW!lqJsdO|?wk2be zXq&6p94T|*P0}{g3a2nE#VlOYM4J`zQqt2BU_Z>sv}N)M4<)vxCDWw?{<5PYzq~^H ztw&K#VKKbOf;CgJ;LO7xPO%}CjQLL3g7d6SB@Nfj3ICs9_yMcsv^rqo_)3%n7U2rW z0v6fj%2~P;+%i(raTDO4g+ESE#Va^PNC}UQqZZMg*-owYc~XG*BZxj2wlgnr2l2Ge zp)#+Hc_#z-wKDJ6HuBRy*K3A6ZVU51=5f!`;#$kRz07NTg8bmix8{R+jm)bLz}vyR zJkIYNvzuO*dgj#z@T+596VF5YT(8@5ezlrkgGGe2&-F5|ntAGW;`v**D&|EqPrE;n z{VJI^ETd55>sxczk_e!=r7VBWj{^~+}7?f`YkV&2sO{G7~-4ZyQAZ^U+*hrhbS zG4GiG`Nc4A@{{Bj?58eK%!>+;Uj*|GGtb}oVPW3(0QrS8uVXvq=WoA+G4F!_yb$KS z8GxrS?`Gy{_se>Dc)xTVp}h75m~SWZuH^apyAFAn7sLBBR3DIE@VFh!s}E4WcIG`4 zfY-*n!vX5j%DkokycXt74lv)n%&Q7;9cpCWd+c|XpStW|URi*3t7qOl0qRo6ys-h+ zqn3H4kJEk_l zxB=E9n|YlL7GZ;5i83ARm!*x{U=d+|JSX!S1LS9CUUq=|;xxYikyC-VkzUHrXod6<{Ub?&7P$S-)@4(7eUetrD#+L^a&8|CTm{iuz3 z83ERQaRK(#UgizkO8NP_-ZwI@Zvfs7=Kad!`tz%2-p&B^t7G280G|(P znfJG?G!K8Dud121F2KI8V&3n(ZvOU5CG#2rtZymv8Uvgk1UKI1*;&IRNGj0U)J`FGr3-g9>o&CLU zg=^ym@C#$!r~q{dVcsnP_MgJMmH^{+y-NH2f&k-oGOtg7`FfZ)hu5Q*pE`Fi@B9Gk z*3P^k0eEf9do95FwlZ%(0KXRItq4%(z04~Kz-wgQpa6B=!Muh5*R^`)ZQM%h=kIz| z$2@0%&tbL9`<4Ct?dNLdMFsGyVqS89eNf3fM*vEO@Vb``c^TocYt-PWZo?S_H!xo zHU!vz1r06Zu2W(DBcnb#vgUE-LxEI?gin0K7V_4mFN#k}9R zF8vPRIW>iX){BI_j3sIPVl&W{O}a!eIAG>>;K38 z|N6C+ckd#@cX)l^dokkZIB5BwMw*q7FwGK?xfp(HX1Qf@WK87b370Jwy-BxDnj9H5 zIdali!WAX5yr8_ItRiQz5(&R=lOK6q@$yLg^_IK|g?WnT737o`D3N(9i_2FQQCm?) z5&j(>Q^y6dvizkvDBxG6ODmK}{9PO+vLe3{elCFy#7gpVDsq&_`~ugKGW;Eyf;`Y_ zJyN)G%F1$9l0tiZeJ;?zJ*TKJ7ltkYL--LXMj^+=<>d)7m(#Ff7vEzqPhl(q~U3qSh{Q zu~5=$D4qny@wM+CYOQ=dWmv`$PM_W$UBFkoj_d8_@8Xnx@yjkJYoQK z=CA47`Fn!x|D%2nXmRgpdhL6L9jx!*LTh!?^4IoH3uukww`{fmq9`q!MWe(~qyNTFpTC^A3z6&jSY4fi?Xc3X> ugQ8LDf~nPhTC^A3eh4k57$xDFe!PTh(=oQ%*hcCLJpOSb2(LAr2LB(PgSp87 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/constants.cpython-35m-x86_64-linux-gnu.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/constants.cpython-35m-x86_64-linux-gnu.so deleted file mode 100755 index 18aba3b8035e2d75c6cb684e704c01eb507740ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52136 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⪚k6Xsma}t2b z4`3g+ilANzPI_w@XM^Phly6ZX4Be;oF4se3v_|M?P=vaG&u^4p@d zZHZ~R1J>AN%AW zSdv>}a)dtWD$<`s{lSy{ZFN1igYLPupqFiLoh%Orvqfw+jLb+c`&GuA2R_Q`skW+^ z=^%iV>W-EVv$*0hJ#O$7kXNblVyaEY>j($aPrB)cDpwwk`s>M}HvoNb8Np)Y_>OQsAz2dh02D7edx7QsGt*(Z`)fKEqI0$IAstbZbtKVJ%bE}#* zDQNXjyDMQ*Fift`VTKvZ!hEWx2dy4tbIl7z?3ICM1BM3_&b3(-IL~(RFj4W)nzP41 zW`8@3XJqj;ma8q-Se96vumlw>?gS|A$k3XdFb(be&ggS*r}S)f1OIUsT%@bE0TxkZ6dlCE?p3Pu->G+@C!`FeTycq6@=&ET8Gp7QNs%az72&{N)U+e zbb>C8j63Fq>;#u&w58+m;eI&ws#$c*YTTBIZ(O1x|lkRW!`;7r<>*hazmQ z3xq44@6c!CO+(_(UHypW0v7IlzmoJDsA2*xvlH$P%G_S}QfT!;TG5$s1|j(((Zsw9 z&5ZVhx_`TeqZ&{B%c0e8VPRYY)9!>-=^7pn4Zew5XSB~aGUIL7eSMZIGc5}&nGQVM zRbt#jb{Aw_b=YBpi-0h)LiRsF_V%hsSUDf!JaECj3EL~l6>}7>Imx)dpN66)xT0Q% zJ}ls*y1szrRUoR?7dBVKuJxi40I9fVuMGUq+Jt9($8 z-L-yDuf1;OAbZ{VLBZ=kO{hE9R<|hFx@Aca?v{kQ@eyDHo6!P|=KyR9;p2*#1AR-| z)v#}26R*FTx3A|iVCb&zu9y*m7el-ZjW-&3^|%_`Q~4ZveupaY^%gf?&34>^uJ~Zs z;I!dhx*c-3MdVN|b{U+oE3Y*vE(P9YCfHnK?$`=bcE#KWJUHL~fzjL#ouHL!fr`36 zh7O!3Tiqd8*m!cbMBM@;+z_jJMJTj-7T^c0_X0bFAi-`#wkzs(8ek?40NY?aFmM|@ z4WBURV(}`xIslVZ+?~3yc9S}p)W^4x`f^qm!RHlH9|tw;`8##ev&FiM8bZ>2EbY(I zAGLwUW7>H6cQ4eb?W8`u1x9qmY+&_Ez`(S7HFXuLVJ|E0u{w1ssc*bhsOPf!W>&An zNr@|DgQouIxVONWq^`V8sDoH-XLXsTKBTGd)2S0k{o+=kK7=Mv@S&`}UsE4JHC!JQ zw^OIiA$2*aYgqj{FmT=vYU(#pEl$_DI&~JQQ%F6J)wi;`LsP$}js5vA-gz%3wTWsz znAKOZx`oxNhj^DZRep!g<5y(4q8`~SX8#gg&T;m`*`vvqhp53~okuX`(MYrS8+#l9 z2G-ym_6V(x2i^hv#NZyUQ(s2vAvBA4R=Zf;>nj7Xe*X2dw-S@d<5}|PyOm}!k3H_w zGWZ@|9q7ZitH0~ig$qRuB1nCZ)q`1W)6_$OcOVS&zecD2V1ZEIKozWF^=rVu**}0$ zv3Be5)hn+Y>w*tJ<8}IU(tmi133pCB>s_oroAvs$sJeXcleYq0nIem7a`^*K1)N7K zyX?d$WTAI~?SGff;Q4f6@Qn+Uu9!A97{CTK7?liYF{SA|Eab6}JSy0u9T-@OVZJ=X zVhYiDbfk$qM$trOvd4P%xE-T%9%4zo`lGiPspR1#j~+a)P>g8y80X7FY|TwNkN2+> zc}ygaN7&LEE{btFk88-|1TBpM_Gn>`2wxs}$LcpZR_kG`9QM>nPe^@w1PS-w0(9&2P+uBb!gaW8v(0Sv6i zevHa_;N7VlJcE<7)PJEyYJ3cvtU! zSm$vwvRqN2G?z|Xu27F~_DJ*PflmV5%XA(g`qflw1H{W+HdLvcQL={$BI%N4bkGHF9A zsL25KxYn14xD2Q1JkF-|{sEnv3ifCR2G+#mYn{>l*Lm!swdx{|ne4HiJxY9eh`syj z_uhI;BagY{(Syqk_dk1_@Vm}7={%mIb@mOdkw@6$XJFu5ZuI35hBb}Td0avspOHra zd$h2}Kwlmv^f>vQcP;SE?EcR$*kMS6luOavp-u?Zz z-g^9NknmVc9;4agYW8>#qq0XIfbNHN9@*rPN*+);3|jrLoxr}g!ffTU|w)vH3`f0k&{24Ba2F zdlD{B;(pwVfp8EC&%$|lpZ~dHj=`C-v|Uc~oe4?Ne1C?sF6!}?h%cb{Xf6J(8h=8> zvnc*EWJ>y{MO=q}#?h&XDXa@>yA!%)zHdtuY`&`d&MDD7_!Yn89 znHu>cSTUBizZ3j1T>tkE!n7~LCmpVsokH|CioSqRF{$0S%(Odc&$}>!rEL$f8juBx zUh(w8{Wo|xg~t|(-hfeDAfBb*aX{?1_dURa?Nogf7G6S~$yNuC*6Ich0^KVEf2}ep zvA}<2;5YCJ-;3}$0_-RS!k!yNA_J?h5@q@X%x$h{cRrNK6Dda5s!)VWik@Y_a`xoG zP?ol*D5<0KA*sQbl$BC`1ctJ-ZKvof7!^f%9CwR%+Ka@r@pcc_KeF)SgC|IMtc58o zf+vL2;laaj7>pn3LE`hk-1CyKiisBk?IMdMXdx<>XdEa~4D=eYqLDQe2Wk+{Gh+HS zVzN(AbR0&-RQee`B80~W#QOOPU=2f$4D#3~JoZ!ceT<5!yZ{#)-GnEA2b|EYf_#L? z41Zv=q4e$jiUEx(TzfMGr?5|n^E*R zKAnT-zd}?)(R?kMEJW)FPC(Q9V-KF|t?BE8zm2ff94R;3>RyEyyvf+=k|qVaPkw<{SDOo7ht@U16ER!W zdE#E$0(<#Qd}N4kT6lA91pwcf#QVYOA>OwoOWR(`ZreP_{bJ1hM=-)S?rw00fxoGN zG?O4rOWQ+4U9M46zrr!4G2qj>bv<0(>OO=--OvArK6xxXpWj3Eqst#f=+^!2&%u=+ zQmzFV7=E!13}M~hh`ukn2a1V@)>b7#RQfnW&%)Am9&?f9iZY|v6|K{p7KnJsxL|^L=^XWzGG^zrAz$ zGDhU_Bb}Lv>~S4?Jb_U;54^CrpVN7)B#&pw<1M@l)qJ4Q>g&wPQ9zS0u@_3j$ z{>~ns0|U?Q0gTFd(P%q`cWRE*kdt!ynd;V zJeH%!LpqN-WVxcwCXY9@muhM;>|v={(+?CGwa;9#h$)m_6>nsGP@A^w|H2 zw;l_~gY)D~Vz#ixN^2kMxwK|VaqC_62Q64+k<11ibJ(@8p=TVFvQ96%2@_68S zNWc}dm_2r~$8=vFW$1D2WA9wPnJMy^MIL9chm$>?#i*P|7J59Y^C%^cZEHjx@1Pab z<4pF5@#XOwuG2!D$FJ}P4(s#<^0<{fJ^%*R<1j|$Jbp)y$vTfp@;IM7=CjA`>@nY$ z#~wp^5qeP zHC?3h7(*VHmy0}ZVvkpVf%WKy4~2iqqaS*V(Rtj9ELYUSWy0f9_NZcyEz_argi$=R$w4+V?N-e4a#>E9&=B;W3##R%Ly+(H<%C7)BoVvByzhU`1RQl~=q8JucRH%p;F(s_G*4Xkw3% zzC5O&#}DvVX6h%qH!c);d|V8ZaK(&ak89XtJ4WR^08`w1bsm}I(M@xC3l|*JV=Q}^ ze0e}_ihH@vxSdT*(mGV&c-3Xn_268!0D`Ymi+{7-nQ@FhLzPBd*$fcLo$T2j7`OIOL z*U$5xOO4LuX5_h|9w3*!?D7*Za7JmTaG9%f8AdL7RF`~qd6Zo~i1>3Z2STv6zrE+3 z&+W)^McF8mbJ?SiJ(l?JP;2{)&Lx~&9xgKB8TtqpE>vYAyL>*?MZzmL>{kUaiJcg*rRWaZkoP!?!ddFLjBa=iPcacXQo?@8GJodN)qtfm> za4ve>sq=7<#}KN=KKAI(9%uUUn1CKv>O4M}NcFfD5^%*_&mISWf%SL*qjDaADemDq zk0s>sb)oRMm_639$9cXyAUC-Gf7@G+qmUV#m;1@%2VAaDkJ;?ef>AjSs59LE>pWJF zM;dwTWsjeLfpeMd%L7(6-2dx5eu64P9^cb>ShR*G0m=4rqDtr9XA9+9p;r?Ie@gTC`bMtZ#!~H*dyaNoZN3mazb9EjU zkjEOT$2|79l|7D+_mRhWn8zn?dh78dvRqM@P#*o+V?KLq@Z}-a>2{sR9P-#iH9dga z7wR#HJqGylI3M%K)OobSl^*gKLLTeb;}9^g9xjZ^YaKpWDDDwDk9p*=mF6;=J#J!; zk-j{pp~vfQc7yjx%%I*(lP*px3krm{yddqn#3n28?yU-#DI zYk0?jdR##spX2F)dR)LB&tO!}V-|X>)p@KUk7aajcd*A-z`%N3=EFn%1ah&?y-wSGbH~m&NRocnX(2Iv4ymvLTmps>`r~FS-1N%MNA~&n{P;!sS+-%V=^rOfJu`%OAkN8GQzy2>sQ?u5;OrJXh2b zaw%q)f3Qp5DO~#NT*PlNxT3OiU@ESd^Vnq-yLd+bIT!kd?SWUlRoR6sS5zCFp`+M9 zRW4+Y5?>xr0mZ#e=P`{u!fC}dv4;m3Sd$a*?&7Z|Q973=kO$Xka#_qSJK1IZDO`Ry z;+@Yda`_?~CIa`r>~ame1f9a=A)U)Ucvpp7B9{u6H}Nz@ll7jCMo1mOEn2% z4?BB|_2n@XJ?_?dya%6mAdfGcCamjzJV{WIf$Y(UQ8|xc=#j4TxSBl7l*d~3I0y`^ z$5dY)!_gyD=kYmwc7r@VraYq9V*`6UhEX|>AoO_c6>mMRC68Fj;~1V~n9CgYi1Oi~ zUT14`EEz`DuEDgo$s)s1a=;^ee-}H?|VG-N+=NgAs9-H+B;D1EWJ1q0br7ZbC;H zecgnqZ9zsKn++IQl<1D<@!EYczR@WK1;&&ol179-MH;lM@jA%Habw<=gXs!{B zAhgDanguGVQ-u+#PBd`~joes5FEyezLdP3X{J)~W+`ckaGKy2nQp=*t(iO_e9Xau3p7*YJc^1wQ~2~lr#q6xJaxv_-4 zW}JnM(8)%wgU|y;ZWf`djA%BY`;2ITK*icww1~5-+gL)}6Ip<0?>QUs|BVE*Si8`G zRucN#0s~r0=zB)Ap3p%!lGnF^&|}E;R;Q8BGNVH?p{tFVwGg_)$ZaL`En~jzguZ4( zI|#KJtJ5h^QJskxp|#UR+#n;jo6y`$!`$42{$ZSP524eIv*;ysuo1=o4wp22_0{&WIdr@8MzIF z{>wOvMuCdze4u7mx3QVHe;9pR2wiB*x0TQt#+tPgI?>4OAoMP97okB$ zZa1M)ecgmgb?9MVV-CH9K4Gj5e&HF`?@l8cEKpG$k9X~a5qF`H8&2rjG{YG(5$ZDL z5JBilBWfmexe<*fv8jGWQ4w+W1?Zp0j}9 zih3gz(sIR!{RVf2=dk=~jDkG0W+*;`)V^j6C+TT8p`P3K<8ND3!XScHJ`TPqdztkE7O8C7Gf*`&V;`DXbFo;;%Hp9Ifz?%`?2}Yi8@c|+H{tFCXX=?=^h!$aV zCPo*uiD;CFw!vLHL>-zo8lslACkdW|@ck&-PL_%gwNUg-E!tm*b`v}RVJw>`k3@KV zv$Q=((J#+bqi^iPk?tY*O@!}7(R32sB}5GreL{GqL)ZCO^7NfI!}vE7os%;n-SiQqIwdYfE8wGE2rp4E&5+L?UuG{ z3I1&yh#F9|m_#oM5&nxuQ1VZ-=u1Mhgy5GEz8ghTNVG+WuBK?S7OfYeG=gtK_%0M3 z!)JZ2m@FZ3P_#^oE*7Fhg0DvSP879~Xrd4$Q1o&wIz@;sA$TgnccAEI5`7Qb$I=!} z(ZO2u*mGEjNP>SH3!>Xmlt!ZGglHN?-_@dRLNtNk{RnSE(RdP73z3PUJGAJ{LUcO8 zwFuvaA~!xJbj73!(P)ZZt3}gdQbaIF|eP<(lD~fI; z(NVZOS=xT5sG>#PtyqX33HF48Xe)~BBx(_&9*VxEMV}I)FA07c;Vmc{O`>%|^aVxl z(xNvC(T4=zgz#n*eTGj4T``G5)J4%8Eov8{HweB0VHb)XCea8X`X@!FY0=R_^diAy z5WWRPt4Z`RTnR00?G!z6h8q3sA6STI3GPO?4n?sf+9O0yQ}jhG`mhi^Oz>WW@#%_Z zD2YmisF|W$wCHLfx}V@R2;YpN_wkXSD<(#W?xkp!7L666Z3J5o-h`qi5(NuUJw+#K z(V;@LiQr)f*Pv(xiQY-ULR3@q`_t9v`_Ez_ZXoyrgsV|Bn?&~uQ3XYx)1pm6R7CIt z2v?z~ABhTuXaz;9wde{VT1xOrgg2t-b$piSikT@y*%VFHqO*l)0m0D-{|!YABJCXf2qUhI`#hkK*$V}07S~ORPrVxyORkD8riVl4O(=m5WPxpF2dO;Iz*!Lg{Xs~RxNs= z5WPTfB*IPiiT;?-p6oGPZEs(64d@BC|X3Kb|Gq^=to-gkPz)A_%OoP zplA|_Ttf69Me$!Fqv%#4x`*If5xyElKO7K+SRh0V6kVl77YWf;g0Dh&F^Zli(YZpj znWC3z(MdwIk>JS)UxlI?5`AmMLR3<8kQV*nQ7pt7f_sL8Xc3AWB>IOCl~eR>E&99= zT}$vjgtJg|CW$r*5&jFa@RoO<7OfGYB?NCmcp-|ud_fcuG;3>3{H z(PKgsP0=G-^a&w~B=|{$(@`{%L~Dg;8b$BWqU(id0>K*)PD9Zr@QeXI5+n$biK0#| zI!}mBC)kGYl_+W^QK%4&rs(-vbfgdsA$SzR4iuG<=)-s{L@-5v8LCD<*^7lZIY^ZJ zQ-o7dbUBH33DNHqZP%jBLi8iS45l%wU4icRvL|qg;SBnl7qBjV}`^o+DQFJYd-ipIQ{F9>J4pF1; zK8%HUk>K|bz5+#2B)V6K+9~=EExJR9o+Y>uVLOTx5-k^^rzyHoi(V^44-z+(!S(-I-7py*mH znj=I-1TRH69z`#b=sY1>LD2*)I!%a{5_}=TaVXkCqMu{25cu!jz!fA^i=Jr4IV~U< z-zWE5P?SZY145KR(GRugi$Zh-!G{ozMbShO-6BLbitf^)TZHIxg7K2Re=dr?hsP99 zh)f~6jG`r4G)sssB6tzPm!s%85}Aa^OwmiV=tLo!LhvMnV^CC0qHpG6Atq7uG%fo5 z9xTK-g7F{M*?$>|Qc3iz5QS6pEiL+-5QPx@Ji?cvXdH?DCPc$1ic659)k4&d;2MN4 zLD5loOaX;R5+a47%e82#5FI~FoIVG_b5PVmqBDf(XNqFAC^}Avz9#rggriZkjzs^t z91G#5=pWEf^yqFZ#HR#*iSTR`C6ee-A^Mo29a^+Sh~6gn34~{%XatEWgs79E_-{o} zbe#~rOz?Vyqfqp*cuWyWa6ZCQ5Pk_@sLwRvHJqaJwCHr<)t_K9!jn-{PofhsIMpDE zj?|+6-Gx&XtNfr z7oyJyz763CC^`lYB4AEgLWD!W-YnCii-qVNg0DvSTokpDXrd6kMbXQ(=oBG(h2W_O zn^1H!iN3!K3-J;~2W!z|4`Lzq5&Yu-5S@dfG!i{0M9)$5T`k%sM2{1U|31wAvr#mj zMAbs{C`ET@(VK;6C&Bo4FZ;)%$PG^~pb)7-)I`y1wP>0U-A!;h!e^oADH4qnqB|)X zrA5aJk&EE75r*g9@cffRM=!-f)KOH?qVAnoh?@xZ^as&66xm7CB19V~`kEGfN{H~h z!RdP%;jt(hO`>%|w2Gp4Y0(>nXgR?*Aq-C@;rS;#y?{a_3Q;~qbF`>kh!zuk1;X$Y z51xOLXoL_gqUba&I$DT|Y4MLiI1)vxN%Zk0ScsJrJ<(5%e)a$sB9~zN8~gniq9~R` zdxR*5qAzOEhlOY%!Fv&&hN7V)Dixwkif+-OtA%Jj!D|q{07dV^(+em>j1bu=nx#c! zg=j9p7KG17Q4@)Rg(!xi6Se42A-b60VF;gxq7@{1XATx(21UOQQlsxTVIigx`~kud zD4I>8`-NySMW556O+s`g!4Duj6-E6>R47DaDO#;XR|rumoxYU_!;?vP{s~Vnpb#^K zD4C+ET6DG$#SJ!WH@Dg)8$-Yw}CW3X6+Olgmu-P570?d8=3Co2E{VoMASXO*Q2e=a-p^ipxza zbINlIOr@)fBvIgTa}}kqsIc4w$wl%cB54wl+9Wu!$$62J^OVVD$|<=^R~N1*FDxok zoKE$n(+QoToR#_T0wxkMx$Kh3dFLrXXZF8z5_rRPMTxkluP+wbg8TaV3ZQjETL~>5 zxTNq1x*<&ost5}@bJ(C@{FWYS@oL_^y|2#}Lt-0+Vj|iV?!!6u|@T$;8nE_gQ#wqu{+a9`LMO99MIG@RtbU2{lnsNE@;`p!Jk5vim z_y4=;lXEJDnQ4c(uJ4fg^RTa9zqt0SDXH5m~@+EKI}EI({$Gtv3B8Nl#rH^ngRb~M?3CBGyEn;y!L=mQL>ZDaF`l8-+zOYaA5&I9S1ASX+dIqcqD_qY+AGb%EH4)Ab z#j$URgHz9aOQLr%fIz<S+sSq zo>Z%^%O63i6R|1pH_Xkiq)P1X7kdl>G;(W$cJ}#8ZHJnuCh3s38~4j z=tNiDA8D3_)K3;`Eh&}L#qpEV=cU`PqI7lphxj&2W_n6yvNbK0`r>i|qg#2Wit}kt zf$~v2A$4I&dIpp?nfk_RzClf3>qq3G*(vEM3FyGHf%P1}z|gll7R*ddNz$%!>iOW|aDQds zIo0>^9C-WI46K3HPo~R}x38}@{Lf-iQ!*A>Xl)}0yb^h<35g{!(GKseT0XpgaURL3 zX;#c%w0PaYs$gqPOH)!(Yt(jK36e?DDdr78kg%fr<%k#_1;n_MLPUp&;!XoHr!AerHVEffC1Ne0@uZ!oQ z-VbTE?ANLKHPN{0{gBM-U|vr%@dj%Ie!+h2%xmX5tM_#poq4UyYYD(>VP5wx8aG5U zGLGBKy!rt3Yh>PA0qWAgyvhK6^~@^?z^i3mV}SWqGVj#@`BgCQs)wmA1O3#cgn8Kk z@+)ATiSzTfKeCy3C_sK$%+5_-nnP+C6`kX-uo^P;b#4p${f_bsLPDB0hOw4NwP`_~IJrjTz#=MqhlNfQZpK*hk*BF4OFwYTS zzP+!|c$ERJLp{tp#(t;y$f`HVxBp``RHU`$pbW>(SGvlU|v{& z{MuE&o#Y3mTzR0rq7J^Ex>{{DOnwV83Q{+yLjJk$F8$CSil$4KW<-*PxEu zWD;S2yn5!f1jw(JdD#K-t5p30j9bAxM*zPP=2h}_vcH&(?g!7efO$%Q^PA1QJptBV z7V~;|9gNToDPHop4(4?R;Mr7OfcL>z=9M&=#4uyUPu&k5H=23v0sPF&tKUO@{@%|c zn75wmJU}<3c**0MR6nlsU_ZQY<|#a`zxSgs=Jhbo-*qFHd6mrbHxGq*u>saq@5@vV zQ-JGB5A(tT@Z8K(0`R(-R~evwUChhm^D)p*ojaM=!sGh;eAU6c#sKTSop~hz>fFk_ zp50VOf9JP_c`X6F%X1B~0qyl&?CTQ3dFa|EbgJ@a~az4&|IuVtQ%>lf_jd{i=T zet>Z+n3ouUSHiq+c-+(cj9b9G?f~=1W?t-WI&c2&Q?i)X8Nkn>`UR+qjd|OdH^|RC zVwu+-VBBctMF$wy%slh%Q_nYoc@=y<2KdR(#5_xY^A^s$%L4Gin0GY5`3+{?>;QfW z^R@-3bMH%34_5$Q5A)0c>g;A-Nr3BGH}e{I(fIzZS6$3=1o#}*$vo5UQ=i`s=9vTd zwKK0gz&dDUUP%C63-juCoqE2_%z)GOs?s zb-a>!jsVy33g&GHFpm=EtqH&@U|w+mUN-Y0m=~-_2Y=4VVqSKD_3U6?Sb+6sV_s)~ z^Bc>&&p1DS*ZXMZ6$F^CnR$)?^N3*HiU8}`#JtV`@4w;9yC}f*DvWty0rq7u^D1|p zdLJpw>*4zufA?>_hsmctz znoPpR-~B=d^9ll--*)C*7~s6MGOsz_J39a`n|Wgc@UoZ}8{j(bU|u%+`MaLl zm>0&p!G=W-9bWgb%u@pJWcmNv|6jlEQ@xEGdw5;I_ld+|Qu7Ni;JoZMOUrYXDv|JuAo-EY zi&jVC?_K0wSeU1XUO`S-ffAXwwy13FN@~kXDZ;;8V(2&_R+_&e2L=49WJS3WiN7SG zM8eC+<;C!#Jih{dE&~)u#d$g9IZ9-Hfpb|Y{+35U9+;>-k~(urOLNweLVbO0F3@0@ zoRx*SkVA1f+5;lYmX?(%@Ea&ASLPR$2dLZs8XgM7LGY&^3-I4l#zSoXsKezI_jsP5UQ1$Bf;?x%ZjYvGOL5`|d|9-{{7<#LE^?P<| ztA4KzDB_UUZ8V^;AhrC}@3pDzQr4;YtK+Dx72^1vIkm5TZ%%D7KRhsh99zvFF+A|^ zpVhfxU;Un*+N$5vQ^!~J>iqFHv``<1VmQ?A{i&_`JweptvrAcD02t<_em+va7pb=D z_Z@*E4jfB=WC4Y}pZSi*q^@p0j3cDbPuhsR_%GXP^oun7T zYkBeR`#$Q+e7XNP(C}H0s#m`k>;510`#_8H zSM@#oz0IEgQQr<)T)V1X{oZFU>pQv7YTeZQ)pbw`TK)JPJ4}GU^>2r06uds@4^^+W zMPHlslW61U+O`4t?E?x{{R>XQUw42 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.cpython-34m.so deleted file mode 100644 index 02e904f56cdd908de85539b34c2aa19eebd97946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44016 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 C)tlo0 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.pxd deleted file mode 100644 index 9c9267a5..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/context.pxd +++ /dev/null @@ -1,41 +0,0 @@ -"""0MQ Context class declaration.""" - -# -# Copyright (c) 2010-2011 Brian E. Granger & Min Ragan-Kelley -# -# This file is part of pyzmq. -# -# pyzmq is free software; you can redistribute it and/or modify it under -# the terms of the Lesser GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# pyzmq is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# Lesser GNU General Public License for more details. -# -# You should have received a copy of the Lesser GNU General Public License -# along with this program. If not, see . -# - -#----------------------------------------------------------------------------- -# Code -#----------------------------------------------------------------------------- - -cdef class Context: - - cdef object __weakref__ # enable weakref - cdef void *handle # The C handle for the underlying zmq object. - cdef bint _shadow # whether the Context is a shadow wrapper of another - cdef void **_sockets # A C-array containg socket handles - cdef size_t _n_sockets # the number of sockets - cdef size_t _max_sockets # the size of the _sockets array - cdef int _pid # the pid of the process which created me (for fork safety) - - cdef public bint closed # bool property for a closed context. - cdef inline int _term(self) - # helpers for events on _sockets in Socket.__cinit__()/close() - cdef inline void _add_socket(self, void* handle) - cdef inline void _remove_socket(self, void* handle) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/error.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/error.cpython-34m.so deleted file mode 100644 index 78a439f3a162aac533ba802c81e88cfe94f20827..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19952 zcmeHPeRNgTmA@|}5Ci0;NH9W?D<%*?9tjdn&}eSHxUoSa1f(jyyu7@SXz~)@2NFLp z^(8E>kJwCSjiuF2Gwn=8om!@KtaTU&L;>lvO&MjOwiU7Jy+kGTBc$4z`R()Za`Vhv z?dqC8X4c}c-rZ;a&ffd%v(Lvp_vRiRsHm7?4fa;ivUvDvEK~0^^(An-X5X1N9aj9 zESe&zFry?xhki#zc|6TV86`}VxxfCio2v1&IU@}r=W*?Ba9ore(D$>eWHfPW_e zUXTD^nxMT;0-rUB|6fkv=Q-e$$%hlP_eTlvNCLbdfuAoY@aN40b}mj3hvWqI+Y;cr z65y{Sz=sm}32{ZmFFutf@becCoNPQCN>FcK0{Nx{_75bGzaoMEcP7B=65yE${Cp;X zKOXp_;uoI|C9uCM0iKElaI&~Pn!uk2fKN7_|1E+1-^0Pl><=Z7|5bwab|k+r6c=&F>C|Jb{qg zt+<>0%^}6z2%@;FYS+3Od;#B<=3vMds9jsu(&qQodg@zzylnCkw|AR|40u|a?}6a; zTixq~g|Ze;Fz5>^H61sETkCxRcXgY83%H7HUUzLryRRY;XbTV@2)HZT0=h)YD5va zwb2&{Hn))vu;9Mg6Yy7T15+DrZ;^qC_eJwJtfyg6)3LU#Aq=rH^hL zZza^2EE+5NzpOIs_l6L0GQ~n|7l_qN-O6psj-~Da>T4(EwVsf-iOo8K%UXP%0A@WV zJchfs=}vc}r?~}nlNAbbbA31@Mo3F@J>ugEwz;lQkZ%vMi9~!J@m|VZsknU&o{$G7 z>w`hQjsWsEC@Vs(?JJ;9zvcDK{uNMB)>K!Ombq8DR>g8FT?KOSnuKCGV|(UFivC83 zEK+jB{Yz4c*c!=8XE!&`q?+3W7M|OTt$C7ik62LUbC7&~8J^4ac8lj7iSHG7pQbVa ziA%n-Y$Bc~?h8BPaG&7!#NoL@es3JUR`7#yxGLmN#^GxOKN^Q;$@^6KL_e<-a%vo& zA>?!8@Y{sE9*3t2`IKu1jKlji-p-OZ{C#0ZkHb$1JDcKgRrtC4I&N<&YD>XSral{P z-*@e?;h9nxbgvD!KQljP!|e~p{Wkm(o1LRJJlBQ~+VCYd{G<(EX2Va}aQoKHwBdO+ z`C%J=g$*CI;aA%5tP+)R({N3);i?UvV#9N7c(M)8v*FYSG8Nizszas{8!pEXmFYG- z_NoYYjSUxDU1n;N4aaUcmg;Qyj2NmYO*R}0b}Y5q@bnm}DBEnf(}s82aQpMiP8pS0ogZStpVxR|=E)U@HMO@7#hUuwfgZTLbPu4pRbXiQzka{Q92sVqZyHp}r# zhNiL%;W;eFFIk$(GK4Q;Iet+!m1PKD%yRsatEntQ_)?bRmpn~n8N$V@MaCCuDx-wE zSdL#xG?irt7q3(quWKr!gy*vyztm_d%MiYj<@jZjrm_s-t5}X->NJ&Q2)FN-nrygz z9cZ`VS20a~*=ED(Sz4w}O=VfKU&M0!qDS6K)uSoPm#B)~-5*LZqYg~!$P1|hynL*n z9z|n04Y)cNlpsfZ6BSyg#*lJuAs$MKHOTmN#3vEo&-m+!rzOeS%lJ~_X(_V$7{8i$ zx&>Ihj9*DSElE}<h)Ur2l^@pX)!OFS(-Rt@845uZkU3FFgPfLrH!T1k}rzOQw7=MO%T1u?p&jI9|CZ3iM>lEW(Bc7HHYmo8BiJwJ$ zKjV)PPfLikm+^;)r=`Q{WBl{P(=E;FW&DqcrzOPdWc-uF)6!wJGyZ$T(~@D;G5*`c z(^6s8F#a3F&n3Qu@edJCOM{ii_y>unCBae|e-H7r6j&LI4-kI|@e1SbAfA>4YxvL9 z{(9n7;!iRD7UF3Mum%~wj`)Sd_cQ)_;%UlTdl_F!JWX}0kMXOCrzvjrGJYlTG_|cx z#xEs)G4bt;Ur2l|@pX)!OZ*bzYZyO^c$(@~3FFgDFwijQ?~ocv=Fi z4Djpq=$h1#&ZodTLeurJX}a;5Wq{M8C3Q4IHtUh+I>9TU_2vO60Mm_uP$kNxUih}^ zXh{}k)qxz$s-Bs-7!7()!37uux^Ya87UuVx$q1!BHa(oCN6S)mDdNjh5_e-P6f&O3i9LXy_zwsMNG%GEmhv5#;|_y&E%rl z&iihv=6uF^8h{_X} zQU4UAi9WyMv$3(r(XpY&>GD18W^JRkK{GzlYBl3!1pm+E(WdSZ-Kfsi!x`Pjon0>@ zZklmoXsUAo=!hPj|GT9W=+~WHVJyt$(c;74%Z(3Fak=rixd)x56&-Otd^1Y*-TJ{( z$+}~p{OT*5-4%pHZ%x%BQyg$@g!(9&c>wD9FX_hbXiU!iRE*dcLo>>ay8CoAc7(9V zGDoOH?|wftO^>uwAgX3m6%)zO)sW38{q@6UfJekQylN>qhsB(N@6#NFOU4`MQGHz#mXk7)*XdY9`oZWYTtBO{p zRvYK22dob8eB28Zt+Z&Vimf*lJr9(i4OQNAI%+Y0J1RTh+4UQ?IHl12queOo0un9Q zjH`7m8~W6D`w>&#ch0U4AdbK}yNXb$-jg|hCPLg(oKM8~pxm&qN2^BJ-xm714> z{P_IFWXdw%B{#jJ=5@Svp%e_wtO2a#-^IQGK7JEEK2N)`{by)?U=F96URnh(hf{}+ z+t)j-RyWRV5UWO|yhAvpvY%q&aS!07;l&dQCc0%NkWUT zyncm<@nW^{j`E@IgMAh7}Y($5Ek~|4qwbcjFtR; zYZ*+L*}RE}U}!(BP^)MhMb|2bea}s>g*a?boZa`4z1Re|T8VWWwvK`B-$U)Ay}vaN z7HLH>uZ2I>A*Pcum%I9{GzCpO&F}J;z}5W*=`AI_w;*Y*2FA9UY<<%XV+^vTO97mh8F)J(`@8i*nuQ$}Xfn?8ho@hChL2mAaxQ z^GaCLjf2bzm7XlPovR5tLc%HJ4p=*UPpJa)-~u?%wWxRc9-E9K>ykc z6b^Y48EEXKX4Ruv>zv(7&?~*@lvm*=#*%KNOoKgVS1Bp>6rWCo;SuxEk7Vhamr?13 zymU71Z2Lb!o6KV|^;1k>keY-M6F@Y$*?xxqi8WPm!1NKAHdn?B?`GvsP|z_at(S{Ix$|M&+Uvaizm ze>u6%w%pFH$5JR}1rh2&bWlF;0B6@G2o9;^{>YK??81c#X_jYa9AKjzdju?lGrvL#6ZR2o3-LU!r#d^A zZzf(cZ-M)K+?-UY!gI{K%(uXx@eQ#G*HMLRqe7L^y96?isxnVOlvyJ$RJvf_0)MC+ zcRAd1Xcrs(h@fk5LtK+T0*ZUUYW-f;o`#By(T`##Zq;%0@7hjil;mfdP-q zVtm|1#<<;gSaum|_%F&uGub@rDgGtaXsiKupB*1WbGXeGZu4y-n5G57<}YG~KH`Q} zkw8zej~jB?3_XPwW7JLOh8`1!-b3JNzJDAuL|-x-NJ8w){tw38*v_<5-lm&KlqP)f zEo6ar3dYGZv4Vm>QkE5zV#vK_8lnpNWP>){&aM%%UMjmBz2QN9@a+L+q*xKY)dLECqjAvCEiH;~vm_IKlwOHo~H9g8{pIaW8+m-*6sm6n|u)Nb5* z)86N|#fPxX(e{0F+{*8<wtN%am?d*lLK`S4yMF7_fG*jc7`c^m+<-&lj56(6D|8ljf)I zQLT}2Kd*tG+P)p*z%mB3j01BSK%YQ~P+q`*u5n-#TMupDnQ`D<2K>V~aDr`4QZ}Pk zkEGoGWmTabIFeF>+-gYSZml7!?fb`ZmG5(vrA%d6Ol3ZDS87g_ph$W5Bacs+hnYi3_^ zsLWi>dWF6zQt3+q;hu}T=VI=WN8;-keB#0(1r~E$tAcJfnimQO-~!z7FDFdR4dHVb zHOI9wFE6+R!DDHwrzPxDLv3wpizl#!a;mq@k1v5jl%=Tgl*kL$xED+?p`6V}67;sU zwl}xt5Ash!GobFW@{MK+CVre6-a2dlzX0z@L+ z+wdDcGdA`(VOn}dBq`}%(#dfovVR|b!_eyl<>lq+swXWyLrYK9@IXPS0l$C7Pe+?J zV#F(@=^0;7DoxLNcuHxy+LK(7p1UihJUws6)bjMg$h7kGUPsasY3YSpdY+b^3lWGy zr8GUYa{7&v;%it<;<{aD%|{FBe9^kEq#dQ@krL}f&% zDK$b~zIVXiURaXfw&u~7Z%7i~EgCBQ+%5F+_du3peRwm;{AXX{p#*Pc8873E$9BfQ zBLayxw2aRdcK*K-d2T-5|7YiLGoUqo7*_-63dv{3YL~sWLk$jlEXPU6Q6EvCBI4PE!pv z`C>0}@!r$lMz0MCY;6mM@Z!^pgNpRpROPR6nQD9`@^xe`Gq5Br-ab=RA%)YD>XzoM zK0m90!+v%O(>1AKQPBz<0NjcLd+ab*dk4H(9`NA^SH|CC^{Ubt)z*{%;O>4ojZ9lIv-_oIHOe&s!yu zljpAFIV-vT#@mzUt>pPCxo*bG$#Yhnr79~bj0uR0Tu9gOa(SLAk$&N>r~r zPbJS!C6bGsqZ0moVcLl}pAz+6R>td>_bJf|e3i=^a#G02b5ity^@JqkCSZR9Bg6KW zROPv>e$hVMzgX%Me*Pu>MCJ0FmOPgwZl6lOrZN?I{z{&=lH*queyk}gTdn49sK;L; z!s;qlp=;Ihm0`x^Z_i)l%3I~iU&3*mcL+Aor1R7(F8qTIS*+Fzypp6|db@`gy zjqKQVQv-A*$2HuZK)}<%HDvw{FT`No)7tDs)on0{i;LC5E#l0o;=&(sTIo>u|3ad9 zIt@R$A4>H9*vP76e@XrlWbn~go79*4HAy!K!6|~u{*?N;$dC_GU+(85%@Pxu>LnSe zFK(Ag9x$>k_2vFhQn??52utzfpVk!&?3n*@KPKseLQncH>yfkq<+Rt6yxi|eO8!wI z|EX^2KVg(=@sn*MUhXerR0LesFZE^nZx{Ndq>Lo@tCGt7E$L_C7q8z0jQo=8rrgg< zD);FSVM(|nS;dQ-UB6H4<0NH&tBXmG|6dy!0`te|%l{`z(xBLXOA}I0@-zwT^~>iE zN#ob=c>nJa`YVOOjLUgO(ohZMpF)<#p46Am5Ay%xlIw_!o2*}sgMR4R>zC(ncVCABq$W;cSE(=Qizu<{DMx7Kr8zs5b=yUwqW;r%5P7L5;r{`EYQWe4 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/error.cpython-35m-x86_64-linux-gnu.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/error.cpython-35m-x86_64-linux-gnu.so deleted file mode 100755 index 5ea54c69e03cd7fbbce5b9db784949fffef83bab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20032 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. -# - -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- - -#----------------------------------------------------------------------------- -# Import the C header files -#----------------------------------------------------------------------------- - -cdef extern from *: - ctypedef void* const_void_ptr "const void *" - ctypedef char* const_char_ptr "const char *" - -cdef extern from "zmq_compat.h": - ctypedef signed long long int64_t "pyzmq_int64_t" - -include "constant_enums.pxi" - -cdef extern from "zmq.h" nogil: - - void _zmq_version "zmq_version"(int *major, int *minor, int *patch) - - ctypedef int fd_t "ZMQ_FD_T" - - enum: errno - char *zmq_strerror (int errnum) - int zmq_errno() - - void *zmq_ctx_new () - int zmq_ctx_destroy (void *context) - int zmq_ctx_set (void *context, int option, int optval) - int zmq_ctx_get (void *context, int option) - void *zmq_init (int io_threads) - int zmq_term (void *context) - - # blackbox def for zmq_msg_t - ctypedef void * zmq_msg_t "zmq_msg_t" - - ctypedef void zmq_free_fn(void *data, void *hint) - - int zmq_msg_init (zmq_msg_t *msg) - int zmq_msg_init_size (zmq_msg_t *msg, size_t size) - int zmq_msg_init_data (zmq_msg_t *msg, void *data, - size_t size, zmq_free_fn *ffn, void *hint) - int zmq_msg_send (zmq_msg_t *msg, void *s, int flags) - int zmq_msg_recv (zmq_msg_t *msg, void *s, int flags) - int zmq_msg_close (zmq_msg_t *msg) - int zmq_msg_move (zmq_msg_t *dest, zmq_msg_t *src) - int zmq_msg_copy (zmq_msg_t *dest, zmq_msg_t *src) - void *zmq_msg_data (zmq_msg_t *msg) - size_t zmq_msg_size (zmq_msg_t *msg) - int zmq_msg_more (zmq_msg_t *msg) - int zmq_msg_get (zmq_msg_t *msg, int option) - int zmq_msg_set (zmq_msg_t *msg, int option, int optval) - const_char_ptr zmq_msg_gets (zmq_msg_t *msg, const_char_ptr property) - int zmq_has (const_char_ptr capability) - - void *zmq_socket (void *context, int type) - int zmq_close (void *s) - int zmq_setsockopt (void *s, int option, void *optval, size_t optvallen) - int zmq_getsockopt (void *s, int option, void *optval, size_t *optvallen) - int zmq_bind (void *s, char *addr) - int zmq_connect (void *s, char *addr) - int zmq_unbind (void *s, char *addr) - int zmq_disconnect (void *s, char *addr) - - int zmq_socket_monitor (void *s, char *addr, int flags) - - # send/recv - int zmq_sendbuf (void *s, const_void_ptr buf, size_t n, int flags) - int zmq_recvbuf (void *s, void *buf, size_t n, int flags) - - ctypedef struct zmq_pollitem_t: - void *socket - int fd - short events - short revents - - int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout) - - int zmq_device (int device_, void *insocket_, void *outsocket_) - int zmq_proxy (void *frontend, void *backend, void *capture) - -cdef extern from "zmq_utils.h" nogil: - - void *zmq_stopwatch_start () - unsigned long zmq_stopwatch_stop (void *watch_) - void zmq_sleep (int seconds_) - int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.cpython-34m.so deleted file mode 100644 index 16a7fc526d4f4a6954a51520f047f1484095f3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62112 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 Xa3usWRD{XDo#p?@#BzUBPE-B`YG_LX diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.cpython-35m-x86_64-linux-gnu.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.cpython-35m-x86_64-linux-gnu.so deleted file mode 100755 index 2ec9da1ee447734df7e7bc96c37ff002b4335966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66320 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.pxd deleted file mode 100644 index 4781195f..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/message.pxd +++ /dev/null @@ -1,63 +0,0 @@ -"""0MQ Message related class declarations.""" - -# -# Copyright (c) 2010-2011 Brian E. Granger & Min Ragan-Kelley -# -# This file is part of pyzmq. -# -# pyzmq is free software; you can redistribute it and/or modify it under -# the terms of the Lesser GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# pyzmq is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# Lesser GNU General Public License for more details. -# -# You should have received a copy of the Lesser GNU General Public License -# along with this program. If not, see . -# - -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- - -from cpython cimport PyBytes_FromStringAndSize - -from libzmq cimport zmq_msg_t, zmq_msg_data, zmq_msg_size - -#----------------------------------------------------------------------------- -# Code -#----------------------------------------------------------------------------- - -cdef class MessageTracker(object): - - cdef set events # Message Event objects to track. - cdef set peers # Other Message or MessageTracker objects. - - -cdef class Frame: - - cdef zmq_msg_t zmq_msg - cdef object _data # The actual message data as a Python object. - cdef object _buffer # A Python Buffer/View of the message contents - cdef object _bytes # A bytes/str copy of the message. - cdef bint _failed_init # Flag to handle failed zmq_msg_init - cdef public object tracker_event # Event for use with zmq_free_fn. - cdef public object tracker # MessageTracker object. - cdef public bint more # whether RCVMORE was set - - cdef Frame fast_copy(self) # Create shallow copy of Message object. - cdef object _getbuffer(self) # Construct self._buffer. - - -cdef inline object copy_zmq_msg_bytes(zmq_msg_t *zmq_msg): - """ Copy the data from a zmq_msg_t """ - cdef char *data_c = NULL - cdef Py_ssize_t data_len_c - data_c = zmq_msg_data(zmq_msg) - data_len_c = zmq_msg_size(zmq_msg) - return PyBytes_FromStringAndSize(data_c, data_len_c) - - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.cpython-34m.so deleted file mode 100644 index 748f6ab5336e2a933c76eeb6571d9cc11e9cc070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105904 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 N%m14@QsLcE{}*EkfGPk0 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.cpython-35m-x86_64-linux-gnu.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.cpython-35m-x86_64-linux-gnu.so deleted file mode 100755 index b8e3792d67ba80d15e3445b2d5e403adea340121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97888 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

eRL&?6j`A0AQqA}>6EJB5ii47!$X8e}Jer&NB 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 SE!z+J3oU=IKhl@qjs72HgkO39 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.pxd deleted file mode 100644 index b8a331e2..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/socket.pxd +++ /dev/null @@ -1,47 +0,0 @@ -"""0MQ Socket class declaration.""" - -# -# Copyright (c) 2010-2011 Brian E. Granger & Min Ragan-Kelley -# -# This file is part of pyzmq. -# -# pyzmq is free software; you can redistribute it and/or modify it under -# the terms of the Lesser GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# pyzmq is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# Lesser GNU General Public License for more details. -# -# You should have received a copy of the Lesser GNU General Public License -# along with this program. If not, see . -# - -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- - -from context cimport Context - -#----------------------------------------------------------------------------- -# Code -#----------------------------------------------------------------------------- - - -cdef class Socket: - - cdef object __weakref__ # enable weakref - cdef void *handle # The C handle for the underlying zmq object. - cdef bint _shadow # whether the Socket is a shadow wrapper of another - # Hold on to a reference to the context to make sure it is not garbage - # collected until the socket it done with it. - cdef public Context context # The zmq Context object that owns this. - cdef public bint _closed # bool property for a closed socket. - cdef int _pid # the pid of the process which created me (for fork safety) - - # cpdef methods for direct-cython access: - cpdef object send(self, object data, int flags=*, copy=*, track=*) - cpdef object recv(self, int flags=*, copy=*, track=*) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/utils.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/utils.cpython-34m.so deleted file mode 100644 index d5cc674d12d13532d4af4aeef36b1d3441a20789..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30064 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 D^xK9p diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/utils.cpython-35m-x86_64-linux-gnu.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/cython/utils.cpython-35m-x86_64-linux-gnu.so deleted file mode 100755 index c3eaf2a66ae496fdf7dd9f01f4327600aedaf7b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30240 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. -# - -#----------------------------------------------------------------------------- -# Code -#----------------------------------------------------------------------------- - - -cdef class Stopwatch: - cdef void *watch # The C handle for the underlying zmq object - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/select.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/select.py deleted file mode 100644 index 0a2e09a2..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/backend/select.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Import basic exposure of libzmq C API as a backend""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -public_api = [ - 'Context', - 'Socket', - 'Frame', - 'Message', - 'Stopwatch', - 'device', - 'proxy', - 'zmq_poll', - 'strerror', - 'zmq_errno', - 'has', - 'curve_keypair', - 'constants', - 'zmq_version_info', - 'IPC_PATH_MAX_LEN', -] - -def select_backend(name): - """Select the pyzmq backend""" - try: - mod = __import__(name, fromlist=public_api) - except ImportError: - raise - except Exception as e: - import sys - from zmq.utils.sixcerpt import reraise - exc_info = sys.exc_info() - reraise(ImportError, ImportError("Importing %s failed with %s" % (name, e)), exc_info[2]) - - ns = {} - for key in public_api: - ns[key] = getattr(mod, key) - return ns diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/__init__.py deleted file mode 100644 index 23715963..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/__init__.py +++ /dev/null @@ -1,16 +0,0 @@ -"""0MQ Device classes for running in background threads or processes.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq import device -from zmq.devices import basedevice, proxydevice, monitoredqueue, monitoredqueuedevice - -from zmq.devices.basedevice import * -from zmq.devices.proxydevice import * -from zmq.devices.monitoredqueue import * -from zmq.devices.monitoredqueuedevice import * - -__all__ = ['device'] -for submod in (basedevice, proxydevice, monitoredqueue, monitoredqueuedevice): - __all__.extend(submod.__all__) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/basedevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/basedevice.py deleted file mode 100644 index 7ba1b7ac..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/basedevice.py +++ /dev/null @@ -1,229 +0,0 @@ -"""Classes for running 0MQ Devices in the background.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import time -from threading import Thread -from multiprocessing import Process - -from zmq import device, QUEUE, Context, ETERM, ZMQError - - -class Device: - """A 0MQ Device to be run in the background. - - You do not pass Socket instances to this, but rather Socket types:: - - Device(device_type, in_socket_type, out_socket_type) - - For instance:: - - dev = Device(zmq.QUEUE, zmq.DEALER, zmq.ROUTER) - - Similar to zmq.device, but socket types instead of sockets themselves are - passed, and the sockets are created in the work thread, to avoid issues - with thread safety. As a result, additional bind_{in|out} and - connect_{in|out} methods and setsockopt_{in|out} allow users to specify - connections for the sockets. - - Parameters - ---------- - device_type : int - The 0MQ Device type - {in|out}_type : int - zmq socket types, to be passed later to context.socket(). e.g. - zmq.PUB, zmq.SUB, zmq.REQ. If out_type is < 0, then in_socket is used - for both in_socket and out_socket. - - Methods - ------- - bind_{in_out}(iface) - passthrough for ``{in|out}_socket.bind(iface)``, to be called in the thread - connect_{in_out}(iface) - passthrough for ``{in|out}_socket.connect(iface)``, to be called in the - thread - setsockopt_{in_out}(opt,value) - passthrough for ``{in|out}_socket.setsockopt(opt, value)``, to be called in - the thread - - Attributes - ---------- - daemon : int - sets whether the thread should be run as a daemon - Default is true, because if it is false, the thread will not - exit unless it is killed - context_factory : callable (class attribute) - Function for creating the Context. This will be Context.instance - in ThreadDevices, and Context in ProcessDevices. The only reason - it is not instance() in ProcessDevices is that there may be a stale - Context instance already initialized, and the forked environment - should *never* try to use it. - """ - - context_factory = Context.instance - """Callable that returns a context. Typically either Context.instance or Context, - depending on whether the device should share the global instance or not. - """ - - def __init__(self, device_type=QUEUE, in_type=None, out_type=None): - self.device_type = device_type - if in_type is None: - raise TypeError("in_type must be specified") - if out_type is None: - raise TypeError("out_type must be specified") - self.in_type = in_type - self.out_type = out_type - self._in_binds = [] - self._in_connects = [] - self._in_sockopts = [] - self._out_binds = [] - self._out_connects = [] - self._out_sockopts = [] - self.daemon = True - self.done = False - - def bind_in(self, addr): - """Enqueue ZMQ address for binding on in_socket. - - See zmq.Socket.bind for details. - """ - self._in_binds.append(addr) - - def connect_in(self, addr): - """Enqueue ZMQ address for connecting on in_socket. - - See zmq.Socket.connect for details. - """ - self._in_connects.append(addr) - - def setsockopt_in(self, opt, value): - """Enqueue setsockopt(opt, value) for in_socket - - See zmq.Socket.setsockopt for details. - """ - self._in_sockopts.append((opt, value)) - - def bind_out(self, addr): - """Enqueue ZMQ address for binding on out_socket. - - See zmq.Socket.bind for details. - """ - self._out_binds.append(addr) - - def connect_out(self, addr): - """Enqueue ZMQ address for connecting on out_socket. - - See zmq.Socket.connect for details. - """ - self._out_connects.append(addr) - - def setsockopt_out(self, opt, value): - """Enqueue setsockopt(opt, value) for out_socket - - See zmq.Socket.setsockopt for details. - """ - self._out_sockopts.append((opt, value)) - - def _setup_sockets(self): - ctx = self.context_factory() - - self._context = ctx - - # create the sockets - ins = ctx.socket(self.in_type) - if self.out_type < 0: - outs = ins - else: - outs = ctx.socket(self.out_type) - - # set sockopts (must be done first, in case of zmq.IDENTITY) - for opt,value in self._in_sockopts: - ins.setsockopt(opt, value) - for opt,value in self._out_sockopts: - outs.setsockopt(opt, value) - - for iface in self._in_binds: - ins.bind(iface) - for iface in self._out_binds: - outs.bind(iface) - - for iface in self._in_connects: - ins.connect(iface) - for iface in self._out_connects: - outs.connect(iface) - - return ins,outs - - def run_device(self): - """The runner method. - - Do not call me directly, instead call ``self.start()``, just like a Thread. - """ - ins,outs = self._setup_sockets() - device(self.device_type, ins, outs) - - def run(self): - """wrap run_device in try/catch ETERM""" - try: - self.run_device() - except ZMQError as e: - if e.errno == ETERM: - # silence TERM errors, because this should be a clean shutdown - pass - else: - raise - finally: - self.done = True - - def start(self): - """Start the device. Override me in subclass for other launchers.""" - return self.run() - - def join(self,timeout=None): - """wait for me to finish, like Thread.join. - - Reimplemented appropriately by subclasses.""" - tic = time.time() - toc = tic - while not self.done and not (timeout is not None and toc-tic > timeout): - time.sleep(.001) - toc = time.time() - - -class BackgroundDevice(Device): - """Base class for launching Devices in background processes and threads.""" - - launcher=None - _launch_class=None - - def start(self): - self.launcher = self._launch_class(target=self.run) - self.launcher.daemon = self.daemon - return self.launcher.start() - - def join(self, timeout=None): - return self.launcher.join(timeout=timeout) - - -class ThreadDevice(BackgroundDevice): - """A Device that will be run in a background Thread. - - See Device for details. - """ - _launch_class=Thread - -class ProcessDevice(BackgroundDevice): - """A Device that will be run in a background Process. - - See Device for details. - """ - _launch_class=Process - context_factory = Context - """Callable that returns a context. Typically either Context.instance or Context, - depending on whether the device should share the global instance or not. - """ - - -__all__ = ['Device', 'ThreadDevice', 'ProcessDevice'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.cpython-34m.so deleted file mode 100644 index 42b15e8c3c2dba8079b2906dfecf88115ecbac61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39216 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. -# - -#----------------------------------------------------------------------------- -# Imports -#----------------------------------------------------------------------------- - -from libzmq cimport * - -#----------------------------------------------------------------------------- -# MonitoredQueue C functions -#----------------------------------------------------------------------------- - -cdef inline int _relay(void *insocket_, void *outsocket_, void *sidesocket_, - zmq_msg_t msg, zmq_msg_t side_msg, zmq_msg_t id_msg, - bint swap_ids) nogil: - cdef int rc - cdef int64_t flag_2 - cdef int flag_3 - cdef int flags - cdef bint more - cdef size_t flagsz - cdef void * flag_ptr - - if ZMQ_VERSION_MAJOR < 3: - flagsz = sizeof (int64_t) - flag_ptr = &flag_2 - else: - flagsz = sizeof (int) - flag_ptr = &flag_3 - - if swap_ids:# both router, must send second identity first - # recv two ids into msg, id_msg - rc = zmq_msg_recv(&msg, insocket_, 0) - if rc < 0: return rc - - rc = zmq_msg_recv(&id_msg, insocket_, 0) - if rc < 0: return rc - - # send second id (id_msg) first - #!!!! always send a copy before the original !!!! - rc = zmq_msg_copy(&side_msg, &id_msg) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, outsocket_, ZMQ_SNDMORE) - if rc < 0: return rc - rc = zmq_msg_send(&id_msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - # send first id (msg) second - rc = zmq_msg_copy(&side_msg, &msg) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, outsocket_, ZMQ_SNDMORE) - if rc < 0: return rc - rc = zmq_msg_send(&msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - while (True): - rc = zmq_msg_recv(&msg, insocket_, 0) - if rc < 0: return rc - # assert (rc == 0) - rc = zmq_getsockopt (insocket_, ZMQ_RCVMORE, flag_ptr, &flagsz) - if rc < 0: return rc - flags = 0 - if ZMQ_VERSION_MAJOR < 3: - if flag_2: - flags |= ZMQ_SNDMORE - else: - if flag_3: - flags |= ZMQ_SNDMORE - # LABEL has been removed: - # rc = zmq_getsockopt (insocket_, ZMQ_RCVLABEL, flag_ptr, &flagsz) - # if flag_3: - # flags |= ZMQ_SNDLABEL - # assert (rc == 0) - - rc = zmq_msg_copy(&side_msg, &msg) - if rc < 0: return rc - if flags: - rc = zmq_msg_send(&side_msg, outsocket_, flags) - if rc < 0: return rc - # only SNDMORE for side-socket - rc = zmq_msg_send(&msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - else: - rc = zmq_msg_send(&side_msg, outsocket_, 0) - if rc < 0: return rc - rc = zmq_msg_send(&msg, sidesocket_, 0) - if rc < 0: return rc - break - return rc - -# the MonitoredQueue C function, adapted from zmq::queue.cpp : -cdef inline int c_monitored_queue (void *insocket_, void *outsocket_, - void *sidesocket_, zmq_msg_t *in_msg_ptr, - zmq_msg_t *out_msg_ptr, int swap_ids) nogil: - """The actual C function for a monitored queue device. - - See ``monitored_queue()`` for details. - """ - - cdef zmq_msg_t msg - cdef int rc = zmq_msg_init (&msg) - cdef zmq_msg_t id_msg - rc = zmq_msg_init (&id_msg) - if rc < 0: return rc - cdef zmq_msg_t side_msg - rc = zmq_msg_init (&side_msg) - if rc < 0: return rc - - cdef zmq_pollitem_t items [2] - items [0].socket = insocket_ - items [0].fd = 0 - items [0].events = ZMQ_POLLIN - items [0].revents = 0 - items [1].socket = outsocket_ - items [1].fd = 0 - items [1].events = ZMQ_POLLIN - items [1].revents = 0 - # I don't think sidesocket should be polled? - # items [2].socket = sidesocket_ - # items [2].fd = 0 - # items [2].events = ZMQ_POLLIN - # items [2].revents = 0 - - while (True): - - # // Wait while there are either requests or replies to process. - rc = zmq_poll (&items [0], 2, -1) - if rc < 0: return rc - # // The algorithm below asumes ratio of request and replies processed - # // under full load to be 1:1. Although processing requests replies - # // first is tempting it is suspectible to DoS attacks (overloading - # // the system with unsolicited replies). - # - # // Process a request. - if (items [0].revents & ZMQ_POLLIN): - # send in_prefix to side socket - rc = zmq_msg_copy(&side_msg, in_msg_ptr) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - # relay the rest of the message - rc = _relay(insocket_, outsocket_, sidesocket_, msg, side_msg, id_msg, swap_ids) - if rc < 0: return rc - if (items [1].revents & ZMQ_POLLIN): - # send out_prefix to side socket - rc = zmq_msg_copy(&side_msg, out_msg_ptr) - if rc < 0: return rc - rc = zmq_msg_send(&side_msg, sidesocket_, ZMQ_SNDMORE) - if rc < 0: return rc - # relay the rest of the message - rc = _relay(outsocket_, insocket_, sidesocket_, msg, side_msg, id_msg, swap_ids) - if rc < 0: return rc - return rc diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.py deleted file mode 100644 index c6d91429..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueue.py +++ /dev/null @@ -1,37 +0,0 @@ -"""pure Python monitored_queue function - -For use when Cython extension is unavailable (PyPy). - -Authors -------- -* MinRK -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import zmq - -def _relay(ins, outs, sides, prefix, swap_ids): - msg = ins.recv_multipart() - if swap_ids: - msg[:2] = msg[:2][::-1] - outs.send_multipart(msg) - sides.send_multipart([prefix] + msg) - -def monitored_queue(in_socket, out_socket, mon_socket, - in_prefix=b'in', out_prefix=b'out'): - - swap_ids = in_socket.type == zmq.ROUTER and out_socket.type == zmq.ROUTER - - poller = zmq.Poller() - poller.register(in_socket, zmq.POLLIN) - poller.register(out_socket, zmq.POLLIN) - while True: - events = dict(poller.poll()) - if in_socket in events: - _relay(in_socket, out_socket, mon_socket, in_prefix, swap_ids) - if out_socket in events: - _relay(out_socket, in_socket, mon_socket, out_prefix, swap_ids) - -__all__ = ['monitored_queue'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueuedevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueuedevice.py deleted file mode 100644 index 9723f866..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/monitoredqueuedevice.py +++ /dev/null @@ -1,66 +0,0 @@ -"""MonitoredQueue classes and functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from zmq import ZMQError, PUB -from zmq.devices.proxydevice import ProxyBase, Proxy, ThreadProxy, ProcessProxy -from zmq.devices.monitoredqueue import monitored_queue - - -class MonitoredQueueBase(ProxyBase): - """Base class for overriding methods.""" - - _in_prefix = b'' - _out_prefix = b'' - - def __init__(self, in_type, out_type, mon_type=PUB, in_prefix=b'in', out_prefix=b'out'): - - ProxyBase.__init__(self, in_type=in_type, out_type=out_type, mon_type=mon_type) - - self._in_prefix = in_prefix - self._out_prefix = out_prefix - - def run_device(self): - ins,outs,mons = self._setup_sockets() - monitored_queue(ins, outs, mons, self._in_prefix, self._out_prefix) - - -class MonitoredQueue(MonitoredQueueBase, Proxy): - """Class for running monitored_queue in the background. - - See zmq.devices.Device for most of the spec. MonitoredQueue differs from Proxy, - only in that it adds a ``prefix`` to messages sent on the monitor socket, - with a different prefix for each direction. - - MQ also supports ROUTER on both sides, which zmq.proxy does not. - - If a message arrives on `in_sock`, it will be prefixed with `in_prefix` on the monitor socket. - If it arrives on out_sock, it will be prefixed with `out_prefix`. - - A PUB socket is the most logical choice for the mon_socket, but it is not required. - """ - pass - - -class ThreadMonitoredQueue(MonitoredQueueBase, ThreadProxy): - """Run zmq.monitored_queue in a background thread. - - See MonitoredQueue and Proxy for details. - """ - pass - - -class ProcessMonitoredQueue(MonitoredQueueBase, ProcessProxy): - """Run zmq.monitored_queue in a background thread. - - See MonitoredQueue and Proxy for details. - """ - - -__all__ = [ - 'MonitoredQueue', - 'ThreadMonitoredQueue', - 'ProcessMonitoredQueue' -] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/proxydevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/proxydevice.py deleted file mode 100644 index 68be3f15..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/devices/proxydevice.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Proxy classes and functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import zmq -from zmq.devices.basedevice import Device, ThreadDevice, ProcessDevice - - -class ProxyBase(object): - """Base class for overriding methods.""" - - def __init__(self, in_type, out_type, mon_type=zmq.PUB): - - Device.__init__(self, in_type=in_type, out_type=out_type) - self.mon_type = mon_type - self._mon_binds = [] - self._mon_connects = [] - self._mon_sockopts = [] - - def bind_mon(self, addr): - """Enqueue ZMQ address for binding on mon_socket. - - See zmq.Socket.bind for details. - """ - self._mon_binds.append(addr) - - def connect_mon(self, addr): - """Enqueue ZMQ address for connecting on mon_socket. - - See zmq.Socket.bind for details. - """ - self._mon_connects.append(addr) - - def setsockopt_mon(self, opt, value): - """Enqueue setsockopt(opt, value) for mon_socket - - See zmq.Socket.setsockopt for details. - """ - self._mon_sockopts.append((opt, value)) - - def _setup_sockets(self): - ins,outs = Device._setup_sockets(self) - ctx = self._context - mons = ctx.socket(self.mon_type) - - # set sockopts (must be done first, in case of zmq.IDENTITY) - for opt,value in self._mon_sockopts: - mons.setsockopt(opt, value) - - for iface in self._mon_binds: - mons.bind(iface) - - for iface in self._mon_connects: - mons.connect(iface) - - return ins,outs,mons - - def run_device(self): - ins,outs,mons = self._setup_sockets() - zmq.proxy(ins, outs, mons) - -class Proxy(ProxyBase, Device): - """Threadsafe Proxy object. - - See zmq.devices.Device for most of the spec. This subclass adds a - _mon version of each _{in|out} method, for configuring the - monitor socket. - - A Proxy is a 3-socket ZMQ Device that functions just like a - QUEUE, except each message is also sent out on the monitor socket. - - A PUB socket is the most logical choice for the mon_socket, but it is not required. - """ - pass - -class ThreadProxy(ProxyBase, ThreadDevice): - """Proxy in a Thread. See Proxy for more.""" - pass - -class ProcessProxy(ProxyBase, ProcessDevice): - """Proxy in a Process. See Proxy for more.""" - pass - - -__all__ = [ - 'Proxy', - 'ThreadProxy', - 'ProcessProxy', -] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/error.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/error.py deleted file mode 100644 index 48cdaafa..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/error.py +++ /dev/null @@ -1,164 +0,0 @@ -"""0MQ Error classes and functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -class ZMQBaseError(Exception): - """Base exception class for 0MQ errors in Python.""" - pass - -class ZMQError(ZMQBaseError): - """Wrap an errno style error. - - Parameters - ---------- - errno : int - The ZMQ errno or None. If None, then ``zmq_errno()`` is called and - used. - msg : string - Description of the error or None. - """ - errno = None - - def __init__(self, errno=None, msg=None): - """Wrap an errno style error. - - Parameters - ---------- - errno : int - The ZMQ errno or None. If None, then ``zmq_errno()`` is called and - used. - msg : string - Description of the error or None. - """ - from zmq.backend import strerror, zmq_errno - if errno is None: - errno = zmq_errno() - if isinstance(errno, int): - self.errno = errno - if msg is None: - self.strerror = strerror(errno) - else: - self.strerror = msg - else: - if msg is None: - self.strerror = str(errno) - else: - self.strerror = msg - # flush signals, because there could be a SIGINT - # waiting to pounce, resulting in uncaught exceptions. - # Doing this here means getting SIGINT during a blocking - # libzmq call will raise a *catchable* KeyboardInterrupt - # PyErr_CheckSignals() - - def __str__(self): - return self.strerror - - def __repr__(self): - return "ZMQError('%s')"%self.strerror - - -class ZMQBindError(ZMQBaseError): - """An error for ``Socket.bind_to_random_port()``. - - See Also - -------- - .Socket.bind_to_random_port - """ - pass - - -class NotDone(ZMQBaseError): - """Raised when timeout is reached while waiting for 0MQ to finish with a Message - - See Also - -------- - .MessageTracker.wait : object for tracking when ZeroMQ is done - """ - pass - - -class ContextTerminated(ZMQError): - """Wrapper for zmq.ETERM - - .. versionadded:: 13.0 - """ - pass - - -class Again(ZMQError): - """Wrapper for zmq.EAGAIN - - .. versionadded:: 13.0 - """ - pass - - -def _check_rc(rc, errno=None): - """internal utility for checking zmq return condition - - and raising the appropriate Exception class - """ - if rc < 0: - from zmq.backend import zmq_errno - if errno is None: - errno = zmq_errno() - from zmq import EAGAIN, ETERM - if errno == EAGAIN: - raise Again(errno) - elif errno == ETERM: - raise ContextTerminated(errno) - else: - raise ZMQError(errno) - -_zmq_version_info = None -_zmq_version = None - -class ZMQVersionError(NotImplementedError): - """Raised when a feature is not provided by the linked version of libzmq. - - .. versionadded:: 14.2 - """ - min_version = None - def __init__(self, min_version, msg='Feature'): - global _zmq_version - if _zmq_version is None: - from zmq import zmq_version - _zmq_version = zmq_version() - self.msg = msg - self.min_version = min_version - self.version = _zmq_version - - def __repr__(self): - return "ZMQVersionError('%s')" % str(self) - - def __str__(self): - return "%s requires libzmq >= %s, have %s" % (self.msg, self.min_version, self.version) - - -def _check_version(min_version_info, msg='Feature'): - """Check for libzmq - - raises ZMQVersionError if current zmq version is not at least min_version - - min_version_info is a tuple of integers, and will be compared against zmq.zmq_version_info(). - """ - global _zmq_version_info - if _zmq_version_info is None: - from zmq import zmq_version_info - _zmq_version_info = zmq_version_info() - if _zmq_version_info < min_version_info: - min_version = '.'.join(str(v) for v in min_version_info) - raise ZMQVersionError(min_version, msg) - - -__all__ = [ - 'ZMQBaseError', - 'ZMQBindError', - 'ZMQError', - 'NotDone', - 'ContextTerminated', - 'Again', - 'ZMQVersionError', -] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/__init__.py deleted file mode 100644 index 568e8e8d..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -"""A Tornado based event loop for PyZMQ.""" - -from zmq.eventloop.ioloop import IOLoop - -__all__ = ['IOLoop'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/ioloop.py deleted file mode 100644 index 35f4c418..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/ioloop.py +++ /dev/null @@ -1,193 +0,0 @@ -# coding: utf-8 -"""tornado IOLoop API with zmq compatibility - -If you have tornado ≥ 3.0, this is a subclass of tornado's IOLoop, -otherwise we ship a minimal subset of tornado in zmq.eventloop.minitornado. - -The minimal shipped version of tornado's IOLoop does not include -support for concurrent futures - this will only be available if you -have tornado ≥ 3.0. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from __future__ import absolute_import, division, with_statement - -import os -import time -import warnings - -from zmq import ( - Poller, - POLLIN, POLLOUT, POLLERR, - ZMQError, ETERM, -) - -try: - import tornado - tornado_version = tornado.version_info -except (ImportError, AttributeError): - tornado_version = () - -try: - # tornado ≥ 3 - from tornado.ioloop import PollIOLoop, PeriodicCallback - from tornado.log import gen_log -except ImportError: - from .minitornado.ioloop import PollIOLoop, PeriodicCallback - from .minitornado.log import gen_log - - -class DelayedCallback(PeriodicCallback): - """Schedules the given callback to be called once. - - The callback is called once, after callback_time milliseconds. - - `start` must be called after the DelayedCallback is created. - - The timeout is calculated from when `start` is called. - """ - def __init__(self, callback, callback_time, io_loop=None): - # PeriodicCallback require callback_time to be positive - warnings.warn("""DelayedCallback is deprecated. - Use loop.add_timeout instead.""", DeprecationWarning) - callback_time = max(callback_time, 1e-3) - super(DelayedCallback, self).__init__(callback, callback_time, io_loop) - - def start(self): - """Starts the timer.""" - self._running = True - self._firstrun = True - self._next_timeout = time.time() + self.callback_time / 1000.0 - self.io_loop.add_timeout(self._next_timeout, self._run) - - def _run(self): - if not self._running: return - self._running = False - try: - self.callback() - except Exception: - gen_log.error("Error in delayed callback", exc_info=True) - - -class ZMQPoller(object): - """A poller that can be used in the tornado IOLoop. - - This simply wraps a regular zmq.Poller, scaling the timeout - by 1000, so that it is in seconds rather than milliseconds. - """ - - def __init__(self): - self._poller = Poller() - - @staticmethod - def _map_events(events): - """translate IOLoop.READ/WRITE/ERROR event masks into zmq.POLLIN/OUT/ERR""" - z_events = 0 - if events & IOLoop.READ: - z_events |= POLLIN - if events & IOLoop.WRITE: - z_events |= POLLOUT - if events & IOLoop.ERROR: - z_events |= POLLERR - return z_events - - @staticmethod - def _remap_events(z_events): - """translate zmq.POLLIN/OUT/ERR event masks into IOLoop.READ/WRITE/ERROR""" - events = 0 - if z_events & POLLIN: - events |= IOLoop.READ - if z_events & POLLOUT: - events |= IOLoop.WRITE - if z_events & POLLERR: - events |= IOLoop.ERROR - return events - - def register(self, fd, events): - return self._poller.register(fd, self._map_events(events)) - - def modify(self, fd, events): - return self._poller.modify(fd, self._map_events(events)) - - def unregister(self, fd): - return self._poller.unregister(fd) - - def poll(self, timeout): - """poll in seconds rather than milliseconds. - - Event masks will be IOLoop.READ/WRITE/ERROR - """ - z_events = self._poller.poll(1000*timeout) - return [ (fd,self._remap_events(evt)) for (fd,evt) in z_events ] - - def close(self): - pass - - -class ZMQIOLoop(PollIOLoop): - """ZMQ subclass of tornado's IOLoop""" - def initialize(self, impl=None, **kwargs): - impl = ZMQPoller() if impl is None else impl - super(ZMQIOLoop, self).initialize(impl=impl, **kwargs) - - @staticmethod - def instance(): - """Returns a global `IOLoop` instance. - - Most applications have a single, global `IOLoop` running on the - main thread. Use this method to get this instance from - another thread. To get the current thread's `IOLoop`, use `current()`. - """ - # install ZMQIOLoop as the active IOLoop implementation - # when using tornado 3 - if tornado_version >= (3,): - PollIOLoop.configure(ZMQIOLoop) - return PollIOLoop.instance() - - def start(self): - try: - super(ZMQIOLoop, self).start() - except ZMQError as e: - if e.errno == ETERM: - # quietly return on ETERM - pass - else: - raise e - - -if tornado_version >= (3,0) and tornado_version < (3,1): - def backport_close(self, all_fds=False): - """backport IOLoop.close to 3.0 from 3.1 (supports fd.close() method)""" - from zmq.eventloop.minitornado.ioloop import PollIOLoop as mini_loop - return mini_loop.close.__get__(self)(all_fds) - ZMQIOLoop.close = backport_close - - -# public API name -IOLoop = ZMQIOLoop - - -def install(): - """set the tornado IOLoop instance with the pyzmq IOLoop. - - After calling this function, tornado's IOLoop.instance() and pyzmq's - IOLoop.instance() will return the same object. - - An assertion error will be raised if tornado's IOLoop has been initialized - prior to calling this function. - """ - from tornado import ioloop - # check if tornado's IOLoop is already initialized to something other - # than the pyzmq IOLoop instance: - assert (not ioloop.IOLoop.initialized()) or \ - ioloop.IOLoop.instance() is IOLoop.instance(), "tornado IOLoop already initialized" - - if tornado_version >= (3,): - # tornado 3 has an official API for registering new defaults, yay! - ioloop.IOLoop.configure(ZMQIOLoop) - else: - # we have to set the global instance explicitly - ioloop.IOLoop._instance = IOLoop.instance() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/concurrent.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/concurrent.py deleted file mode 100644 index 519b23d5..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/concurrent.py +++ /dev/null @@ -1,11 +0,0 @@ -"""pyzmq does not ship tornado's futures, -this just raises informative NotImplementedErrors to avoid having to change too much code. -""" - -class NotImplementedFuture(object): - def __init__(self, *args, **kwargs): - raise NotImplementedError("pyzmq does not ship tornado's Futures, " - "install tornado >= 3.0 for future support." - ) - -Future = TracebackFuture = NotImplementedFuture diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/ioloop.py deleted file mode 100644 index 710a3ecb..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/ioloop.py +++ /dev/null @@ -1,829 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2009 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""An I/O event loop for non-blocking sockets. - -Typical applications will use a single `IOLoop` object, in the -`IOLoop.instance` singleton. The `IOLoop.start` method should usually -be called at the end of the ``main()`` function. Atypical applications may -use more than one `IOLoop`, such as one `IOLoop` per thread, or per `unittest` -case. - -In addition to I/O events, the `IOLoop` can also schedule time-based events. -`IOLoop.add_timeout` is a non-blocking alternative to `time.sleep`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import datetime -import errno -import functools -import heapq -import logging -import numbers -import os -import select -import sys -import threading -import time -import traceback - -from .concurrent import Future, TracebackFuture -from .log import app_log, gen_log -from . import stack_context -from .util import Configurable - -try: - import signal -except ImportError: - signal = None - -try: - import thread # py2 -except ImportError: - import _thread as thread # py3 - -from .platform.auto import set_close_exec, Waker - - -class TimeoutError(Exception): - pass - - -class IOLoop(Configurable): - """A level-triggered I/O loop. - - We use ``epoll`` (Linux) or ``kqueue`` (BSD and Mac OS X) if they - are available, or else we fall back on select(). If you are - implementing a system that needs to handle thousands of - simultaneous connections, you should use a system that supports - either ``epoll`` or ``kqueue``. - - Example usage for a simple TCP server:: - - import errno - import functools - import ioloop - import socket - - def connection_ready(sock, fd, events): - while True: - try: - connection, address = sock.accept() - except socket.error, e: - if e.args[0] not in (errno.EWOULDBLOCK, errno.EAGAIN): - raise - return - connection.setblocking(0) - handle_connection(connection, address) - - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - sock.setblocking(0) - sock.bind(("", port)) - sock.listen(128) - - io_loop = ioloop.IOLoop.instance() - callback = functools.partial(connection_ready, sock) - io_loop.add_handler(sock.fileno(), callback, io_loop.READ) - io_loop.start() - - """ - # Constants from the epoll module - _EPOLLIN = 0x001 - _EPOLLPRI = 0x002 - _EPOLLOUT = 0x004 - _EPOLLERR = 0x008 - _EPOLLHUP = 0x010 - _EPOLLRDHUP = 0x2000 - _EPOLLONESHOT = (1 << 30) - _EPOLLET = (1 << 31) - - # Our events map exactly to the epoll events - NONE = 0 - READ = _EPOLLIN - WRITE = _EPOLLOUT - ERROR = _EPOLLERR | _EPOLLHUP - - # Global lock for creating global IOLoop instance - _instance_lock = threading.Lock() - - _current = threading.local() - - @staticmethod - def instance(): - """Returns a global `IOLoop` instance. - - Most applications have a single, global `IOLoop` running on the - main thread. Use this method to get this instance from - another thread. To get the current thread's `IOLoop`, use `current()`. - """ - if not hasattr(IOLoop, "_instance"): - with IOLoop._instance_lock: - if not hasattr(IOLoop, "_instance"): - # New instance after double check - IOLoop._instance = IOLoop() - return IOLoop._instance - - @staticmethod - def initialized(): - """Returns true if the singleton instance has been created.""" - return hasattr(IOLoop, "_instance") - - def install(self): - """Installs this `IOLoop` object as the singleton instance. - - This is normally not necessary as `instance()` will create - an `IOLoop` on demand, but you may want to call `install` to use - a custom subclass of `IOLoop`. - """ - assert not IOLoop.initialized() - IOLoop._instance = self - - @staticmethod - def current(): - """Returns the current thread's `IOLoop`. - - If an `IOLoop` is currently running or has been marked as current - by `make_current`, returns that instance. Otherwise returns - `IOLoop.instance()`, i.e. the main thread's `IOLoop`. - - A common pattern for classes that depend on ``IOLoops`` is to use - a default argument to enable programs with multiple ``IOLoops`` - but not require the argument for simpler applications:: - - class MyClass(object): - def __init__(self, io_loop=None): - self.io_loop = io_loop or IOLoop.current() - - In general you should use `IOLoop.current` as the default when - constructing an asynchronous object, and use `IOLoop.instance` - when you mean to communicate to the main thread from a different - one. - """ - current = getattr(IOLoop._current, "instance", None) - if current is None: - return IOLoop.instance() - return current - - def make_current(self): - """Makes this the `IOLoop` for the current thread. - - An `IOLoop` automatically becomes current for its thread - when it is started, but it is sometimes useful to call - `make_current` explictly before starting the `IOLoop`, - so that code run at startup time can find the right - instance. - """ - IOLoop._current.instance = self - - @staticmethod - def clear_current(): - IOLoop._current.instance = None - - @classmethod - def configurable_base(cls): - return IOLoop - - @classmethod - def configurable_default(cls): - # this is the only patch to IOLoop: - from zmq.eventloop.ioloop import ZMQIOLoop - return ZMQIOLoop - # the remainder of this method is unused, - # but left for preservation reasons - if hasattr(select, "epoll"): - from tornado.platform.epoll import EPollIOLoop - return EPollIOLoop - if hasattr(select, "kqueue"): - # Python 2.6+ on BSD or Mac - from tornado.platform.kqueue import KQueueIOLoop - return KQueueIOLoop - from tornado.platform.select import SelectIOLoop - return SelectIOLoop - - def initialize(self): - pass - - def close(self, all_fds=False): - """Closes the `IOLoop`, freeing any resources used. - - If ``all_fds`` is true, all file descriptors registered on the - IOLoop will be closed (not just the ones created by the - `IOLoop` itself). - - Many applications will only use a single `IOLoop` that runs for the - entire lifetime of the process. In that case closing the `IOLoop` - is not necessary since everything will be cleaned up when the - process exits. `IOLoop.close` is provided mainly for scenarios - such as unit tests, which create and destroy a large number of - ``IOLoops``. - - An `IOLoop` must be completely stopped before it can be closed. This - means that `IOLoop.stop()` must be called *and* `IOLoop.start()` must - be allowed to return before attempting to call `IOLoop.close()`. - Therefore the call to `close` will usually appear just after - the call to `start` rather than near the call to `stop`. - - .. versionchanged:: 3.1 - If the `IOLoop` implementation supports non-integer objects - for "file descriptors", those objects will have their - ``close`` method when ``all_fds`` is true. - """ - raise NotImplementedError() - - def add_handler(self, fd, handler, events): - """Registers the given handler to receive the given events for fd. - - The ``events`` argument is a bitwise or of the constants - ``IOLoop.READ``, ``IOLoop.WRITE``, and ``IOLoop.ERROR``. - - When an event occurs, ``handler(fd, events)`` will be run. - """ - raise NotImplementedError() - - def update_handler(self, fd, events): - """Changes the events we listen for fd.""" - raise NotImplementedError() - - def remove_handler(self, fd): - """Stop listening for events on fd.""" - raise NotImplementedError() - - def set_blocking_signal_threshold(self, seconds, action): - """Sends a signal if the `IOLoop` is blocked for more than - ``s`` seconds. - - Pass ``seconds=None`` to disable. Requires Python 2.6 on a unixy - platform. - - The action parameter is a Python signal handler. Read the - documentation for the `signal` module for more information. - If ``action`` is None, the process will be killed if it is - blocked for too long. - """ - raise NotImplementedError() - - def set_blocking_log_threshold(self, seconds): - """Logs a stack trace if the `IOLoop` is blocked for more than - ``s`` seconds. - - Equivalent to ``set_blocking_signal_threshold(seconds, - self.log_stack)`` - """ - self.set_blocking_signal_threshold(seconds, self.log_stack) - - def log_stack(self, signal, frame): - """Signal handler to log the stack trace of the current thread. - - For use with `set_blocking_signal_threshold`. - """ - gen_log.warning('IOLoop blocked for %f seconds in\n%s', - self._blocking_signal_threshold, - ''.join(traceback.format_stack(frame))) - - def start(self): - """Starts the I/O loop. - - The loop will run until one of the callbacks calls `stop()`, which - will make the loop stop after the current event iteration completes. - """ - raise NotImplementedError() - - def stop(self): - """Stop the I/O loop. - - If the event loop is not currently running, the next call to `start()` - will return immediately. - - To use asynchronous methods from otherwise-synchronous code (such as - unit tests), you can start and stop the event loop like this:: - - ioloop = IOLoop() - async_method(ioloop=ioloop, callback=ioloop.stop) - ioloop.start() - - ``ioloop.start()`` will return after ``async_method`` has run - its callback, whether that callback was invoked before or - after ``ioloop.start``. - - Note that even after `stop` has been called, the `IOLoop` is not - completely stopped until `IOLoop.start` has also returned. - Some work that was scheduled before the call to `stop` may still - be run before the `IOLoop` shuts down. - """ - raise NotImplementedError() - - def run_sync(self, func, timeout=None): - """Starts the `IOLoop`, runs the given function, and stops the loop. - - If the function returns a `.Future`, the `IOLoop` will run - until the future is resolved. If it raises an exception, the - `IOLoop` will stop and the exception will be re-raised to the - caller. - - The keyword-only argument ``timeout`` may be used to set - a maximum duration for the function. If the timeout expires, - a `TimeoutError` is raised. - - This method is useful in conjunction with `tornado.gen.coroutine` - to allow asynchronous calls in a ``main()`` function:: - - @gen.coroutine - def main(): - # do stuff... - - if __name__ == '__main__': - IOLoop.instance().run_sync(main) - """ - future_cell = [None] - - def run(): - try: - result = func() - except Exception: - future_cell[0] = TracebackFuture() - future_cell[0].set_exc_info(sys.exc_info()) - else: - if isinstance(result, Future): - future_cell[0] = result - else: - future_cell[0] = Future() - future_cell[0].set_result(result) - self.add_future(future_cell[0], lambda future: self.stop()) - self.add_callback(run) - if timeout is not None: - timeout_handle = self.add_timeout(self.time() + timeout, self.stop) - self.start() - if timeout is not None: - self.remove_timeout(timeout_handle) - if not future_cell[0].done(): - raise TimeoutError('Operation timed out after %s seconds' % timeout) - return future_cell[0].result() - - def time(self): - """Returns the current time according to the `IOLoop`'s clock. - - The return value is a floating-point number relative to an - unspecified time in the past. - - By default, the `IOLoop`'s time function is `time.time`. However, - it may be configured to use e.g. `time.monotonic` instead. - Calls to `add_timeout` that pass a number instead of a - `datetime.timedelta` should use this function to compute the - appropriate time, so they can work no matter what time function - is chosen. - """ - return time.time() - - def add_timeout(self, deadline, callback): - """Runs the ``callback`` at the time ``deadline`` from the I/O loop. - - Returns an opaque handle that may be passed to - `remove_timeout` to cancel. - - ``deadline`` may be a number denoting a time (on the same - scale as `IOLoop.time`, normally `time.time`), or a - `datetime.timedelta` object for a deadline relative to the - current time. - - Note that it is not safe to call `add_timeout` from other threads. - Instead, you must use `add_callback` to transfer control to the - `IOLoop`'s thread, and then call `add_timeout` from there. - """ - raise NotImplementedError() - - def remove_timeout(self, timeout): - """Cancels a pending timeout. - - The argument is a handle as returned by `add_timeout`. It is - safe to call `remove_timeout` even if the callback has already - been run. - """ - raise NotImplementedError() - - def add_callback(self, callback, *args, **kwargs): - """Calls the given callback on the next I/O loop iteration. - - It is safe to call this method from any thread at any time, - except from a signal handler. Note that this is the **only** - method in `IOLoop` that makes this thread-safety guarantee; all - other interaction with the `IOLoop` must be done from that - `IOLoop`'s thread. `add_callback()` may be used to transfer - control from other threads to the `IOLoop`'s thread. - - To add a callback from a signal handler, see - `add_callback_from_signal`. - """ - raise NotImplementedError() - - def add_callback_from_signal(self, callback, *args, **kwargs): - """Calls the given callback on the next I/O loop iteration. - - Safe for use from a Python signal handler; should not be used - otherwise. - - Callbacks added with this method will be run without any - `.stack_context`, to avoid picking up the context of the function - that was interrupted by the signal. - """ - raise NotImplementedError() - - def add_future(self, future, callback): - """Schedules a callback on the ``IOLoop`` when the given - `.Future` is finished. - - The callback is invoked with one argument, the - `.Future`. - """ - assert isinstance(future, Future) - callback = stack_context.wrap(callback) - future.add_done_callback( - lambda future: self.add_callback(callback, future)) - - def _run_callback(self, callback): - """Runs a callback with error handling. - - For use in subclasses. - """ - try: - callback() - except Exception: - self.handle_callback_exception(callback) - - def handle_callback_exception(self, callback): - """This method is called whenever a callback run by the `IOLoop` - throws an exception. - - By default simply logs the exception as an error. Subclasses - may override this method to customize reporting of exceptions. - - The exception itself is not passed explicitly, but is available - in `sys.exc_info`. - """ - app_log.error("Exception in callback %r", callback, exc_info=True) - - -class PollIOLoop(IOLoop): - """Base class for IOLoops built around a select-like function. - - For concrete implementations, see `tornado.platform.epoll.EPollIOLoop` - (Linux), `tornado.platform.kqueue.KQueueIOLoop` (BSD and Mac), or - `tornado.platform.select.SelectIOLoop` (all platforms). - """ - def initialize(self, impl, time_func=None): - super(PollIOLoop, self).initialize() - self._impl = impl - if hasattr(self._impl, 'fileno'): - set_close_exec(self._impl.fileno()) - self.time_func = time_func or time.time - self._handlers = {} - self._events = {} - self._callbacks = [] - self._callback_lock = threading.Lock() - self._timeouts = [] - self._cancellations = 0 - self._running = False - self._stopped = False - self._closing = False - self._thread_ident = None - self._blocking_signal_threshold = None - - # Create a pipe that we send bogus data to when we want to wake - # the I/O loop when it is idle - self._waker = Waker() - self.add_handler(self._waker.fileno(), - lambda fd, events: self._waker.consume(), - self.READ) - - def close(self, all_fds=False): - with self._callback_lock: - self._closing = True - self.remove_handler(self._waker.fileno()) - if all_fds: - for fd in self._handlers.keys(): - try: - close_method = getattr(fd, 'close', None) - if close_method is not None: - close_method() - else: - os.close(fd) - except Exception: - gen_log.debug("error closing fd %s", fd, exc_info=True) - self._waker.close() - self._impl.close() - - def add_handler(self, fd, handler, events): - self._handlers[fd] = stack_context.wrap(handler) - self._impl.register(fd, events | self.ERROR) - - def update_handler(self, fd, events): - self._impl.modify(fd, events | self.ERROR) - - def remove_handler(self, fd): - self._handlers.pop(fd, None) - self._events.pop(fd, None) - try: - self._impl.unregister(fd) - except Exception: - gen_log.debug("Error deleting fd from IOLoop", exc_info=True) - - def set_blocking_signal_threshold(self, seconds, action): - if not hasattr(signal, "setitimer"): - gen_log.error("set_blocking_signal_threshold requires a signal module " - "with the setitimer method") - return - self._blocking_signal_threshold = seconds - if seconds is not None: - signal.signal(signal.SIGALRM, - action if action is not None else signal.SIG_DFL) - - def start(self): - if not logging.getLogger().handlers: - # The IOLoop catches and logs exceptions, so it's - # important that log output be visible. However, python's - # default behavior for non-root loggers (prior to python - # 3.2) is to print an unhelpful "no handlers could be - # found" message rather than the actual log entry, so we - # must explicitly configure logging if we've made it this - # far without anything. - logging.basicConfig() - if self._stopped: - self._stopped = False - return - old_current = getattr(IOLoop._current, "instance", None) - IOLoop._current.instance = self - self._thread_ident = thread.get_ident() - self._running = True - - # signal.set_wakeup_fd closes a race condition in event loops: - # a signal may arrive at the beginning of select/poll/etc - # before it goes into its interruptible sleep, so the signal - # will be consumed without waking the select. The solution is - # for the (C, synchronous) signal handler to write to a pipe, - # which will then be seen by select. - # - # In python's signal handling semantics, this only matters on the - # main thread (fortunately, set_wakeup_fd only works on the main - # thread and will raise a ValueError otherwise). - # - # If someone has already set a wakeup fd, we don't want to - # disturb it. This is an issue for twisted, which does its - # SIGCHILD processing in response to its own wakeup fd being - # written to. As long as the wakeup fd is registered on the IOLoop, - # the loop will still wake up and everything should work. - old_wakeup_fd = None - if hasattr(signal, 'set_wakeup_fd') and os.name == 'posix': - # requires python 2.6+, unix. set_wakeup_fd exists but crashes - # the python process on windows. - try: - old_wakeup_fd = signal.set_wakeup_fd(self._waker.write_fileno()) - if old_wakeup_fd != -1: - # Already set, restore previous value. This is a little racy, - # but there's no clean get_wakeup_fd and in real use the - # IOLoop is just started once at the beginning. - signal.set_wakeup_fd(old_wakeup_fd) - old_wakeup_fd = None - except ValueError: # non-main thread - pass - - while True: - poll_timeout = 3600.0 - - # Prevent IO event starvation by delaying new callbacks - # to the next iteration of the event loop. - with self._callback_lock: - callbacks = self._callbacks - self._callbacks = [] - for callback in callbacks: - self._run_callback(callback) - - if self._timeouts: - now = self.time() - while self._timeouts: - if self._timeouts[0].callback is None: - # the timeout was cancelled - heapq.heappop(self._timeouts) - self._cancellations -= 1 - elif self._timeouts[0].deadline <= now: - timeout = heapq.heappop(self._timeouts) - self._run_callback(timeout.callback) - else: - seconds = self._timeouts[0].deadline - now - poll_timeout = min(seconds, poll_timeout) - break - if (self._cancellations > 512 - and self._cancellations > (len(self._timeouts) >> 1)): - # Clean up the timeout queue when it gets large and it's - # more than half cancellations. - self._cancellations = 0 - self._timeouts = [x for x in self._timeouts - if x.callback is not None] - heapq.heapify(self._timeouts) - - if self._callbacks: - # If any callbacks or timeouts called add_callback, - # we don't want to wait in poll() before we run them. - poll_timeout = 0.0 - - if not self._running: - break - - if self._blocking_signal_threshold is not None: - # clear alarm so it doesn't fire while poll is waiting for - # events. - signal.setitimer(signal.ITIMER_REAL, 0, 0) - - try: - event_pairs = self._impl.poll(poll_timeout) - except Exception as e: - # Depending on python version and IOLoop implementation, - # different exception types may be thrown and there are - # two ways EINTR might be signaled: - # * e.errno == errno.EINTR - # * e.args is like (errno.EINTR, 'Interrupted system call') - if (getattr(e, 'errno', None) == errno.EINTR or - (isinstance(getattr(e, 'args', None), tuple) and - len(e.args) == 2 and e.args[0] == errno.EINTR)): - continue - else: - raise - - if self._blocking_signal_threshold is not None: - signal.setitimer(signal.ITIMER_REAL, - self._blocking_signal_threshold, 0) - - # Pop one fd at a time from the set of pending fds and run - # its handler. Since that handler may perform actions on - # other file descriptors, there may be reentrant calls to - # this IOLoop that update self._events - self._events.update(event_pairs) - while self._events: - fd, events = self._events.popitem() - try: - self._handlers[fd](fd, events) - except (OSError, IOError) as e: - if e.args[0] == errno.EPIPE: - # Happens when the client closes the connection - pass - else: - app_log.error("Exception in I/O handler for fd %s", - fd, exc_info=True) - except Exception: - app_log.error("Exception in I/O handler for fd %s", - fd, exc_info=True) - # reset the stopped flag so another start/stop pair can be issued - self._stopped = False - if self._blocking_signal_threshold is not None: - signal.setitimer(signal.ITIMER_REAL, 0, 0) - IOLoop._current.instance = old_current - if old_wakeup_fd is not None: - signal.set_wakeup_fd(old_wakeup_fd) - - def stop(self): - self._running = False - self._stopped = True - self._waker.wake() - - def time(self): - return self.time_func() - - def add_timeout(self, deadline, callback): - timeout = _Timeout(deadline, stack_context.wrap(callback), self) - heapq.heappush(self._timeouts, timeout) - return timeout - - def remove_timeout(self, timeout): - # Removing from a heap is complicated, so just leave the defunct - # timeout object in the queue (see discussion in - # http://docs.python.org/library/heapq.html). - # If this turns out to be a problem, we could add a garbage - # collection pass whenever there are too many dead timeouts. - timeout.callback = None - self._cancellations += 1 - - def add_callback(self, callback, *args, **kwargs): - with self._callback_lock: - if self._closing: - raise RuntimeError("IOLoop is closing") - list_empty = not self._callbacks - self._callbacks.append(functools.partial( - stack_context.wrap(callback), *args, **kwargs)) - if list_empty and thread.get_ident() != self._thread_ident: - # If we're in the IOLoop's thread, we know it's not currently - # polling. If we're not, and we added the first callback to an - # empty list, we may need to wake it up (it may wake up on its - # own, but an occasional extra wake is harmless). Waking - # up a polling IOLoop is relatively expensive, so we try to - # avoid it when we can. - self._waker.wake() - - def add_callback_from_signal(self, callback, *args, **kwargs): - with stack_context.NullContext(): - if thread.get_ident() != self._thread_ident: - # if the signal is handled on another thread, we can add - # it normally (modulo the NullContext) - self.add_callback(callback, *args, **kwargs) - else: - # If we're on the IOLoop's thread, we cannot use - # the regular add_callback because it may deadlock on - # _callback_lock. Blindly insert into self._callbacks. - # This is safe because the GIL makes list.append atomic. - # One subtlety is that if the signal interrupted the - # _callback_lock block in IOLoop.start, we may modify - # either the old or new version of self._callbacks, - # but either way will work. - self._callbacks.append(functools.partial( - stack_context.wrap(callback), *args, **kwargs)) - - -class _Timeout(object): - """An IOLoop timeout, a UNIX timestamp and a callback""" - - # Reduce memory overhead when there are lots of pending callbacks - __slots__ = ['deadline', 'callback'] - - def __init__(self, deadline, callback, io_loop): - if isinstance(deadline, numbers.Real): - self.deadline = deadline - elif isinstance(deadline, datetime.timedelta): - self.deadline = io_loop.time() + _Timeout.timedelta_to_seconds(deadline) - else: - raise TypeError("Unsupported deadline %r" % deadline) - self.callback = callback - - @staticmethod - def timedelta_to_seconds(td): - """Equivalent to td.total_seconds() (introduced in python 2.7).""" - return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6) / float(10 ** 6) - - # Comparison methods to sort by deadline, with object id as a tiebreaker - # to guarantee a consistent ordering. The heapq module uses __le__ - # in python2.5, and __lt__ in 2.6+ (sort() and most other comparisons - # use __lt__). - def __lt__(self, other): - return ((self.deadline, id(self)) < - (other.deadline, id(other))) - - def __le__(self, other): - return ((self.deadline, id(self)) <= - (other.deadline, id(other))) - - -class PeriodicCallback(object): - """Schedules the given callback to be called periodically. - - The callback is called every ``callback_time`` milliseconds. - - `start` must be called after the `PeriodicCallback` is created. - """ - def __init__(self, callback, callback_time, io_loop=None): - self.callback = callback - if callback_time <= 0: - raise ValueError("Periodic callback must have a positive callback_time") - self.callback_time = callback_time - self.io_loop = io_loop or IOLoop.current() - self._running = False - self._timeout = None - - def start(self): - """Starts the timer.""" - self._running = True - self._next_timeout = self.io_loop.time() - self._schedule_next() - - def stop(self): - """Stops the timer.""" - self._running = False - if self._timeout is not None: - self.io_loop.remove_timeout(self._timeout) - self._timeout = None - - def _run(self): - if not self._running: - return - try: - self.callback() - except Exception: - app_log.error("Error in periodic callback", exc_info=True) - self._schedule_next() - - def _schedule_next(self): - if self._running: - current_time = self.io_loop.time() - while self._next_timeout <= current_time: - self._next_timeout += self.callback_time / 1000.0 - self._timeout = self.io_loop.add_timeout(self._next_timeout, self._run) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/log.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/log.py deleted file mode 100644 index 49051e89..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/log.py +++ /dev/null @@ -1,6 +0,0 @@ -"""minimal subset of tornado.log for zmq.eventloop.minitornado""" - -import logging - -app_log = logging.getLogger("tornado.application") -gen_log = logging.getLogger("tornado.general") diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/auto.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/auto.py deleted file mode 100644 index b40ccd94..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/auto.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2011 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""Implementation of platform-specific functionality. - -For each function or class described in `tornado.platform.interface`, -the appropriate platform-specific implementation exists in this module. -Most code that needs access to this functionality should do e.g.:: - - from tornado.platform.auto import set_close_exec -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import os - -if os.name == 'nt': - from .common import Waker - from .windows import set_close_exec -else: - from .posix import set_close_exec, Waker - -try: - # monotime monkey-patches the time module to have a monotonic function - # in versions of python before 3.3. - import monotime -except ImportError: - pass -try: - from time import monotonic as monotonic_time -except ImportError: - monotonic_time = None diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/common.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/common.py deleted file mode 100644 index 2d75dc1e..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/common.py +++ /dev/null @@ -1,91 +0,0 @@ -"""Lowest-common-denominator implementations of platform functionality.""" -from __future__ import absolute_import, division, print_function, with_statement - -import errno -import socket - -from . import interface - - -class Waker(interface.Waker): - """Create an OS independent asynchronous pipe. - - For use on platforms that don't have os.pipe() (or where pipes cannot - be passed to select()), but do have sockets. This includes Windows - and Jython. - """ - def __init__(self): - # Based on Zope async.py: http://svn.zope.org/zc.ngi/trunk/src/zc/ngi/async.py - - self.writer = socket.socket() - # Disable buffering -- pulling the trigger sends 1 byte, - # and we want that sent immediately, to wake up ASAP. - self.writer.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - - count = 0 - while 1: - count += 1 - # Bind to a local port; for efficiency, let the OS pick - # a free port for us. - # Unfortunately, stress tests showed that we may not - # be able to connect to that port ("Address already in - # use") despite that the OS picked it. This appears - # to be a race bug in the Windows socket implementation. - # So we loop until a connect() succeeds (almost always - # on the first try). See the long thread at - # http://mail.zope.org/pipermail/zope/2005-July/160433.html - # for hideous details. - a = socket.socket() - a.bind(("127.0.0.1", 0)) - a.listen(1) - connect_address = a.getsockname() # assigned (host, port) pair - try: - self.writer.connect(connect_address) - break # success - except socket.error as detail: - if (not hasattr(errno, 'WSAEADDRINUSE') or - detail[0] != errno.WSAEADDRINUSE): - # "Address already in use" is the only error - # I've seen on two WinXP Pro SP2 boxes, under - # Pythons 2.3.5 and 2.4.1. - raise - # (10048, 'Address already in use') - # assert count <= 2 # never triggered in Tim's tests - if count >= 10: # I've never seen it go above 2 - a.close() - self.writer.close() - raise socket.error("Cannot bind trigger!") - # Close `a` and try again. Note: I originally put a short - # sleep() here, but it didn't appear to help or hurt. - a.close() - - self.reader, addr = a.accept() - self.reader.setblocking(0) - self.writer.setblocking(0) - a.close() - self.reader_fd = self.reader.fileno() - - def fileno(self): - return self.reader.fileno() - - def write_fileno(self): - return self.writer.fileno() - - def wake(self): - try: - self.writer.send(b"x") - except (IOError, socket.error): - pass - - def consume(self): - try: - while True: - result = self.reader.recv(1024) - if not result: - break - except (IOError, socket.error): - pass - - def close(self): - self.reader.close() - self.writer.close() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/interface.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/interface.py deleted file mode 100644 index 07da6bab..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/interface.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2011 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""Interfaces for platform-specific functionality. - -This module exists primarily for documentation purposes and as base classes -for other tornado.platform modules. Most code should import the appropriate -implementation from `tornado.platform.auto`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - - -def set_close_exec(fd): - """Sets the close-on-exec bit (``FD_CLOEXEC``)for a file descriptor.""" - raise NotImplementedError() - - -class Waker(object): - """A socket-like object that can wake another thread from ``select()``. - - The `~tornado.ioloop.IOLoop` will add the Waker's `fileno()` to - its ``select`` (or ``epoll`` or ``kqueue``) calls. When another - thread wants to wake up the loop, it calls `wake`. Once it has woken - up, it will call `consume` to do any necessary per-wake cleanup. When - the ``IOLoop`` is closed, it closes its waker too. - """ - def fileno(self): - """Returns the read file descriptor for this waker. - - Must be suitable for use with ``select()`` or equivalent on the - local platform. - """ - raise NotImplementedError() - - def write_fileno(self): - """Returns the write file descriptor for this waker.""" - raise NotImplementedError() - - def wake(self): - """Triggers activity on the waker's file descriptor.""" - raise NotImplementedError() - - def consume(self): - """Called after the listen has woken up to do any necessary cleanup.""" - raise NotImplementedError() - - def close(self): - """Closes the waker's file descriptor(s).""" - raise NotImplementedError() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/posix.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/posix.py deleted file mode 100644 index ccffbb66..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/posix.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2011 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""Posix implementations of platform-specific functionality.""" - -from __future__ import absolute_import, division, print_function, with_statement - -import fcntl -import os - -from . import interface - - -def set_close_exec(fd): - flags = fcntl.fcntl(fd, fcntl.F_GETFD) - fcntl.fcntl(fd, fcntl.F_SETFD, flags | fcntl.FD_CLOEXEC) - - -def _set_nonblocking(fd): - flags = fcntl.fcntl(fd, fcntl.F_GETFL) - fcntl.fcntl(fd, fcntl.F_SETFL, flags | os.O_NONBLOCK) - - -class Waker(interface.Waker): - def __init__(self): - r, w = os.pipe() - _set_nonblocking(r) - _set_nonblocking(w) - set_close_exec(r) - set_close_exec(w) - self.reader = os.fdopen(r, "rb", 0) - self.writer = os.fdopen(w, "wb", 0) - - def fileno(self): - return self.reader.fileno() - - def write_fileno(self): - return self.writer.fileno() - - def wake(self): - try: - self.writer.write(b"x") - except IOError: - pass - - def consume(self): - try: - while True: - result = self.reader.read() - if not result: - break - except IOError: - pass - - def close(self): - self.reader.close() - self.writer.close() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/windows.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/windows.py deleted file mode 100644 index 817bdca1..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/platform/windows.py +++ /dev/null @@ -1,20 +0,0 @@ -# NOTE: win32 support is currently experimental, and not recommended -# for production use. - - -from __future__ import absolute_import, division, print_function, with_statement -import ctypes -import ctypes.wintypes - -# See: http://msdn.microsoft.com/en-us/library/ms724935(VS.85).aspx -SetHandleInformation = ctypes.windll.kernel32.SetHandleInformation -SetHandleInformation.argtypes = (ctypes.wintypes.HANDLE, ctypes.wintypes.DWORD, ctypes.wintypes.DWORD) -SetHandleInformation.restype = ctypes.wintypes.BOOL - -HANDLE_FLAG_INHERIT = 0x00000001 - - -def set_close_exec(fd): - success = SetHandleInformation(fd, HANDLE_FLAG_INHERIT, 0) - if not success: - raise ctypes.GetLastError() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/stack_context.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/stack_context.py deleted file mode 100644 index 226d8042..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/stack_context.py +++ /dev/null @@ -1,376 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2010 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""`StackContext` allows applications to maintain threadlocal-like state -that follows execution as it moves to other execution contexts. - -The motivating examples are to eliminate the need for explicit -``async_callback`` wrappers (as in `tornado.web.RequestHandler`), and to -allow some additional context to be kept for logging. - -This is slightly magic, but it's an extension of the idea that an -exception handler is a kind of stack-local state and when that stack -is suspended and resumed in a new context that state needs to be -preserved. `StackContext` shifts the burden of restoring that state -from each call site (e.g. wrapping each `.AsyncHTTPClient` callback -in ``async_callback``) to the mechanisms that transfer control from -one context to another (e.g. `.AsyncHTTPClient` itself, `.IOLoop`, -thread pools, etc). - -Example usage:: - - @contextlib.contextmanager - def die_on_error(): - try: - yield - except Exception: - logging.error("exception in asynchronous operation",exc_info=True) - sys.exit(1) - - with StackContext(die_on_error): - # Any exception thrown here *or in callback and its desendents* - # will cause the process to exit instead of spinning endlessly - # in the ioloop. - http_client.fetch(url, callback) - ioloop.start() - -Most applications shouln't have to work with `StackContext` directly. -Here are a few rules of thumb for when it's necessary: - -* If you're writing an asynchronous library that doesn't rely on a - stack_context-aware library like `tornado.ioloop` or `tornado.iostream` - (for example, if you're writing a thread pool), use - `.stack_context.wrap()` before any asynchronous operations to capture the - stack context from where the operation was started. - -* If you're writing an asynchronous library that has some shared - resources (such as a connection pool), create those shared resources - within a ``with stack_context.NullContext():`` block. This will prevent - ``StackContexts`` from leaking from one request to another. - -* If you want to write something like an exception handler that will - persist across asynchronous calls, create a new `StackContext` (or - `ExceptionStackContext`), and make your asynchronous calls in a ``with`` - block that references your `StackContext`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import sys -import threading - -from .util import raise_exc_info - - -class StackContextInconsistentError(Exception): - pass - - -class _State(threading.local): - def __init__(self): - self.contexts = (tuple(), None) -_state = _State() - - -class StackContext(object): - """Establishes the given context as a StackContext that will be transferred. - - Note that the parameter is a callable that returns a context - manager, not the context itself. That is, where for a - non-transferable context manager you would say:: - - with my_context(): - - StackContext takes the function itself rather than its result:: - - with StackContext(my_context): - - The result of ``with StackContext() as cb:`` is a deactivation - callback. Run this callback when the StackContext is no longer - needed to ensure that it is not propagated any further (note that - deactivating a context does not affect any instances of that - context that are currently pending). This is an advanced feature - and not necessary in most applications. - """ - def __init__(self, context_factory): - self.context_factory = context_factory - self.contexts = [] - self.active = True - - def _deactivate(self): - self.active = False - - # StackContext protocol - def enter(self): - context = self.context_factory() - self.contexts.append(context) - context.__enter__() - - def exit(self, type, value, traceback): - context = self.contexts.pop() - context.__exit__(type, value, traceback) - - # Note that some of this code is duplicated in ExceptionStackContext - # below. ExceptionStackContext is more common and doesn't need - # the full generality of this class. - def __enter__(self): - self.old_contexts = _state.contexts - self.new_contexts = (self.old_contexts[0] + (self,), self) - _state.contexts = self.new_contexts - - try: - self.enter() - except: - _state.contexts = self.old_contexts - raise - - return self._deactivate - - def __exit__(self, type, value, traceback): - try: - self.exit(type, value, traceback) - finally: - final_contexts = _state.contexts - _state.contexts = self.old_contexts - - # Generator coroutines and with-statements with non-local - # effects interact badly. Check here for signs of - # the stack getting out of sync. - # Note that this check comes after restoring _state.context - # so that if it fails things are left in a (relatively) - # consistent state. - if final_contexts is not self.new_contexts: - raise StackContextInconsistentError( - 'stack_context inconsistency (may be caused by yield ' - 'within a "with StackContext" block)') - - # Break up a reference to itself to allow for faster GC on CPython. - self.new_contexts = None - - -class ExceptionStackContext(object): - """Specialization of StackContext for exception handling. - - The supplied ``exception_handler`` function will be called in the - event of an uncaught exception in this context. The semantics are - similar to a try/finally clause, and intended use cases are to log - an error, close a socket, or similar cleanup actions. The - ``exc_info`` triple ``(type, value, traceback)`` will be passed to the - exception_handler function. - - If the exception handler returns true, the exception will be - consumed and will not be propagated to other exception handlers. - """ - def __init__(self, exception_handler): - self.exception_handler = exception_handler - self.active = True - - def _deactivate(self): - self.active = False - - def exit(self, type, value, traceback): - if type is not None: - return self.exception_handler(type, value, traceback) - - def __enter__(self): - self.old_contexts = _state.contexts - self.new_contexts = (self.old_contexts[0], self) - _state.contexts = self.new_contexts - - return self._deactivate - - def __exit__(self, type, value, traceback): - try: - if type is not None: - return self.exception_handler(type, value, traceback) - finally: - final_contexts = _state.contexts - _state.contexts = self.old_contexts - - if final_contexts is not self.new_contexts: - raise StackContextInconsistentError( - 'stack_context inconsistency (may be caused by yield ' - 'within a "with StackContext" block)') - - # Break up a reference to itself to allow for faster GC on CPython. - self.new_contexts = None - - -class NullContext(object): - """Resets the `StackContext`. - - Useful when creating a shared resource on demand (e.g. an - `.AsyncHTTPClient`) where the stack that caused the creating is - not relevant to future operations. - """ - def __enter__(self): - self.old_contexts = _state.contexts - _state.contexts = (tuple(), None) - - def __exit__(self, type, value, traceback): - _state.contexts = self.old_contexts - - -def _remove_deactivated(contexts): - """Remove deactivated handlers from the chain""" - # Clean ctx handlers - stack_contexts = tuple([h for h in contexts[0] if h.active]) - - # Find new head - head = contexts[1] - while head is not None and not head.active: - head = head.old_contexts[1] - - # Process chain - ctx = head - while ctx is not None: - parent = ctx.old_contexts[1] - - while parent is not None: - if parent.active: - break - ctx.old_contexts = parent.old_contexts - parent = parent.old_contexts[1] - - ctx = parent - - return (stack_contexts, head) - - -def wrap(fn): - """Returns a callable object that will restore the current `StackContext` - when executed. - - Use this whenever saving a callback to be executed later in a - different execution context (either in a different thread or - asynchronously in the same thread). - """ - # Check if function is already wrapped - if fn is None or hasattr(fn, '_wrapped'): - return fn - - # Capture current stack head - # TODO: Any other better way to store contexts and update them in wrapped function? - cap_contexts = [_state.contexts] - - def wrapped(*args, **kwargs): - ret = None - try: - # Capture old state - current_state = _state.contexts - - # Remove deactivated items - cap_contexts[0] = contexts = _remove_deactivated(cap_contexts[0]) - - # Force new state - _state.contexts = contexts - - # Current exception - exc = (None, None, None) - top = None - - # Apply stack contexts - last_ctx = 0 - stack = contexts[0] - - # Apply state - for n in stack: - try: - n.enter() - last_ctx += 1 - except: - # Exception happened. Record exception info and store top-most handler - exc = sys.exc_info() - top = n.old_contexts[1] - - # Execute callback if no exception happened while restoring state - if top is None: - try: - ret = fn(*args, **kwargs) - except: - exc = sys.exc_info() - top = contexts[1] - - # If there was exception, try to handle it by going through the exception chain - if top is not None: - exc = _handle_exception(top, exc) - else: - # Otherwise take shorter path and run stack contexts in reverse order - while last_ctx > 0: - last_ctx -= 1 - c = stack[last_ctx] - - try: - c.exit(*exc) - except: - exc = sys.exc_info() - top = c.old_contexts[1] - break - else: - top = None - - # If if exception happened while unrolling, take longer exception handler path - if top is not None: - exc = _handle_exception(top, exc) - - # If exception was not handled, raise it - if exc != (None, None, None): - raise_exc_info(exc) - finally: - _state.contexts = current_state - return ret - - wrapped._wrapped = True - return wrapped - - -def _handle_exception(tail, exc): - while tail is not None: - try: - if tail.exit(*exc): - exc = (None, None, None) - except: - exc = sys.exc_info() - - tail = tail.old_contexts[1] - - return exc - - -def run_with_stack_context(context, func): - """Run a coroutine ``func`` in the given `StackContext`. - - It is not safe to have a ``yield`` statement within a ``with StackContext`` - block, so it is difficult to use stack context with `.gen.coroutine`. - This helper function runs the function in the correct context while - keeping the ``yield`` and ``with`` statements syntactically separate. - - Example:: - - @gen.coroutine - def incorrect(): - with StackContext(ctx): - # ERROR: this will raise StackContextInconsistentError - yield other_coroutine() - - @gen.coroutine - def correct(): - yield run_with_stack_context(StackContext(ctx), other_coroutine) - - .. versionadded:: 3.1 - """ - with context: - return func() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/util.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/util.py deleted file mode 100644 index c1e2eb95..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/minitornado/util.py +++ /dev/null @@ -1,184 +0,0 @@ -"""Miscellaneous utility functions and classes. - -This module is used internally by Tornado. It is not necessarily expected -that the functions and classes defined here will be useful to other -applications, but they are documented here in case they are. - -The one public-facing part of this module is the `Configurable` class -and its `~Configurable.configure` method, which becomes a part of the -interface of its subclasses, including `.AsyncHTTPClient`, `.IOLoop`, -and `.Resolver`. -""" - -from __future__ import absolute_import, division, print_function, with_statement - -import sys - - -def import_object(name): - """Imports an object by name. - - import_object('x') is equivalent to 'import x'. - import_object('x.y.z') is equivalent to 'from x.y import z'. - - >>> import tornado.escape - >>> import_object('tornado.escape') is tornado.escape - True - >>> import_object('tornado.escape.utf8') is tornado.escape.utf8 - True - >>> import_object('tornado') is tornado - True - >>> import_object('tornado.missing_module') - Traceback (most recent call last): - ... - ImportError: No module named missing_module - """ - if name.count('.') == 0: - return __import__(name, None, None) - - parts = name.split('.') - obj = __import__('.'.join(parts[:-1]), None, None, [parts[-1]], 0) - try: - return getattr(obj, parts[-1]) - except AttributeError: - raise ImportError("No module named %s" % parts[-1]) - - -# Fake unicode literal support: Python 3.2 doesn't have the u'' marker for -# literal strings, and alternative solutions like "from __future__ import -# unicode_literals" have other problems (see PEP 414). u() can be applied -# to ascii strings that include \u escapes (but they must not contain -# literal non-ascii characters). -if type('') is not type(b''): - def u(s): - return s - bytes_type = bytes - unicode_type = str - basestring_type = str -else: - def u(s): - return s.decode('unicode_escape') - bytes_type = str - unicode_type = unicode - basestring_type = basestring - - -if sys.version_info > (3,): - exec(""" -def raise_exc_info(exc_info): - raise exc_info[1].with_traceback(exc_info[2]) - -def exec_in(code, glob, loc=None): - if isinstance(code, str): - code = compile(code, '', 'exec', dont_inherit=True) - exec(code, glob, loc) -""") -else: - exec(""" -def raise_exc_info(exc_info): - raise exc_info[0], exc_info[1], exc_info[2] - -def exec_in(code, glob, loc=None): - if isinstance(code, basestring): - # exec(string) inherits the caller's future imports; compile - # the string first to prevent that. - code = compile(code, '', 'exec', dont_inherit=True) - exec code in glob, loc -""") - - -class Configurable(object): - """Base class for configurable interfaces. - - A configurable interface is an (abstract) class whose constructor - acts as a factory function for one of its implementation subclasses. - The implementation subclass as well as optional keyword arguments to - its initializer can be set globally at runtime with `configure`. - - By using the constructor as the factory method, the interface - looks like a normal class, `isinstance` works as usual, etc. This - pattern is most useful when the choice of implementation is likely - to be a global decision (e.g. when `~select.epoll` is available, - always use it instead of `~select.select`), or when a - previously-monolithic class has been split into specialized - subclasses. - - Configurable subclasses must define the class methods - `configurable_base` and `configurable_default`, and use the instance - method `initialize` instead of ``__init__``. - """ - __impl_class = None - __impl_kwargs = None - - def __new__(cls, **kwargs): - base = cls.configurable_base() - args = {} - if cls is base: - impl = cls.configured_class() - if base.__impl_kwargs: - args.update(base.__impl_kwargs) - else: - impl = cls - args.update(kwargs) - instance = super(Configurable, cls).__new__(impl) - # initialize vs __init__ chosen for compatiblity with AsyncHTTPClient - # singleton magic. If we get rid of that we can switch to __init__ - # here too. - instance.initialize(**args) - return instance - - @classmethod - def configurable_base(cls): - """Returns the base class of a configurable hierarchy. - - This will normally return the class in which it is defined. - (which is *not* necessarily the same as the cls classmethod parameter). - """ - raise NotImplementedError() - - @classmethod - def configurable_default(cls): - """Returns the implementation class to be used if none is configured.""" - raise NotImplementedError() - - def initialize(self): - """Initialize a `Configurable` subclass instance. - - Configurable classes should use `initialize` instead of ``__init__``. - """ - - @classmethod - def configure(cls, impl, **kwargs): - """Sets the class to use when the base class is instantiated. - - Keyword arguments will be saved and added to the arguments passed - to the constructor. This can be used to set global defaults for - some parameters. - """ - base = cls.configurable_base() - if isinstance(impl, (unicode_type, bytes_type)): - impl = import_object(impl) - if impl is not None and not issubclass(impl, cls): - raise ValueError("Invalid subclass of %s" % cls) - base.__impl_class = impl - base.__impl_kwargs = kwargs - - @classmethod - def configured_class(cls): - """Returns the currently configured class.""" - base = cls.configurable_base() - if cls.__impl_class is None: - base.__impl_class = cls.configurable_default() - return base.__impl_class - - @classmethod - def _save_configuration(cls): - base = cls.configurable_base() - return (base.__impl_class, base.__impl_kwargs) - - @classmethod - def _restore_configuration(cls, saved): - base = cls.configurable_base() - base.__impl_class = saved[0] - base.__impl_kwargs = saved[1] - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/zmqstream.py deleted file mode 100644 index 86a97e44..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/eventloop/zmqstream.py +++ /dev/null @@ -1,529 +0,0 @@ -# -# Copyright 2009 Facebook -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -"""A utility class to send to and recv from a non-blocking socket.""" - -from __future__ import with_statement - -import sys - -import zmq -from zmq.utils import jsonapi - -try: - import cPickle as pickle -except ImportError: - import pickle - -from .ioloop import IOLoop - -try: - # gen_log will only import from >= 3.0 - from tornado.log import gen_log - from tornado import stack_context -except ImportError: - from .minitornado.log import gen_log - from .minitornado import stack_context - -try: - from queue import Queue -except ImportError: - from Queue import Queue - -from zmq.utils.strtypes import bytes, unicode, basestring - -try: - callable -except NameError: - callable = lambda obj: hasattr(obj, '__call__') - - -class ZMQStream(object): - """A utility class to register callbacks when a zmq socket sends and receives - - For use with zmq.eventloop.ioloop - - There are three main methods - - Methods: - - * **on_recv(callback, copy=True):** - register a callback to be run every time the socket has something to receive - * **on_send(callback):** - register a callback to be run every time you call send - * **send(self, msg, flags=0, copy=False, callback=None):** - perform a send that will trigger the callback - if callback is passed, on_send is also called. - - There are also send_multipart(), send_json(), send_pyobj() - - Three other methods for deactivating the callbacks: - - * **stop_on_recv():** - turn off the recv callback - * **stop_on_send():** - turn off the send callback - - which simply call ``on_(None)``. - - The entire socket interface, excluding direct recv methods, is also - provided, primarily through direct-linking the methods. - e.g. - - >>> stream.bind is stream.socket.bind - True - - """ - - socket = None - io_loop = None - poller = None - - def __init__(self, socket, io_loop=None): - self.socket = socket - self.io_loop = io_loop or IOLoop.instance() - self.poller = zmq.Poller() - - self._send_queue = Queue() - self._recv_callback = None - self._send_callback = None - self._close_callback = None - self._recv_copy = False - self._flushed = False - - self._state = self.io_loop.ERROR - self._init_io_state() - - # shortcircuit some socket methods - self.bind = self.socket.bind - self.bind_to_random_port = self.socket.bind_to_random_port - self.connect = self.socket.connect - self.setsockopt = self.socket.setsockopt - self.getsockopt = self.socket.getsockopt - self.setsockopt_string = self.socket.setsockopt_string - self.getsockopt_string = self.socket.getsockopt_string - self.setsockopt_unicode = self.socket.setsockopt_unicode - self.getsockopt_unicode = self.socket.getsockopt_unicode - - - def stop_on_recv(self): - """Disable callback and automatic receiving.""" - return self.on_recv(None) - - def stop_on_send(self): - """Disable callback on sending.""" - return self.on_send(None) - - def stop_on_err(self): - """DEPRECATED, does nothing""" - gen_log.warn("on_err does nothing, and will be removed") - - def on_err(self, callback): - """DEPRECATED, does nothing""" - gen_log.warn("on_err does nothing, and will be removed") - - def on_recv(self, callback, copy=True): - """Register a callback for when a message is ready to recv. - - There can be only one callback registered at a time, so each - call to `on_recv` replaces previously registered callbacks. - - on_recv(None) disables recv event polling. - - Use on_recv_stream(callback) instead, to register a callback that will receive - both this ZMQStream and the message, instead of just the message. - - Parameters - ---------- - - callback : callable - callback must take exactly one argument, which will be a - list, as returned by socket.recv_multipart() - if callback is None, recv callbacks are disabled. - copy : bool - copy is passed directly to recv, so if copy is False, - callback will receive Message objects. If copy is True, - then callback will receive bytes/str objects. - - Returns : None - """ - - self._check_closed() - assert callback is None or callable(callback) - self._recv_callback = stack_context.wrap(callback) - self._recv_copy = copy - if callback is None: - self._drop_io_state(self.io_loop.READ) - else: - self._add_io_state(self.io_loop.READ) - - def on_recv_stream(self, callback, copy=True): - """Same as on_recv, but callback will get this stream as first argument - - callback must take exactly two arguments, as it will be called as:: - - callback(stream, msg) - - Useful when a single callback should be used with multiple streams. - """ - if callback is None: - self.stop_on_recv() - else: - self.on_recv(lambda msg: callback(self, msg), copy=copy) - - def on_send(self, callback): - """Register a callback to be called on each send - - There will be two arguments:: - - callback(msg, status) - - * `msg` will be the list of sendable objects that was just sent - * `status` will be the return result of socket.send_multipart(msg) - - MessageTracker or None. - - Non-copying sends return a MessageTracker object whose - `done` attribute will be True when the send is complete. - This allows users to track when an object is safe to write to - again. - - The second argument will always be None if copy=True - on the send. - - Use on_send_stream(callback) to register a callback that will be passed - this ZMQStream as the first argument, in addition to the other two. - - on_send(None) disables recv event polling. - - Parameters - ---------- - - callback : callable - callback must take exactly two arguments, which will be - the message being sent (always a list), - and the return result of socket.send_multipart(msg) - - MessageTracker or None. - - if callback is None, send callbacks are disabled. - """ - - self._check_closed() - assert callback is None or callable(callback) - self._send_callback = stack_context.wrap(callback) - - - def on_send_stream(self, callback): - """Same as on_send, but callback will get this stream as first argument - - Callback will be passed three arguments:: - - callback(stream, msg, status) - - Useful when a single callback should be used with multiple streams. - """ - if callback is None: - self.stop_on_send() - else: - self.on_send(lambda msg, status: callback(self, msg, status)) - - - def send(self, msg, flags=0, copy=True, track=False, callback=None): - """Send a message, optionally also register a new callback for sends. - See zmq.socket.send for details. - """ - return self.send_multipart([msg], flags=flags, copy=copy, track=track, callback=callback) - - def send_multipart(self, msg, flags=0, copy=True, track=False, callback=None): - """Send a multipart message, optionally also register a new callback for sends. - See zmq.socket.send_multipart for details. - """ - kwargs = dict(flags=flags, copy=copy, track=track) - self._send_queue.put((msg, kwargs)) - callback = callback or self._send_callback - if callback is not None: - self.on_send(callback) - else: - # noop callback - self.on_send(lambda *args: None) - self._add_io_state(self.io_loop.WRITE) - - def send_string(self, u, flags=0, encoding='utf-8', callback=None): - """Send a unicode message with an encoding. - See zmq.socket.send_unicode for details. - """ - if not isinstance(u, basestring): - raise TypeError("unicode/str objects only") - return self.send(u.encode(encoding), flags=flags, callback=callback) - - send_unicode = send_string - - def send_json(self, obj, flags=0, callback=None): - """Send json-serialized version of an object. - See zmq.socket.send_json for details. - """ - if jsonapi is None: - raise ImportError('jsonlib{1,2}, json or simplejson library is required.') - else: - msg = jsonapi.dumps(obj) - return self.send(msg, flags=flags, callback=callback) - - def send_pyobj(self, obj, flags=0, protocol=-1, callback=None): - """Send a Python object as a message using pickle to serialize. - - See zmq.socket.send_json for details. - """ - msg = pickle.dumps(obj, protocol) - return self.send(msg, flags, callback=callback) - - def _finish_flush(self): - """callback for unsetting _flushed flag.""" - self._flushed = False - - def flush(self, flag=zmq.POLLIN|zmq.POLLOUT, limit=None): - """Flush pending messages. - - This method safely handles all pending incoming and/or outgoing messages, - bypassing the inner loop, passing them to the registered callbacks. - - A limit can be specified, to prevent blocking under high load. - - flush will return the first time ANY of these conditions are met: - * No more events matching the flag are pending. - * the total number of events handled reaches the limit. - - Note that if ``flag|POLLIN != 0``, recv events will be flushed even if no callback - is registered, unlike normal IOLoop operation. This allows flush to be - used to remove *and ignore* incoming messages. - - Parameters - ---------- - flag : int, default=POLLIN|POLLOUT - 0MQ poll flags. - If flag|POLLIN, recv events will be flushed. - If flag|POLLOUT, send events will be flushed. - Both flags can be set at once, which is the default. - limit : None or int, optional - The maximum number of messages to send or receive. - Both send and recv count against this limit. - - Returns - ------- - int : count of events handled (both send and recv) - """ - self._check_closed() - # unset self._flushed, so callbacks will execute, in case flush has - # already been called this iteration - already_flushed = self._flushed - self._flushed = False - # initialize counters - count = 0 - def update_flag(): - """Update the poll flag, to prevent registering POLLOUT events - if we don't have pending sends.""" - return flag & zmq.POLLIN | (self.sending() and flag & zmq.POLLOUT) - flag = update_flag() - if not flag: - # nothing to do - return 0 - self.poller.register(self.socket, flag) - events = self.poller.poll(0) - while events and (not limit or count < limit): - s,event = events[0] - if event & zmq.POLLIN: # receiving - self._handle_recv() - count += 1 - if self.socket is None: - # break if socket was closed during callback - break - if event & zmq.POLLOUT and self.sending(): - self._handle_send() - count += 1 - if self.socket is None: - # break if socket was closed during callback - break - - flag = update_flag() - if flag: - self.poller.register(self.socket, flag) - events = self.poller.poll(0) - else: - events = [] - if count: # only bypass loop if we actually flushed something - # skip send/recv callbacks this iteration - self._flushed = True - # reregister them at the end of the loop - if not already_flushed: # don't need to do it again - self.io_loop.add_callback(self._finish_flush) - elif already_flushed: - self._flushed = True - - # update ioloop poll state, which may have changed - self._rebuild_io_state() - return count - - def set_close_callback(self, callback): - """Call the given callback when the stream is closed.""" - self._close_callback = stack_context.wrap(callback) - - def close(self, linger=None): - """Close this stream.""" - if self.socket is not None: - self.io_loop.remove_handler(self.socket) - self.socket.close(linger) - self.socket = None - if self._close_callback: - self._run_callback(self._close_callback) - - def receiving(self): - """Returns True if we are currently receiving from the stream.""" - return self._recv_callback is not None - - def sending(self): - """Returns True if we are currently sending to the stream.""" - return not self._send_queue.empty() - - def closed(self): - return self.socket is None - - def _run_callback(self, callback, *args, **kwargs): - """Wrap running callbacks in try/except to allow us to - close our socket.""" - try: - # Use a NullContext to ensure that all StackContexts are run - # inside our blanket exception handler rather than outside. - with stack_context.NullContext(): - callback(*args, **kwargs) - except: - gen_log.error("Uncaught exception, closing connection.", - exc_info=True) - # Close the socket on an uncaught exception from a user callback - # (It would eventually get closed when the socket object is - # gc'd, but we don't want to rely on gc happening before we - # run out of file descriptors) - self.close() - # Re-raise the exception so that IOLoop.handle_callback_exception - # can see it and log the error - raise - - def _handle_events(self, fd, events): - """This method is the actual handler for IOLoop, that gets called whenever - an event on my socket is posted. It dispatches to _handle_recv, etc.""" - # print "handling events" - if not self.socket: - gen_log.warning("Got events for closed stream %s", fd) - return - try: - # dispatch events: - if events & IOLoop.ERROR: - gen_log.error("got POLLERR event on ZMQStream, which doesn't make sense") - return - if events & IOLoop.READ: - self._handle_recv() - if not self.socket: - return - if events & IOLoop.WRITE: - self._handle_send() - if not self.socket: - return - - # rebuild the poll state - self._rebuild_io_state() - except: - gen_log.error("Uncaught exception, closing connection.", - exc_info=True) - self.close() - raise - - def _handle_recv(self): - """Handle a recv event.""" - if self._flushed: - return - try: - msg = self.socket.recv_multipart(zmq.NOBLOCK, copy=self._recv_copy) - except zmq.ZMQError as e: - if e.errno == zmq.EAGAIN: - # state changed since poll event - pass - else: - gen_log.error("RECV Error: %s"%zmq.strerror(e.errno)) - else: - if self._recv_callback: - callback = self._recv_callback - # self._recv_callback = None - self._run_callback(callback, msg) - - # self.update_state() - - - def _handle_send(self): - """Handle a send event.""" - if self._flushed: - return - if not self.sending(): - gen_log.error("Shouldn't have handled a send event") - return - - msg, kwargs = self._send_queue.get() - try: - status = self.socket.send_multipart(msg, **kwargs) - except zmq.ZMQError as e: - gen_log.error("SEND Error: %s", e) - status = e - if self._send_callback: - callback = self._send_callback - self._run_callback(callback, msg, status) - - # self.update_state() - - def _check_closed(self): - if not self.socket: - raise IOError("Stream is closed") - - def _rebuild_io_state(self): - """rebuild io state based on self.sending() and receiving()""" - if self.socket is None: - return - state = self.io_loop.ERROR - if self.receiving(): - state |= self.io_loop.READ - if self.sending(): - state |= self.io_loop.WRITE - if state != self._state: - self._state = state - self._update_handler(state) - - def _add_io_state(self, state): - """Add io_state to poller.""" - if not self._state & state: - self._state = self._state | state - self._update_handler(self._state) - - def _drop_io_state(self, state): - """Stop poller from watching an io_state.""" - if self._state & state: - self._state = self._state & (~state) - self._update_handler(self._state) - - def _update_handler(self, state): - """Update IOLoop handler with state.""" - if self.socket is None: - return - self.io_loop.update_handler(self.socket, state) - - def _init_io_state(self): - """initialize the ioloop event handler""" - with stack_context.NullContext(): - self.io_loop.add_handler(self.socket, self._handle_events, self._state) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/__init__.py deleted file mode 100644 index ff7e5965..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/__init__.py +++ /dev/null @@ -1,40 +0,0 @@ -# -*- coding: utf-8 -*- -#----------------------------------------------------------------------------- -# Copyright (C) 2011-2012 Travis Cline -# -# This file is part of pyzmq -# It is adapted from upstream project zeromq_gevent under the New BSD License -# -# Distributed under the terms of the New BSD License. The full license is in -# the file COPYING.BSD, distributed as part of this software. -#----------------------------------------------------------------------------- - -"""zmq.green - gevent compatibility with zeromq. - -Usage ------ - -Instead of importing zmq directly, do so in the following manner: - -.. - - import zmq.green as zmq - - -Any calls that would have blocked the current thread will now only block the -current green thread. - -This compatibility is accomplished by ensuring the nonblocking flag is set -before any blocking operation and the ØMQ file descriptor is polled internally -to trigger needed events. -""" - -from zmq import * -from zmq.green.core import _Context, _Socket -from zmq.green.poll import _Poller -Context = _Context -Socket = _Socket -Poller = _Poller - -from zmq.green.device import device - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/core.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/core.py deleted file mode 100644 index 9fc73e32..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/core.py +++ /dev/null @@ -1,287 +0,0 @@ -#----------------------------------------------------------------------------- -# Copyright (C) 2011-2012 Travis Cline -# -# This file is part of pyzmq -# It is adapted from upstream project zeromq_gevent under the New BSD License -# -# Distributed under the terms of the New BSD License. The full license is in -# the file COPYING.BSD, distributed as part of this software. -#----------------------------------------------------------------------------- - -"""This module wraps the :class:`Socket` and :class:`Context` found in :mod:`pyzmq ` to be non blocking -""" - -from __future__ import print_function - -import sys -import time -import warnings - -import zmq - -from zmq import Context as _original_Context -from zmq import Socket as _original_Socket -from .poll import _Poller - -import gevent -from gevent.event import AsyncResult -from gevent.hub import get_hub - -if hasattr(zmq, 'RCVTIMEO'): - TIMEOS = (zmq.RCVTIMEO, zmq.SNDTIMEO) -else: - TIMEOS = () - -def _stop(evt): - """simple wrapper for stopping an Event, allowing for method rename in gevent 1.0""" - try: - evt.stop() - except AttributeError as e: - # gevent<1.0 compat - evt.cancel() - -class _Socket(_original_Socket): - """Green version of :class:`zmq.Socket` - - The following methods are overridden: - - * send - * recv - - To ensure that the ``zmq.NOBLOCK`` flag is set and that sending or receiving - is deferred to the hub if a ``zmq.EAGAIN`` (retry) error is raised. - - The `__state_changed` method is triggered when the zmq.FD for the socket is - marked as readable and triggers the necessary read and write events (which - are waited for in the recv and send methods). - - Some double underscore prefixes are used to minimize pollution of - :class:`zmq.Socket`'s namespace. - """ - __in_send_multipart = False - __in_recv_multipart = False - __writable = None - __readable = None - _state_event = None - _gevent_bug_timeout = 11.6 # timeout for not trusting gevent - _debug_gevent = False # turn on if you think gevent is missing events - _poller_class = _Poller - - def __init__(self, context, socket_type): - _original_Socket.__init__(self, context, socket_type) - self.__in_send_multipart = False - self.__in_recv_multipart = False - self.__setup_events() - - - def __del__(self): - self.close() - - def close(self, linger=None): - super(_Socket, self).close(linger) - self.__cleanup_events() - - def __cleanup_events(self): - # close the _state_event event, keeps the number of active file descriptors down - if getattr(self, '_state_event', None): - _stop(self._state_event) - self._state_event = None - # if the socket has entered a close state resume any waiting greenlets - self.__writable.set() - self.__readable.set() - - def __setup_events(self): - self.__readable = AsyncResult() - self.__writable = AsyncResult() - self.__readable.set() - self.__writable.set() - - try: - self._state_event = get_hub().loop.io(self.getsockopt(zmq.FD), 1) # read state watcher - self._state_event.start(self.__state_changed) - except AttributeError: - # for gevent<1.0 compatibility - from gevent.core import read_event - self._state_event = read_event(self.getsockopt(zmq.FD), self.__state_changed, persist=True) - - def __state_changed(self, event=None, _evtype=None): - if self.closed: - self.__cleanup_events() - return - try: - # avoid triggering __state_changed from inside __state_changed - events = super(_Socket, self).getsockopt(zmq.EVENTS) - except zmq.ZMQError as exc: - self.__writable.set_exception(exc) - self.__readable.set_exception(exc) - else: - if events & zmq.POLLOUT: - self.__writable.set() - if events & zmq.POLLIN: - self.__readable.set() - - def _wait_write(self): - assert self.__writable.ready(), "Only one greenlet can be waiting on this event" - self.__writable = AsyncResult() - # timeout is because libzmq cannot be trusted to properly signal a new send event: - # this is effectively a maximum poll interval of 1s - tic = time.time() - dt = self._gevent_bug_timeout - if dt: - timeout = gevent.Timeout(seconds=dt) - else: - timeout = None - try: - if timeout: - timeout.start() - self.__writable.get(block=True) - except gevent.Timeout as t: - if t is not timeout: - raise - toc = time.time() - # gevent bug: get can raise timeout even on clean return - # don't display zmq bug warning for gevent bug (this is getting ridiculous) - if self._debug_gevent and timeout and toc-tic > dt and \ - self.getsockopt(zmq.EVENTS) & zmq.POLLOUT: - print("BUG: gevent may have missed a libzmq send event on %i!" % self.FD, file=sys.stderr) - finally: - if timeout: - timeout.cancel() - self.__writable.set() - - def _wait_read(self): - assert self.__readable.ready(), "Only one greenlet can be waiting on this event" - self.__readable = AsyncResult() - # timeout is because libzmq cannot always be trusted to play nice with libevent. - # I can only confirm that this actually happens for send, but lets be symmetrical - # with our dirty hacks. - # this is effectively a maximum poll interval of 1s - tic = time.time() - dt = self._gevent_bug_timeout - if dt: - timeout = gevent.Timeout(seconds=dt) - else: - timeout = None - try: - if timeout: - timeout.start() - self.__readable.get(block=True) - except gevent.Timeout as t: - if t is not timeout: - raise - toc = time.time() - # gevent bug: get can raise timeout even on clean return - # don't display zmq bug warning for gevent bug (this is getting ridiculous) - if self._debug_gevent and timeout and toc-tic > dt and \ - self.getsockopt(zmq.EVENTS) & zmq.POLLIN: - print("BUG: gevent may have missed a libzmq recv event on %i!" % self.FD, file=sys.stderr) - finally: - if timeout: - timeout.cancel() - self.__readable.set() - - def send(self, data, flags=0, copy=True, track=False): - """send, which will only block current greenlet - - state_changed always fires exactly once (success or fail) at the - end of this method. - """ - - # if we're given the NOBLOCK flag act as normal and let the EAGAIN get raised - if flags & zmq.NOBLOCK: - try: - msg = super(_Socket, self).send(data, flags, copy, track) - finally: - if not self.__in_send_multipart: - self.__state_changed() - return msg - # ensure the zmq.NOBLOCK flag is part of flags - flags |= zmq.NOBLOCK - while True: # Attempt to complete this operation indefinitely, blocking the current greenlet - try: - # attempt the actual call - msg = super(_Socket, self).send(data, flags, copy, track) - except zmq.ZMQError as e: - # if the raised ZMQError is not EAGAIN, reraise - if e.errno != zmq.EAGAIN: - if not self.__in_send_multipart: - self.__state_changed() - raise - else: - if not self.__in_send_multipart: - self.__state_changed() - return msg - # defer to the event loop until we're notified the socket is writable - self._wait_write() - - def recv(self, flags=0, copy=True, track=False): - """recv, which will only block current greenlet - - state_changed always fires exactly once (success or fail) at the - end of this method. - """ - if flags & zmq.NOBLOCK: - try: - msg = super(_Socket, self).recv(flags, copy, track) - finally: - if not self.__in_recv_multipart: - self.__state_changed() - return msg - - flags |= zmq.NOBLOCK - while True: - try: - msg = super(_Socket, self).recv(flags, copy, track) - except zmq.ZMQError as e: - if e.errno != zmq.EAGAIN: - if not self.__in_recv_multipart: - self.__state_changed() - raise - else: - if not self.__in_recv_multipart: - self.__state_changed() - return msg - self._wait_read() - - def send_multipart(self, *args, **kwargs): - """wrap send_multipart to prevent state_changed on each partial send""" - self.__in_send_multipart = True - try: - msg = super(_Socket, self).send_multipart(*args, **kwargs) - finally: - self.__in_send_multipart = False - self.__state_changed() - return msg - - def recv_multipart(self, *args, **kwargs): - """wrap recv_multipart to prevent state_changed on each partial recv""" - self.__in_recv_multipart = True - try: - msg = super(_Socket, self).recv_multipart(*args, **kwargs) - finally: - self.__in_recv_multipart = False - self.__state_changed() - return msg - - def get(self, opt): - """trigger state_changed on getsockopt(EVENTS)""" - if opt in TIMEOS: - warnings.warn("TIMEO socket options have no effect in zmq.green", UserWarning) - optval = super(_Socket, self).get(opt) - if opt == zmq.EVENTS: - self.__state_changed() - return optval - - def set(self, opt, val): - """set socket option""" - if opt in TIMEOS: - warnings.warn("TIMEO socket options have no effect in zmq.green", UserWarning) - return super(_Socket, self).set(opt, val) - - -class _Context(_original_Context): - """Replacement for :class:`zmq.Context` - - Ensures that the greened Socket above is used in calls to `socket`. - """ - _socket_class = _Socket diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/device.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/device.py deleted file mode 100644 index 4b070237..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/device.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import zmq -from zmq.green import Poller - -def device(device_type, isocket, osocket): - """Start a zeromq device (gevent-compatible). - - Unlike the true zmq.device, this does not release the GIL. - - Parameters - ---------- - device_type : (QUEUE, FORWARDER, STREAMER) - The type of device to start (ignored). - isocket : Socket - The Socket instance for the incoming traffic. - osocket : Socket - The Socket instance for the outbound traffic. - """ - p = Poller() - if osocket == -1: - osocket = isocket - p.register(isocket, zmq.POLLIN) - p.register(osocket, zmq.POLLIN) - - while True: - events = dict(p.poll()) - if isocket in events: - osocket.send_multipart(isocket.recv_multipart()) - if osocket in events: - isocket.send_multipart(osocket.recv_multipart()) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/__init__.py deleted file mode 100644 index c5150efe..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from zmq.green.eventloop.ioloop import IOLoop - -__all__ = ['IOLoop'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/ioloop.py deleted file mode 100644 index e12fd5e9..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/ioloop.py +++ /dev/null @@ -1,33 +0,0 @@ -from zmq.eventloop.ioloop import * -from zmq.green import Poller - -RealIOLoop = IOLoop -RealZMQPoller = ZMQPoller - -class IOLoop(RealIOLoop): - - def initialize(self, impl=None): - impl = _poll() if impl is None else impl - super(IOLoop, self).initialize(impl) - - @staticmethod - def instance(): - """Returns a global `IOLoop` instance. - - Most applications have a single, global `IOLoop` running on the - main thread. Use this method to get this instance from - another thread. To get the current thread's `IOLoop`, use `current()`. - """ - # install this class as the active IOLoop implementation - # when using tornado 3 - if tornado_version >= (3,): - PollIOLoop.configure(IOLoop) - return PollIOLoop.instance() - - -class ZMQPoller(RealZMQPoller): - """gevent-compatible version of ioloop.ZMQPoller""" - def __init__(self): - self._poller = Poller() - -_poll = ZMQPoller diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/zmqstream.py deleted file mode 100644 index 90fbd1f5..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/eventloop/zmqstream.py +++ /dev/null @@ -1,11 +0,0 @@ -from zmq.eventloop.zmqstream import * - -from zmq.green.eventloop.ioloop import IOLoop - -RealZMQStream = ZMQStream - -class ZMQStream(RealZMQStream): - - def __init__(self, socket, io_loop=None): - io_loop = io_loop or IOLoop.instance() - super(ZMQStream, self).__init__(socket, io_loop=io_loop) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/poll.py deleted file mode 100644 index 8f016129..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/green/poll.py +++ /dev/null @@ -1,95 +0,0 @@ -import zmq -import gevent -from gevent import select - -from zmq import Poller as _original_Poller - - -class _Poller(_original_Poller): - """Replacement for :class:`zmq.Poller` - - Ensures that the greened Poller below is used in calls to - :meth:`zmq.Poller.poll`. - """ - _gevent_bug_timeout = 1.33 # minimum poll interval, for working around gevent bug - - def _get_descriptors(self): - """Returns three elements tuple with socket descriptors ready - for gevent.select.select - """ - rlist = [] - wlist = [] - xlist = [] - - for socket, flags in self.sockets: - if isinstance(socket, zmq.Socket): - rlist.append(socket.getsockopt(zmq.FD)) - continue - elif isinstance(socket, int): - fd = socket - elif hasattr(socket, 'fileno'): - try: - fd = int(socket.fileno()) - except: - raise ValueError('fileno() must return an valid integer fd') - else: - raise TypeError('Socket must be a 0MQ socket, an integer fd ' - 'or have a fileno() method: %r' % socket) - - if flags & zmq.POLLIN: - rlist.append(fd) - if flags & zmq.POLLOUT: - wlist.append(fd) - if flags & zmq.POLLERR: - xlist.append(fd) - - return (rlist, wlist, xlist) - - def poll(self, timeout=-1): - """Overridden method to ensure that the green version of - Poller is used. - - Behaves the same as :meth:`zmq.core.Poller.poll` - """ - - if timeout is None: - timeout = -1 - - if timeout < 0: - timeout = -1 - - rlist = None - wlist = None - xlist = None - - if timeout > 0: - tout = gevent.Timeout.start_new(timeout/1000.0) - - try: - # Loop until timeout or events available - rlist, wlist, xlist = self._get_descriptors() - while True: - events = super(_Poller, self).poll(0) - if events or timeout == 0: - return events - - # wait for activity on sockets in a green way - # set a minimum poll frequency, - # because gevent < 1.0 cannot be trusted to catch edge-triggered FD events - _bug_timeout = gevent.Timeout.start_new(self._gevent_bug_timeout) - try: - select.select(rlist, wlist, xlist) - except gevent.Timeout as t: - if t is not _bug_timeout: - raise - finally: - _bug_timeout.cancel() - - except gevent.Timeout as t: - if t is not tout: - raise - return [] - finally: - if timeout > 0: - tout.cancel() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/libzmq.so.3 b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/libzmq.so.3 deleted file mode 100644 index f45fd5f5e3c801c08f94651760dc26f90466141b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322744 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 import logging - >>> handler = PUBHandler('tcp://127.0.0.1:12345') - >>> handler.root_topic = 'foo' - >>> logger = logging.getLogger('foobar') - >>> logger.setLevel(logging.DEBUG) - >>> logger.addHandler(handler) - -After this point, all messages logged by ``logger`` will be published on the -PUB socket. - -Code adapted from StarCluster: - - http://github.com/jtriley/StarCluster/blob/master/starcluster/logger.py -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import logging -from logging import INFO, DEBUG, WARN, ERROR, FATAL - -import zmq -from zmq.utils.strtypes import bytes, unicode, cast_bytes - - -TOPIC_DELIM="::" # delimiter for splitting topics on the receiving end. - - -class PUBHandler(logging.Handler): - """A basic logging handler that emits log messages through a PUB socket. - - Takes a PUB socket already bound to interfaces or an interface to bind to. - - Example:: - - sock = context.socket(zmq.PUB) - sock.bind('inproc://log') - handler = PUBHandler(sock) - - Or:: - - handler = PUBHandler('inproc://loc') - - These are equivalent. - - Log messages handled by this handler are broadcast with ZMQ topics - ``this.root_topic`` comes first, followed by the log level - (DEBUG,INFO,etc.), followed by any additional subtopics specified in the - message by: log.debug("subtopic.subsub::the real message") - """ - root_topic="" - socket = None - - formatters = { - logging.DEBUG: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n"), - logging.INFO: logging.Formatter("%(message)s\n"), - logging.WARN: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n"), - logging.ERROR: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s - %(exc_info)s\n"), - logging.CRITICAL: logging.Formatter( - "%(levelname)s %(filename)s:%(lineno)d - %(message)s\n")} - - def __init__(self, interface_or_socket, context=None): - logging.Handler.__init__(self) - if isinstance(interface_or_socket, zmq.Socket): - self.socket = interface_or_socket - self.ctx = self.socket.context - else: - self.ctx = context or zmq.Context() - self.socket = self.ctx.socket(zmq.PUB) - self.socket.bind(interface_or_socket) - - def format(self,record): - """Format a record.""" - return self.formatters[record.levelno].format(record) - - def emit(self, record): - """Emit a log message on my socket.""" - try: - topic, record.msg = record.msg.split(TOPIC_DELIM,1) - except Exception: - topic = "" - try: - bmsg = cast_bytes(self.format(record)) - except Exception: - self.handleError(record) - return - - topic_list = [] - - if self.root_topic: - topic_list.append(self.root_topic) - - topic_list.append(record.levelname) - - if topic: - topic_list.append(topic) - - btopic = b'.'.join(cast_bytes(t) for t in topic_list) - - self.socket.send_multipart([btopic, bmsg]) - - -class TopicLogger(logging.Logger): - """A simple wrapper that takes an additional argument to log methods. - - All the regular methods exist, but instead of one msg argument, two - arguments: topic, msg are passed. - - That is:: - - logger.debug('msg') - - Would become:: - - logger.debug('topic.sub', 'msg') - """ - def log(self, level, topic, msg, *args, **kwargs): - """Log 'msg % args' with level and topic. - - To pass exception information, use the keyword argument exc_info - with a True value:: - - logger.log(level, "zmq.fun", "We have a %s", - "mysterious problem", exc_info=1) - """ - logging.Logger.log(self, level, '%s::%s'%(topic,msg), *args, **kwargs) - -# Generate the methods of TopicLogger, since they are just adding a -# topic prefix to a message. -for name in "debug warn warning error critical fatal".split(): - meth = getattr(logging.Logger,name) - setattr(TopicLogger, name, - lambda self, level, topic, msg, *args, **kwargs: - meth(self, level, topic+TOPIC_DELIM+msg,*args, **kwargs)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/__init__.py deleted file mode 100644 index 57f09568..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from zmq.ssh.tunnel import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/forward.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/forward.py deleted file mode 100644 index 2d619462..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/forward.py +++ /dev/null @@ -1,91 +0,0 @@ -# -# This file is adapted from a paramiko demo, and thus licensed under LGPL 2.1. -# Original Copyright (C) 2003-2007 Robey Pointer -# Edits Copyright (C) 2010 The IPython Team -# -# Paramiko is free software; you can redistribute it and/or modify it under the -# terms of the GNU Lesser General Public License as published by the Free -# Software Foundation; either version 2.1 of the License, or (at your option) -# any later version. -# -# Paramiko is distrubuted in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more -# details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with Paramiko; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA. - -""" -Sample script showing how to do local port forwarding over paramiko. - -This script connects to the requested SSH server and sets up local port -forwarding (the openssh -L option) from a local port through a tunneled -connection to a destination reachable from the SSH server machine. -""" - -from __future__ import print_function - -import logging -import select -try: # Python 3 - import socketserver -except ImportError: # Python 2 - import SocketServer as socketserver - -logger = logging.getLogger('ssh') - -class ForwardServer (socketserver.ThreadingTCPServer): - daemon_threads = True - allow_reuse_address = True - - -class Handler (socketserver.BaseRequestHandler): - - def handle(self): - try: - chan = self.ssh_transport.open_channel('direct-tcpip', - (self.chain_host, self.chain_port), - self.request.getpeername()) - except Exception as e: - logger.debug('Incoming request to %s:%d failed: %s' % (self.chain_host, - self.chain_port, - repr(e))) - return - if chan is None: - logger.debug('Incoming request to %s:%d was rejected by the SSH server.' % - (self.chain_host, self.chain_port)) - return - - logger.debug('Connected! Tunnel open %r -> %r -> %r' % (self.request.getpeername(), - chan.getpeername(), (self.chain_host, self.chain_port))) - while True: - r, w, x = select.select([self.request, chan], [], []) - if self.request in r: - data = self.request.recv(1024) - if len(data) == 0: - break - chan.send(data) - if chan in r: - data = chan.recv(1024) - if len(data) == 0: - break - self.request.send(data) - chan.close() - self.request.close() - logger.debug('Tunnel closed ') - - -def forward_tunnel(local_port, remote_host, remote_port, transport): - # this is a little convoluted, but lets me configure things for the Handler - # object. (SocketServer doesn't give Handlers any way to access the outer - # server normally.) - class SubHander (Handler): - chain_host = remote_host - chain_port = remote_port - ssh_transport = transport - ForwardServer(('127.0.0.1', local_port), SubHander).serve_forever() - - -__all__ = ['forward_tunnel'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/tunnel.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/tunnel.py deleted file mode 100644 index 5a0c5433..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/ssh/tunnel.py +++ /dev/null @@ -1,376 +0,0 @@ -"""Basic ssh tunnel utilities, and convenience functions for tunneling -zeromq connections. -""" - -# Copyright (C) 2010-2011 IPython Development Team -# Copyright (C) 2011- PyZMQ Developers -# -# Redistributed from IPython under the terms of the BSD License. - - -from __future__ import print_function - -import atexit -import os -import signal -import socket -import sys -import warnings -from getpass import getpass, getuser -from multiprocessing import Process - -try: - with warnings.catch_warnings(): - warnings.simplefilter('ignore', DeprecationWarning) - import paramiko - SSHException = paramiko.ssh_exception.SSHException -except ImportError: - paramiko = None - class SSHException(Exception): - pass -else: - from .forward import forward_tunnel - -try: - import pexpect -except ImportError: - pexpect = None - - -_random_ports = set() - -def select_random_ports(n): - """Selects and return n random ports that are available.""" - ports = [] - for i in range(n): - sock = socket.socket() - sock.bind(('', 0)) - while sock.getsockname()[1] in _random_ports: - sock.close() - sock = socket.socket() - sock.bind(('', 0)) - ports.append(sock) - for i, sock in enumerate(ports): - port = sock.getsockname()[1] - sock.close() - ports[i] = port - _random_ports.add(port) - return ports - - -#----------------------------------------------------------------------------- -# Check for passwordless login -#----------------------------------------------------------------------------- - -def try_passwordless_ssh(server, keyfile, paramiko=None): - """Attempt to make an ssh connection without a password. - This is mainly used for requiring password input only once - when many tunnels may be connected to the same server. - - If paramiko is None, the default for the platform is chosen. - """ - if paramiko is None: - paramiko = sys.platform == 'win32' - if not paramiko: - f = _try_passwordless_openssh - else: - f = _try_passwordless_paramiko - return f(server, keyfile) - -def _try_passwordless_openssh(server, keyfile): - """Try passwordless login with shell ssh command.""" - if pexpect is None: - raise ImportError("pexpect unavailable, use paramiko") - cmd = 'ssh -f '+ server - if keyfile: - cmd += ' -i ' + keyfile - cmd += ' exit' - - # pop SSH_ASKPASS from env - env = os.environ.copy() - env.pop('SSH_ASKPASS', None) - - ssh_newkey = 'Are you sure you want to continue connecting' - p = pexpect.spawn(cmd, env=env) - while True: - try: - i = p.expect([ssh_newkey, '[Pp]assword:'], timeout=.1) - if i==0: - raise SSHException('The authenticity of the host can\'t be established.') - except pexpect.TIMEOUT: - continue - except pexpect.EOF: - return True - else: - return False - -def _try_passwordless_paramiko(server, keyfile): - """Try passwordless login with paramiko.""" - if paramiko is None: - msg = "Paramiko unavaliable, " - if sys.platform == 'win32': - msg += "Paramiko is required for ssh tunneled connections on Windows." - else: - msg += "use OpenSSH." - raise ImportError(msg) - username, server, port = _split_server(server) - client = paramiko.SSHClient() - client.load_system_host_keys() - client.set_missing_host_key_policy(paramiko.WarningPolicy()) - try: - client.connect(server, port, username=username, key_filename=keyfile, - look_for_keys=True) - except paramiko.AuthenticationException: - return False - else: - client.close() - return True - - -def tunnel_connection(socket, addr, server, keyfile=None, password=None, paramiko=None, timeout=60): - """Connect a socket to an address via an ssh tunnel. - - This is a wrapper for socket.connect(addr), when addr is not accessible - from the local machine. It simply creates an ssh tunnel using the remaining args, - and calls socket.connect('tcp://localhost:lport') where lport is the randomly - selected local port of the tunnel. - - """ - new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout) - socket.connect(new_url) - return tunnel - - -def open_tunnel(addr, server, keyfile=None, password=None, paramiko=None, timeout=60): - """Open a tunneled connection from a 0MQ url. - - For use inside tunnel_connection. - - Returns - ------- - - (url, tunnel) : (str, object) - The 0MQ url that has been forwarded, and the tunnel object - """ - - lport = select_random_ports(1)[0] - transport, addr = addr.split('://') - ip,rport = addr.split(':') - rport = int(rport) - if paramiko is None: - paramiko = sys.platform == 'win32' - if paramiko: - tunnelf = paramiko_tunnel - else: - tunnelf = openssh_tunnel - - tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout) - return 'tcp://127.0.0.1:%i'%lport, tunnel - -def openssh_tunnel(lport, rport, server, remoteip='127.0.0.1', keyfile=None, password=None, timeout=60): - """Create an ssh tunnel using command-line ssh that connects port lport - on this machine to localhost:rport on server. The tunnel - will automatically close when not in use, remaining open - for a minimum of timeout seconds for an initial connection. - - This creates a tunnel redirecting `localhost:lport` to `remoteip:rport`, - as seen from `server`. - - keyfile and password may be specified, but ssh config is checked for defaults. - - Parameters - ---------- - - lport : int - local port for connecting to the tunnel from this machine. - rport : int - port on the remote machine to connect to. - server : str - The ssh server to connect to. The full ssh server string will be parsed. - user@server:port - remoteip : str [Default: 127.0.0.1] - The remote ip, specifying the destination of the tunnel. - Default is localhost, which means that the tunnel would redirect - localhost:lport on this machine to localhost:rport on the *server*. - - keyfile : str; path to public key file - This specifies a key to be used in ssh login, default None. - Regular default ssh keys will be used without specifying this argument. - password : str; - Your ssh password to the ssh server. Note that if this is left None, - you will be prompted for it if passwordless key based login is unavailable. - timeout : int [default: 60] - The time (in seconds) after which no activity will result in the tunnel - closing. This prevents orphaned tunnels from running forever. - """ - if pexpect is None: - raise ImportError("pexpect unavailable, use paramiko_tunnel") - ssh="ssh " - if keyfile: - ssh += "-i " + keyfile - - if ':' in server: - server, port = server.split(':') - ssh += " -p %s" % port - - cmd = "%s -O check %s" % (ssh, server) - (output, exitstatus) = pexpect.run(cmd, withexitstatus=True) - if not exitstatus: - pid = int(output[output.find("(pid=")+5:output.find(")")]) - cmd = "%s -O forward -L 127.0.0.1:%i:%s:%i %s" % ( - ssh, lport, remoteip, rport, server) - (output, exitstatus) = pexpect.run(cmd, withexitstatus=True) - if not exitstatus: - atexit.register(_stop_tunnel, cmd.replace("-O forward", "-O cancel", 1)) - return pid - cmd = "%s -f -S none -L 127.0.0.1:%i:%s:%i %s sleep %i" % ( - ssh, lport, remoteip, rport, server, timeout) - - # pop SSH_ASKPASS from env - env = os.environ.copy() - env.pop('SSH_ASKPASS', None) - - ssh_newkey = 'Are you sure you want to continue connecting' - tunnel = pexpect.spawn(cmd, env=env) - failed = False - while True: - try: - i = tunnel.expect([ssh_newkey, '[Pp]assword:'], timeout=.1) - if i==0: - raise SSHException('The authenticity of the host can\'t be established.') - except pexpect.TIMEOUT: - continue - except pexpect.EOF: - if tunnel.exitstatus: - print(tunnel.exitstatus) - print(tunnel.before) - print(tunnel.after) - raise RuntimeError("tunnel '%s' failed to start"%(cmd)) - else: - return tunnel.pid - else: - if failed: - print("Password rejected, try again") - password=None - if password is None: - password = getpass("%s's password: "%(server)) - tunnel.sendline(password) - failed = True - -def _stop_tunnel(cmd): - pexpect.run(cmd) - -def _split_server(server): - if '@' in server: - username,server = server.split('@', 1) - else: - username = getuser() - if ':' in server: - server, port = server.split(':') - port = int(port) - else: - port = 22 - return username, server, port - -def paramiko_tunnel(lport, rport, server, remoteip='127.0.0.1', keyfile=None, password=None, timeout=60): - """launch a tunner with paramiko in a subprocess. This should only be used - when shell ssh is unavailable (e.g. Windows). - - This creates a tunnel redirecting `localhost:lport` to `remoteip:rport`, - as seen from `server`. - - If you are familiar with ssh tunnels, this creates the tunnel: - - ssh server -L localhost:lport:remoteip:rport - - keyfile and password may be specified, but ssh config is checked for defaults. - - - Parameters - ---------- - - lport : int - local port for connecting to the tunnel from this machine. - rport : int - port on the remote machine to connect to. - server : str - The ssh server to connect to. The full ssh server string will be parsed. - user@server:port - remoteip : str [Default: 127.0.0.1] - The remote ip, specifying the destination of the tunnel. - Default is localhost, which means that the tunnel would redirect - localhost:lport on this machine to localhost:rport on the *server*. - - keyfile : str; path to public key file - This specifies a key to be used in ssh login, default None. - Regular default ssh keys will be used without specifying this argument. - password : str; - Your ssh password to the ssh server. Note that if this is left None, - you will be prompted for it if passwordless key based login is unavailable. - timeout : int [default: 60] - The time (in seconds) after which no activity will result in the tunnel - closing. This prevents orphaned tunnels from running forever. - - """ - if paramiko is None: - raise ImportError("Paramiko not available") - - if password is None: - if not _try_passwordless_paramiko(server, keyfile): - password = getpass("%s's password: "%(server)) - - p = Process(target=_paramiko_tunnel, - args=(lport, rport, server, remoteip), - kwargs=dict(keyfile=keyfile, password=password)) - p.daemon=False - p.start() - atexit.register(_shutdown_process, p) - return p - -def _shutdown_process(p): - if p.is_alive(): - p.terminate() - -def _paramiko_tunnel(lport, rport, server, remoteip, keyfile=None, password=None): - """Function for actually starting a paramiko tunnel, to be passed - to multiprocessing.Process(target=this), and not called directly. - """ - username, server, port = _split_server(server) - client = paramiko.SSHClient() - client.load_system_host_keys() - client.set_missing_host_key_policy(paramiko.WarningPolicy()) - - try: - client.connect(server, port, username=username, key_filename=keyfile, - look_for_keys=True, password=password) -# except paramiko.AuthenticationException: -# if password is None: -# password = getpass("%s@%s's password: "%(username, server)) -# client.connect(server, port, username=username, password=password) -# else: -# raise - except Exception as e: - print('*** Failed to connect to %s:%d: %r' % (server, port, e)) - sys.exit(1) - - # Don't let SIGINT kill the tunnel subprocess - signal.signal(signal.SIGINT, signal.SIG_IGN) - - try: - forward_tunnel(lport, remoteip, rport, client.get_transport()) - except KeyboardInterrupt: - print('SIGINT: Port forwarding stopped cleanly') - sys.exit(0) - except Exception as e: - print("Port forwarding stopped uncleanly: %s"%e) - sys.exit(255) - -if sys.platform == 'win32': - ssh_tunnel = paramiko_tunnel -else: - ssh_tunnel = openssh_tunnel - - -__all__ = ['tunnel_connection', 'ssh_tunnel', 'openssh_tunnel', 'paramiko_tunnel', 'try_passwordless_ssh'] - - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/__init__.py deleted file mode 100644 index d0510a44..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/__init__.py +++ /dev/null @@ -1,27 +0,0 @@ -"""pure-Python sugar wrappers for core 0MQ objects.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from zmq.sugar import ( - constants, context, frame, poll, socket, tracker, version -) -from zmq import error - -__all__ = ['constants'] -for submod in ( - constants, context, error, frame, poll, socket, tracker, version -): - __all__.extend(submod.__all__) - -from zmq.error import * -from zmq.sugar.context import * -from zmq.sugar.tracker import * -from zmq.sugar.socket import * -from zmq.sugar.constants import * -from zmq.sugar.frame import * -from zmq.sugar.poll import * -# from zmq.sugar.stopwatch import * -# from zmq.sugar._device import * -from zmq.sugar.version import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/attrsettr.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/attrsettr.py deleted file mode 100644 index 4bbd36d6..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/attrsettr.py +++ /dev/null @@ -1,52 +0,0 @@ -# coding: utf-8 -"""Mixin for mapping set/getattr to self.set/get""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from . import constants - -class AttributeSetter(object): - - def __setattr__(self, key, value): - """set zmq options by attribute""" - - # regular setattr only allowed for class-defined attributes - for obj in [self] + self.__class__.mro(): - if key in obj.__dict__: - object.__setattr__(self, key, value) - return - - upper_key = key.upper() - try: - opt = getattr(constants, upper_key) - except AttributeError: - raise AttributeError("%s has no such option: %s" % ( - self.__class__.__name__, upper_key) - ) - else: - self._set_attr_opt(upper_key, opt, value) - - def _set_attr_opt(self, name, opt, value): - """override if setattr should do something other than call self.set""" - self.set(opt, value) - - def __getattr__(self, key): - """get zmq options by attribute""" - upper_key = key.upper() - try: - opt = getattr(constants, upper_key) - except AttributeError: - raise AttributeError("%s has no such option: %s" % ( - self.__class__.__name__, upper_key) - ) - else: - return self._get_attr_opt(upper_key, opt) - - def _get_attr_opt(self, name, opt): - """override if getattr should do something other than call self.get""" - return self.get(opt) - - -__all__ = ['AttributeSetter'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/constants.py deleted file mode 100644 index 88281176..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/constants.py +++ /dev/null @@ -1,98 +0,0 @@ -"""0MQ Constants.""" - -# Copyright (c) PyZMQ Developers. -# Distributed under the terms of the Modified BSD License. - -from zmq.backend import constants -from zmq.utils.constant_names import ( - base_names, - switched_sockopt_names, - int_sockopt_names, - int64_sockopt_names, - bytes_sockopt_names, - fd_sockopt_names, - ctx_opt_names, - msg_opt_names, -) - -#----------------------------------------------------------------------------- -# Python module level constants -#----------------------------------------------------------------------------- - -__all__ = [ - 'int_sockopts', - 'int64_sockopts', - 'bytes_sockopts', - 'ctx_opts', - 'ctx_opt_names', - ] - -int_sockopts = set() -int64_sockopts = set() -bytes_sockopts = set() -fd_sockopts = set() -ctx_opts = set() -msg_opts = set() - - -if constants.VERSION < 30000: - int64_sockopt_names.extend(switched_sockopt_names) -else: - int_sockopt_names.extend(switched_sockopt_names) - -_UNDEFINED = -9999 - -def _add_constant(name, container=None): - """add a constant to be defined - - optionally add it to one of the sets for use in get/setopt checkers - """ - c = getattr(constants, name, _UNDEFINED) - if c == _UNDEFINED: - return - globals()[name] = c - __all__.append(name) - if container is not None: - container.add(c) - return c - -for name in base_names: - _add_constant(name) - -for name in int_sockopt_names: - _add_constant(name, int_sockopts) - -for name in int64_sockopt_names: - _add_constant(name, int64_sockopts) - -for name in bytes_sockopt_names: - _add_constant(name, bytes_sockopts) - -for name in fd_sockopt_names: - _add_constant(name, fd_sockopts) - -for name in ctx_opt_names: - _add_constant(name, ctx_opts) - -for name in msg_opt_names: - _add_constant(name, msg_opts) - -# ensure some aliases are always defined -aliases = [ - ('DONTWAIT', 'NOBLOCK'), - ('XREQ', 'DEALER'), - ('XREP', 'ROUTER'), -] -for group in aliases: - undefined = set() - found = None - for name in group: - value = getattr(constants, name, -1) - if value != -1: - found = value - else: - undefined.add(name) - if found is not None: - for name in undefined: - globals()[name] = found - __all__.append(name) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/context.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/context.py deleted file mode 100644 index 692e0256..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/context.py +++ /dev/null @@ -1,190 +0,0 @@ -# coding: utf-8 -"""Python bindings for 0MQ.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import atexit - -from zmq.backend import Context as ContextBase -from . import constants -from .attrsettr import AttributeSetter -from .constants import ENOTSUP, ctx_opt_names -from .socket import Socket -from zmq.error import ZMQError - -# notice when exiting, to avoid triggering term on exit -_exiting = False -def _notice_atexit(): - global _exiting - _exiting = True -atexit.register(_notice_atexit) - - -from zmq.utils.interop import cast_int_addr - - -class Context(ContextBase, AttributeSetter): - """Create a zmq Context - - A zmq Context creates sockets via its ``ctx.socket`` method. - """ - sockopts = None - _instance = None - _shadow = False - - def __init__(self, io_threads=1, **kwargs): - super(Context, self).__init__(io_threads=io_threads, **kwargs) - if kwargs.get('shadow', False): - self._shadow = True - else: - self._shadow = False - self.sockopts = {} - - - def __del__(self): - """deleting a Context should terminate it, without trying non-threadsafe destroy""" - if not self._shadow and not _exiting: - self.term() - - def __enter__(self): - return self - - def __exit__(self, *args, **kwargs): - self.term() - - @classmethod - def shadow(cls, address): - """Shadow an existing libzmq context - - address is the integer address of the libzmq context - or an FFI pointer to it. - - .. versionadded:: 14.1 - """ - address = cast_int_addr(address) - return cls(shadow=address) - - @classmethod - def shadow_pyczmq(cls, ctx): - """Shadow an existing pyczmq context - - ctx is the FFI `zctx_t *` pointer - - .. versionadded:: 14.1 - """ - from pyczmq import zctx - - underlying = zctx.underlying(ctx) - address = cast_int_addr(underlying) - return cls(shadow=address) - - # static method copied from tornado IOLoop.instance - @classmethod - def instance(cls, io_threads=1): - """Returns a global Context instance. - - Most single-threaded applications have a single, global Context. - Use this method instead of passing around Context instances - throughout your code. - - A common pattern for classes that depend on Contexts is to use - a default argument to enable programs with multiple Contexts - but not require the argument for simpler applications: - - class MyClass(object): - def __init__(self, context=None): - self.context = context or Context.instance() - """ - if cls._instance is None or cls._instance.closed: - cls._instance = cls(io_threads=io_threads) - return cls._instance - - #------------------------------------------------------------------------- - # Hooks for ctxopt completion - #------------------------------------------------------------------------- - - def __dir__(self): - keys = dir(self.__class__) - - for collection in ( - ctx_opt_names, - ): - keys.extend(collection) - return keys - - #------------------------------------------------------------------------- - # Creating Sockets - #------------------------------------------------------------------------- - - @property - def _socket_class(self): - return Socket - - def socket(self, socket_type): - """Create a Socket associated with this Context. - - Parameters - ---------- - socket_type : int - The socket type, which can be any of the 0MQ socket types: - REQ, REP, PUB, SUB, PAIR, DEALER, ROUTER, PULL, PUSH, etc. - """ - if self.closed: - raise ZMQError(ENOTSUP) - s = self._socket_class(self, socket_type) - for opt, value in self.sockopts.items(): - try: - s.setsockopt(opt, value) - except ZMQError: - # ignore ZMQErrors, which are likely for socket options - # that do not apply to a particular socket type, e.g. - # SUBSCRIBE for non-SUB sockets. - pass - return s - - def setsockopt(self, opt, value): - """set default socket options for new sockets created by this Context - - .. versionadded:: 13.0 - """ - self.sockopts[opt] = value - - def getsockopt(self, opt): - """get default socket options for new sockets created by this Context - - .. versionadded:: 13.0 - """ - return self.sockopts[opt] - - def _set_attr_opt(self, name, opt, value): - """set default sockopts as attributes""" - if name in constants.ctx_opt_names: - return self.set(opt, value) - else: - self.sockopts[opt] = value - - def _get_attr_opt(self, name, opt): - """get default sockopts as attributes""" - if name in constants.ctx_opt_names: - return self.get(opt) - else: - if opt not in self.sockopts: - raise AttributeError(name) - else: - return self.sockopts[opt] - - def __delattr__(self, key): - """delete default sockopts as attributes""" - key = key.upper() - try: - opt = getattr(constants, key) - except AttributeError: - raise AttributeError("no such socket option: %s" % key) - else: - if opt not in self.sockopts: - raise AttributeError(key) - else: - del self.sockopts[opt] - -__all__ = ['Context'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/frame.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/frame.py deleted file mode 100644 index 9f556c86..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/frame.py +++ /dev/null @@ -1,19 +0,0 @@ -# coding: utf-8 -"""0MQ Frame pure Python methods.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from .attrsettr import AttributeSetter -from zmq.backend import Frame as FrameBase - - -class Frame(FrameBase, AttributeSetter): - def __getitem__(self, key): - # map Frame['User-Id'] to Frame.get('User-Id') - return self.get(key) - -# keep deprecated alias -Message = Frame -__all__ = ['Frame', 'Message'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/poll.py deleted file mode 100644 index c7b1d1bb..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/poll.py +++ /dev/null @@ -1,161 +0,0 @@ -"""0MQ polling related functions and classes.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import zmq -from zmq.backend import zmq_poll -from .constants import POLLIN, POLLOUT, POLLERR - -#----------------------------------------------------------------------------- -# Polling related methods -#----------------------------------------------------------------------------- - - -class Poller(object): - """A stateful poll interface that mirrors Python's built-in poll.""" - sockets = None - _map = {} - - def __init__(self): - self.sockets = [] - self._map = {} - - def __contains__(self, socket): - return socket in self._map - - def register(self, socket, flags=POLLIN|POLLOUT): - """p.register(socket, flags=POLLIN|POLLOUT) - - Register a 0MQ socket or native fd for I/O monitoring. - - register(s,0) is equivalent to unregister(s). - - Parameters - ---------- - socket : zmq.Socket or native socket - A zmq.Socket or any Python object having a ``fileno()`` - method that returns a valid file descriptor. - flags : int - The events to watch for. Can be POLLIN, POLLOUT or POLLIN|POLLOUT. - If `flags=0`, socket will be unregistered. - """ - if flags: - if socket in self._map: - idx = self._map[socket] - self.sockets[idx] = (socket, flags) - else: - idx = len(self.sockets) - self.sockets.append((socket, flags)) - self._map[socket] = idx - elif socket in self._map: - # uregister sockets registered with no events - self.unregister(socket) - else: - # ignore new sockets with no events - pass - - def modify(self, socket, flags=POLLIN|POLLOUT): - """Modify the flags for an already registered 0MQ socket or native fd.""" - self.register(socket, flags) - - def unregister(self, socket): - """Remove a 0MQ socket or native fd for I/O monitoring. - - Parameters - ---------- - socket : Socket - The socket instance to stop polling. - """ - idx = self._map.pop(socket) - self.sockets.pop(idx) - # shift indices after deletion - for socket, flags in self.sockets[idx:]: - self._map[socket] -= 1 - - def poll(self, timeout=None): - """Poll the registered 0MQ or native fds for I/O. - - Parameters - ---------- - timeout : float, int - The timeout in milliseconds. If None, no `timeout` (infinite). This - is in milliseconds to be compatible with ``select.poll()``. The - underlying zmq_poll uses microseconds and we convert to that in - this function. - - Returns - ------- - events : list of tuples - The list of events that are ready to be processed. - This is a list of tuples of the form ``(socket, event)``, where the 0MQ Socket - or integer fd is the first element, and the poll event mask (POLLIN, POLLOUT) is the second. - It is common to call ``events = dict(poller.poll())``, - which turns the list of tuples into a mapping of ``socket : event``. - """ - if timeout is None or timeout < 0: - timeout = -1 - elif isinstance(timeout, float): - timeout = int(timeout) - return zmq_poll(self.sockets, timeout=timeout) - - -def select(rlist, wlist, xlist, timeout=None): - """select(rlist, wlist, xlist, timeout=None) -> (rlist, wlist, xlist) - - Return the result of poll as a lists of sockets ready for r/w/exception. - - This has the same interface as Python's built-in ``select.select()`` function. - - Parameters - ---------- - timeout : float, int, optional - The timeout in seconds. If None, no timeout (infinite). This is in seconds to be - compatible with ``select.select()``. The underlying zmq_poll uses microseconds - and we convert to that in this function. - rlist : list of sockets/FDs - sockets/FDs to be polled for read events - wlist : list of sockets/FDs - sockets/FDs to be polled for write events - xlist : list of sockets/FDs - sockets/FDs to be polled for error events - - Returns - ------- - (rlist, wlist, xlist) : tuple of lists of sockets (length 3) - Lists correspond to sockets available for read/write/error events respectively. - """ - if timeout is None: - timeout = -1 - # Convert from sec -> us for zmq_poll. - # zmq_poll accepts 3.x style timeout in ms - timeout = int(timeout*1000.0) - if timeout < 0: - timeout = -1 - sockets = [] - for s in set(rlist + wlist + xlist): - flags = 0 - if s in rlist: - flags |= POLLIN - if s in wlist: - flags |= POLLOUT - if s in xlist: - flags |= POLLERR - sockets.append((s, flags)) - return_sockets = zmq_poll(sockets, timeout) - rlist, wlist, xlist = [], [], [] - for s, flags in return_sockets: - if flags & POLLIN: - rlist.append(s) - if flags & POLLOUT: - wlist.append(s) - if flags & POLLERR: - xlist.append(s) - return rlist, wlist, xlist - -#----------------------------------------------------------------------------- -# Symbols to export -#----------------------------------------------------------------------------- - -__all__ = [ 'Poller', 'select' ] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/socket.py deleted file mode 100644 index c91589d7..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/socket.py +++ /dev/null @@ -1,495 +0,0 @@ -# coding: utf-8 -"""0MQ Socket pure Python methods.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import codecs -import random -import warnings - -import zmq -from zmq.backend import Socket as SocketBase -from .poll import Poller -from . import constants -from .attrsettr import AttributeSetter -from zmq.error import ZMQError, ZMQBindError -from zmq.utils import jsonapi -from zmq.utils.strtypes import bytes,unicode,basestring -from zmq.utils.interop import cast_int_addr - -from .constants import ( - SNDMORE, ENOTSUP, POLLIN, - int64_sockopt_names, - int_sockopt_names, - bytes_sockopt_names, - fd_sockopt_names, -) -try: - import cPickle - pickle = cPickle -except: - cPickle = None - import pickle - -try: - DEFAULT_PROTOCOL = pickle.DEFAULT_PROTOCOL -except AttributeError: - DEFAULT_PROTOCOL = pickle.HIGHEST_PROTOCOL - - -class Socket(SocketBase, AttributeSetter): - """The ZMQ socket object - - To create a Socket, first create a Context:: - - ctx = zmq.Context.instance() - - then call ``ctx.socket(socket_type)``:: - - s = ctx.socket(zmq.ROUTER) - - """ - _shadow = False - - def __del__(self): - if not self._shadow: - self.close() - - # socket as context manager: - def __enter__(self): - """Sockets are context managers - - .. versionadded:: 14.4 - """ - return self - - def __exit__(self, *args, **kwargs): - self.close() - - #------------------------------------------------------------------------- - # Socket creation - #------------------------------------------------------------------------- - - @classmethod - def shadow(cls, address): - """Shadow an existing libzmq socket - - address is the integer address of the libzmq socket - or an FFI pointer to it. - - .. versionadded:: 14.1 - """ - address = cast_int_addr(address) - return cls(shadow=address) - - #------------------------------------------------------------------------- - # Deprecated aliases - #------------------------------------------------------------------------- - - @property - def socket_type(self): - warnings.warn("Socket.socket_type is deprecated, use Socket.type", - DeprecationWarning - ) - return self.type - - #------------------------------------------------------------------------- - # Hooks for sockopt completion - #------------------------------------------------------------------------- - - def __dir__(self): - keys = dir(self.__class__) - for collection in ( - bytes_sockopt_names, - int_sockopt_names, - int64_sockopt_names, - fd_sockopt_names, - ): - keys.extend(collection) - return keys - - #------------------------------------------------------------------------- - # Getting/Setting options - #------------------------------------------------------------------------- - setsockopt = SocketBase.set - getsockopt = SocketBase.get - - def set_string(self, option, optval, encoding='utf-8'): - """set socket options with a unicode object - - This is simply a wrapper for setsockopt to protect from encoding ambiguity. - - See the 0MQ documentation for details on specific options. - - Parameters - ---------- - option : int - The name of the option to set. Can be any of: SUBSCRIBE, - UNSUBSCRIBE, IDENTITY - optval : unicode string (unicode on py2, str on py3) - The value of the option to set. - encoding : str - The encoding to be used, default is utf8 - """ - if not isinstance(optval, unicode): - raise TypeError("unicode strings only") - return self.set(option, optval.encode(encoding)) - - setsockopt_unicode = setsockopt_string = set_string - - def get_string(self, option, encoding='utf-8'): - """get the value of a socket option - - See the 0MQ documentation for details on specific options. - - Parameters - ---------- - option : int - The option to retrieve. - - Returns - ------- - optval : unicode string (unicode on py2, str on py3) - The value of the option as a unicode string. - """ - - if option not in constants.bytes_sockopts: - raise TypeError("option %i will not return a string to be decoded"%option) - return self.getsockopt(option).decode(encoding) - - getsockopt_unicode = getsockopt_string = get_string - - def bind_to_random_port(self, addr, min_port=49152, max_port=65536, max_tries=100): - """bind this socket to a random port in a range - - Parameters - ---------- - addr : str - The address string without the port to pass to ``Socket.bind()``. - min_port : int, optional - The minimum port in the range of ports to try (inclusive). - max_port : int, optional - The maximum port in the range of ports to try (exclusive). - max_tries : int, optional - The maximum number of bind attempts to make. - - Returns - ------- - port : int - The port the socket was bound to. - - Raises - ------ - ZMQBindError - if `max_tries` reached before successful bind - """ - for i in range(max_tries): - try: - port = random.randrange(min_port, max_port) - self.bind('%s:%s' % (addr, port)) - except ZMQError as exception: - if not exception.errno == zmq.EADDRINUSE: - raise - else: - return port - raise ZMQBindError("Could not bind socket to random port.") - - def get_hwm(self): - """get the High Water Mark - - On libzmq ≥ 3, this gets SNDHWM if available, otherwise RCVHWM - """ - major = zmq.zmq_version_info()[0] - if major >= 3: - # return sndhwm, fallback on rcvhwm - try: - return self.getsockopt(zmq.SNDHWM) - except zmq.ZMQError as e: - pass - - return self.getsockopt(zmq.RCVHWM) - else: - return self.getsockopt(zmq.HWM) - - def set_hwm(self, value): - """set the High Water Mark - - On libzmq ≥ 3, this sets both SNDHWM and RCVHWM - """ - major = zmq.zmq_version_info()[0] - if major >= 3: - raised = None - try: - self.sndhwm = value - except Exception as e: - raised = e - try: - self.rcvhwm = value - except Exception: - raised = e - - if raised: - raise raised - else: - return self.setsockopt(zmq.HWM, value) - - hwm = property(get_hwm, set_hwm, - """property for High Water Mark - - Setting hwm sets both SNDHWM and RCVHWM as appropriate. - It gets SNDHWM if available, otherwise RCVHWM. - """ - ) - - #------------------------------------------------------------------------- - # Sending and receiving messages - #------------------------------------------------------------------------- - - def send_multipart(self, msg_parts, flags=0, copy=True, track=False): - """send a sequence of buffers as a multipart message - - The zmq.SNDMORE flag is added to all msg parts before the last. - - Parameters - ---------- - msg_parts : iterable - A sequence of objects to send as a multipart message. Each element - can be any sendable object (Frame, bytes, buffer-providers) - flags : int, optional - SNDMORE is handled automatically for frames before the last. - copy : bool, optional - Should the frame(s) be sent in a copying or non-copying manner. - track : bool, optional - Should the frame(s) be tracked for notification that ZMQ has - finished with it (ignored if copy=True). - - Returns - ------- - None : if copy or not track - MessageTracker : if track and not copy - a MessageTracker object, whose `pending` property will - be True until the last send is completed. - """ - for msg in msg_parts[:-1]: - self.send(msg, SNDMORE|flags, copy=copy, track=track) - # Send the last part without the extra SNDMORE flag. - return self.send(msg_parts[-1], flags, copy=copy, track=track) - - def recv_multipart(self, flags=0, copy=True, track=False): - """receive a multipart message as a list of bytes or Frame objects - - Parameters - ---------- - flags : int, optional - Any supported flag: NOBLOCK. If NOBLOCK is set, this method - will raise a ZMQError with EAGAIN if a message is not ready. - If NOBLOCK is not set, then this method will block until a - message arrives. - copy : bool, optional - Should the message frame(s) be received in a copying or non-copying manner? - If False a Frame object is returned for each part, if True a copy of - the bytes is made for each frame. - track : bool, optional - Should the message frame(s) be tracked for notification that ZMQ has - finished with it? (ignored if copy=True) - - Returns - ------- - msg_parts : list - A list of frames in the multipart message; either Frames or bytes, - depending on `copy`. - - """ - parts = [self.recv(flags, copy=copy, track=track)] - # have first part already, only loop while more to receive - while self.getsockopt(zmq.RCVMORE): - part = self.recv(flags, copy=copy, track=track) - parts.append(part) - - return parts - - def send_string(self, u, flags=0, copy=True, encoding='utf-8'): - """send a Python unicode string as a message with an encoding - - 0MQ communicates with raw bytes, so you must encode/decode - text (unicode on py2, str on py3) around 0MQ. - - Parameters - ---------- - u : Python unicode string (unicode on py2, str on py3) - The unicode string to send. - flags : int, optional - Any valid send flag. - encoding : str [default: 'utf-8'] - The encoding to be used - """ - if not isinstance(u, basestring): - raise TypeError("unicode/str objects only") - return self.send(u.encode(encoding), flags=flags, copy=copy) - - send_unicode = send_string - - def recv_string(self, flags=0, encoding='utf-8'): - """receive a unicode string, as sent by send_string - - Parameters - ---------- - flags : int - Any valid recv flag. - encoding : str [default: 'utf-8'] - The encoding to be used - - Returns - ------- - s : unicode string (unicode on py2, str on py3) - The Python unicode string that arrives as encoded bytes. - """ - b = self.recv(flags=flags) - return b.decode(encoding) - - recv_unicode = recv_string - - def send_pyobj(self, obj, flags=0, protocol=DEFAULT_PROTOCOL): - """send a Python object as a message using pickle to serialize - - Parameters - ---------- - obj : Python object - The Python object to send. - flags : int - Any valid send flag. - protocol : int - The pickle protocol number to use. The default is pickle.DEFAULT_PROTOCOl - where defined, and pickle.HIGHEST_PROTOCOL elsewhere. - """ - msg = pickle.dumps(obj, protocol) - return self.send(msg, flags) - - def recv_pyobj(self, flags=0): - """receive a Python object as a message using pickle to serialize - - Parameters - ---------- - flags : int - Any valid recv flag. - - Returns - ------- - obj : Python object - The Python object that arrives as a message. - """ - s = self.recv(flags) - return pickle.loads(s) - - def send_json(self, obj, flags=0, **kwargs): - """send a Python object as a message using json to serialize - - Keyword arguments are passed on to json.dumps - - Parameters - ---------- - obj : Python object - The Python object to send - flags : int - Any valid send flag - """ - msg = jsonapi.dumps(obj, **kwargs) - return self.send(msg, flags) - - def recv_json(self, flags=0, **kwargs): - """receive a Python object as a message using json to serialize - - Keyword arguments are passed on to json.loads - - Parameters - ---------- - flags : int - Any valid recv flag. - - Returns - ------- - obj : Python object - The Python object that arrives as a message. - """ - msg = self.recv(flags) - return jsonapi.loads(msg, **kwargs) - - _poller_class = Poller - - def poll(self, timeout=None, flags=POLLIN): - """poll the socket for events - - The default is to poll forever for incoming - events. Timeout is in milliseconds, if specified. - - Parameters - ---------- - timeout : int [default: None] - The timeout (in milliseconds) to wait for an event. If unspecified - (or specified None), will wait forever for an event. - flags : bitfield (int) [default: POLLIN] - The event flags to poll for (any combination of POLLIN|POLLOUT). - The default is to check for incoming events (POLLIN). - - Returns - ------- - events : bitfield (int) - The events that are ready and waiting. Will be 0 if no events were ready - by the time timeout was reached. - """ - - if self.closed: - raise ZMQError(ENOTSUP) - - p = self._poller_class() - p.register(self, flags) - evts = dict(p.poll(timeout)) - # return 0 if no events, otherwise return event bitfield - return evts.get(self, 0) - - def get_monitor_socket(self, events=None, addr=None): - """Return a connected PAIR socket ready to receive the event notifications. - - .. versionadded:: libzmq-4.0 - .. versionadded:: 14.0 - - Parameters - ---------- - events : bitfield (int) [default: ZMQ_EVENTS_ALL] - The bitmask defining which events are wanted. - addr : string [default: None] - The optional endpoint for the monitoring sockets. - - Returns - ------- - socket : (PAIR) - The socket is already connected and ready to receive messages. - """ - # safe-guard, method only available on libzmq >= 4 - if zmq.zmq_version_info() < (4,): - raise NotImplementedError("get_monitor_socket requires libzmq >= 4, have %s" % zmq.zmq_version()) - if addr is None: - # create endpoint name from internal fd - addr = "inproc://monitor.s-%d" % self.FD - if events is None: - # use all events - events = zmq.EVENT_ALL - # attach monitoring socket - self.monitor(addr, events) - # create new PAIR socket and connect it - ret = self.context.socket(zmq.PAIR) - ret.connect(addr) - return ret - - def disable_monitor(self): - """Shutdown the PAIR socket (created using get_monitor_socket) - that is serving socket events. - - .. versionadded:: 14.4 - """ - self.monitor(None, 0) - - -__all__ = ['Socket'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/tracker.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/tracker.py deleted file mode 100644 index fb8c007f..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/tracker.py +++ /dev/null @@ -1,120 +0,0 @@ -"""Tracker for zero-copy messages with 0MQ.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time - -try: - # below 3.3 - from threading import _Event as Event -except (ImportError, AttributeError): - # python throws ImportError, cython throws AttributeError - from threading import Event - -from zmq.error import NotDone -from zmq.backend import Frame - -class MessageTracker(object): - """MessageTracker(*towatch) - - A class for tracking if 0MQ is done using one or more messages. - - When you send a 0MQ message, it is not sent immediately. The 0MQ IO thread - sends the message at some later time. Often you want to know when 0MQ has - actually sent the message though. This is complicated by the fact that - a single 0MQ message can be sent multiple times using different sockets. - This class allows you to track all of the 0MQ usages of a message. - - Parameters - ---------- - *towatch : tuple of Event, MessageTracker, Message instances. - This list of objects to track. This class can track the low-level - Events used by the Message class, other MessageTrackers or - actual Messages. - """ - events = None - peers = None - - def __init__(self, *towatch): - """MessageTracker(*towatch) - - Create a message tracker to track a set of mesages. - - Parameters - ---------- - *towatch : tuple of Event, MessageTracker, Message instances. - This list of objects to track. This class can track the low-level - Events used by the Message class, other MessageTrackers or - actual Messages. - """ - self.events = set() - self.peers = set() - for obj in towatch: - if isinstance(obj, Event): - self.events.add(obj) - elif isinstance(obj, MessageTracker): - self.peers.add(obj) - elif isinstance(obj, Frame): - if not obj.tracker: - raise ValueError("Not a tracked message") - self.peers.add(obj.tracker) - else: - raise TypeError("Require Events or Message Frames, not %s"%type(obj)) - - @property - def done(self): - """Is 0MQ completely done with the message(s) being tracked?""" - for evt in self.events: - if not evt.is_set(): - return False - for pm in self.peers: - if not pm.done: - return False - return True - - def wait(self, timeout=-1): - """mt.wait(timeout=-1) - - Wait for 0MQ to be done with the message or until `timeout`. - - Parameters - ---------- - timeout : float [default: -1, wait forever] - Maximum time in (s) to wait before raising NotDone. - - Returns - ------- - None - if done before `timeout` - - Raises - ------ - NotDone - if `timeout` reached before I am done. - """ - tic = time.time() - if timeout is False or timeout < 0: - remaining = 3600*24*7 # a week - else: - remaining = timeout - done = False - for evt in self.events: - if remaining < 0: - raise NotDone - evt.wait(timeout=remaining) - if not evt.is_set(): - raise NotDone - toc = time.time() - remaining -= (toc-tic) - tic = toc - - for peer in self.peers: - if remaining < 0: - raise NotDone - peer.wait(timeout=remaining) - toc = time.time() - remaining -= (toc-tic) - tic = toc - -__all__ = ['MessageTracker'] \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/version.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/version.py deleted file mode 100644 index ea8fbbc4..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/sugar/version.py +++ /dev/null @@ -1,48 +0,0 @@ -"""PyZMQ and 0MQ version functions.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from zmq.backend import zmq_version_info - - -VERSION_MAJOR = 14 -VERSION_MINOR = 5 -VERSION_PATCH = 0 -VERSION_EXTRA = "" -__version__ = '%i.%i.%i' % (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH) - -if VERSION_EXTRA: - __version__ = "%s-%s" % (__version__, VERSION_EXTRA) - version_info = (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, float('inf')) -else: - version_info = (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH) - -__revision__ = '' - -def pyzmq_version(): - """return the version of pyzmq as a string""" - if __revision__: - return '@'.join([__version__,__revision__[:6]]) - else: - return __version__ - -def pyzmq_version_info(): - """return the pyzmq version as a tuple of at least three numbers - - If pyzmq is a development version, `inf` will be appended after the third integer. - """ - return version_info - - -def zmq_version(): - """return the version of libzmq as a string""" - return "%i.%i.%i" % zmq_version_info() - - -__all__ = ['zmq_version', 'zmq_version_info', - 'pyzmq_version','pyzmq_version_info', - '__version__', '__revision__' -] - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/__init__.py deleted file mode 100644 index 325a3f19..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/__init__.py +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) PyZMQ Developers. -# Distributed under the terms of the Modified BSD License. - -import functools -import sys -import time -from threading import Thread - -from unittest import TestCase - -import zmq -from zmq.utils import jsonapi - -try: - import gevent - from zmq import green as gzmq - have_gevent = True -except ImportError: - have_gevent = False - -try: - from unittest import SkipTest -except ImportError: - try: - from nose import SkipTest - except ImportError: - class SkipTest(Exception): - pass - -PYPY = 'PyPy' in sys.version - -#----------------------------------------------------------------------------- -# skip decorators (directly from unittest) -#----------------------------------------------------------------------------- - -_id = lambda x: x - -def skip(reason): - """ - Unconditionally skip a test. - """ - def decorator(test_item): - if not (isinstance(test_item, type) and issubclass(test_item, TestCase)): - @functools.wraps(test_item) - def skip_wrapper(*args, **kwargs): - raise SkipTest(reason) - test_item = skip_wrapper - - test_item.__unittest_skip__ = True - test_item.__unittest_skip_why__ = reason - return test_item - return decorator - -def skip_if(condition, reason="Skipped"): - """ - Skip a test if the condition is true. - """ - if condition: - return skip(reason) - return _id - -skip_pypy = skip_if(PYPY, "Doesn't work on PyPy") - -#----------------------------------------------------------------------------- -# Base test class -#----------------------------------------------------------------------------- - -class BaseZMQTestCase(TestCase): - green = False - - @property - def Context(self): - if self.green: - return gzmq.Context - else: - return zmq.Context - - def socket(self, socket_type): - s = self.context.socket(socket_type) - self.sockets.append(s) - return s - - def setUp(self): - if self.green and not have_gevent: - raise SkipTest("requires gevent") - self.context = self.Context.instance() - self.sockets = [] - - def tearDown(self): - contexts = set([self.context]) - while self.sockets: - sock = self.sockets.pop() - contexts.add(sock.context) # in case additional contexts are created - sock.close(0) - for ctx in contexts: - t = Thread(target=ctx.term) - t.daemon = True - t.start() - t.join(timeout=2) - if t.is_alive(): - # reset Context.instance, so the failure to term doesn't corrupt subsequent tests - zmq.sugar.context.Context._instance = None - raise RuntimeError("context could not terminate, open sockets likely remain in test") - - def create_bound_pair(self, type1=zmq.PAIR, type2=zmq.PAIR, interface='tcp://127.0.0.1'): - """Create a bound socket pair using a random port.""" - s1 = self.context.socket(type1) - s1.setsockopt(zmq.LINGER, 0) - port = s1.bind_to_random_port(interface) - s2 = self.context.socket(type2) - s2.setsockopt(zmq.LINGER, 0) - s2.connect('%s:%s' % (interface, port)) - self.sockets.extend([s1,s2]) - return s1, s2 - - def ping_pong(self, s1, s2, msg): - s1.send(msg) - msg2 = s2.recv() - s2.send(msg2) - msg3 = s1.recv() - return msg3 - - def ping_pong_json(self, s1, s2, o): - if jsonapi.jsonmod is None: - raise SkipTest("No json library") - s1.send_json(o) - o2 = s2.recv_json() - s2.send_json(o2) - o3 = s1.recv_json() - return o3 - - def ping_pong_pyobj(self, s1, s2, o): - s1.send_pyobj(o) - o2 = s2.recv_pyobj() - s2.send_pyobj(o2) - o3 = s1.recv_pyobj() - return o3 - - def assertRaisesErrno(self, errno, func, *args, **kwargs): - try: - func(*args, **kwargs) - except zmq.ZMQError as e: - self.assertEqual(e.errno, errno, "wrong error raised, expected '%s' \ -got '%s'" % (zmq.ZMQError(errno), zmq.ZMQError(e.errno))) - else: - self.fail("Function did not raise any error") - - def _select_recv(self, multipart, socket, **kwargs): - """call recv[_multipart] in a way that raises if there is nothing to receive""" - if zmq.zmq_version_info() >= (3,1,0): - # zmq 3.1 has a bug, where poll can return false positives, - # so we wait a little bit just in case - # See LIBZMQ-280 on JIRA - time.sleep(0.1) - - r,w,x = zmq.select([socket], [], [], timeout=5) - assert len(r) > 0, "Should have received a message" - kwargs['flags'] = zmq.DONTWAIT | kwargs.get('flags', 0) - - recv = socket.recv_multipart if multipart else socket.recv - return recv(**kwargs) - - def recv(self, socket, **kwargs): - """call recv in a way that raises if there is nothing to receive""" - return self._select_recv(False, socket, **kwargs) - - def recv_multipart(self, socket, **kwargs): - """call recv_multipart in a way that raises if there is nothing to receive""" - return self._select_recv(True, socket, **kwargs) - - -class PollZMQTestCase(BaseZMQTestCase): - pass - -class GreenTest: - """Mixin for making green versions of test classes""" - green = True - - def assertRaisesErrno(self, errno, func, *args, **kwargs): - if errno == zmq.EAGAIN: - raise SkipTest("Skipping because we're green.") - try: - func(*args, **kwargs) - except zmq.ZMQError: - e = sys.exc_info()[1] - self.assertEqual(e.errno, errno, "wrong error raised, expected '%s' \ -got '%s'" % (zmq.ZMQError(errno), zmq.ZMQError(e.errno))) - else: - self.fail("Function did not raise any error") - - def tearDown(self): - contexts = set([self.context]) - while self.sockets: - sock = self.sockets.pop() - contexts.add(sock.context) # in case additional contexts are created - sock.close() - try: - gevent.joinall([gevent.spawn(ctx.term) for ctx in contexts], timeout=2, raise_error=True) - except gevent.Timeout: - raise RuntimeError("context could not terminate, open sockets likely remain in test") - - def skip_green(self): - raise SkipTest("Skipping because we are green") - -def skip_green(f): - def skipping_test(self, *args, **kwargs): - if self.green: - raise SkipTest("Skipping because we are green") - else: - return f(self, *args, **kwargs) - return skipping_test diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_auth.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_auth.py deleted file mode 100644 index d350f61f..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_auth.py +++ /dev/null @@ -1,431 +0,0 @@ -# -*- coding: utf8 -*- - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import logging -import os -import shutil -import sys -import tempfile - -import zmq.auth -from zmq.auth.ioloop import IOLoopAuthenticator -from zmq.auth.thread import ThreadAuthenticator - -from zmq.eventloop import ioloop, zmqstream -from zmq.tests import (BaseZMQTestCase, SkipTest) - -class BaseAuthTestCase(BaseZMQTestCase): - def setUp(self): - if zmq.zmq_version_info() < (4,0): - raise SkipTest("security is new in libzmq 4.0") - try: - zmq.curve_keypair() - except zmq.ZMQError: - raise SkipTest("security requires libzmq to be linked against libsodium") - super(BaseAuthTestCase, self).setUp() - # enable debug logging while we run tests - logging.getLogger('zmq.auth').setLevel(logging.DEBUG) - self.auth = self.make_auth() - self.auth.start() - self.base_dir, self.public_keys_dir, self.secret_keys_dir = self.create_certs() - - def make_auth(self): - raise NotImplementedError() - - def tearDown(self): - if self.auth: - self.auth.stop() - self.auth = None - self.remove_certs(self.base_dir) - super(BaseAuthTestCase, self).tearDown() - - def create_certs(self): - """Create CURVE certificates for a test""" - - # Create temporary CURVE keypairs for this test run. We create all keys in a - # temp directory and then move them into the appropriate private or public - # directory. - - base_dir = tempfile.mkdtemp() - keys_dir = os.path.join(base_dir, 'certificates') - public_keys_dir = os.path.join(base_dir, 'public_keys') - secret_keys_dir = os.path.join(base_dir, 'private_keys') - - os.mkdir(keys_dir) - os.mkdir(public_keys_dir) - os.mkdir(secret_keys_dir) - - server_public_file, server_secret_file = zmq.auth.create_certificates(keys_dir, "server") - client_public_file, client_secret_file = zmq.auth.create_certificates(keys_dir, "client") - - for key_file in os.listdir(keys_dir): - if key_file.endswith(".key"): - shutil.move(os.path.join(keys_dir, key_file), - os.path.join(public_keys_dir, '.')) - - for key_file in os.listdir(keys_dir): - if key_file.endswith(".key_secret"): - shutil.move(os.path.join(keys_dir, key_file), - os.path.join(secret_keys_dir, '.')) - - return (base_dir, public_keys_dir, secret_keys_dir) - - def remove_certs(self, base_dir): - """Remove certificates for a test""" - shutil.rmtree(base_dir) - - def load_certs(self, secret_keys_dir): - """Return server and client certificate keys""" - server_secret_file = os.path.join(secret_keys_dir, "server.key_secret") - client_secret_file = os.path.join(secret_keys_dir, "client.key_secret") - - server_public, server_secret = zmq.auth.load_certificate(server_secret_file) - client_public, client_secret = zmq.auth.load_certificate(client_secret_file) - - return server_public, server_secret, client_public, client_secret - - -class TestThreadAuthentication(BaseAuthTestCase): - """Test authentication running in a thread""" - - def make_auth(self): - return ThreadAuthenticator(self.context) - - def can_connect(self, server, client): - """Check if client can connect to server using tcp transport""" - result = False - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - msg = [b"Hello World"] - server.send_multipart(msg) - if client.poll(1000): - rcvd_msg = client.recv_multipart() - self.assertEqual(rcvd_msg, msg) - result = True - return result - - def test_null(self): - """threaded auth - NULL""" - # A default NULL connection should always succeed, and not - # go through our authentication infrastructure at all. - self.auth.stop() - self.auth = None - - server = self.socket(zmq.PUSH) - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. The client connection - # should still be allowed. - server = self.socket(zmq.PUSH) - server.zap_domain = b'global' - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - def test_blacklist(self): - """threaded auth - Blacklist""" - # Blacklist 127.0.0.1, connection should fail - self.auth.deny('127.0.0.1') - server = self.socket(zmq.PUSH) - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. - server.zap_domain = b'global' - client = self.socket(zmq.PULL) - self.assertFalse(self.can_connect(server, client)) - - def test_whitelist(self): - """threaded auth - Whitelist""" - # Whitelist 127.0.0.1, connection should pass" - self.auth.allow('127.0.0.1') - server = self.socket(zmq.PUSH) - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. - server.zap_domain = b'global' - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - def test_plain(self): - """threaded auth - PLAIN""" - - # Try PLAIN authentication - without configuring server, connection should fail - server = self.socket(zmq.PUSH) - server.plain_server = True - client = self.socket(zmq.PULL) - client.plain_username = b'admin' - client.plain_password = b'Password' - self.assertFalse(self.can_connect(server, client)) - - # Try PLAIN authentication - with server configured, connection should pass - server = self.socket(zmq.PUSH) - server.plain_server = True - client = self.socket(zmq.PULL) - client.plain_username = b'admin' - client.plain_password = b'Password' - self.auth.configure_plain(domain='*', passwords={'admin': 'Password'}) - self.assertTrue(self.can_connect(server, client)) - - # Try PLAIN authentication - with bogus credentials, connection should fail - server = self.socket(zmq.PUSH) - server.plain_server = True - client = self.socket(zmq.PULL) - client.plain_username = b'admin' - client.plain_password = b'Bogus' - self.assertFalse(self.can_connect(server, client)) - - # Remove authenticator and check that a normal connection works - self.auth.stop() - self.auth = None - - server = self.socket(zmq.PUSH) - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - client.close() - server.close() - - def test_curve(self): - """threaded auth - CURVE""" - self.auth.allow('127.0.0.1') - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - #Try CURVE authentication - without configuring server, connection should fail - server = self.socket(zmq.PUSH) - server.curve_publickey = server_public - server.curve_secretkey = server_secret - server.curve_server = True - client = self.socket(zmq.PULL) - client.curve_publickey = client_public - client.curve_secretkey = client_secret - client.curve_serverkey = server_public - self.assertFalse(self.can_connect(server, client)) - - #Try CURVE authentication - with server configured to CURVE_ALLOW_ANY, connection should pass - self.auth.configure_curve(domain='*', location=zmq.auth.CURVE_ALLOW_ANY) - server = self.socket(zmq.PUSH) - server.curve_publickey = server_public - server.curve_secretkey = server_secret - server.curve_server = True - client = self.socket(zmq.PULL) - client.curve_publickey = client_public - client.curve_secretkey = client_secret - client.curve_serverkey = server_public - self.assertTrue(self.can_connect(server, client)) - - # Try CURVE authentication - with server configured, connection should pass - self.auth.configure_curve(domain='*', location=self.public_keys_dir) - server = self.socket(zmq.PUSH) - server.curve_publickey = server_public - server.curve_secretkey = server_secret - server.curve_server = True - client = self.socket(zmq.PULL) - client.curve_publickey = client_public - client.curve_secretkey = client_secret - client.curve_serverkey = server_public - self.assertTrue(self.can_connect(server, client)) - - # Remove authenticator and check that a normal connection works - self.auth.stop() - self.auth = None - - # Try connecting using NULL and no authentication enabled, connection should pass - server = self.socket(zmq.PUSH) - client = self.socket(zmq.PULL) - self.assertTrue(self.can_connect(server, client)) - - -def with_ioloop(method, expect_success=True): - """decorator for running tests with an IOLoop""" - def test_method(self): - r = method(self) - - loop = self.io_loop - if expect_success: - self.pullstream.on_recv(self.on_message_succeed) - else: - self.pullstream.on_recv(self.on_message_fail) - - t = loop.time() - loop.add_callback(self.attempt_connection) - loop.add_callback(self.send_msg) - if expect_success: - loop.add_timeout(t + 1, self.on_test_timeout_fail) - else: - loop.add_timeout(t + 1, self.on_test_timeout_succeed) - - loop.start() - if self.fail_msg: - self.fail(self.fail_msg) - - return r - return test_method - -def should_auth(method): - return with_ioloop(method, True) - -def should_not_auth(method): - return with_ioloop(method, False) - -class TestIOLoopAuthentication(BaseAuthTestCase): - """Test authentication running in ioloop""" - - def setUp(self): - self.fail_msg = None - self.io_loop = ioloop.IOLoop() - super(TestIOLoopAuthentication, self).setUp() - self.server = self.socket(zmq.PUSH) - self.client = self.socket(zmq.PULL) - self.pushstream = zmqstream.ZMQStream(self.server, self.io_loop) - self.pullstream = zmqstream.ZMQStream(self.client, self.io_loop) - - def make_auth(self): - return IOLoopAuthenticator(self.context, io_loop=self.io_loop) - - def tearDown(self): - if self.auth: - self.auth.stop() - self.auth = None - self.io_loop.close(all_fds=True) - super(TestIOLoopAuthentication, self).tearDown() - - def attempt_connection(self): - """Check if client can connect to server using tcp transport""" - iface = 'tcp://127.0.0.1' - port = self.server.bind_to_random_port(iface) - self.client.connect("%s:%i" % (iface, port)) - - def send_msg(self): - """Send a message from server to a client""" - msg = [b"Hello World"] - self.pushstream.send_multipart(msg) - - def on_message_succeed(self, frames): - """A message was received, as expected.""" - if frames != [b"Hello World"]: - self.fail_msg = "Unexpected message received" - self.io_loop.stop() - - def on_message_fail(self, frames): - """A message was received, unexpectedly.""" - self.fail_msg = 'Received messaged unexpectedly, security failed' - self.io_loop.stop() - - def on_test_timeout_succeed(self): - """Test timer expired, indicates test success""" - self.io_loop.stop() - - def on_test_timeout_fail(self): - """Test timer expired, indicates test failure""" - self.fail_msg = 'Test timed out' - self.io_loop.stop() - - @should_auth - def test_none(self): - """ioloop auth - NONE""" - # A default NULL connection should always succeed, and not - # go through our authentication infrastructure at all. - # no auth should be running - self.auth.stop() - self.auth = None - - @should_auth - def test_null(self): - """ioloop auth - NULL""" - # By setting a domain we switch on authentication for NULL sockets, - # though no policies are configured yet. The client connection - # should still be allowed. - self.server.zap_domain = b'global' - - @should_not_auth - def test_blacklist(self): - """ioloop auth - Blacklist""" - # Blacklist 127.0.0.1, connection should fail - self.auth.deny('127.0.0.1') - self.server.zap_domain = b'global' - - @should_auth - def test_whitelist(self): - """ioloop auth - Whitelist""" - # Whitelist 127.0.0.1, which overrides the blacklist, connection should pass" - self.auth.allow('127.0.0.1') - - self.server.setsockopt(zmq.ZAP_DOMAIN, b'global') - - @should_not_auth - def test_plain_unconfigured_server(self): - """ioloop auth - PLAIN, unconfigured server""" - self.client.plain_username = b'admin' - self.client.plain_password = b'Password' - # Try PLAIN authentication - without configuring server, connection should fail - self.server.plain_server = True - - @should_auth - def test_plain_configured_server(self): - """ioloop auth - PLAIN, configured server""" - self.client.plain_username = b'admin' - self.client.plain_password = b'Password' - # Try PLAIN authentication - with server configured, connection should pass - self.server.plain_server = True - self.auth.configure_plain(domain='*', passwords={'admin': 'Password'}) - - @should_not_auth - def test_plain_bogus_credentials(self): - """ioloop auth - PLAIN, bogus credentials""" - self.client.plain_username = b'admin' - self.client.plain_password = b'Bogus' - self.server.plain_server = True - - self.auth.configure_plain(domain='*', passwords={'admin': 'Password'}) - - @should_not_auth - def test_curve_unconfigured_server(self): - """ioloop auth - CURVE, unconfigured server""" - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - self.auth.allow('127.0.0.1') - - self.server.curve_publickey = server_public - self.server.curve_secretkey = server_secret - self.server.curve_server = True - - self.client.curve_publickey = client_public - self.client.curve_secretkey = client_secret - self.client.curve_serverkey = server_public - - @should_auth - def test_curve_allow_any(self): - """ioloop auth - CURVE, CURVE_ALLOW_ANY""" - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - self.auth.allow('127.0.0.1') - self.auth.configure_curve(domain='*', location=zmq.auth.CURVE_ALLOW_ANY) - - self.server.curve_publickey = server_public - self.server.curve_secretkey = server_secret - self.server.curve_server = True - - self.client.curve_publickey = client_public - self.client.curve_secretkey = client_secret - self.client.curve_serverkey = server_public - - @should_auth - def test_curve_configured_server(self): - """ioloop auth - CURVE, configured server""" - self.auth.allow('127.0.0.1') - certs = self.load_certs(self.secret_keys_dir) - server_public, server_secret, client_public, client_secret = certs - - self.auth.configure_curve(domain='*', location=self.public_keys_dir) - - self.server.curve_publickey = server_public - self.server.curve_secretkey = server_secret - self.server.curve_server = True - - self.client.curve_publickey = client_public - self.client.curve_secretkey = client_secret - self.client.curve_serverkey = server_public diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_cffi_backend.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_cffi_backend.py deleted file mode 100644 index 1f85eebf..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_cffi_backend.py +++ /dev/null @@ -1,310 +0,0 @@ -# -*- coding: utf8 -*- - -import sys -import time - -from unittest import TestCase - -from zmq.tests import BaseZMQTestCase, SkipTest - -try: - from zmq.backend.cffi import ( - zmq_version_info, - PUSH, PULL, IDENTITY, - REQ, REP, POLLIN, POLLOUT, - ) - from zmq.backend.cffi._cffi import ffi, C - have_ffi_backend = True -except ImportError: - have_ffi_backend = False - - -class TestCFFIBackend(TestCase): - - def setUp(self): - if not have_ffi_backend or not 'PyPy' in sys.version: - raise SkipTest('PyPy Tests Only') - - def test_zmq_version_info(self): - version = zmq_version_info() - - assert version[0] in range(2,11) - - def test_zmq_ctx_new_destroy(self): - ctx = C.zmq_ctx_new() - - assert ctx != ffi.NULL - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_socket_open_close(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, PUSH) - - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_setsockopt(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, PUSH) - - identity = ffi.new('char[3]', 'zmq') - ret = C.zmq_setsockopt(socket, IDENTITY, ffi.cast('void*', identity), 3) - - assert ret == 0 - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_getsockopt(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, PUSH) - - identity = ffi.new('char[]', 'zmq') - ret = C.zmq_setsockopt(socket, IDENTITY, ffi.cast('void*', identity), 3) - assert ret == 0 - - option_len = ffi.new('size_t*', 3) - option = ffi.new('char*') - ret = C.zmq_getsockopt(socket, - IDENTITY, - ffi.cast('void*', option), - option_len) - - assert ret == 0 - assert ffi.string(ffi.cast('char*', option))[0] == "z" - assert ffi.string(ffi.cast('char*', option))[1] == "m" - assert ffi.string(ffi.cast('char*', option))[2] == "q" - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_bind(self): - ctx = C.zmq_ctx_new() - socket = C.zmq_socket(ctx, 8) - - assert 0 == C.zmq_bind(socket, 'tcp://*:4444') - assert ctx != ffi.NULL - assert ffi.NULL != socket - assert 0 == C.zmq_close(socket) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_bind_connect(self): - ctx = C.zmq_ctx_new() - - socket1 = C.zmq_socket(ctx, PUSH) - socket2 = C.zmq_socket(ctx, PULL) - - assert 0 == C.zmq_bind(socket1, 'tcp://*:4444') - assert 0 == C.zmq_connect(socket2, 'tcp://127.0.0.1:4444') - assert ctx != ffi.NULL - assert ffi.NULL != socket1 - assert ffi.NULL != socket2 - assert 0 == C.zmq_close(socket1) - assert 0 == C.zmq_close(socket2) - assert 0 == C.zmq_ctx_destroy(ctx) - - def test_zmq_msg_init_close(self): - zmq_msg = ffi.new('zmq_msg_t*') - - assert ffi.NULL != zmq_msg - assert 0 == C.zmq_msg_init(zmq_msg) - assert 0 == C.zmq_msg_close(zmq_msg) - - def test_zmq_msg_init_size(self): - zmq_msg = ffi.new('zmq_msg_t*') - - assert ffi.NULL != zmq_msg - assert 0 == C.zmq_msg_init_size(zmq_msg, 10) - assert 0 == C.zmq_msg_close(zmq_msg) - - def test_zmq_msg_init_data(self): - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - assert 0 == C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - 5, - ffi.NULL, - ffi.NULL) - - assert ffi.NULL != zmq_msg - assert 0 == C.zmq_msg_close(zmq_msg) - - def test_zmq_msg_data(self): - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[]', 'Hello') - assert 0 == C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - 5, - ffi.NULL, - ffi.NULL) - - data = C.zmq_msg_data(zmq_msg) - - assert ffi.NULL != zmq_msg - assert ffi.string(ffi.cast("char*", data)) == 'Hello' - assert 0 == C.zmq_msg_close(zmq_msg) - - - def test_zmq_send(self): - ctx = C.zmq_ctx_new() - - sender = C.zmq_socket(ctx, REQ) - receiver = C.zmq_socket(ctx, REP) - - assert 0 == C.zmq_bind(receiver, 'tcp://*:7777') - assert 0 == C.zmq_connect(sender, 'tcp://127.0.0.1:7777') - - time.sleep(0.1) - - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - ffi.cast('size_t', 5), - ffi.NULL, - ffi.NULL) - - assert 5 == C.zmq_msg_send(zmq_msg, sender, 0) - assert 0 == C.zmq_msg_close(zmq_msg) - assert C.zmq_close(sender) == 0 - assert C.zmq_close(receiver) == 0 - assert C.zmq_ctx_destroy(ctx) == 0 - - def test_zmq_recv(self): - ctx = C.zmq_ctx_new() - - sender = C.zmq_socket(ctx, REQ) - receiver = C.zmq_socket(ctx, REP) - - assert 0 == C.zmq_bind(receiver, 'tcp://*:2222') - assert 0 == C.zmq_connect(sender, 'tcp://127.0.0.1:2222') - - time.sleep(0.1) - - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - ffi.cast('size_t', 5), - ffi.NULL, - ffi.NULL) - - zmq_msg2 = ffi.new('zmq_msg_t*') - C.zmq_msg_init(zmq_msg2) - - assert 5 == C.zmq_msg_send(zmq_msg, sender, 0) - assert 5 == C.zmq_msg_recv(zmq_msg2, receiver, 0) - assert 5 == C.zmq_msg_size(zmq_msg2) - assert b"Hello" == ffi.buffer(C.zmq_msg_data(zmq_msg2), - C.zmq_msg_size(zmq_msg2))[:] - assert C.zmq_close(sender) == 0 - assert C.zmq_close(receiver) == 0 - assert C.zmq_ctx_destroy(ctx) == 0 - - def test_zmq_poll(self): - ctx = C.zmq_ctx_new() - - sender = C.zmq_socket(ctx, REQ) - receiver = C.zmq_socket(ctx, REP) - - r1 = C.zmq_bind(receiver, 'tcp://*:3333') - r2 = C.zmq_connect(sender, 'tcp://127.0.0.1:3333') - - zmq_msg = ffi.new('zmq_msg_t*') - message = ffi.new('char[5]', 'Hello') - - C.zmq_msg_init_data(zmq_msg, - ffi.cast('void*', message), - ffi.cast('size_t', 5), - ffi.NULL, - ffi.NULL) - - receiver_pollitem = ffi.new('zmq_pollitem_t*') - receiver_pollitem.socket = receiver - receiver_pollitem.fd = 0 - receiver_pollitem.events = POLLIN | POLLOUT - receiver_pollitem.revents = 0 - - ret = C.zmq_poll(ffi.NULL, 0, 0) - assert ret == 0 - - ret = C.zmq_poll(receiver_pollitem, 1, 0) - assert ret == 0 - - ret = C.zmq_msg_send(zmq_msg, sender, 0) - print(ffi.string(C.zmq_strerror(C.zmq_errno()))) - assert ret == 5 - - time.sleep(0.2) - - ret = C.zmq_poll(receiver_pollitem, 1, 0) - assert ret == 1 - - assert int(receiver_pollitem.revents) & POLLIN - assert not int(receiver_pollitem.revents) & POLLOUT - - zmq_msg2 = ffi.new('zmq_msg_t*') - C.zmq_msg_init(zmq_msg2) - - ret_recv = C.zmq_msg_recv(zmq_msg2, receiver, 0) - assert ret_recv == 5 - - assert 5 == C.zmq_msg_size(zmq_msg2) - assert b"Hello" == ffi.buffer(C.zmq_msg_data(zmq_msg2), - C.zmq_msg_size(zmq_msg2))[:] - - sender_pollitem = ffi.new('zmq_pollitem_t*') - sender_pollitem.socket = sender - sender_pollitem.fd = 0 - sender_pollitem.events = POLLIN | POLLOUT - sender_pollitem.revents = 0 - - ret = C.zmq_poll(sender_pollitem, 1, 0) - assert ret == 0 - - zmq_msg_again = ffi.new('zmq_msg_t*') - message_again = ffi.new('char[11]', 'Hello Again') - - C.zmq_msg_init_data(zmq_msg_again, - ffi.cast('void*', message_again), - ffi.cast('size_t', 11), - ffi.NULL, - ffi.NULL) - - assert 11 == C.zmq_msg_send(zmq_msg_again, receiver, 0) - - time.sleep(0.2) - - assert 0 <= C.zmq_poll(sender_pollitem, 1, 0) - assert int(sender_pollitem.revents) & POLLIN - assert 11 == C.zmq_msg_recv(zmq_msg2, sender, 0) - assert 11 == C.zmq_msg_size(zmq_msg2) - assert b"Hello Again" == ffi.buffer(C.zmq_msg_data(zmq_msg2), - int(C.zmq_msg_size(zmq_msg2)))[:] - assert 0 == C.zmq_close(sender) - assert 0 == C.zmq_close(receiver) - assert 0 == C.zmq_ctx_destroy(ctx) - assert 0 == C.zmq_msg_close(zmq_msg) - assert 0 == C.zmq_msg_close(zmq_msg2) - assert 0 == C.zmq_msg_close(zmq_msg_again) - - def test_zmq_stopwatch_functions(self): - stopwatch = C.zmq_stopwatch_start() - ret = C.zmq_stopwatch_stop(stopwatch) - - assert ffi.NULL != stopwatch - assert 0 < int(ret) - - def test_zmq_sleep(self): - try: - C.zmq_sleep(1) - except Exception as e: - raise AssertionError("Error executing zmq_sleep(int)") - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_constants.py deleted file mode 100644 index d32b2b48..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_constants.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import json -from unittest import TestCase - -import zmq - -from zmq.utils import constant_names -from zmq.sugar import constants as sugar_constants -from zmq.backend import constants as backend_constants - -all_set = set(constant_names.all_names) - -class TestConstants(TestCase): - - def _duplicate_test(self, namelist, listname): - """test that a given list has no duplicates""" - dupes = {} - for name in set(namelist): - cnt = namelist.count(name) - if cnt > 1: - dupes[name] = cnt - if dupes: - self.fail("The following names occur more than once in %s: %s" % (listname, json.dumps(dupes, indent=2))) - - def test_duplicate_all(self): - return self._duplicate_test(constant_names.all_names, "all_names") - - def _change_key(self, change, version): - """return changed-in key""" - return "%s-in %d.%d.%d" % tuple([change] + list(version)) - - def test_duplicate_changed(self): - all_changed = [] - for change in ("new", "removed"): - d = getattr(constant_names, change + "_in") - for version, namelist in d.items(): - all_changed.extend(namelist) - self._duplicate_test(namelist, self._change_key(change, version)) - - self._duplicate_test(all_changed, "all-changed") - - def test_changed_in_all(self): - missing = {} - for change in ("new", "removed"): - d = getattr(constant_names, change + "_in") - for version, namelist in d.items(): - key = self._change_key(change, version) - for name in namelist: - if name not in all_set: - if key not in missing: - missing[key] = [] - missing[key].append(name) - - if missing: - self.fail( - "The following names are missing in `all_names`: %s" % json.dumps(missing, indent=2) - ) - - def test_no_negative_constants(self): - for name in sugar_constants.__all__: - self.assertNotEqual(getattr(zmq, name), sugar_constants._UNDEFINED) - - def test_undefined_constants(self): - all_aliases = [] - for alias_group in sugar_constants.aliases: - all_aliases.extend(alias_group) - - for name in all_set.difference(all_aliases): - raw = getattr(backend_constants, name) - if raw == sugar_constants._UNDEFINED: - self.assertRaises(AttributeError, getattr, zmq, name) - else: - self.assertEqual(getattr(zmq, name), raw) - - def test_new(self): - zmq_version = zmq.zmq_version_info() - for version, new_names in constant_names.new_in.items(): - should_have = zmq_version >= version - for name in new_names: - try: - value = getattr(zmq, name) - except AttributeError: - if should_have: - self.fail("AttributeError: zmq.%s" % name) - else: - if not should_have: - self.fail("Shouldn't have: zmq.%s=%s" % (name, value)) - - def test_removed(self): - zmq_version = zmq.zmq_version_info() - for version, new_names in constant_names.removed_in.items(): - should_have = zmq_version < version - for name in new_names: - try: - value = getattr(zmq, name) - except AttributeError: - if should_have: - self.fail("AttributeError: zmq.%s" % name) - else: - if not should_have: - self.fail("Shouldn't have: zmq.%s=%s" % (name, value)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_context.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_context.py deleted file mode 100644 index e3280778..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_context.py +++ /dev/null @@ -1,257 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import gc -import sys -import time -from threading import Thread, Event - -import zmq -from zmq.tests import ( - BaseZMQTestCase, have_gevent, GreenTest, skip_green, PYPY, SkipTest, -) - - -class TestContext(BaseZMQTestCase): - - def test_init(self): - c1 = self.Context() - self.assert_(isinstance(c1, self.Context)) - del c1 - c2 = self.Context() - self.assert_(isinstance(c2, self.Context)) - del c2 - c3 = self.Context() - self.assert_(isinstance(c3, self.Context)) - del c3 - - def test_dir(self): - ctx = self.Context() - self.assertTrue('socket' in dir(ctx)) - if zmq.zmq_version_info() > (3,): - self.assertTrue('IO_THREADS' in dir(ctx)) - ctx.term() - - def test_term(self): - c = self.Context() - c.term() - self.assert_(c.closed) - - def test_context_manager(self): - with self.Context() as c: - pass - self.assert_(c.closed) - - def test_fail_init(self): - self.assertRaisesErrno(zmq.EINVAL, self.Context, -1) - - def test_term_hang(self): - rep,req = self.create_bound_pair(zmq.ROUTER, zmq.DEALER) - req.setsockopt(zmq.LINGER, 0) - req.send(b'hello', copy=False) - req.close() - rep.close() - self.context.term() - - def test_instance(self): - ctx = self.Context.instance() - c2 = self.Context.instance(io_threads=2) - self.assertTrue(c2 is ctx) - c2.term() - c3 = self.Context.instance() - c4 = self.Context.instance() - self.assertFalse(c3 is c2) - self.assertFalse(c3.closed) - self.assertTrue(c3 is c4) - - def test_many_sockets(self): - """opening and closing many sockets shouldn't cause problems""" - ctx = self.Context() - for i in range(16): - sockets = [ ctx.socket(zmq.REP) for i in range(65) ] - [ s.close() for s in sockets ] - # give the reaper a chance - time.sleep(1e-2) - ctx.term() - - def test_sockopts(self): - """setting socket options with ctx attributes""" - ctx = self.Context() - ctx.linger = 5 - self.assertEqual(ctx.linger, 5) - s = ctx.socket(zmq.REQ) - self.assertEqual(s.linger, 5) - self.assertEqual(s.getsockopt(zmq.LINGER), 5) - s.close() - # check that subscribe doesn't get set on sockets that don't subscribe: - ctx.subscribe = b'' - s = ctx.socket(zmq.REQ) - s.close() - - ctx.term() - - - def test_destroy(self): - """Context.destroy should close sockets""" - ctx = self.Context() - sockets = [ ctx.socket(zmq.REP) for i in range(65) ] - - # close half of the sockets - [ s.close() for s in sockets[::2] ] - - ctx.destroy() - # reaper is not instantaneous - time.sleep(1e-2) - for s in sockets: - self.assertTrue(s.closed) - - def test_destroy_linger(self): - """Context.destroy should set linger on closing sockets""" - req,rep = self.create_bound_pair(zmq.REQ, zmq.REP) - req.send(b'hi') - time.sleep(1e-2) - self.context.destroy(linger=0) - # reaper is not instantaneous - time.sleep(1e-2) - for s in (req,rep): - self.assertTrue(s.closed) - - def test_term_noclose(self): - """Context.term won't close sockets""" - ctx = self.Context() - s = ctx.socket(zmq.REQ) - self.assertFalse(s.closed) - t = Thread(target=ctx.term) - t.start() - t.join(timeout=0.1) - self.assertTrue(t.is_alive(), "Context should be waiting") - s.close() - t.join(timeout=0.1) - self.assertFalse(t.is_alive(), "Context should have closed") - - def test_gc(self): - """test close&term by garbage collection alone""" - if PYPY: - raise SkipTest("GC doesn't work ") - - # test credit @dln (GH #137): - def gcf(): - def inner(): - ctx = self.Context() - s = ctx.socket(zmq.PUSH) - inner() - gc.collect() - t = Thread(target=gcf) - t.start() - t.join(timeout=1) - self.assertFalse(t.is_alive(), "Garbage collection should have cleaned up context") - - def test_cyclic_destroy(self): - """ctx.destroy should succeed when cyclic ref prevents gc""" - # test credit @dln (GH #137): - class CyclicReference(object): - def __init__(self, parent=None): - self.parent = parent - - def crash(self, sock): - self.sock = sock - self.child = CyclicReference(self) - - def crash_zmq(): - ctx = self.Context() - sock = ctx.socket(zmq.PULL) - c = CyclicReference() - c.crash(sock) - ctx.destroy() - - crash_zmq() - - def test_term_thread(self): - """ctx.term should not crash active threads (#139)""" - ctx = self.Context() - evt = Event() - evt.clear() - - def block(): - s = ctx.socket(zmq.REP) - s.bind_to_random_port('tcp://127.0.0.1') - evt.set() - try: - s.recv() - except zmq.ZMQError as e: - self.assertEqual(e.errno, zmq.ETERM) - return - finally: - s.close() - self.fail("recv should have been interrupted with ETERM") - t = Thread(target=block) - t.start() - - evt.wait(1) - self.assertTrue(evt.is_set(), "sync event never fired") - time.sleep(0.01) - ctx.term() - t.join(timeout=1) - self.assertFalse(t.is_alive(), "term should have interrupted s.recv()") - - def test_destroy_no_sockets(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - s.bind_to_random_port('tcp://127.0.0.1') - s.close() - ctx.destroy() - assert s.closed - assert ctx.closed - - def test_ctx_opts(self): - if zmq.zmq_version_info() < (3,): - raise SkipTest("context options require libzmq 3") - ctx = self.Context() - ctx.set(zmq.MAX_SOCKETS, 2) - self.assertEqual(ctx.get(zmq.MAX_SOCKETS), 2) - ctx.max_sockets = 100 - self.assertEqual(ctx.max_sockets, 100) - self.assertEqual(ctx.get(zmq.MAX_SOCKETS), 100) - - def test_shadow(self): - ctx = self.Context() - ctx2 = self.Context.shadow(ctx.underlying) - self.assertEqual(ctx.underlying, ctx2.underlying) - s = ctx.socket(zmq.PUB) - s.close() - del ctx2 - self.assertFalse(ctx.closed) - s = ctx.socket(zmq.PUB) - ctx2 = self.Context.shadow(ctx.underlying) - s2 = ctx2.socket(zmq.PUB) - s.close() - s2.close() - ctx.term() - self.assertRaisesErrno(zmq.EFAULT, ctx2.socket, zmq.PUB) - del ctx2 - - def test_shadow_pyczmq(self): - try: - from pyczmq import zctx, zsocket, zstr - except Exception: - raise SkipTest("Requires pyczmq") - - ctx = zctx.new() - a = zsocket.new(ctx, zmq.PUSH) - zsocket.bind(a, "inproc://a") - ctx2 = self.Context.shadow_pyczmq(ctx) - b = ctx2.socket(zmq.PULL) - b.connect("inproc://a") - zstr.send(a, b'hi') - rcvd = self.recv(b) - self.assertEqual(rcvd, b'hi') - b.close() - - -if False: # disable green context tests - class TestContextGreen(GreenTest, TestContext): - """gevent subclass of context tests""" - # skip tests that use real threads: - test_gc = GreenTest.skip_green - test_term_thread = GreenTest.skip_green - test_destroy_linger = GreenTest.skip_green diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_device.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_device.py deleted file mode 100644 index f8305074..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_device.py +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time - -import zmq -from zmq import devices -from zmq.tests import BaseZMQTestCase, SkipTest, have_gevent, GreenTest, PYPY -from zmq.utils.strtypes import (bytes,unicode,basestring) - -if PYPY: - # cleanup of shared Context doesn't work on PyPy - devices.Device.context_factory = zmq.Context - -class TestDevice(BaseZMQTestCase): - - def test_device_types(self): - for devtype in (zmq.STREAMER, zmq.FORWARDER, zmq.QUEUE): - dev = devices.Device(devtype, zmq.PAIR, zmq.PAIR) - self.assertEqual(dev.device_type, devtype) - del dev - - def test_device_attributes(self): - dev = devices.Device(zmq.QUEUE, zmq.SUB, zmq.PUB) - self.assertEqual(dev.in_type, zmq.SUB) - self.assertEqual(dev.out_type, zmq.PUB) - self.assertEqual(dev.device_type, zmq.QUEUE) - self.assertEqual(dev.daemon, True) - del dev - - def test_tsdevice_attributes(self): - dev = devices.Device(zmq.QUEUE, zmq.SUB, zmq.PUB) - self.assertEqual(dev.in_type, zmq.SUB) - self.assertEqual(dev.out_type, zmq.PUB) - self.assertEqual(dev.device_type, zmq.QUEUE) - self.assertEqual(dev.daemon, True) - del dev - - - def test_single_socket_forwarder_connect(self): - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - req = self.context.socket(zmq.REQ) - port = req.bind_to_random_port('tcp://127.0.0.1') - dev.connect_in('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - req = self.context.socket(zmq.REQ) - port = req.bind_to_random_port('tcp://127.0.0.1') - dev.connect_out('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello again' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - - def test_single_socket_forwarder_bind(self): - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - # select random port: - binder = self.context.socket(zmq.REQ) - port = binder.bind_to_random_port('tcp://127.0.0.1') - binder.close() - time.sleep(0.1) - req = self.context.socket(zmq.REQ) - req.connect('tcp://127.0.0.1:%i'%port) - dev.bind_in('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - dev = devices.ThreadDevice(zmq.QUEUE, zmq.REP, -1) - # select random port: - binder = self.context.socket(zmq.REQ) - port = binder.bind_to_random_port('tcp://127.0.0.1') - binder.close() - time.sleep(0.1) - req = self.context.socket(zmq.REQ) - req.connect('tcp://127.0.0.1:%i'%port) - dev.bind_in('tcp://127.0.0.1:%i'%port) - dev.start() - time.sleep(.25) - msg = b'hello again' - req.send(msg) - self.assertEqual(msg, self.recv(req)) - del dev - req.close() - - def test_proxy(self): - if zmq.zmq_version_info() < (3,2): - raise SkipTest("Proxies only in libzmq >= 3") - dev = devices.ThreadProxy(zmq.PULL, zmq.PUSH, zmq.PUSH) - binder = self.context.socket(zmq.REQ) - iface = 'tcp://127.0.0.1' - port = binder.bind_to_random_port(iface) - port2 = binder.bind_to_random_port(iface) - port3 = binder.bind_to_random_port(iface) - binder.close() - time.sleep(0.1) - dev.bind_in("%s:%i" % (iface, port)) - dev.bind_out("%s:%i" % (iface, port2)) - dev.bind_mon("%s:%i" % (iface, port3)) - dev.start() - time.sleep(0.25) - msg = b'hello' - push = self.context.socket(zmq.PUSH) - push.connect("%s:%i" % (iface, port)) - pull = self.context.socket(zmq.PULL) - pull.connect("%s:%i" % (iface, port2)) - mon = self.context.socket(zmq.PULL) - mon.connect("%s:%i" % (iface, port3)) - push.send(msg) - self.sockets.extend([push, pull, mon]) - self.assertEqual(msg, self.recv(pull)) - self.assertEqual(msg, self.recv(mon)) - -if have_gevent: - import gevent - import zmq.green - - class TestDeviceGreen(GreenTest, BaseZMQTestCase): - - def test_green_device(self): - rep = self.context.socket(zmq.REP) - req = self.context.socket(zmq.REQ) - self.sockets.extend([req, rep]) - port = rep.bind_to_random_port('tcp://127.0.0.1') - g = gevent.spawn(zmq.green.device, zmq.QUEUE, rep, rep) - req.connect('tcp://127.0.0.1:%i' % port) - req.send(b'hi') - timeout = gevent.Timeout(3) - timeout.start() - receiver = gevent.spawn(req.recv) - self.assertEqual(receiver.get(2), b'hi') - timeout.cancel() - g.kill(block=True) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_error.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_error.py deleted file mode 100644 index a2eee14a..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_error.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys -import time - -import zmq -from zmq import ZMQError, strerror, Again, ContextTerminated -from zmq.tests import BaseZMQTestCase - -if sys.version_info[0] >= 3: - long = int - -class TestZMQError(BaseZMQTestCase): - - def test_strerror(self): - """test that strerror gets the right type.""" - for i in range(10): - e = strerror(i) - self.assertTrue(isinstance(e, str)) - - def test_zmqerror(self): - for errno in range(10): - e = ZMQError(errno) - self.assertEqual(e.errno, errno) - self.assertEqual(str(e), strerror(errno)) - - def test_again(self): - s = self.context.socket(zmq.REP) - self.assertRaises(Again, s.recv, zmq.NOBLOCK) - self.assertRaisesErrno(zmq.EAGAIN, s.recv, zmq.NOBLOCK) - s.close() - - def atest_ctxterm(self): - s = self.context.socket(zmq.REP) - t = Thread(target=self.context.term) - t.start() - self.assertRaises(ContextTerminated, s.recv, zmq.NOBLOCK) - self.assertRaisesErrno(zmq.TERM, s.recv, zmq.NOBLOCK) - s.close() - t.join() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_etc.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_etc.py deleted file mode 100644 index ad224064..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_etc.py +++ /dev/null @@ -1,15 +0,0 @@ -# Copyright (c) PyZMQ Developers. -# Distributed under the terms of the Modified BSD License. - -import sys - -import zmq - -from . import skip_if - -@skip_if(zmq.zmq_version_info() < (4,1), "libzmq < 4.1") -def test_has(): - assert not zmq.has('something weird') - has_ipc = zmq.has('ipc') - not_windows = not sys.platform.startswith('win') - assert has_ipc == not_windows diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_imports.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_imports.py deleted file mode 100644 index c0ddfaac..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_imports.py +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys -from unittest import TestCase - -class TestImports(TestCase): - """Test Imports - the quickest test to ensure that we haven't - introduced version-incompatible syntax errors.""" - - def test_toplevel(self): - """test toplevel import""" - import zmq - - def test_core(self): - """test core imports""" - from zmq import Context - from zmq import Socket - from zmq import Poller - from zmq import Frame - from zmq import constants - from zmq import device, proxy - from zmq import Stopwatch - from zmq import ( - zmq_version, - zmq_version_info, - pyzmq_version, - pyzmq_version_info, - ) - - def test_devices(self): - """test device imports""" - import zmq.devices - from zmq.devices import basedevice - from zmq.devices import monitoredqueue - from zmq.devices import monitoredqueuedevice - - def test_log(self): - """test log imports""" - import zmq.log - from zmq.log import handlers - - def test_eventloop(self): - """test eventloop imports""" - import zmq.eventloop - from zmq.eventloop import ioloop - from zmq.eventloop import zmqstream - from zmq.eventloop.minitornado.platform import auto - from zmq.eventloop.minitornado import ioloop - - def test_utils(self): - """test util imports""" - import zmq.utils - from zmq.utils import strtypes - from zmq.utils import jsonapi - - def test_ssh(self): - """test ssh imports""" - from zmq.ssh import tunnel - - - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_ioloop.py deleted file mode 100644 index 2a8b1153..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_ioloop.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time -import os -import threading - -import zmq -from zmq.tests import BaseZMQTestCase -from zmq.eventloop import ioloop -from zmq.eventloop.minitornado.ioloop import _Timeout -try: - from tornado.ioloop import PollIOLoop, IOLoop as BaseIOLoop -except ImportError: - from zmq.eventloop.minitornado.ioloop import IOLoop as BaseIOLoop - - -def printer(): - os.system("say hello") - raise Exception - print (time.time()) - - -class Delay(threading.Thread): - def __init__(self, f, delay=1): - self.f=f - self.delay=delay - self.aborted=False - self.cond=threading.Condition() - super(Delay, self).__init__() - - def run(self): - self.cond.acquire() - self.cond.wait(self.delay) - self.cond.release() - if not self.aborted: - self.f() - - def abort(self): - self.aborted=True - self.cond.acquire() - self.cond.notify() - self.cond.release() - - -class TestIOLoop(BaseZMQTestCase): - - def test_simple(self): - """simple IOLoop creation test""" - loop = ioloop.IOLoop() - dc = ioloop.PeriodicCallback(loop.stop, 200, loop) - pc = ioloop.PeriodicCallback(lambda : None, 10, loop) - pc.start() - dc.start() - t = Delay(loop.stop,1) - t.start() - loop.start() - if t.isAlive(): - t.abort() - else: - self.fail("IOLoop failed to exit") - - def test_timeout_compare(self): - """test timeout comparisons""" - loop = ioloop.IOLoop() - t = _Timeout(1, 2, loop) - t2 = _Timeout(1, 3, loop) - self.assertEqual(t < t2, id(t) < id(t2)) - t2 = _Timeout(2,1, loop) - self.assertTrue(t < t2) - - def test_poller_events(self): - """Tornado poller implementation maps events correctly""" - req,rep = self.create_bound_pair(zmq.REQ, zmq.REP) - poller = ioloop.ZMQPoller() - poller.register(req, ioloop.IOLoop.READ) - poller.register(rep, ioloop.IOLoop.READ) - events = dict(poller.poll(0)) - self.assertEqual(events.get(rep), None) - self.assertEqual(events.get(req), None) - - poller.register(req, ioloop.IOLoop.WRITE) - poller.register(rep, ioloop.IOLoop.WRITE) - events = dict(poller.poll(1)) - self.assertEqual(events.get(req), ioloop.IOLoop.WRITE) - self.assertEqual(events.get(rep), None) - - poller.register(rep, ioloop.IOLoop.READ) - req.send(b'hi') - events = dict(poller.poll(1)) - self.assertEqual(events.get(rep), ioloop.IOLoop.READ) - self.assertEqual(events.get(req), None) - - def test_instance(self): - """Test IOLoop.instance returns the right object""" - loop = ioloop.IOLoop.instance() - self.assertEqual(loop.__class__, ioloop.IOLoop) - loop = BaseIOLoop.instance() - self.assertEqual(loop.__class__, ioloop.IOLoop) - - def test_close_all(self): - """Test close(all_fds=True)""" - loop = ioloop.IOLoop.instance() - req,rep = self.create_bound_pair(zmq.REQ, zmq.REP) - loop.add_handler(req, lambda msg: msg, ioloop.IOLoop.READ) - loop.add_handler(rep, lambda msg: msg, ioloop.IOLoop.READ) - self.assertEqual(req.closed, False) - self.assertEqual(rep.closed, False) - loop.close(all_fds=True) - self.assertEqual(req.closed, True) - self.assertEqual(rep.closed, True) - - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_log.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_log.py deleted file mode 100644 index 9206f095..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_log.py +++ /dev/null @@ -1,116 +0,0 @@ -# encoding: utf-8 - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import logging -import time -from unittest import TestCase - -import zmq -from zmq.log import handlers -from zmq.utils.strtypes import b, u -from zmq.tests import BaseZMQTestCase - - -class TestPubLog(BaseZMQTestCase): - - iface = 'inproc://zmqlog' - topic= 'zmq' - - @property - def logger(self): - # print dir(self) - logger = logging.getLogger('zmqtest') - logger.setLevel(logging.DEBUG) - return logger - - def connect_handler(self, topic=None): - topic = self.topic if topic is None else topic - logger = self.logger - pub,sub = self.create_bound_pair(zmq.PUB, zmq.SUB) - handler = handlers.PUBHandler(pub) - handler.setLevel(logging.DEBUG) - handler.root_topic = topic - logger.addHandler(handler) - sub.setsockopt(zmq.SUBSCRIBE, b(topic)) - time.sleep(0.1) - return logger, handler, sub - - def test_init_iface(self): - logger = self.logger - ctx = self.context - handler = handlers.PUBHandler(self.iface) - self.assertFalse(handler.ctx is ctx) - self.sockets.append(handler.socket) - # handler.ctx.term() - handler = handlers.PUBHandler(self.iface, self.context) - self.sockets.append(handler.socket) - self.assertTrue(handler.ctx is ctx) - handler.setLevel(logging.DEBUG) - handler.root_topic = self.topic - logger.addHandler(handler) - sub = ctx.socket(zmq.SUB) - self.sockets.append(sub) - sub.setsockopt(zmq.SUBSCRIBE, b(self.topic)) - sub.connect(self.iface) - import time; time.sleep(0.25) - msg1 = 'message' - logger.info(msg1) - - (topic, msg2) = sub.recv_multipart() - self.assertEqual(topic, b'zmq.INFO') - self.assertEqual(msg2, b(msg1)+b'\n') - logger.removeHandler(handler) - - def test_init_socket(self): - pub,sub = self.create_bound_pair(zmq.PUB, zmq.SUB) - logger = self.logger - handler = handlers.PUBHandler(pub) - handler.setLevel(logging.DEBUG) - handler.root_topic = self.topic - logger.addHandler(handler) - - self.assertTrue(handler.socket is pub) - self.assertTrue(handler.ctx is pub.context) - self.assertTrue(handler.ctx is self.context) - sub.setsockopt(zmq.SUBSCRIBE, b(self.topic)) - import time; time.sleep(0.1) - msg1 = 'message' - logger.info(msg1) - - (topic, msg2) = sub.recv_multipart() - self.assertEqual(topic, b'zmq.INFO') - self.assertEqual(msg2, b(msg1)+b'\n') - logger.removeHandler(handler) - - def test_root_topic(self): - logger, handler, sub = self.connect_handler() - handler.socket.bind(self.iface) - sub2 = sub.context.socket(zmq.SUB) - self.sockets.append(sub2) - sub2.connect(self.iface) - sub2.setsockopt(zmq.SUBSCRIBE, b'') - handler.root_topic = b'twoonly' - msg1 = 'ignored' - logger.info(msg1) - self.assertRaisesErrno(zmq.EAGAIN, sub.recv, zmq.NOBLOCK) - topic,msg2 = sub2.recv_multipart() - self.assertEqual(topic, b'twoonly.INFO') - self.assertEqual(msg2, b(msg1)+b'\n') - - logger.removeHandler(handler) - - def test_unicode_message(self): - logger, handler, sub = self.connect_handler() - base_topic = b(self.topic + '.INFO') - for msg, expected in [ - (u('hello'), [base_topic, b('hello\n')]), - (u('héllo'), [base_topic, b('héllo\n')]), - (u('tøpic::héllo'), [base_topic + b('.tøpic'), b('héllo\n')]), - ]: - logger.info(msg) - received = sub.recv_multipart() - self.assertEqual(received, expected) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_message.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_message.py deleted file mode 100644 index d8770bdf..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_message.py +++ /dev/null @@ -1,362 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import copy -import sys -try: - from sys import getrefcount as grc -except ImportError: - grc = None - -import time -from pprint import pprint -from unittest import TestCase - -import zmq -from zmq.tests import BaseZMQTestCase, SkipTest, skip_pypy, PYPY -from zmq.utils.strtypes import unicode, bytes, b, u - - -# some useful constants: - -x = b'x' - -try: - view = memoryview -except NameError: - view = buffer - -if grc: - rc0 = grc(x) - v = view(x) - view_rc = grc(x) - rc0 - -def await_gc(obj, rc): - """wait for refcount on an object to drop to an expected value - - Necessary because of the zero-copy gc thread, - which can take some time to receive its DECREF message. - """ - for i in range(50): - # rc + 2 because of the refs in this function - if grc(obj) <= rc + 2: - return - time.sleep(0.05) - -class TestFrame(BaseZMQTestCase): - - @skip_pypy - def test_above_30(self): - """Message above 30 bytes are never copied by 0MQ.""" - for i in range(5, 16): # 32, 64,..., 65536 - s = (2**i)*x - self.assertEqual(grc(s), 2) - m = zmq.Frame(s) - self.assertEqual(grc(s), 4) - del m - await_gc(s, 2) - self.assertEqual(grc(s), 2) - del s - - def test_str(self): - """Test the str representations of the Frames.""" - for i in range(16): - s = (2**i)*x - m = zmq.Frame(s) - m_str = str(m) - m_str_b = b(m_str) # py3compat - self.assertEqual(s, m_str_b) - - def test_bytes(self): - """Test the Frame.bytes property.""" - for i in range(1,16): - s = (2**i)*x - m = zmq.Frame(s) - b = m.bytes - self.assertEqual(s, m.bytes) - if not PYPY: - # check that it copies - self.assert_(b is not s) - # check that it copies only once - self.assert_(b is m.bytes) - - def test_unicode(self): - """Test the unicode representations of the Frames.""" - s = u('asdf') - self.assertRaises(TypeError, zmq.Frame, s) - for i in range(16): - s = (2**i)*u('§') - m = zmq.Frame(s.encode('utf8')) - self.assertEqual(s, unicode(m.bytes,'utf8')) - - def test_len(self): - """Test the len of the Frames.""" - for i in range(16): - s = (2**i)*x - m = zmq.Frame(s) - self.assertEqual(len(s), len(m)) - - @skip_pypy - def test_lifecycle1(self): - """Run through a ref counting cycle with a copy.""" - for i in range(5, 16): # 32, 64,..., 65536 - s = (2**i)*x - rc = 2 - self.assertEqual(grc(s), rc) - m = zmq.Frame(s) - rc += 2 - self.assertEqual(grc(s), rc) - m2 = copy.copy(m) - rc += 1 - self.assertEqual(grc(s), rc) - buf = m2.buffer - - rc += view_rc - self.assertEqual(grc(s), rc) - - self.assertEqual(s, b(str(m))) - self.assertEqual(s, bytes(m2)) - self.assertEqual(s, m.bytes) - # self.assert_(s is str(m)) - # self.assert_(s is str(m2)) - del m2 - rc -= 1 - self.assertEqual(grc(s), rc) - rc -= view_rc - del buf - self.assertEqual(grc(s), rc) - del m - rc -= 2 - await_gc(s, rc) - self.assertEqual(grc(s), rc) - self.assertEqual(rc, 2) - del s - - @skip_pypy - def test_lifecycle2(self): - """Run through a different ref counting cycle with a copy.""" - for i in range(5, 16): # 32, 64,..., 65536 - s = (2**i)*x - rc = 2 - self.assertEqual(grc(s), rc) - m = zmq.Frame(s) - rc += 2 - self.assertEqual(grc(s), rc) - m2 = copy.copy(m) - rc += 1 - self.assertEqual(grc(s), rc) - buf = m.buffer - rc += view_rc - self.assertEqual(grc(s), rc) - self.assertEqual(s, b(str(m))) - self.assertEqual(s, bytes(m2)) - self.assertEqual(s, m2.bytes) - self.assertEqual(s, m.bytes) - # self.assert_(s is str(m)) - # self.assert_(s is str(m2)) - del buf - self.assertEqual(grc(s), rc) - del m - # m.buffer is kept until m is del'd - rc -= view_rc - rc -= 1 - self.assertEqual(grc(s), rc) - del m2 - rc -= 2 - await_gc(s, rc) - self.assertEqual(grc(s), rc) - self.assertEqual(rc, 2) - del s - - @skip_pypy - def test_tracker(self): - m = zmq.Frame(b'asdf', track=True) - self.assertFalse(m.tracker.done) - pm = zmq.MessageTracker(m) - self.assertFalse(pm.done) - del m - for i in range(10): - if pm.done: - break - time.sleep(0.1) - self.assertTrue(pm.done) - - def test_no_tracker(self): - m = zmq.Frame(b'asdf', track=False) - self.assertEqual(m.tracker, None) - m2 = copy.copy(m) - self.assertEqual(m2.tracker, None) - self.assertRaises(ValueError, zmq.MessageTracker, m) - - @skip_pypy - def test_multi_tracker(self): - m = zmq.Frame(b'asdf', track=True) - m2 = zmq.Frame(b'whoda', track=True) - mt = zmq.MessageTracker(m,m2) - self.assertFalse(m.tracker.done) - self.assertFalse(mt.done) - self.assertRaises(zmq.NotDone, mt.wait, 0.1) - del m - time.sleep(0.1) - self.assertRaises(zmq.NotDone, mt.wait, 0.1) - self.assertFalse(mt.done) - del m2 - self.assertTrue(mt.wait() is None) - self.assertTrue(mt.done) - - - def test_buffer_in(self): - """test using a buffer as input""" - ins = b("§§¶•ªº˜µ¬˚…∆˙åß∂©œ∑´†≈ç√") - m = zmq.Frame(view(ins)) - - def test_bad_buffer_in(self): - """test using a bad object""" - self.assertRaises(TypeError, zmq.Frame, 5) - self.assertRaises(TypeError, zmq.Frame, object()) - - def test_buffer_out(self): - """receiving buffered output""" - ins = b("§§¶•ªº˜µ¬˚…∆˙åß∂©œ∑´†≈ç√") - m = zmq.Frame(ins) - outb = m.buffer - self.assertTrue(isinstance(outb, view)) - self.assert_(outb is m.buffer) - self.assert_(m.buffer is m.buffer) - - def test_multisend(self): - """ensure that a message remains intact after multiple sends""" - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - s = b"message" - m = zmq.Frame(s) - self.assertEqual(s, m.bytes) - - a.send(m, copy=False) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - a.send(m, copy=False) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - a.send(m, copy=True) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - a.send(m, copy=True) - time.sleep(0.1) - self.assertEqual(s, m.bytes) - for i in range(4): - r = b.recv() - self.assertEqual(s,r) - self.assertEqual(s, m.bytes) - - def test_buffer_numpy(self): - """test non-copying numpy array messages""" - try: - import numpy - except ImportError: - raise SkipTest("numpy required") - rand = numpy.random.randint - shapes = [ rand(2,16) for i in range(5) ] - for i in range(1,len(shapes)+1): - shape = shapes[:i] - A = numpy.random.random(shape) - m = zmq.Frame(A) - if view.__name__ == 'buffer': - self.assertEqual(A.data, m.buffer) - B = numpy.frombuffer(m.buffer,dtype=A.dtype).reshape(A.shape) - else: - self.assertEqual(memoryview(A), m.buffer) - B = numpy.array(m.buffer,dtype=A.dtype).reshape(A.shape) - self.assertEqual((A==B).all(), True) - - def test_memoryview(self): - """test messages from memoryview""" - major,minor = sys.version_info[:2] - if not (major >= 3 or (major == 2 and minor >= 7)): - raise SkipTest("memoryviews only in python >= 2.7") - - s = b'carrotjuice' - v = memoryview(s) - m = zmq.Frame(s) - buf = m.buffer - s2 = buf.tobytes() - self.assertEqual(s2,s) - self.assertEqual(m.bytes,s) - - def test_noncopying_recv(self): - """check for clobbering message buffers""" - null = b'\0'*64 - sa,sb = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - for i in range(32): - # try a few times - sb.send(null, copy=False) - m = sa.recv(copy=False) - mb = m.bytes - # buf = view(m) - buf = m.buffer - del m - for i in range(5): - ff=b'\xff'*(40 + i*10) - sb.send(ff, copy=False) - m2 = sa.recv(copy=False) - if view.__name__ == 'buffer': - b = bytes(buf) - else: - b = buf.tobytes() - self.assertEqual(b, null) - self.assertEqual(mb, null) - self.assertEqual(m2.bytes, ff) - - @skip_pypy - def test_buffer_numpy(self): - """test non-copying numpy array messages""" - try: - import numpy - except ImportError: - raise SkipTest("requires numpy") - if sys.version_info < (2,7): - raise SkipTest("requires new-style buffer interface (py >= 2.7)") - rand = numpy.random.randint - shapes = [ rand(2,5) for i in range(5) ] - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - dtypes = [int, float, '>i4', 'B'] - for i in range(1,len(shapes)+1): - shape = shapes[:i] - for dt in dtypes: - A = numpy.empty(shape, dtype=dt) - while numpy.isnan(A).any(): - # don't let nan sneak in - A = numpy.ndarray(shape, dtype=dt) - a.send(A, copy=False) - msg = b.recv(copy=False) - - B = numpy.frombuffer(msg, A.dtype).reshape(A.shape) - self.assertEqual(A.shape, B.shape) - self.assertTrue((A==B).all()) - A = numpy.empty(shape, dtype=[('a', int), ('b', float), ('c', 'a32')]) - A['a'] = 1024 - A['b'] = 1e9 - A['c'] = 'hello there' - a.send(A, copy=False) - msg = b.recv(copy=False) - - B = numpy.frombuffer(msg, A.dtype).reshape(A.shape) - self.assertEqual(A.shape, B.shape) - self.assertTrue((A==B).all()) - - def test_frame_more(self): - """test Frame.more attribute""" - frame = zmq.Frame(b"hello") - self.assertFalse(frame.more) - sa,sb = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - sa.send_multipart([b'hi', b'there']) - frame = self.recv(sb, copy=False) - self.assertTrue(frame.more) - if zmq.zmq_version_info()[0] >= 3 and not PYPY: - self.assertTrue(frame.get(zmq.MORE)) - frame = self.recv(sb, copy=False) - self.assertFalse(frame.more) - if zmq.zmq_version_info()[0] >= 3 and not PYPY: - self.assertFalse(frame.get(zmq.MORE)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monitor.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monitor.py deleted file mode 100644 index 4f035388..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monitor.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import sys -import time -import struct - -from unittest import TestCase - -import zmq -from zmq.tests import BaseZMQTestCase, skip_if, skip_pypy -from zmq.utils.monitor import recv_monitor_message - -skip_lt_4 = skip_if(zmq.zmq_version_info() < (4,), "requires zmq >= 4") - -class TestSocketMonitor(BaseZMQTestCase): - - @skip_lt_4 - def test_monitor(self): - """Test monitoring interface for sockets.""" - s_rep = self.context.socket(zmq.REP) - s_req = self.context.socket(zmq.REQ) - self.sockets.extend([s_rep, s_req]) - s_req.bind("tcp://127.0.0.1:6666") - # try monitoring the REP socket - - s_rep.monitor("inproc://monitor.rep", zmq.EVENT_ALL) - # create listening socket for monitor - s_event = self.context.socket(zmq.PAIR) - self.sockets.append(s_event) - s_event.connect("inproc://monitor.rep") - s_event.linger = 0 - # test receive event for connect event - s_rep.connect("tcp://127.0.0.1:6666") - m = recv_monitor_message(s_event) - if m['event'] == zmq.EVENT_CONNECT_DELAYED: - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6666") - # test receive event for connected event - m = recv_monitor_message(s_event) - self.assertEqual(m['event'], zmq.EVENT_CONNECTED) - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6666") - - # test monitor can be disabled. - s_rep.disable_monitor() - m = recv_monitor_message(s_event) - self.assertEqual(m['event'], zmq.EVENT_MONITOR_STOPPED) - - - @skip_lt_4 - def test_monitor_connected(self): - """Test connected monitoring socket.""" - s_rep = self.context.socket(zmq.REP) - s_req = self.context.socket(zmq.REQ) - self.sockets.extend([s_rep, s_req]) - s_req.bind("tcp://127.0.0.1:6667") - # try monitoring the REP socket - # create listening socket for monitor - s_event = s_rep.get_monitor_socket() - s_event.linger = 0 - self.sockets.append(s_event) - # test receive event for connect event - s_rep.connect("tcp://127.0.0.1:6667") - m = recv_monitor_message(s_event) - if m['event'] == zmq.EVENT_CONNECT_DELAYED: - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6667") - # test receive event for connected event - m = recv_monitor_message(s_event) - self.assertEqual(m['event'], zmq.EVENT_CONNECTED) - self.assertEqual(m['endpoint'], b"tcp://127.0.0.1:6667") diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monqueue.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monqueue.py deleted file mode 100644 index e855602e..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_monqueue.py +++ /dev/null @@ -1,227 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time -from unittest import TestCase - -import zmq -from zmq import devices - -from zmq.tests import BaseZMQTestCase, SkipTest, PYPY -from zmq.utils.strtypes import unicode - - -if PYPY or zmq.zmq_version_info() >= (4,1): - # cleanup of shared Context doesn't work on PyPy - # there also seems to be a bug in cleanup in libzmq-4.1 (zeromq/libzmq#1052) - devices.Device.context_factory = zmq.Context - - -class TestMonitoredQueue(BaseZMQTestCase): - - sockets = [] - - def build_device(self, mon_sub=b"", in_prefix=b'in', out_prefix=b'out'): - self.device = devices.ThreadMonitoredQueue(zmq.PAIR, zmq.PAIR, zmq.PUB, - in_prefix, out_prefix) - alice = self.context.socket(zmq.PAIR) - bob = self.context.socket(zmq.PAIR) - mon = self.context.socket(zmq.SUB) - - aport = alice.bind_to_random_port('tcp://127.0.0.1') - bport = bob.bind_to_random_port('tcp://127.0.0.1') - mport = mon.bind_to_random_port('tcp://127.0.0.1') - mon.setsockopt(zmq.SUBSCRIBE, mon_sub) - - self.device.connect_in("tcp://127.0.0.1:%i"%aport) - self.device.connect_out("tcp://127.0.0.1:%i"%bport) - self.device.connect_mon("tcp://127.0.0.1:%i"%mport) - self.device.start() - time.sleep(.2) - try: - # this is currenlty necessary to ensure no dropped monitor messages - # see LIBZMQ-248 for more info - mon.recv_multipart(zmq.NOBLOCK) - except zmq.ZMQError: - pass - self.sockets.extend([alice, bob, mon]) - return alice, bob, mon - - - def teardown_device(self): - for socket in self.sockets: - socket.close() - del socket - del self.device - - def test_reply(self): - alice, bob, mon = self.build_device() - alices = b"hello bob".split() - alice.send_multipart(alices) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - self.teardown_device() - - def test_queue(self): - alice, bob, mon = self.build_device() - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - self.teardown_device() - - def test_monitor(self): - alice, bob, mon = self.build_device() - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'in']+bobs, mons) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'in']+alices2, mons) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'in']+alices3, mons) - mons = self.recv_multipart(mon) - self.assertEqual([b'out']+bobs, mons) - self.teardown_device() - - def test_prefix(self): - alice, bob, mon = self.build_device(b"", b'foo', b'bar') - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'foo']+bobs, mons) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'foo']+alices2, mons) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'foo']+alices3, mons) - mons = self.recv_multipart(mon) - self.assertEqual([b'bar']+bobs, mons) - self.teardown_device() - - def test_monitor_subscribe(self): - alice, bob, mon = self.build_device(b"out") - alices = b"hello bob".split() - alice.send_multipart(alices) - alices2 = b"hello again".split() - alice.send_multipart(alices2) - alices3 = b"hello again and again".split() - alice.send_multipart(alices3) - bobs = self.recv_multipart(bob) - self.assertEqual(alices, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices2, bobs) - bobs = self.recv_multipart(bob) - self.assertEqual(alices3, bobs) - bobs = b"hello alice".split() - bob.send_multipart(bobs) - alices = self.recv_multipart(alice) - self.assertEqual(alices, bobs) - mons = self.recv_multipart(mon) - self.assertEqual([b'out']+bobs, mons) - self.teardown_device() - - def test_router_router(self): - """test router-router MQ devices""" - dev = devices.ThreadMonitoredQueue(zmq.ROUTER, zmq.ROUTER, zmq.PUB, b'in', b'out') - self.device = dev - dev.setsockopt_in(zmq.LINGER, 0) - dev.setsockopt_out(zmq.LINGER, 0) - dev.setsockopt_mon(zmq.LINGER, 0) - - binder = self.context.socket(zmq.DEALER) - porta = binder.bind_to_random_port('tcp://127.0.0.1') - portb = binder.bind_to_random_port('tcp://127.0.0.1') - binder.close() - time.sleep(0.1) - a = self.context.socket(zmq.DEALER) - a.identity = b'a' - b = self.context.socket(zmq.DEALER) - b.identity = b'b' - self.sockets.extend([a, b]) - - a.connect('tcp://127.0.0.1:%i'%porta) - dev.bind_in('tcp://127.0.0.1:%i'%porta) - b.connect('tcp://127.0.0.1:%i'%portb) - dev.bind_out('tcp://127.0.0.1:%i'%portb) - dev.start() - time.sleep(0.2) - if zmq.zmq_version_info() >= (3,1,0): - # flush erroneous poll state, due to LIBZMQ-280 - ping_msg = [ b'ping', b'pong' ] - for s in (a,b): - s.send_multipart(ping_msg) - try: - s.recv(zmq.NOBLOCK) - except zmq.ZMQError: - pass - msg = [ b'hello', b'there' ] - a.send_multipart([b'b']+msg) - bmsg = self.recv_multipart(b) - self.assertEqual(bmsg, [b'a']+msg) - b.send_multipart(bmsg) - amsg = self.recv_multipart(a) - self.assertEqual(amsg, [b'b']+msg) - self.teardown_device() - - def test_default_mq_args(self): - self.device = dev = devices.ThreadMonitoredQueue(zmq.ROUTER, zmq.DEALER, zmq.PUB) - dev.setsockopt_in(zmq.LINGER, 0) - dev.setsockopt_out(zmq.LINGER, 0) - dev.setsockopt_mon(zmq.LINGER, 0) - # this will raise if default args are wrong - dev.start() - self.teardown_device() - - def test_mq_check_prefix(self): - ins = self.context.socket(zmq.ROUTER) - outs = self.context.socket(zmq.DEALER) - mons = self.context.socket(zmq.PUB) - self.sockets.extend([ins, outs, mons]) - - ins = unicode('in') - outs = unicode('out') - self.assertRaises(TypeError, devices.monitoredqueue, ins, outs, mons) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_multipart.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_multipart.py deleted file mode 100644 index 24d41be0..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_multipart.py +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import zmq - - -from zmq.tests import BaseZMQTestCase, SkipTest, have_gevent, GreenTest - - -class TestMultipart(BaseZMQTestCase): - - def test_router_dealer(self): - router, dealer = self.create_bound_pair(zmq.ROUTER, zmq.DEALER) - - msg1 = b'message1' - dealer.send(msg1) - ident = self.recv(router) - more = router.rcvmore - self.assertEqual(more, True) - msg2 = self.recv(router) - self.assertEqual(msg1, msg2) - more = router.rcvmore - self.assertEqual(more, False) - - def test_basic_multipart(self): - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - msg = [ b'hi', b'there', b'b'] - a.send_multipart(msg) - recvd = b.recv_multipart() - self.assertEqual(msg, recvd) - -if have_gevent: - class TestMultipartGreen(GreenTest, TestMultipart): - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pair.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pair.py deleted file mode 100644 index e88c1e8b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pair.py +++ /dev/null @@ -1,53 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import zmq - - -from zmq.tests import BaseZMQTestCase, have_gevent, GreenTest - - -x = b' ' -class TestPair(BaseZMQTestCase): - - def test_basic(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - msg1 = b'message1' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_multiple(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - for i in range(10): - msg = i*x - s1.send(msg) - - for i in range(10): - msg = i*x - s2.send(msg) - - for i in range(10): - msg = s1.recv() - self.assertEqual(msg, i*x) - - for i in range(10): - msg = s2.recv() - self.assertEqual(msg, i*x) - - def test_json(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - o = dict(a=10,b=list(range(10))) - o2 = self.ping_pong_json(s1, s2, o) - - def test_pyobj(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - o = dict(a=10,b=range(10)) - o2 = self.ping_pong_pyobj(s1, s2, o) - -if have_gevent: - class TestReqRepGreen(GreenTest, TestPair): - pass - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_poll.py deleted file mode 100644 index 57346c89..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_poll.py +++ /dev/null @@ -1,229 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import time -from unittest import TestCase - -import zmq - -from zmq.tests import PollZMQTestCase, have_gevent, GreenTest - -def wait(): - time.sleep(.25) - - -class TestPoll(PollZMQTestCase): - - Poller = zmq.Poller - - # This test is failing due to this issue: - # http://github.com/sustrik/zeromq2/issues#issue/26 - def test_pair(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - # Sleep to allow sockets to connect. - wait() - - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, zmq.POLLIN|zmq.POLLOUT) - # Poll result should contain both sockets - socks = dict(poller.poll()) - # Now make sure that both are send ready. - self.assertEqual(socks[s1], zmq.POLLOUT) - self.assertEqual(socks[s2], zmq.POLLOUT) - # Now do a send on both, wait and test for zmq.POLLOUT|zmq.POLLIN - s1.send(b'msg1') - s2.send(b'msg2') - wait() - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT|zmq.POLLIN) - self.assertEqual(socks[s2], zmq.POLLOUT|zmq.POLLIN) - # Make sure that both are in POLLOUT after recv. - s1.recv() - s2.recv() - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - self.assertEqual(socks[s2], zmq.POLLOUT) - - poller.unregister(s1) - poller.unregister(s2) - - # Wait for everything to finish. - wait() - - def test_reqrep(self): - s1, s2 = self.create_bound_pair(zmq.REP, zmq.REQ) - - # Sleep to allow sockets to connect. - wait() - - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, zmq.POLLIN|zmq.POLLOUT) - - # Make sure that s1 is in state 0 and s2 is in POLLOUT - socks = dict(poller.poll()) - self.assertEqual(s1 in socks, 0) - self.assertEqual(socks[s2], zmq.POLLOUT) - - # Make sure that s2 goes immediately into state 0 after send. - s2.send(b'msg1') - socks = dict(poller.poll()) - self.assertEqual(s2 in socks, 0) - - # Make sure that s1 goes into POLLIN state after a time.sleep(). - time.sleep(0.5) - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLIN) - - # Make sure that s1 goes into POLLOUT after recv. - s1.recv() - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - - # Make sure s1 goes into state 0 after send. - s1.send(b'msg2') - socks = dict(poller.poll()) - self.assertEqual(s1 in socks, 0) - - # Wait and then see that s2 is in POLLIN. - time.sleep(0.5) - socks = dict(poller.poll()) - self.assertEqual(socks[s2], zmq.POLLIN) - - # Make sure that s2 is in POLLOUT after recv. - s2.recv() - socks = dict(poller.poll()) - self.assertEqual(socks[s2], zmq.POLLOUT) - - poller.unregister(s1) - poller.unregister(s2) - - # Wait for everything to finish. - wait() - - def test_no_events(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, 0) - self.assertTrue(s1 in poller) - self.assertFalse(s2 in poller) - poller.register(s1, 0) - self.assertFalse(s1 in poller) - - def test_pubsub(self): - s1, s2 = self.create_bound_pair(zmq.PUB, zmq.SUB) - s2.setsockopt(zmq.SUBSCRIBE, b'') - - # Sleep to allow sockets to connect. - wait() - - poller = self.Poller() - poller.register(s1, zmq.POLLIN|zmq.POLLOUT) - poller.register(s2, zmq.POLLIN) - - # Now make sure that both are send ready. - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - self.assertEqual(s2 in socks, 0) - # Make sure that s1 stays in POLLOUT after a send. - s1.send(b'msg1') - socks = dict(poller.poll()) - self.assertEqual(socks[s1], zmq.POLLOUT) - - # Make sure that s2 is POLLIN after waiting. - wait() - socks = dict(poller.poll()) - self.assertEqual(socks[s2], zmq.POLLIN) - - # Make sure that s2 goes into 0 after recv. - s2.recv() - socks = dict(poller.poll()) - self.assertEqual(s2 in socks, 0) - - poller.unregister(s1) - poller.unregister(s2) - - # Wait for everything to finish. - wait() - def test_timeout(self): - """make sure Poller.poll timeout has the right units (milliseconds).""" - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - poller = self.Poller() - poller.register(s1, zmq.POLLIN) - tic = time.time() - evt = poller.poll(.005) - toc = time.time() - self.assertTrue(toc-tic < 0.1) - tic = time.time() - evt = poller.poll(5) - toc = time.time() - self.assertTrue(toc-tic < 0.1) - self.assertTrue(toc-tic > .001) - tic = time.time() - evt = poller.poll(500) - toc = time.time() - self.assertTrue(toc-tic < 1) - self.assertTrue(toc-tic > 0.1) - -class TestSelect(PollZMQTestCase): - - def test_pair(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - # Sleep to allow sockets to connect. - wait() - - rlist, wlist, xlist = zmq.select([s1, s2], [s1, s2], [s1, s2]) - self.assert_(s1 in wlist) - self.assert_(s2 in wlist) - self.assert_(s1 not in rlist) - self.assert_(s2 not in rlist) - - def test_timeout(self): - """make sure select timeout has the right units (seconds).""" - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - tic = time.time() - r,w,x = zmq.select([s1,s2],[],[],.005) - toc = time.time() - self.assertTrue(toc-tic < 1) - self.assertTrue(toc-tic > 0.001) - tic = time.time() - r,w,x = zmq.select([s1,s2],[],[],.25) - toc = time.time() - self.assertTrue(toc-tic < 1) - self.assertTrue(toc-tic > 0.1) - - -if have_gevent: - import gevent - from zmq import green as gzmq - - class TestPollGreen(GreenTest, TestPoll): - Poller = gzmq.Poller - - def test_wakeup(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - poller = self.Poller() - poller.register(s2, zmq.POLLIN) - - tic = time.time() - r = gevent.spawn(lambda: poller.poll(10000)) - s = gevent.spawn(lambda: s1.send(b'msg1')) - r.join() - toc = time.time() - self.assertTrue(toc-tic < 1) - - def test_socket_poll(self): - s1, s2 = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - - tic = time.time() - r = gevent.spawn(lambda: s2.poll(10000)) - s = gevent.spawn(lambda: s1.send(b'msg1')) - r.join() - toc = time.time() - self.assertTrue(toc-tic < 1) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pubsub.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pubsub.py deleted file mode 100644 index a3ee22aa..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_pubsub.py +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import time -from unittest import TestCase - -import zmq - -from zmq.tests import BaseZMQTestCase, have_gevent, GreenTest - - -class TestPubSub(BaseZMQTestCase): - - pass - - # We are disabling this test while an issue is being resolved. - def test_basic(self): - s1, s2 = self.create_bound_pair(zmq.PUB, zmq.SUB) - s2.setsockopt(zmq.SUBSCRIBE,b'') - time.sleep(0.1) - msg1 = b'message' - s1.send(msg1) - msg2 = s2.recv() # This is blocking! - self.assertEqual(msg1, msg2) - - def test_topic(self): - s1, s2 = self.create_bound_pair(zmq.PUB, zmq.SUB) - s2.setsockopt(zmq.SUBSCRIBE, b'x') - time.sleep(0.1) - msg1 = b'message' - s1.send(msg1) - self.assertRaisesErrno(zmq.EAGAIN, s2.recv, zmq.NOBLOCK) - msg1 = b'xmessage' - s1.send(msg1) - msg2 = s2.recv() - self.assertEqual(msg1, msg2) - -if have_gevent: - class TestPubSubGreen(GreenTest, TestPubSub): - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_reqrep.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_reqrep.py deleted file mode 100644 index de17f2b3..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_reqrep.py +++ /dev/null @@ -1,62 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from unittest import TestCase - -import zmq -from zmq.tests import BaseZMQTestCase, have_gevent, GreenTest - - -class TestReqRep(BaseZMQTestCase): - - def test_basic(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - - msg1 = b'message 1' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_multiple(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - - for i in range(10): - msg1 = i*b' ' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_bad_send_recv(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - - if zmq.zmq_version() != '2.1.8': - # this doesn't work on 2.1.8 - for copy in (True,False): - self.assertRaisesErrno(zmq.EFSM, s1.recv, copy=copy) - self.assertRaisesErrno(zmq.EFSM, s2.send, b'asdf', copy=copy) - - # I have to have this or we die on an Abort trap. - msg1 = b'asdf' - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - - def test_json(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - o = dict(a=10,b=list(range(10))) - o2 = self.ping_pong_json(s1, s2, o) - - def test_pyobj(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - o = dict(a=10,b=range(10)) - o2 = self.ping_pong_pyobj(s1, s2, o) - - def test_large_msg(self): - s1, s2 = self.create_bound_pair(zmq.REQ, zmq.REP) - msg1 = 10000*b'X' - - for i in range(10): - msg2 = self.ping_pong(s1, s2, msg1) - self.assertEqual(msg1, msg2) - -if have_gevent: - class TestReqRepGreen(GreenTest, TestReqRep): - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_security.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_security.py deleted file mode 100644 index 687b7e0f..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_security.py +++ /dev/null @@ -1,212 +0,0 @@ -"""Test libzmq security (libzmq >= 3.3.0)""" -# -*- coding: utf8 -*- - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import os -from threading import Thread - -import zmq -from zmq.tests import ( - BaseZMQTestCase, SkipTest, PYPY -) -from zmq.utils import z85 - - -USER = b"admin" -PASS = b"password" - -class TestSecurity(BaseZMQTestCase): - - def setUp(self): - if zmq.zmq_version_info() < (4,0): - raise SkipTest("security is new in libzmq 4.0") - try: - zmq.curve_keypair() - except zmq.ZMQError: - raise SkipTest("security requires libzmq to be linked against libsodium") - super(TestSecurity, self).setUp() - - - def zap_handler(self): - socket = self.context.socket(zmq.REP) - socket.bind("inproc://zeromq.zap.01") - try: - msg = self.recv_multipart(socket) - - version, sequence, domain, address, identity, mechanism = msg[:6] - if mechanism == b'PLAIN': - username, password = msg[6:] - elif mechanism == b'CURVE': - key = msg[6] - - self.assertEqual(version, b"1.0") - self.assertEqual(identity, b"IDENT") - reply = [version, sequence] - if mechanism == b'CURVE' or \ - (mechanism == b'PLAIN' and username == USER and password == PASS) or \ - (mechanism == b'NULL'): - reply.extend([ - b"200", - b"OK", - b"anonymous", - b"\5Hello\0\0\0\5World", - ]) - else: - reply.extend([ - b"400", - b"Invalid username or password", - b"", - b"", - ]) - socket.send_multipart(reply) - finally: - socket.close() - - def start_zap(self): - self.zap_thread = Thread(target=self.zap_handler) - self.zap_thread.start() - - def stop_zap(self): - self.zap_thread.join() - - def bounce(self, server, client, test_metadata=True): - msg = [os.urandom(64), os.urandom(64)] - client.send_multipart(msg) - frames = self.recv_multipart(server, copy=False) - recvd = list(map(lambda x: x.bytes, frames)) - - try: - if test_metadata and not PYPY: - for frame in frames: - self.assertEqual(frame.get('User-Id'), 'anonymous') - self.assertEqual(frame.get('Hello'), 'World') - self.assertEqual(frame['Socket-Type'], 'DEALER') - except zmq.ZMQVersionError: - pass - - self.assertEqual(recvd, msg) - server.send_multipart(recvd) - msg2 = self.recv_multipart(client) - self.assertEqual(msg2, msg) - - def test_null(self): - """test NULL (default) security""" - server = self.socket(zmq.DEALER) - client = self.socket(zmq.DEALER) - self.assertEqual(client.MECHANISM, zmq.NULL) - self.assertEqual(server.mechanism, zmq.NULL) - self.assertEqual(client.plain_server, 0) - self.assertEqual(server.plain_server, 0) - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - self.bounce(server, client, False) - - def test_plain(self): - """test PLAIN authentication""" - server = self.socket(zmq.DEALER) - server.identity = b'IDENT' - client = self.socket(zmq.DEALER) - self.assertEqual(client.plain_username, b'') - self.assertEqual(client.plain_password, b'') - client.plain_username = USER - client.plain_password = PASS - self.assertEqual(client.getsockopt(zmq.PLAIN_USERNAME), USER) - self.assertEqual(client.getsockopt(zmq.PLAIN_PASSWORD), PASS) - self.assertEqual(client.plain_server, 0) - self.assertEqual(server.plain_server, 0) - server.plain_server = True - self.assertEqual(server.mechanism, zmq.PLAIN) - self.assertEqual(client.mechanism, zmq.PLAIN) - - assert not client.plain_server - assert server.plain_server - - self.start_zap() - - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - self.bounce(server, client) - self.stop_zap() - - def skip_plain_inauth(self): - """test PLAIN failed authentication""" - server = self.socket(zmq.DEALER) - server.identity = b'IDENT' - client = self.socket(zmq.DEALER) - self.sockets.extend([server, client]) - client.plain_username = USER - client.plain_password = b'incorrect' - server.plain_server = True - self.assertEqual(server.mechanism, zmq.PLAIN) - self.assertEqual(client.mechanism, zmq.PLAIN) - - self.start_zap() - - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - client.send(b'ping') - server.rcvtimeo = 250 - self.assertRaisesErrno(zmq.EAGAIN, server.recv) - self.stop_zap() - - def test_keypair(self): - """test curve_keypair""" - try: - public, secret = zmq.curve_keypair() - except zmq.ZMQError: - raise SkipTest("CURVE unsupported") - - self.assertEqual(type(secret), bytes) - self.assertEqual(type(public), bytes) - self.assertEqual(len(secret), 40) - self.assertEqual(len(public), 40) - - # verify that it is indeed Z85 - bsecret, bpublic = [ z85.decode(key) for key in (public, secret) ] - self.assertEqual(type(bsecret), bytes) - self.assertEqual(type(bpublic), bytes) - self.assertEqual(len(bsecret), 32) - self.assertEqual(len(bpublic), 32) - - - def test_curve(self): - """test CURVE encryption""" - server = self.socket(zmq.DEALER) - server.identity = b'IDENT' - client = self.socket(zmq.DEALER) - self.sockets.extend([server, client]) - try: - server.curve_server = True - except zmq.ZMQError as e: - # will raise EINVAL if not linked against libsodium - if e.errno == zmq.EINVAL: - raise SkipTest("CURVE unsupported") - - server_public, server_secret = zmq.curve_keypair() - client_public, client_secret = zmq.curve_keypair() - - server.curve_secretkey = server_secret - server.curve_publickey = server_public - client.curve_serverkey = server_public - client.curve_publickey = client_public - client.curve_secretkey = client_secret - - self.assertEqual(server.mechanism, zmq.CURVE) - self.assertEqual(client.mechanism, zmq.CURVE) - - self.assertEqual(server.get(zmq.CURVE_SERVER), True) - self.assertEqual(client.get(zmq.CURVE_SERVER), False) - - self.start_zap() - - iface = 'tcp://127.0.0.1' - port = server.bind_to_random_port(iface) - client.connect("%s:%i" % (iface, port)) - self.bounce(server, client) - self.stop_zap() - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_socket.py deleted file mode 100644 index 5c842edc..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_socket.py +++ /dev/null @@ -1,450 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import time -import warnings - -import zmq -from zmq.tests import ( - BaseZMQTestCase, SkipTest, have_gevent, GreenTest, skip_pypy, skip_if -) -from zmq.utils.strtypes import bytes, unicode - - -class TestSocket(BaseZMQTestCase): - - def test_create(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - # Superluminal protocol not yet implemented - self.assertRaisesErrno(zmq.EPROTONOSUPPORT, s.bind, 'ftl://a') - self.assertRaisesErrno(zmq.EPROTONOSUPPORT, s.connect, 'ftl://a') - self.assertRaisesErrno(zmq.EINVAL, s.bind, 'tcp://') - s.close() - del ctx - - def test_context_manager(self): - url = 'inproc://a' - with self.Context() as ctx: - with ctx.socket(zmq.PUSH) as a: - a.bind(url) - with ctx.socket(zmq.PULL) as b: - b.connect(url) - msg = b'hi' - a.send(msg) - rcvd = self.recv(b) - self.assertEqual(rcvd, msg) - self.assertEqual(b.closed, True) - self.assertEqual(a.closed, True) - self.assertEqual(ctx.closed, True) - - def test_dir(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - self.assertTrue('send' in dir(s)) - self.assertTrue('IDENTITY' in dir(s)) - self.assertTrue('AFFINITY' in dir(s)) - self.assertTrue('FD' in dir(s)) - s.close() - ctx.term() - - def test_bind_unicode(self): - s = self.socket(zmq.PUB) - p = s.bind_to_random_port(unicode("tcp://*")) - - def test_connect_unicode(self): - s = self.socket(zmq.PUB) - s.connect(unicode("tcp://127.0.0.1:5555")) - - def test_bind_to_random_port(self): - # Check that bind_to_random_port do not hide usefull exception - ctx = self.Context() - c = ctx.socket(zmq.PUB) - # Invalid format - try: - c.bind_to_random_port('tcp:*') - except zmq.ZMQError as e: - self.assertEqual(e.errno, zmq.EINVAL) - # Invalid protocol - try: - c.bind_to_random_port('rand://*') - except zmq.ZMQError as e: - self.assertEqual(e.errno, zmq.EPROTONOSUPPORT) - - def test_identity(self): - s = self.context.socket(zmq.PULL) - self.sockets.append(s) - ident = b'identity\0\0' - s.identity = ident - self.assertEqual(s.get(zmq.IDENTITY), ident) - - def test_unicode_sockopts(self): - """test setting/getting sockopts with unicode strings""" - topic = "tést" - if str is not unicode: - topic = topic.decode('utf8') - p,s = self.create_bound_pair(zmq.PUB, zmq.SUB) - self.assertEqual(s.send_unicode, s.send_unicode) - self.assertEqual(p.recv_unicode, p.recv_unicode) - self.assertRaises(TypeError, s.setsockopt, zmq.SUBSCRIBE, topic) - self.assertRaises(TypeError, s.setsockopt, zmq.IDENTITY, topic) - s.setsockopt_unicode(zmq.IDENTITY, topic, 'utf16') - self.assertRaises(TypeError, s.setsockopt, zmq.AFFINITY, topic) - s.setsockopt_unicode(zmq.SUBSCRIBE, topic) - self.assertRaises(TypeError, s.getsockopt_unicode, zmq.AFFINITY) - self.assertRaisesErrno(zmq.EINVAL, s.getsockopt_unicode, zmq.SUBSCRIBE) - - identb = s.getsockopt(zmq.IDENTITY) - identu = identb.decode('utf16') - identu2 = s.getsockopt_unicode(zmq.IDENTITY, 'utf16') - self.assertEqual(identu, identu2) - time.sleep(0.1) # wait for connection/subscription - p.send_unicode(topic,zmq.SNDMORE) - p.send_unicode(topic*2, encoding='latin-1') - self.assertEqual(topic, s.recv_unicode()) - self.assertEqual(topic*2, s.recv_unicode(encoding='latin-1')) - - def test_int_sockopts(self): - "test integer sockopts" - v = zmq.zmq_version_info() - if v < (3,0): - default_hwm = 0 - else: - default_hwm = 1000 - p,s = self.create_bound_pair(zmq.PUB, zmq.SUB) - p.setsockopt(zmq.LINGER, 0) - self.assertEqual(p.getsockopt(zmq.LINGER), 0) - p.setsockopt(zmq.LINGER, -1) - self.assertEqual(p.getsockopt(zmq.LINGER), -1) - self.assertEqual(p.hwm, default_hwm) - p.hwm = 11 - self.assertEqual(p.hwm, 11) - # p.setsockopt(zmq.EVENTS, zmq.POLLIN) - self.assertEqual(p.getsockopt(zmq.EVENTS), zmq.POLLOUT) - self.assertRaisesErrno(zmq.EINVAL, p.setsockopt,zmq.EVENTS, 2**7-1) - self.assertEqual(p.getsockopt(zmq.TYPE), p.socket_type) - self.assertEqual(p.getsockopt(zmq.TYPE), zmq.PUB) - self.assertEqual(s.getsockopt(zmq.TYPE), s.socket_type) - self.assertEqual(s.getsockopt(zmq.TYPE), zmq.SUB) - - # check for overflow / wrong type: - errors = [] - backref = {} - constants = zmq.constants - for name in constants.__all__: - value = getattr(constants, name) - if isinstance(value, int): - backref[value] = name - for opt in zmq.constants.int_sockopts.union(zmq.constants.int64_sockopts): - sopt = backref[opt] - if sopt.startswith(( - 'ROUTER', 'XPUB', 'TCP', 'FAIL', - 'REQ_', 'CURVE_', 'PROBE_ROUTER', - 'IPC_FILTER', 'GSSAPI', - )): - # some sockopts are write-only - continue - try: - n = p.getsockopt(opt) - except zmq.ZMQError as e: - errors.append("getsockopt(zmq.%s) raised '%s'."%(sopt, e)) - else: - if n > 2**31: - errors.append("getsockopt(zmq.%s) returned a ridiculous value." - " It is probably the wrong type."%sopt) - if errors: - self.fail('\n'.join([''] + errors)) - - def test_bad_sockopts(self): - """Test that appropriate errors are raised on bad socket options""" - s = self.context.socket(zmq.PUB) - self.sockets.append(s) - s.setsockopt(zmq.LINGER, 0) - # unrecognized int sockopts pass through to libzmq, and should raise EINVAL - self.assertRaisesErrno(zmq.EINVAL, s.setsockopt, 9999, 5) - self.assertRaisesErrno(zmq.EINVAL, s.getsockopt, 9999) - # but only int sockopts are allowed through this way, otherwise raise a TypeError - self.assertRaises(TypeError, s.setsockopt, 9999, b"5") - # some sockopts are valid in general, but not on every socket: - self.assertRaisesErrno(zmq.EINVAL, s.setsockopt, zmq.SUBSCRIBE, b'hi') - - def test_sockopt_roundtrip(self): - "test set/getsockopt roundtrip." - p = self.context.socket(zmq.PUB) - self.sockets.append(p) - p.setsockopt(zmq.LINGER, 11) - self.assertEqual(p.getsockopt(zmq.LINGER), 11) - - def test_send_unicode(self): - "test sending unicode objects" - a,b = self.create_bound_pair(zmq.PAIR, zmq.PAIR) - self.sockets.extend([a,b]) - u = "çπ§" - if str is not unicode: - u = u.decode('utf8') - self.assertRaises(TypeError, a.send, u,copy=False) - self.assertRaises(TypeError, a.send, u,copy=True) - a.send_unicode(u) - s = b.recv() - self.assertEqual(s,u.encode('utf8')) - self.assertEqual(s.decode('utf8'),u) - a.send_unicode(u,encoding='utf16') - s = b.recv_unicode(encoding='utf16') - self.assertEqual(s,u) - - @skip_pypy - def test_tracker(self): - "test the MessageTracker object for tracking when zmq is done with a buffer" - addr = 'tcp://127.0.0.1' - a = self.context.socket(zmq.PUB) - port = a.bind_to_random_port(addr) - a.close() - iface = "%s:%i"%(addr,port) - a = self.context.socket(zmq.PAIR) - # a.setsockopt(zmq.IDENTITY, b"a") - b = self.context.socket(zmq.PAIR) - self.sockets.extend([a,b]) - a.connect(iface) - time.sleep(0.1) - p1 = a.send(b'something', copy=False, track=True) - self.assertTrue(isinstance(p1, zmq.MessageTracker)) - self.assertFalse(p1.done) - p2 = a.send_multipart([b'something', b'else'], copy=False, track=True) - self.assert_(isinstance(p2, zmq.MessageTracker)) - self.assertEqual(p2.done, False) - self.assertEqual(p1.done, False) - - b.bind(iface) - msg = b.recv_multipart() - for i in range(10): - if p1.done: - break - time.sleep(0.1) - self.assertEqual(p1.done, True) - self.assertEqual(msg, [b'something']) - msg = b.recv_multipart() - for i in range(10): - if p2.done: - break - time.sleep(0.1) - self.assertEqual(p2.done, True) - self.assertEqual(msg, [b'something', b'else']) - m = zmq.Frame(b"again", track=True) - self.assertEqual(m.tracker.done, False) - p1 = a.send(m, copy=False) - p2 = a.send(m, copy=False) - self.assertEqual(m.tracker.done, False) - self.assertEqual(p1.done, False) - self.assertEqual(p2.done, False) - msg = b.recv_multipart() - self.assertEqual(m.tracker.done, False) - self.assertEqual(msg, [b'again']) - msg = b.recv_multipart() - self.assertEqual(m.tracker.done, False) - self.assertEqual(msg, [b'again']) - self.assertEqual(p1.done, False) - self.assertEqual(p2.done, False) - pm = m.tracker - del m - for i in range(10): - if p1.done: - break - time.sleep(0.1) - self.assertEqual(p1.done, True) - self.assertEqual(p2.done, True) - m = zmq.Frame(b'something', track=False) - self.assertRaises(ValueError, a.send, m, copy=False, track=True) - - - def test_close(self): - ctx = self.Context() - s = ctx.socket(zmq.PUB) - s.close() - self.assertRaisesErrno(zmq.ENOTSOCK, s.bind, b'') - self.assertRaisesErrno(zmq.ENOTSOCK, s.connect, b'') - self.assertRaisesErrno(zmq.ENOTSOCK, s.setsockopt, zmq.SUBSCRIBE, b'') - self.assertRaisesErrno(zmq.ENOTSOCK, s.send, b'asdf') - self.assertRaisesErrno(zmq.ENOTSOCK, s.recv) - del ctx - - def test_attr(self): - """set setting/getting sockopts as attributes""" - s = self.context.socket(zmq.DEALER) - self.sockets.append(s) - linger = 10 - s.linger = linger - self.assertEqual(linger, s.linger) - self.assertEqual(linger, s.getsockopt(zmq.LINGER)) - self.assertEqual(s.fd, s.getsockopt(zmq.FD)) - - def test_bad_attr(self): - s = self.context.socket(zmq.DEALER) - self.sockets.append(s) - try: - s.apple='foo' - except AttributeError: - pass - else: - self.fail("bad setattr should have raised AttributeError") - try: - s.apple - except AttributeError: - pass - else: - self.fail("bad getattr should have raised AttributeError") - - def test_subclass(self): - """subclasses can assign attributes""" - class S(zmq.Socket): - a = None - def __init__(self, *a, **kw): - self.a=-1 - super(S, self).__init__(*a, **kw) - - s = S(self.context, zmq.REP) - self.sockets.append(s) - self.assertEqual(s.a, -1) - s.a=1 - self.assertEqual(s.a, 1) - a=s.a - self.assertEqual(a, 1) - - def test_recv_multipart(self): - a,b = self.create_bound_pair() - msg = b'hi' - for i in range(3): - a.send(msg) - time.sleep(0.1) - for i in range(3): - self.assertEqual(b.recv_multipart(), [msg]) - - def test_close_after_destroy(self): - """s.close() after ctx.destroy() should be fine""" - ctx = self.Context() - s = ctx.socket(zmq.REP) - ctx.destroy() - # reaper is not instantaneous - time.sleep(1e-2) - s.close() - self.assertTrue(s.closed) - - def test_poll(self): - a,b = self.create_bound_pair() - tic = time.time() - evt = a.poll(50) - self.assertEqual(evt, 0) - evt = a.poll(50, zmq.POLLOUT) - self.assertEqual(evt, zmq.POLLOUT) - msg = b'hi' - a.send(msg) - evt = b.poll(50) - self.assertEqual(evt, zmq.POLLIN) - msg2 = self.recv(b) - evt = b.poll(50) - self.assertEqual(evt, 0) - self.assertEqual(msg2, msg) - - def test_ipc_path_max_length(self): - """IPC_PATH_MAX_LEN is a sensible value""" - if zmq.IPC_PATH_MAX_LEN == 0: - raise SkipTest("IPC_PATH_MAX_LEN undefined") - - msg = "Surprising value for IPC_PATH_MAX_LEN: %s" % zmq.IPC_PATH_MAX_LEN - self.assertTrue(zmq.IPC_PATH_MAX_LEN > 30, msg) - self.assertTrue(zmq.IPC_PATH_MAX_LEN < 1025, msg) - - def test_ipc_path_max_length_msg(self): - if zmq.IPC_PATH_MAX_LEN == 0: - raise SkipTest("IPC_PATH_MAX_LEN undefined") - - s = self.context.socket(zmq.PUB) - self.sockets.append(s) - try: - s.bind('ipc://{0}'.format('a' * (zmq.IPC_PATH_MAX_LEN + 1))) - except zmq.ZMQError as e: - self.assertTrue(str(zmq.IPC_PATH_MAX_LEN) in e.strerror) - - def test_hwm(self): - zmq3 = zmq.zmq_version_info()[0] >= 3 - for stype in (zmq.PUB, zmq.ROUTER, zmq.SUB, zmq.REQ, zmq.DEALER): - s = self.context.socket(stype) - s.hwm = 100 - self.assertEqual(s.hwm, 100) - if zmq3: - try: - self.assertEqual(s.sndhwm, 100) - except AttributeError: - pass - try: - self.assertEqual(s.rcvhwm, 100) - except AttributeError: - pass - s.close() - - def test_shadow(self): - p = self.socket(zmq.PUSH) - p.bind("tcp://127.0.0.1:5555") - p2 = zmq.Socket.shadow(p.underlying) - self.assertEqual(p.underlying, p2.underlying) - s = self.socket(zmq.PULL) - s2 = zmq.Socket.shadow(s.underlying) - self.assertNotEqual(s.underlying, p.underlying) - self.assertEqual(s.underlying, s2.underlying) - s2.connect("tcp://127.0.0.1:5555") - sent = b'hi' - p2.send(sent) - rcvd = self.recv(s2) - self.assertEqual(rcvd, sent) - - def test_shadow_pyczmq(self): - try: - from pyczmq import zctx, zsocket - except Exception: - raise SkipTest("Requires pyczmq") - - ctx = zctx.new() - ca = zsocket.new(ctx, zmq.PUSH) - cb = zsocket.new(ctx, zmq.PULL) - a = zmq.Socket.shadow(ca) - b = zmq.Socket.shadow(cb) - a.bind("inproc://a") - b.connect("inproc://a") - a.send(b'hi') - rcvd = self.recv(b) - self.assertEqual(rcvd, b'hi') - - -if have_gevent: - import gevent - - class TestSocketGreen(GreenTest, TestSocket): - test_bad_attr = GreenTest.skip_green - test_close_after_destroy = GreenTest.skip_green - - def test_timeout(self): - a,b = self.create_bound_pair() - g = gevent.spawn_later(0.5, lambda: a.send(b'hi')) - timeout = gevent.Timeout(0.1) - timeout.start() - self.assertRaises(gevent.Timeout, b.recv) - g.kill() - - @skip_if(not hasattr(zmq, 'RCVTIMEO')) - def test_warn_set_timeo(self): - s = self.context.socket(zmq.REQ) - with warnings.catch_warnings(record=True) as w: - s.rcvtimeo = 5 - s.close() - self.assertEqual(len(w), 1) - self.assertEqual(w[0].category, UserWarning) - - - @skip_if(not hasattr(zmq, 'SNDTIMEO')) - def test_warn_get_timeo(self): - s = self.context.socket(zmq.REQ) - with warnings.catch_warnings(record=True) as w: - s.sndtimeo - s.close() - self.assertEqual(len(w), 1) - self.assertEqual(w[0].category, UserWarning) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_stopwatch.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_stopwatch.py deleted file mode 100644 index 49fb79f2..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_stopwatch.py +++ /dev/null @@ -1,42 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import sys -import time - -from unittest import TestCase - -from zmq import Stopwatch, ZMQError - -if sys.version_info[0] >= 3: - long = int - -class TestStopWatch(TestCase): - - def test_stop_long(self): - """Ensure stop returns a long int.""" - watch = Stopwatch() - watch.start() - us = watch.stop() - self.assertTrue(isinstance(us, long)) - - def test_stop_microseconds(self): - """Test that stop/sleep have right units.""" - watch = Stopwatch() - watch.start() - tic = time.time() - watch.sleep(1) - us = watch.stop() - toc = time.time() - self.assertAlmostEqual(us/1e6,(toc-tic),places=0) - - def test_double_stop(self): - """Test error raised on multiple calls to stop.""" - watch = Stopwatch() - watch.start() - watch.stop() - self.assertRaises(ZMQError, watch.stop) - self.assertRaises(ZMQError, watch.stop) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_version.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_version.py deleted file mode 100644 index 6ebebf30..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_version.py +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -from unittest import TestCase -import zmq -from zmq.sugar import version - - -class TestVersion(TestCase): - - def test_pyzmq_version(self): - vs = zmq.pyzmq_version() - vs2 = zmq.__version__ - self.assertTrue(isinstance(vs, str)) - if zmq.__revision__: - self.assertEqual(vs, '@'.join(vs2, zmq.__revision__)) - else: - self.assertEqual(vs, vs2) - if version.VERSION_EXTRA: - self.assertTrue(version.VERSION_EXTRA in vs) - self.assertTrue(version.VERSION_EXTRA in vs2) - - def test_pyzmq_version_info(self): - info = zmq.pyzmq_version_info() - self.assertTrue(isinstance(info, tuple)) - for n in info[:3]: - self.assertTrue(isinstance(n, int)) - if version.VERSION_EXTRA: - self.assertEqual(len(info), 4) - self.assertEqual(info[-1], float('inf')) - else: - self.assertEqual(len(info), 3) - - def test_zmq_version_info(self): - info = zmq.zmq_version_info() - self.assertTrue(isinstance(info, tuple)) - for n in info[:3]: - self.assertTrue(isinstance(n, int)) - - def test_zmq_version(self): - v = zmq.zmq_version() - self.assertTrue(isinstance(v, str)) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_win32_shim.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_win32_shim.py deleted file mode 100644 index 55657bda..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_win32_shim.py +++ /dev/null @@ -1,56 +0,0 @@ -from __future__ import print_function - -import os - -from functools import wraps -from zmq.tests import BaseZMQTestCase -from zmq.utils.win32 import allow_interrupt - - -def count_calls(f): - @wraps(f) - def _(*args, **kwds): - try: - return f(*args, **kwds) - finally: - _.__calls__ += 1 - _.__calls__ = 0 - return _ - - -class TestWindowsConsoleControlHandler(BaseZMQTestCase): - - def test_handler(self): - @count_calls - def interrupt_polling(): - print('Caught CTRL-C!') - - if os.name == 'nt': - from ctypes import windll - from ctypes.wintypes import BOOL, DWORD - - kernel32 = windll.LoadLibrary('kernel32') - - # - GenerateConsoleCtrlEvent = kernel32.GenerateConsoleCtrlEvent - GenerateConsoleCtrlEvent.argtypes = (DWORD, DWORD) - GenerateConsoleCtrlEvent.restype = BOOL - - try: - # Simulate CTRL-C event while handler is active. - with allow_interrupt(interrupt_polling): - result = GenerateConsoleCtrlEvent(0, 0) - if result == 0: - raise WindowsError - except KeyboardInterrupt: - pass - else: - self.fail('Expecting `KeyboardInterrupt` exception!') - - # Make sure our handler was called. - self.assertEqual(interrupt_polling.__calls__, 1) - else: - # On non-Windows systems, this utility is just a no-op! - with allow_interrupt(interrupt_polling): - pass - self.assertEqual(interrupt_polling.__calls__, 0) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_z85.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_z85.py deleted file mode 100644 index 8a73cb4d..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_z85.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf8 -*- -"""Test Z85 encoding - -confirm values and roundtrip with test values from the reference implementation. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from unittest import TestCase -from zmq.utils import z85 - - -class TestZ85(TestCase): - - def test_client_public(self): - client_public = \ - b"\xBB\x88\x47\x1D\x65\xE2\x65\x9B" \ - b"\x30\xC5\x5A\x53\x21\xCE\xBB\x5A" \ - b"\xAB\x2B\x70\xA3\x98\x64\x5C\x26" \ - b"\xDC\xA2\xB2\xFC\xB4\x3F\xC5\x18" - encoded = z85.encode(client_public) - - self.assertEqual(encoded, b"Yne@$w-vo}U?@Lns47E1%kR.o@n%FcmmsL/@{H8]yf7") - decoded = z85.decode(encoded) - self.assertEqual(decoded, server_public) - - def test_server_secret(self): - server_secret = \ - b"\x8E\x0B\xDD\x69\x76\x28\xB9\x1D" \ - b"\x8F\x24\x55\x87\xEE\x95\xC5\xB0" \ - b"\x4D\x48\x96\x3F\x79\x25\x98\x77" \ - b"\xB4\x9C\xD9\x06\x3A\xEA\xD3\xB7" - encoded = z85.encode(server_secret) - - self.assertEqual(encoded, b"JTKVSB%%)wK0E.X)V>+}o?pNmC{O&4W4b!Ni{Lh6") - decoded = z85.decode(encoded) - self.assertEqual(decoded, server_secret) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_zmqstream.py deleted file mode 100644 index cdb3a171..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/tests/test_zmqstream.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding: utf8 -*- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import sys -import time - -from unittest import TestCase - -import zmq -from zmq.eventloop import ioloop, zmqstream - -class TestZMQStream(TestCase): - - def setUp(self): - self.context = zmq.Context() - self.socket = self.context.socket(zmq.REP) - self.loop = ioloop.IOLoop.instance() - self.stream = zmqstream.ZMQStream(self.socket) - - def tearDown(self): - self.socket.close() - self.context.term() - - def test_callable_check(self): - """Ensure callable check works (py3k).""" - - self.stream.on_send(lambda *args: None) - self.stream.on_recv(lambda *args: None) - self.assertRaises(AssertionError, self.stream.on_recv, 1) - self.assertRaises(AssertionError, self.stream.on_send, 1) - self.assertRaises(AssertionError, self.stream.on_recv, zmq) - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/buffers.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/buffers.pxd deleted file mode 100644 index 998aa551..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/buffers.pxd +++ /dev/null @@ -1,313 +0,0 @@ -"""Python version-independent methods for C/Python buffers. - -This file was copied and adapted from mpi4py. - -Authors -------- -* MinRK -""" - -#----------------------------------------------------------------------------- -# Copyright (c) 2010 Lisandro Dalcin -# All rights reserved. -# Used under BSD License: http://www.opensource.org/licenses/bsd-license.php -# -# Retrieval: -# Jul 23, 2010 18:00 PST (r539) -# http://code.google.com/p/mpi4py/source/browse/trunk/src/MPI/asbuffer.pxi -# -# Modifications from original: -# Copyright (c) 2010-2012 Brian Granger, Min Ragan-Kelley -# -# Distributed under the terms of the New BSD License. The full license is in -# the file COPYING.BSD, distributed as part of this software. -#----------------------------------------------------------------------------- - - -#----------------------------------------------------------------------------- -# Python includes. -#----------------------------------------------------------------------------- - -# get version-independent aliases: -cdef extern from "pyversion_compat.h": - pass - -# Python 3 buffer interface (PEP 3118) -cdef extern from "Python.h": - int PY_MAJOR_VERSION - int PY_MINOR_VERSION - ctypedef int Py_ssize_t - ctypedef struct PyMemoryViewObject: - pass - ctypedef struct Py_buffer: - void *buf - Py_ssize_t len - int readonly - char *format - int ndim - Py_ssize_t *shape - Py_ssize_t *strides - Py_ssize_t *suboffsets - Py_ssize_t itemsize - void *internal - cdef enum: - PyBUF_SIMPLE - PyBUF_WRITABLE - PyBUF_FORMAT - PyBUF_ANY_CONTIGUOUS - int PyObject_CheckBuffer(object) - int PyObject_GetBuffer(object, Py_buffer *, int) except -1 - void PyBuffer_Release(Py_buffer *) - - int PyBuffer_FillInfo(Py_buffer *view, object obj, void *buf, - Py_ssize_t len, int readonly, int infoflags) except -1 - object PyMemoryView_FromBuffer(Py_buffer *info) - - object PyMemoryView_FromObject(object) - -# Python 2 buffer interface (legacy) -cdef extern from "Python.h": - ctypedef void const_void "const void" - Py_ssize_t Py_END_OF_BUFFER - int PyObject_CheckReadBuffer(object) - int PyObject_AsReadBuffer (object, const_void **, Py_ssize_t *) except -1 - int PyObject_AsWriteBuffer(object, void **, Py_ssize_t *) except -1 - - object PyBuffer_FromMemory(void *ptr, Py_ssize_t s) - object PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t s) - - object PyBuffer_FromObject(object, Py_ssize_t offset, Py_ssize_t size) - object PyBuffer_FromReadWriteObject(object, Py_ssize_t offset, Py_ssize_t size) - - -#----------------------------------------------------------------------------- -# asbuffer: C buffer from python object -#----------------------------------------------------------------------------- - - -cdef inline int memoryview_available(): - return PY_MAJOR_VERSION >= 3 or (PY_MAJOR_VERSION >=2 and PY_MINOR_VERSION >= 7) - -cdef inline int oldstyle_available(): - return PY_MAJOR_VERSION < 3 - - -cdef inline int check_buffer(object ob): - """Version independent check for whether an object is a buffer. - - Parameters - ---------- - object : object - Any Python object - - Returns - ------- - int : 0 if no buffer interface, 3 if newstyle buffer interface, 2 if oldstyle. - """ - if PyObject_CheckBuffer(ob): - return 3 - if oldstyle_available(): - return PyObject_CheckReadBuffer(ob) and 2 - return 0 - - -cdef inline object asbuffer(object ob, int writable, int format, - void **base, Py_ssize_t *size, - Py_ssize_t *itemsize): - """Turn an object into a C buffer in a Python version-independent way. - - Parameters - ---------- - ob : object - The object to be turned into a buffer. - Must provide a Python Buffer interface - writable : int - Whether the resulting buffer should be allowed to write - to the object. - format : int - The format of the buffer. See Python buffer docs. - base : void ** - The pointer that will be used to store the resulting C buffer. - size : Py_ssize_t * - The size of the buffer(s). - itemsize : Py_ssize_t * - The size of an item, if the buffer is non-contiguous. - - Returns - ------- - An object describing the buffer format. Generally a str, such as 'B'. - """ - - cdef void *bptr = NULL - cdef Py_ssize_t blen = 0, bitemlen = 0 - cdef Py_buffer view - cdef int flags = PyBUF_SIMPLE - cdef int mode = 0 - - bfmt = None - - mode = check_buffer(ob) - if mode == 0: - raise TypeError("%r does not provide a buffer interface."%ob) - - if mode == 3: - flags = PyBUF_ANY_CONTIGUOUS - if writable: - flags |= PyBUF_WRITABLE - if format: - flags |= PyBUF_FORMAT - PyObject_GetBuffer(ob, &view, flags) - bptr = view.buf - blen = view.len - if format: - if view.format != NULL: - bfmt = view.format - bitemlen = view.itemsize - PyBuffer_Release(&view) - else: # oldstyle - if writable: - PyObject_AsWriteBuffer(ob, &bptr, &blen) - else: - PyObject_AsReadBuffer(ob, &bptr, &blen) - if format: - try: # numpy.ndarray - dtype = ob.dtype - bfmt = dtype.char - bitemlen = dtype.itemsize - except AttributeError: - try: # array.array - bfmt = ob.typecode - bitemlen = ob.itemsize - except AttributeError: - if isinstance(ob, bytes): - bfmt = b"B" - bitemlen = 1 - else: - # nothing found - bfmt = None - bitemlen = 0 - if base: base[0] = bptr - if size: size[0] = blen - if itemsize: itemsize[0] = bitemlen - - if PY_MAJOR_VERSION >= 3 and bfmt is not None: - return bfmt.decode('ascii') - return bfmt - - -cdef inline object asbuffer_r(object ob, void **base, Py_ssize_t *size): - """Wrapper for standard calls to asbuffer with a readonly buffer.""" - asbuffer(ob, 0, 0, base, size, NULL) - return ob - - -cdef inline object asbuffer_w(object ob, void **base, Py_ssize_t *size): - """Wrapper for standard calls to asbuffer with a writable buffer.""" - asbuffer(ob, 1, 0, base, size, NULL) - return ob - -#------------------------------------------------------------------------------ -# frombuffer: python buffer/view from C buffer -#------------------------------------------------------------------------------ - - -cdef inline object frombuffer_3(void *ptr, Py_ssize_t s, int readonly): - """Python 3 version of frombuffer. - - This is the Python 3 model, but will work on Python >= 2.6. Currently, - we use it only on >= 3.0. - """ - cdef Py_buffer pybuf - cdef Py_ssize_t *shape = [s] - cdef str astr="" - PyBuffer_FillInfo(&pybuf, astr, ptr, s, readonly, PyBUF_SIMPLE) - pybuf.format = "B" - pybuf.shape = shape - return PyMemoryView_FromBuffer(&pybuf) - - -cdef inline object frombuffer_2(void *ptr, Py_ssize_t s, int readonly): - """Python 2 version of frombuffer. - - This must be used for Python <= 2.6, but we use it for all Python < 3. - """ - - if oldstyle_available(): - if readonly: - return PyBuffer_FromMemory(ptr, s) - else: - return PyBuffer_FromReadWriteMemory(ptr, s) - else: - raise NotImplementedError("Old style buffers not available.") - - -cdef inline object frombuffer(void *ptr, Py_ssize_t s, int readonly): - """Create a Python Buffer/View of a C array. - - Parameters - ---------- - ptr : void * - Pointer to the array to be copied. - s : size_t - Length of the buffer. - readonly : int - whether the resulting object should be allowed to write to the buffer. - - Returns - ------- - Python Buffer/View of the C buffer. - """ - # oldstyle first priority for now - if oldstyle_available(): - return frombuffer_2(ptr, s, readonly) - else: - return frombuffer_3(ptr, s, readonly) - - -cdef inline object frombuffer_r(void *ptr, Py_ssize_t s): - """Wrapper for readonly view frombuffer.""" - return frombuffer(ptr, s, 1) - - -cdef inline object frombuffer_w(void *ptr, Py_ssize_t s): - """Wrapper for writable view frombuffer.""" - return frombuffer(ptr, s, 0) - -#------------------------------------------------------------------------------ -# viewfromobject: python buffer/view from python object, refcounts intact -# frombuffer(asbuffer(obj)) would lose track of refs -#------------------------------------------------------------------------------ - -cdef inline object viewfromobject(object obj, int readonly): - """Construct a Python Buffer/View object from another Python object. - - This work in a Python version independent manner. - - Parameters - ---------- - obj : object - The input object to be cast as a buffer - readonly : int - Whether the result should be prevented from overwriting the original. - - Returns - ------- - Buffer/View of the original object. - """ - if not memoryview_available(): - if readonly: - return PyBuffer_FromObject(obj, 0, Py_END_OF_BUFFER) - else: - return PyBuffer_FromReadWriteObject(obj, 0, Py_END_OF_BUFFER) - else: - return PyMemoryView_FromObject(obj) - - -cdef inline object viewfromobject_r(object obj): - """Wrapper for readonly viewfromobject.""" - return viewfromobject(obj, 1) - - -cdef inline object viewfromobject_w(object obj): - """Wrapper for writable viewfromobject.""" - return viewfromobject(obj, 0) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/constant_names.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/constant_names.py deleted file mode 100644 index 47da9dc2..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/constant_names.py +++ /dev/null @@ -1,365 +0,0 @@ -"""0MQ Constant names""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -# dictionaries of constants new or removed in particular versions - -new_in = { - (2,2,0) : [ - 'RCVTIMEO', - 'SNDTIMEO', - ], - (3,2,2) : [ - # errnos - 'EMSGSIZE', - 'EAFNOSUPPORT', - 'ENETUNREACH', - 'ECONNABORTED', - 'ECONNRESET', - 'ENOTCONN', - 'ETIMEDOUT', - 'EHOSTUNREACH', - 'ENETRESET', - - # ctx opts - 'IO_THREADS', - 'MAX_SOCKETS', - 'IO_THREADS_DFLT', - 'MAX_SOCKETS_DFLT', - - # socket opts - 'ROUTER_BEHAVIOR', - 'ROUTER_MANDATORY', - 'FAIL_UNROUTABLE', - 'TCP_KEEPALIVE', - 'TCP_KEEPALIVE_CNT', - 'TCP_KEEPALIVE_IDLE', - 'TCP_KEEPALIVE_INTVL', - 'DELAY_ATTACH_ON_CONNECT', - 'XPUB_VERBOSE', - - # msg opts - 'MORE', - - 'EVENT_CONNECTED', - 'EVENT_CONNECT_DELAYED', - 'EVENT_CONNECT_RETRIED', - 'EVENT_LISTENING', - 'EVENT_BIND_FAILED', - 'EVENT_ACCEPTED', - 'EVENT_ACCEPT_FAILED', - 'EVENT_CLOSED', - 'EVENT_CLOSE_FAILED', - 'EVENT_DISCONNECTED', - 'EVENT_ALL', - ], - (4,0,0) : [ - # socket types - 'STREAM', - - # socket opts - 'IMMEDIATE', - 'ROUTER_RAW', - 'IPV6', - 'MECHANISM', - 'PLAIN_SERVER', - 'PLAIN_USERNAME', - 'PLAIN_PASSWORD', - 'CURVE_SERVER', - 'CURVE_PUBLICKEY', - 'CURVE_SECRETKEY', - 'CURVE_SERVERKEY', - 'PROBE_ROUTER', - 'REQ_RELAXED', - 'REQ_CORRELATE', - 'CONFLATE', - 'ZAP_DOMAIN', - - # security - 'NULL', - 'PLAIN', - 'CURVE', - - # events - 'EVENT_MONITOR_STOPPED', - ], - (4,1,0) : [ - # ctx opts - 'SOCKET_LIMIT', - 'THREAD_PRIORITY', - 'THREAD_PRIORITY_DFLT', - 'THREAD_SCHED_POLICY', - 'THREAD_SCHED_POLICY_DFLT', - - # socket opts - 'ROUTER_HANDOVER', - 'TOS', - 'IPC_FILTER_PID', - 'IPC_FILTER_UID', - 'IPC_FILTER_GID', - 'CONNECT_RID', - 'GSSAPI_SERVER', - 'GSSAPI_PRINCIPAL', - 'GSSAPI_SERVICE_PRINCIPAL', - 'GSSAPI_PLAINTEXT', - 'HANDSHAKE_IVL', - 'IDENTITY_FD', - 'XPUB_NODROP', - 'SOCKS_PROXY', - - # msg opts - 'SRCFD', - 'SHARED', - - # security - 'GSSAPI', - - ], -} - - -removed_in = { - (3,2,2) : [ - 'UPSTREAM', - 'DOWNSTREAM', - - 'HWM', - 'SWAP', - 'MCAST_LOOP', - 'RECOVERY_IVL_MSEC', - ] -} - -# collections of zmq constant names based on their role -# base names have no specific use -# opt names are validated in get/set methods of various objects - -base_names = [ - # base - 'VERSION', - 'VERSION_MAJOR', - 'VERSION_MINOR', - 'VERSION_PATCH', - 'NOBLOCK', - 'DONTWAIT', - - 'POLLIN', - 'POLLOUT', - 'POLLERR', - - 'SNDMORE', - - 'STREAMER', - 'FORWARDER', - 'QUEUE', - - 'IO_THREADS_DFLT', - 'MAX_SOCKETS_DFLT', - 'POLLITEMS_DFLT', - 'THREAD_PRIORITY_DFLT', - 'THREAD_SCHED_POLICY_DFLT', - - # socktypes - 'PAIR', - 'PUB', - 'SUB', - 'REQ', - 'REP', - 'DEALER', - 'ROUTER', - 'XREQ', - 'XREP', - 'PULL', - 'PUSH', - 'XPUB', - 'XSUB', - 'UPSTREAM', - 'DOWNSTREAM', - 'STREAM', - - # events - 'EVENT_CONNECTED', - 'EVENT_CONNECT_DELAYED', - 'EVENT_CONNECT_RETRIED', - 'EVENT_LISTENING', - 'EVENT_BIND_FAILED', - 'EVENT_ACCEPTED', - 'EVENT_ACCEPT_FAILED', - 'EVENT_CLOSED', - 'EVENT_CLOSE_FAILED', - 'EVENT_DISCONNECTED', - 'EVENT_ALL', - 'EVENT_MONITOR_STOPPED', - - # security - 'NULL', - 'PLAIN', - 'CURVE', - 'GSSAPI', - - ## ERRNO - # Often used (these are alse in errno.) - 'EAGAIN', - 'EINVAL', - 'EFAULT', - 'ENOMEM', - 'ENODEV', - 'EMSGSIZE', - 'EAFNOSUPPORT', - 'ENETUNREACH', - 'ECONNABORTED', - 'ECONNRESET', - 'ENOTCONN', - 'ETIMEDOUT', - 'EHOSTUNREACH', - 'ENETRESET', - - # For Windows compatability - 'HAUSNUMERO', - 'ENOTSUP', - 'EPROTONOSUPPORT', - 'ENOBUFS', - 'ENETDOWN', - 'EADDRINUSE', - 'EADDRNOTAVAIL', - 'ECONNREFUSED', - 'EINPROGRESS', - 'ENOTSOCK', - - # 0MQ Native - 'EFSM', - 'ENOCOMPATPROTO', - 'ETERM', - 'EMTHREAD', -] - -int64_sockopt_names = [ - 'AFFINITY', - 'MAXMSGSIZE', - - # sockopts removed in 3.0.0 - 'HWM', - 'SWAP', - 'MCAST_LOOP', - 'RECOVERY_IVL_MSEC', -] - -bytes_sockopt_names = [ - 'IDENTITY', - 'SUBSCRIBE', - 'UNSUBSCRIBE', - 'LAST_ENDPOINT', - 'TCP_ACCEPT_FILTER', - - 'PLAIN_USERNAME', - 'PLAIN_PASSWORD', - - 'CURVE_PUBLICKEY', - 'CURVE_SECRETKEY', - 'CURVE_SERVERKEY', - 'ZAP_DOMAIN', - 'CONNECT_RID', - 'GSSAPI_PRINCIPAL', - 'GSSAPI_SERVICE_PRINCIPAL', - 'SOCKS_PROXY', -] - -fd_sockopt_names = [ - 'FD', - 'IDENTITY_FD', -] - -int_sockopt_names = [ - # sockopts - 'RECONNECT_IVL_MAX', - - # sockopts new in 2.2.0 - 'SNDTIMEO', - 'RCVTIMEO', - - # new in 3.x - 'SNDHWM', - 'RCVHWM', - 'MULTICAST_HOPS', - 'IPV4ONLY', - - 'ROUTER_BEHAVIOR', - 'TCP_KEEPALIVE', - 'TCP_KEEPALIVE_CNT', - 'TCP_KEEPALIVE_IDLE', - 'TCP_KEEPALIVE_INTVL', - 'DELAY_ATTACH_ON_CONNECT', - 'XPUB_VERBOSE', - - 'EVENTS', - 'TYPE', - 'LINGER', - 'RECONNECT_IVL', - 'BACKLOG', - - 'ROUTER_MANDATORY', - 'FAIL_UNROUTABLE', - - 'ROUTER_RAW', - 'IMMEDIATE', - 'IPV6', - 'MECHANISM', - 'PLAIN_SERVER', - 'CURVE_SERVER', - 'PROBE_ROUTER', - 'REQ_RELAXED', - 'REQ_CORRELATE', - 'CONFLATE', - 'ROUTER_HANDOVER', - 'TOS', - 'IPC_FILTER_PID', - 'IPC_FILTER_UID', - 'IPC_FILTER_GID', - 'GSSAPI_SERVER', - 'GSSAPI_PLAINTEXT', - 'HANDSHAKE_IVL', - 'XPUB_NODROP', -] - -switched_sockopt_names = [ - 'RATE', - 'RECOVERY_IVL', - 'SNDBUF', - 'RCVBUF', - 'RCVMORE', -] - -ctx_opt_names = [ - 'IO_THREADS', - 'MAX_SOCKETS', - 'SOCKET_LIMIT', - 'THREAD_PRIORITY', - 'THREAD_SCHED_POLICY', -] - -msg_opt_names = [ - 'MORE', - 'SRCFD', - 'SHARED', -] - -from itertools import chain - -all_names = list(chain( - base_names, - ctx_opt_names, - bytes_sockopt_names, - fd_sockopt_names, - int_sockopt_names, - int64_sockopt_names, - switched_sockopt_names, - msg_opt_names, -)) - -del chain - -def no_prefix(name): - """does the given constant have a ZMQ_ prefix?""" - return name.startswith('E') and not name.startswith('EVENT') - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/garbage.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/garbage.py deleted file mode 100644 index 80a8725a..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/garbage.py +++ /dev/null @@ -1,180 +0,0 @@ -"""Garbage collection thread for representing zmq refcount of Python objects -used in zero-copy sends. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import atexit -import struct - -from os import getpid -from collections import namedtuple -from threading import Thread, Event, Lock -import warnings - -import zmq - - -gcref = namedtuple('gcref', ['obj', 'event']) - -class GarbageCollectorThread(Thread): - """Thread in which garbage collection actually happens.""" - def __init__(self, gc): - super(GarbageCollectorThread, self).__init__() - self.gc = gc - self.daemon = True - self.pid = getpid() - self.ready = Event() - - def run(self): - # detect fork at begining of the thread - if getpid is None or getpid() != self.pid: - self.ready.set() - return - try: - s = self.gc.context.socket(zmq.PULL) - s.linger = 0 - s.bind(self.gc.url) - finally: - self.ready.set() - - while True: - # detect fork - if getpid is None or getpid() != self.pid: - return - msg = s.recv() - if msg == b'DIE': - break - fmt = 'L' if len(msg) == 4 else 'Q' - key = struct.unpack(fmt, msg)[0] - tup = self.gc.refs.pop(key, None) - if tup and tup.event: - tup.event.set() - del tup - s.close() - - -class GarbageCollector(object): - """PyZMQ Garbage Collector - - Used for representing the reference held by libzmq during zero-copy sends. - This object holds a dictionary, keyed by Python id, - of the Python objects whose memory are currently in use by zeromq. - - When zeromq is done with the memory, it sends a message on an inproc PUSH socket - containing the packed size_t (32 or 64-bit unsigned int), - which is the key in the dict. - When the PULL socket in the gc thread receives that message, - the reference is popped from the dict, - and any tracker events that should be signaled fire. - """ - - refs = None - _context = None - _lock = None - url = "inproc://pyzmq.gc.01" - - def __init__(self, context=None): - super(GarbageCollector, self).__init__() - self.refs = {} - self.pid = None - self.thread = None - self._context = context - self._lock = Lock() - self._stay_down = False - atexit.register(self._atexit) - - @property - def context(self): - if self._context is None: - self._context = zmq.Context() - return self._context - - @context.setter - def context(self, ctx): - if self.is_alive(): - if self.refs: - warnings.warn("Replacing gc context while gc is running", RuntimeWarning) - self.stop() - self._context = ctx - - def _atexit(self): - """atexit callback - - sets _stay_down flag so that gc doesn't try to start up again in other atexit handlers - """ - self._stay_down = True - self.stop() - - def stop(self): - """stop the garbage-collection thread""" - if not self.is_alive(): - return - self._stop() - - def _stop(self): - push = self.context.socket(zmq.PUSH) - push.connect(self.url) - push.send(b'DIE') - push.close() - self.thread.join() - self.context.term() - self.refs.clear() - self.context = None - - def start(self): - """Start a new garbage collection thread. - - Creates a new zmq Context used for garbage collection. - Under most circumstances, this will only be called once per process. - """ - if self.thread is not None and self.pid != getpid(): - # It's re-starting, must free earlier thread's context - # since a fork probably broke it - self._stop() - self.pid = getpid() - self.refs = {} - self.thread = GarbageCollectorThread(self) - self.thread.start() - self.thread.ready.wait() - - def is_alive(self): - """Is the garbage collection thread currently running? - - Includes checks for process shutdown or fork. - """ - if (getpid is None or - getpid() != self.pid or - self.thread is None or - not self.thread.is_alive() - ): - return False - return True - - def store(self, obj, event=None): - """store an object and (optionally) event for zero-copy""" - if not self.is_alive(): - if self._stay_down: - return 0 - # safely start the gc thread - # use lock and double check, - # so we don't start multiple threads - with self._lock: - if not self.is_alive(): - self.start() - tup = gcref(obj, event) - theid = id(tup) - self.refs[theid] = tup - return theid - - def __del__(self): - if not self.is_alive(): - return - try: - self.stop() - except Exception as e: - raise (e) - -gc = GarbageCollector() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/getpid_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/getpid_compat.h deleted file mode 100644 index 47ce90fa..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/getpid_compat.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifdef _WIN32 - #include - #define getpid _getpid -#else - #include -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/interop.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/interop.py deleted file mode 100644 index 26c01969..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/interop.py +++ /dev/null @@ -1,33 +0,0 @@ -"""Utils for interoperability with other libraries. - -Just CFFI pointer casting for now. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -try: - long -except NameError: - long = int # Python 3 - - -def cast_int_addr(n): - """Cast an address to a Python int - - This could be a Python integer or a CFFI pointer - """ - if isinstance(n, (int, long)): - return n - try: - import cffi - except ImportError: - pass - else: - # from pyzmq, this is an FFI void * - ffi = cffi.FFI() - if isinstance(n, ffi.CData): - return int(ffi.cast("size_t", n)) - - raise ValueError("Cannot cast %r to int" % n) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/ipcmaxlen.h b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/ipcmaxlen.h deleted file mode 100644 index 7218db78..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/ipcmaxlen.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - -Platform-independant detection of IPC path max length - -Copyright (c) 2012 Godefroid Chapelle - -Distributed under the terms of the New BSD License. The full license is in -the file COPYING.BSD, distributed as part of this software. - */ - -#if defined(HAVE_SYS_UN_H) -#include "sys/un.h" -int get_ipc_path_max_len(void) { - struct sockaddr_un *dummy; - return sizeof(dummy->sun_path) - 1; -} -#else -int get_ipc_path_max_len(void) { - return 0; -} -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/jsonapi.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/jsonapi.py deleted file mode 100644 index 865ca6d5..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/jsonapi.py +++ /dev/null @@ -1,59 +0,0 @@ -"""Priority based json library imports. - -Always serializes to bytes instead of unicode for zeromq compatibility -on Python 2 and 3. - -Use ``jsonapi.loads()`` and ``jsonapi.dumps()`` for guaranteed symmetry. - -Priority: ``simplejson`` > ``jsonlib2`` > stdlib ``json`` - -``jsonapi.loads/dumps`` provide kwarg-compatibility with stdlib json. - -``jsonapi.jsonmod`` will be the module of the actual underlying implementation. -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq.utils.strtypes import bytes, unicode - -jsonmod = None - -priority = ['simplejson', 'jsonlib2', 'json'] -for mod in priority: - try: - jsonmod = __import__(mod) - except ImportError: - pass - else: - break - -def dumps(o, **kwargs): - """Serialize object to JSON bytes (utf-8). - - See jsonapi.jsonmod.dumps for details on kwargs. - """ - - if 'separators' not in kwargs: - kwargs['separators'] = (',', ':') - - s = jsonmod.dumps(o, **kwargs) - - if isinstance(s, unicode): - s = s.encode('utf8') - - return s - -def loads(s, **kwargs): - """Load object from JSON bytes (utf-8). - - See jsonapi.jsonmod.loads for details on kwargs. - """ - - if str is unicode and isinstance(s, bytes): - s = s.decode('utf8') - - return jsonmod.loads(s, **kwargs) - -__all__ = ['jsonmod', 'dumps', 'loads'] - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/monitor.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/monitor.py deleted file mode 100644 index 734d54b1..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/monitor.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -"""Module holding utility and convenience functions for zmq event monitoring.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import struct -import zmq -from zmq.error import _check_version - -def parse_monitor_message(msg): - """decode zmq_monitor event messages. - - Parameters - ---------- - msg : list(bytes) - zmq multipart message that has arrived on a monitor PAIR socket. - - First frame is:: - - 16 bit event id - 32 bit event value - no padding - - Second frame is the endpoint as a bytestring - - Returns - ------- - event : dict - event description as dict with the keys `event`, `value`, and `endpoint`. - """ - - if len(msg) != 2 or len(msg[0]) != 6: - raise RuntimeError("Invalid event message format: %s" % msg) - event = {} - event['event'], event['value'] = struct.unpack("=hi", msg[0]) - event['endpoint'] = msg[1] - return event - -def recv_monitor_message(socket, flags=0): - """Receive and decode the given raw message from the monitoring socket and return a dict. - - Requires libzmq ≥ 4.0 - - The returned dict will have the following entries: - event : int, the event id as described in libzmq.zmq_socket_monitor - value : int, the event value associated with the event, see libzmq.zmq_socket_monitor - endpoint : string, the affected endpoint - - Parameters - ---------- - socket : zmq PAIR socket - The PAIR socket (created by other.get_monitor_socket()) on which to recv the message - flags : bitfield (int) - standard zmq recv flags - - Returns - ------- - event : dict - event description as dict with the keys `event`, `value`, and `endpoint`. - """ - _check_version((4,0), 'libzmq event API') - # will always return a list - msg = socket.recv_multipart(flags) - # 4.0-style event API - return parse_monitor_message(msg) - -__all__ = ['parse_monitor_message', 'recv_monitor_message'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/pyversion_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/pyversion_compat.h deleted file mode 100644 index fac09046..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/pyversion_compat.h +++ /dev/null @@ -1,25 +0,0 @@ -#include "Python.h" - -#if PY_VERSION_HEX < 0x02070000 - #define PyMemoryView_FromBuffer(info) (PyErr_SetString(PyExc_NotImplementedError, \ - "new buffer interface is not available"), (PyObject *)NULL) - #define PyMemoryView_FromObject(object) (PyErr_SetString(PyExc_NotImplementedError, \ - "new buffer interface is not available"), (PyObject *)NULL) -#endif - -#if PY_VERSION_HEX >= 0x03000000 - // for buffers - #define Py_END_OF_BUFFER ((Py_ssize_t) 0) - - #define PyObject_CheckReadBuffer(object) (0) - - #define PyBuffer_FromMemory(ptr, s) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - #define PyBuffer_FromReadWriteMemory(ptr, s) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - #define PyBuffer_FromObject(object, offset, size) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - #define PyBuffer_FromReadWriteObject(object, offset, size) (PyErr_SetString(PyExc_NotImplementedError, \ - "old buffer interface is not available"), (PyObject *)NULL) - -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/sixcerpt.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/sixcerpt.py deleted file mode 100644 index 5492fd59..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/sixcerpt.py +++ /dev/null @@ -1,52 +0,0 @@ -"""Excerpts of six.py""" - -# Copyright (C) 2010-2014 Benjamin Peterson -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. - -import sys - -# Useful for very coarse version differentiation. -PY2 = sys.version_info[0] == 2 -PY3 = sys.version_info[0] == 3 - -if PY3: - - def reraise(tp, value, tb=None): - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - -else: - def exec_(_code_, _globs_=None, _locs_=None): - """Execute code in a namespace.""" - if _globs_ is None: - frame = sys._getframe(1) - _globs_ = frame.f_globals - if _locs_ is None: - _locs_ = frame.f_locals - del frame - elif _locs_ is None: - _locs_ = _globs_ - exec("""exec _code_ in _globs_, _locs_""") - - - exec_("""def reraise(tp, value, tb=None): - raise tp, value, tb -""") diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/strtypes.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/strtypes.py deleted file mode 100644 index 548410dc..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/strtypes.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Declare basic string types unambiguously for various Python versions. - -Authors -------- -* MinRK -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys - -if sys.version_info[0] >= 3: - bytes = bytes - unicode = str - basestring = (bytes, unicode) -else: - unicode = unicode - bytes = str - basestring = basestring - -def cast_bytes(s, encoding='utf8', errors='strict'): - """cast unicode or bytes to bytes""" - if isinstance(s, bytes): - return s - elif isinstance(s, unicode): - return s.encode(encoding, errors) - else: - raise TypeError("Expected unicode or bytes, got %r" % s) - -def cast_unicode(s, encoding='utf8', errors='strict'): - """cast bytes or unicode to unicode""" - if isinstance(s, bytes): - return s.decode(encoding, errors) - elif isinstance(s, unicode): - return s - else: - raise TypeError("Expected unicode or bytes, got %r" % s) - -# give short 'b' alias for cast_bytes, so that we can use fake b('stuff') -# to simulate b'stuff' -b = asbytes = cast_bytes -u = cast_unicode - -__all__ = ['asbytes', 'bytes', 'unicode', 'basestring', 'b', 'u', 'cast_bytes', 'cast_unicode'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/win32.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/win32.py deleted file mode 100644 index ea758299..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/win32.py +++ /dev/null @@ -1,132 +0,0 @@ -"""Win32 compatibility utilities.""" - -#----------------------------------------------------------------------------- -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. -#----------------------------------------------------------------------------- - -import os - -# No-op implementation for other platforms. -class _allow_interrupt(object): - """Utility for fixing CTRL-C events on Windows. - - On Windows, the Python interpreter intercepts CTRL-C events in order to - translate them into ``KeyboardInterrupt`` exceptions. It (presumably) - does this by setting a flag in its "control control handler" and - checking it later at a convenient location in the interpreter. - - However, when the Python interpreter is blocked waiting for the ZMQ - poll operation to complete, it must wait for ZMQ's ``select()`` - operation to complete before translating the CTRL-C event into the - ``KeyboardInterrupt`` exception. - - The only way to fix this seems to be to add our own "console control - handler" and perform some application-defined operation that will - unblock the ZMQ polling operation in order to force ZMQ to pass control - back to the Python interpreter. - - This context manager performs all that Windows-y stuff, providing you - with a hook that is called when a CTRL-C event is intercepted. This - hook allows you to unblock your ZMQ poll operation immediately, which - will then result in the expected ``KeyboardInterrupt`` exception. - - Without this context manager, your ZMQ-based application will not - respond normally to CTRL-C events on Windows. If a CTRL-C event occurs - while blocked on ZMQ socket polling, the translation to a - ``KeyboardInterrupt`` exception will be delayed until the I/O completes - and control returns to the Python interpreter (this may never happen if - you use an infinite timeout). - - A no-op implementation is provided on non-Win32 systems to avoid the - application from having to conditionally use it. - - Example usage: - - .. sourcecode:: python - - def stop_my_application(): - # ... - - with allow_interrupt(stop_my_application): - # main polling loop. - - In a typical ZMQ application, you would use the "self pipe trick" to - send message to a ``PAIR`` socket in order to interrupt your blocking - socket polling operation. - - In a Tornado event loop, you can use the ``IOLoop.stop`` method to - unblock your I/O loop. - """ - - def __init__(self, action=None): - """Translate ``action`` into a CTRL-C handler. - - ``action`` is a callable that takes no arguments and returns no - value (returned value is ignored). It must *NEVER* raise an - exception. - - If unspecified, a no-op will be used. - """ - self._init_action(action) - - def _init_action(self, action): - pass - - def __enter__(self): - return self - - def __exit__(self, *args): - return - -if os.name == 'nt': - from ctypes import WINFUNCTYPE, windll - from ctypes.wintypes import BOOL, DWORD - - kernel32 = windll.LoadLibrary('kernel32') - - # - PHANDLER_ROUTINE = WINFUNCTYPE(BOOL, DWORD) - SetConsoleCtrlHandler = kernel32.SetConsoleCtrlHandler - SetConsoleCtrlHandler.argtypes = (PHANDLER_ROUTINE, BOOL) - SetConsoleCtrlHandler.restype = BOOL - - class allow_interrupt(_allow_interrupt): - __doc__ = _allow_interrupt.__doc__ - - def _init_action(self, action): - if action is None: - action = lambda: None - self.action = action - @PHANDLER_ROUTINE - def handle(event): - if event == 0: # CTRL_C_EVENT - action() - # Typical C implementations would return 1 to indicate that - # the event was processed and other control handlers in the - # stack should not be executed. However, that would - # prevent the Python interpreter's handler from translating - # CTRL-C to a `KeyboardInterrupt` exception, so we pretend - # that we didn't handle it. - return 0 - self.handle = handle - - def __enter__(self): - """Install the custom CTRL-C handler.""" - result = SetConsoleCtrlHandler(self.handle, 1) - if result == 0: - # Have standard library automatically call `GetLastError()` and - # `FormatMessage()` into a nice exception object :-) - raise WindowsError() - - def __exit__(self, *args): - """Remove the custom CTRL-C handler.""" - result = SetConsoleCtrlHandler(self.handle, 0) - if result == 0: - # Have standard library automatically call `GetLastError()` and - # `FormatMessage()` into a nice exception object :-) - raise WindowsError() -else: - class allow_interrupt(_allow_interrupt): - __doc__ = _allow_interrupt.__doc__ - pass diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/z85.py b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/z85.py deleted file mode 100644 index 1bb1784e..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/z85.py +++ /dev/null @@ -1,56 +0,0 @@ -"""Python implementation of Z85 85-bit encoding - -Z85 encoding is a plaintext encoding for a bytestring interpreted as 32bit integers. -Since the chunks are 32bit, a bytestring must be a multiple of 4 bytes. -See ZMQ RFC 32 for details. - - -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import sys -import struct - -PY3 = sys.version_info[0] >= 3 -# Z85CHARS is the base 85 symbol table -Z85CHARS = b"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#" -# Z85MAP maps integers in [0,84] to the appropriate character in Z85CHARS -Z85MAP = dict([(c, idx) for idx, c in enumerate(Z85CHARS)]) - -_85s = [ 85**i for i in range(5) ][::-1] - -def encode(rawbytes): - """encode raw bytes into Z85""" - # Accepts only byte arrays bounded to 4 bytes - if len(rawbytes) % 4: - raise ValueError("length must be multiple of 4, not %i" % len(rawbytes)) - - nvalues = len(rawbytes) / 4 - - values = struct.unpack('>%dI' % nvalues, rawbytes) - encoded = [] - for v in values: - for offset in _85s: - encoded.append(Z85CHARS[(v // offset) % 85]) - - # In Python 3, encoded is a list of integers (obviously?!) - if PY3: - return bytes(encoded) - else: - return b''.join(encoded) - -def decode(z85bytes): - """decode Z85 bytes to raw bytes""" - if len(z85bytes) % 5: - raise ValueError("Z85 length must be multiple of 5, not %i" % len(z85bytes)) - - nvalues = len(z85bytes) / 5 - values = [] - for i in range(0, len(z85bytes), 5): - value = 0 - for j, offset in enumerate(_85s): - value += Z85MAP[z85bytes[i+j]] * offset - values.append(value) - return struct.pack('>%dI' % nvalues, *values) diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_compat.h deleted file mode 100644 index 81c57b69..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_compat.h +++ /dev/null @@ -1,80 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (c) 2010 Brian Granger, Min Ragan-Kelley -// -// Distributed under the terms of the New BSD License. The full license is in -// the file COPYING.BSD, distributed as part of this software. -//----------------------------------------------------------------------------- - -#if defined(_MSC_VER) -#define pyzmq_int64_t __int64 -#else -#include -#define pyzmq_int64_t int64_t -#endif - - -#include "zmq.h" -// version compatibility for constants: -#include "zmq_constants.h" - -#define _missing (-1) - - -// define fd type (from libzmq's fd.hpp) -#ifdef _WIN32 - #ifdef _MSC_VER && _MSC_VER <= 1400 - #define ZMQ_FD_T UINT_PTR - #else - #define ZMQ_FD_T SOCKET - #endif -#else - #define ZMQ_FD_T int -#endif - -// use unambiguous aliases for zmq_send/recv functions - -#if ZMQ_VERSION_MAJOR >= 4 -// nothing to remove -#else - #define zmq_curve_keypair(z85_public_key, z85_secret_key) _missing -#endif - -#if ZMQ_VERSION_MAJOR >= 4 && ZMQ_VERSION_MINOR >= 1 -// nothing to remove -#else - #define zmq_msg_gets(msg, prop) _missing - #define zmq_has(capability) _missing -#endif - -#if ZMQ_VERSION_MAJOR >= 3 - #define zmq_sendbuf zmq_send - #define zmq_recvbuf zmq_recv - - // 3.x deprecations - these symbols haven't been removed, - // but let's protect against their planned removal - #define zmq_device(device_type, isocket, osocket) _missing - #define zmq_init(io_threads) ((void*)NULL) - #define zmq_term zmq_ctx_destroy -#else - #define zmq_ctx_set(ctx, opt, val) _missing - #define zmq_ctx_get(ctx, opt) _missing - #define zmq_ctx_destroy zmq_term - #define zmq_ctx_new() ((void*)NULL) - - #define zmq_proxy(a,b,c) _missing - - #define zmq_disconnect(s, addr) _missing - #define zmq_unbind(s, addr) _missing - - #define zmq_msg_more(msg) _missing - #define zmq_msg_get(msg, opt) _missing - #define zmq_msg_set(msg, opt, val) _missing - #define zmq_msg_send(msg, s, flags) zmq_send(s, msg, flags) - #define zmq_msg_recv(msg, s, flags) zmq_recv(s, msg, flags) - - #define zmq_sendbuf(s, buf, len, flags) _missing - #define zmq_recvbuf(s, buf, len, flags) _missing - - #define zmq_socket_monitor(s, addr, flags) _missing - -#endif diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_constants.h b/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_constants.h deleted file mode 100644 index 97683022..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/zmq_constants.h +++ /dev/null @@ -1,622 +0,0 @@ -#ifndef _PYZMQ_CONSTANT_DEFS -#define _PYZMQ_CONSTANT_DEFS - -#define _PYZMQ_UNDEFINED (-9999) -#ifndef ZMQ_VERSION - #define ZMQ_VERSION (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_VERSION_MAJOR - #define ZMQ_VERSION_MAJOR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_VERSION_MINOR - #define ZMQ_VERSION_MINOR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_VERSION_PATCH - #define ZMQ_VERSION_PATCH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_NOBLOCK - #define ZMQ_NOBLOCK (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DONTWAIT - #define ZMQ_DONTWAIT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLIN - #define ZMQ_POLLIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLOUT - #define ZMQ_POLLOUT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLERR - #define ZMQ_POLLERR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDMORE - #define ZMQ_SNDMORE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_STREAMER - #define ZMQ_STREAMER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_FORWARDER - #define ZMQ_FORWARDER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_QUEUE - #define ZMQ_QUEUE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IO_THREADS_DFLT - #define ZMQ_IO_THREADS_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MAX_SOCKETS_DFLT - #define ZMQ_MAX_SOCKETS_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_POLLITEMS_DFLT - #define ZMQ_POLLITEMS_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_PRIORITY_DFLT - #define ZMQ_THREAD_PRIORITY_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_SCHED_POLICY_DFLT - #define ZMQ_THREAD_SCHED_POLICY_DFLT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PAIR - #define ZMQ_PAIR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PUB - #define ZMQ_PUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SUB - #define ZMQ_SUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REQ - #define ZMQ_REQ (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REP - #define ZMQ_REP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DEALER - #define ZMQ_DEALER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER - #define ZMQ_ROUTER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XREQ - #define ZMQ_XREQ (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XREP - #define ZMQ_XREP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PULL - #define ZMQ_PULL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PUSH - #define ZMQ_PUSH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XPUB - #define ZMQ_XPUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XSUB - #define ZMQ_XSUB (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_UPSTREAM - #define ZMQ_UPSTREAM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DOWNSTREAM - #define ZMQ_DOWNSTREAM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_STREAM - #define ZMQ_STREAM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CONNECTED - #define ZMQ_EVENT_CONNECTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CONNECT_DELAYED - #define ZMQ_EVENT_CONNECT_DELAYED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CONNECT_RETRIED - #define ZMQ_EVENT_CONNECT_RETRIED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_LISTENING - #define ZMQ_EVENT_LISTENING (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_BIND_FAILED - #define ZMQ_EVENT_BIND_FAILED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_ACCEPTED - #define ZMQ_EVENT_ACCEPTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_ACCEPT_FAILED - #define ZMQ_EVENT_ACCEPT_FAILED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CLOSED - #define ZMQ_EVENT_CLOSED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_CLOSE_FAILED - #define ZMQ_EVENT_CLOSE_FAILED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_DISCONNECTED - #define ZMQ_EVENT_DISCONNECTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_ALL - #define ZMQ_EVENT_ALL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENT_MONITOR_STOPPED - #define ZMQ_EVENT_MONITOR_STOPPED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_NULL - #define ZMQ_NULL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN - #define ZMQ_PLAIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE - #define ZMQ_CURVE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI - #define ZMQ_GSSAPI (_PYZMQ_UNDEFINED) -#endif - -#ifndef EAGAIN - #define EAGAIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef EINVAL - #define EINVAL (_PYZMQ_UNDEFINED) -#endif - -#ifndef EFAULT - #define EFAULT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOMEM - #define ENOMEM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENODEV - #define ENODEV (_PYZMQ_UNDEFINED) -#endif - -#ifndef EMSGSIZE - #define EMSGSIZE (_PYZMQ_UNDEFINED) -#endif - -#ifndef EAFNOSUPPORT - #define EAFNOSUPPORT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENETUNREACH - #define ENETUNREACH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ECONNABORTED - #define ECONNABORTED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ECONNRESET - #define ECONNRESET (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOTCONN - #define ENOTCONN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ETIMEDOUT - #define ETIMEDOUT (_PYZMQ_UNDEFINED) -#endif - -#ifndef EHOSTUNREACH - #define EHOSTUNREACH (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENETRESET - #define ENETRESET (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_HAUSNUMERO - #define ZMQ_HAUSNUMERO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOTSUP - #define ENOTSUP (_PYZMQ_UNDEFINED) -#endif - -#ifndef EPROTONOSUPPORT - #define EPROTONOSUPPORT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOBUFS - #define ENOBUFS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENETDOWN - #define ENETDOWN (_PYZMQ_UNDEFINED) -#endif - -#ifndef EADDRINUSE - #define EADDRINUSE (_PYZMQ_UNDEFINED) -#endif - -#ifndef EADDRNOTAVAIL - #define EADDRNOTAVAIL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ECONNREFUSED - #define ECONNREFUSED (_PYZMQ_UNDEFINED) -#endif - -#ifndef EINPROGRESS - #define EINPROGRESS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOTSOCK - #define ENOTSOCK (_PYZMQ_UNDEFINED) -#endif - -#ifndef EFSM - #define EFSM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ENOCOMPATPROTO - #define ENOCOMPATPROTO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ETERM - #define ETERM (_PYZMQ_UNDEFINED) -#endif - -#ifndef EMTHREAD - #define EMTHREAD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IO_THREADS - #define ZMQ_IO_THREADS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MAX_SOCKETS - #define ZMQ_MAX_SOCKETS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SOCKET_LIMIT - #define ZMQ_SOCKET_LIMIT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_PRIORITY - #define ZMQ_THREAD_PRIORITY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_THREAD_SCHED_POLICY - #define ZMQ_THREAD_SCHED_POLICY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IDENTITY - #define ZMQ_IDENTITY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SUBSCRIBE - #define ZMQ_SUBSCRIBE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_UNSUBSCRIBE - #define ZMQ_UNSUBSCRIBE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_LAST_ENDPOINT - #define ZMQ_LAST_ENDPOINT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_ACCEPT_FILTER - #define ZMQ_TCP_ACCEPT_FILTER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN_USERNAME - #define ZMQ_PLAIN_USERNAME (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN_PASSWORD - #define ZMQ_PLAIN_PASSWORD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_PUBLICKEY - #define ZMQ_CURVE_PUBLICKEY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_SECRETKEY - #define ZMQ_CURVE_SECRETKEY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_SERVERKEY - #define ZMQ_CURVE_SERVERKEY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ZAP_DOMAIN - #define ZMQ_ZAP_DOMAIN (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CONNECT_RID - #define ZMQ_CONNECT_RID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_PRINCIPAL - #define ZMQ_GSSAPI_PRINCIPAL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_SERVICE_PRINCIPAL - #define ZMQ_GSSAPI_SERVICE_PRINCIPAL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SOCKS_PROXY - #define ZMQ_SOCKS_PROXY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_FD - #define ZMQ_FD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IDENTITY_FD - #define ZMQ_IDENTITY_FD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECONNECT_IVL_MAX - #define ZMQ_RECONNECT_IVL_MAX (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDTIMEO - #define ZMQ_SNDTIMEO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVTIMEO - #define ZMQ_RCVTIMEO (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDHWM - #define ZMQ_SNDHWM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVHWM - #define ZMQ_RCVHWM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MULTICAST_HOPS - #define ZMQ_MULTICAST_HOPS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPV4ONLY - #define ZMQ_IPV4ONLY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_BEHAVIOR - #define ZMQ_ROUTER_BEHAVIOR (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE - #define ZMQ_TCP_KEEPALIVE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE_CNT - #define ZMQ_TCP_KEEPALIVE_CNT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE_IDLE - #define ZMQ_TCP_KEEPALIVE_IDLE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TCP_KEEPALIVE_INTVL - #define ZMQ_TCP_KEEPALIVE_INTVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_DELAY_ATTACH_ON_CONNECT - #define ZMQ_DELAY_ATTACH_ON_CONNECT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XPUB_VERBOSE - #define ZMQ_XPUB_VERBOSE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_EVENTS - #define ZMQ_EVENTS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TYPE - #define ZMQ_TYPE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_LINGER - #define ZMQ_LINGER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECONNECT_IVL - #define ZMQ_RECONNECT_IVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_BACKLOG - #define ZMQ_BACKLOG (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_MANDATORY - #define ZMQ_ROUTER_MANDATORY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_FAIL_UNROUTABLE - #define ZMQ_FAIL_UNROUTABLE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_RAW - #define ZMQ_ROUTER_RAW (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IMMEDIATE - #define ZMQ_IMMEDIATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPV6 - #define ZMQ_IPV6 (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MECHANISM - #define ZMQ_MECHANISM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PLAIN_SERVER - #define ZMQ_PLAIN_SERVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CURVE_SERVER - #define ZMQ_CURVE_SERVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_PROBE_ROUTER - #define ZMQ_PROBE_ROUTER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REQ_RELAXED - #define ZMQ_REQ_RELAXED (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_REQ_CORRELATE - #define ZMQ_REQ_CORRELATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_CONFLATE - #define ZMQ_CONFLATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_ROUTER_HANDOVER - #define ZMQ_ROUTER_HANDOVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_TOS - #define ZMQ_TOS (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPC_FILTER_PID - #define ZMQ_IPC_FILTER_PID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPC_FILTER_UID - #define ZMQ_IPC_FILTER_UID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_IPC_FILTER_GID - #define ZMQ_IPC_FILTER_GID (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_SERVER - #define ZMQ_GSSAPI_SERVER (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_GSSAPI_PLAINTEXT - #define ZMQ_GSSAPI_PLAINTEXT (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_HANDSHAKE_IVL - #define ZMQ_HANDSHAKE_IVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_XPUB_NODROP - #define ZMQ_XPUB_NODROP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_AFFINITY - #define ZMQ_AFFINITY (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MAXMSGSIZE - #define ZMQ_MAXMSGSIZE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_HWM - #define ZMQ_HWM (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SWAP - #define ZMQ_SWAP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MCAST_LOOP - #define ZMQ_MCAST_LOOP (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECOVERY_IVL_MSEC - #define ZMQ_RECOVERY_IVL_MSEC (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RATE - #define ZMQ_RATE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RECOVERY_IVL - #define ZMQ_RECOVERY_IVL (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SNDBUF - #define ZMQ_SNDBUF (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVBUF - #define ZMQ_RCVBUF (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_RCVMORE - #define ZMQ_RCVMORE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_MORE - #define ZMQ_MORE (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SRCFD - #define ZMQ_SRCFD (_PYZMQ_UNDEFINED) -#endif - -#ifndef ZMQ_SHARED - #define ZMQ_SHARED (_PYZMQ_UNDEFINED) -#endif - - -#endif // ifndef _PYZMQ_CONSTANT_DEFS diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/base.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/base.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/base.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/base.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/certs.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/certs.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/certs.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/certs.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/ioloop.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/ioloop.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/ioloop.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/thread.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/thread.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/auth/thread.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/auth/thread.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_cdefs.h b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_cdefs.h similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_cdefs.h rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_cdefs.h diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_cffi.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_cffi.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_cffi.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_cffi.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_poll.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_poll.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_poll.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_verify.c b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_verify.c similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/_verify.c rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/_verify.c diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/constants.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/constants.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/constants.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/context.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/context.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/context.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/context.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/devices.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/devices.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/devices.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/devices.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/error.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/error.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/error.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/error.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/message.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/message.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/message.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/message.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/socket.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/socket.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/socket.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/utils.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/utils.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cffi/utils.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cffi/utils.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/checkrc.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/checkrc.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/checkrc.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/checkrc.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/context.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/context.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/context.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/context.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/libzmq.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/libzmq.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/libzmq.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/libzmq.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/message.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/message.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/message.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/message.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/socket.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/socket.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/socket.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/socket.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/utils.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/utils.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/utils.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython/utils.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/checkrc.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/checkrc.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/checkrc.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/checkrc.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/context.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/context.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/context.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/context.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/libzmq.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/libzmq.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/libzmq.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/libzmq.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/message.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/message.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/message.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/message.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/socket.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/socket.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/socket.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/socket.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/utils.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/utils.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/utils.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/cython_orig/utils.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/select.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/select.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/select.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/backend/select.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/basedevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/basedevice.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/basedevice.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/basedevice.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueue.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/monitoredqueue.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueue.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/monitoredqueue.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueue.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/monitoredqueue.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueue.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/monitoredqueue.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueuedevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/monitoredqueuedevice.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueuedevice.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/monitoredqueuedevice.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/proxydevice.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/proxydevice.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/proxydevice.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/devices/proxydevice.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/error.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/error.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/error.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/error.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/ioloop.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/ioloop.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/ioloop.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/concurrent.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/concurrent.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/concurrent.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/concurrent.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/ioloop.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/ioloop.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/ioloop.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/log.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/log.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/log.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/log.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/auto.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/auto.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/auto.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/auto.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/common.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/common.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/common.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/common.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/interface.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/interface.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/interface.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/interface.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/posix.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/posix.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/posix.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/posix.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/windows.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/windows.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/platform/windows.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/platform/windows.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/stack_context.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/stack_context.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/stack_context.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/stack_context.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/util.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/util.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/minitornado/util.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/minitornado/util.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/zmqstream.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/eventloop/zmqstream.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/eventloop/zmqstream.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/core.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/core.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/core.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/core.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/device.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/device.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/device.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/device.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/eventloop/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/eventloop/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/eventloop/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/eventloop/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/eventloop/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/eventloop/ioloop.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/eventloop/ioloop.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/eventloop/ioloop.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/eventloop/zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/eventloop/zmqstream.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/eventloop/zmqstream.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/eventloop/zmqstream.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/poll.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/green/poll.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/green/poll.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/libzmq.so.3 b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/libzmq.so.3 new file mode 100644 index 0000000000000000000000000000000000000000..bbf3903b48f7439cdd8ca0b16a5329bafb494a15 GIT binary patch literal 345808 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⪼(wwM>yJ7n}1^()1mRe_Ngjrs+n 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 literal 0 HcmV?d00001 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/log/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/log/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/log/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/log/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/log/handlers.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/log/handlers.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/log/handlers.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/log/handlers.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/ssh/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/ssh/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/ssh/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/ssh/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/ssh/forward.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/ssh/forward.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/ssh/forward.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/ssh/forward.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/ssh/tunnel.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/ssh/tunnel.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/ssh/tunnel.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/ssh/tunnel.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/attrsettr.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/attrsettr.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/attrsettr.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/attrsettr.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/constants.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/constants.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/constants.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/context.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/context.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/context.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/context.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/frame.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/frame.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/frame.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/frame.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/poll.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/poll.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/poll.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/socket.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/socket.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/socket.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/tracker.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/tracker.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/tracker.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/tracker.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/version.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/version.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/sugar/version.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/sugar/version.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_auth.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_auth.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_auth.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_auth.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_cffi_backend.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_cffi_backend.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_cffi_backend.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_cffi_backend.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_constants.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_constants.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_constants.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_context.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_context.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_context.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_context.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_device.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_device.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_device.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_device.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_error.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_error.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_error.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_error.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_etc.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_etc.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_etc.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_etc.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_imports.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_imports.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_imports.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_imports.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_ioloop.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_ioloop.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_ioloop.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_log.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_log.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_log.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_log.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_message.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_message.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_message.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_message.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_monitor.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_monitor.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_monitor.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_monitor.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_monqueue.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_monqueue.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_monqueue.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_monqueue.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_multipart.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_multipart.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_multipart.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_multipart.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_pair.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_pair.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_pair.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_pair.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_poll.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_poll.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_poll.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_pubsub.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_pubsub.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_pubsub.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_pubsub.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_reqrep.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_reqrep.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_reqrep.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_reqrep.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_security.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_security.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_security.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_security.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_socket.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_socket.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_socket.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_stopwatch.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_stopwatch.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_stopwatch.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_stopwatch.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_version.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_version.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_version.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_version.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_win32_shim.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_win32_shim.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_win32_shim.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_win32_shim.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_z85.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_z85.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_z85.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_z85.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_zmqstream.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_zmqstream.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/tests/test_zmqstream.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/tests/test_zmqstream.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/__init__.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/__init__.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/__init__.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/buffers.pxd b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/buffers.pxd similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/buffers.pxd rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/buffers.pxd diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/compiler.json b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/compiler.json similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/compiler.json rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/compiler.json diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/config.json b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/config.json similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/fedora18/64bit/zmq/utils/config.json rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/config.json diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/constant_names.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/constant_names.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/constant_names.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/constant_names.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/garbage.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/garbage.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/garbage.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/garbage.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/getpid_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/getpid_compat.h similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/getpid_compat.h rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/getpid_compat.h diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/interop.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/interop.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/interop.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/interop.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/ipcmaxlen.h b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/ipcmaxlen.h similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/ipcmaxlen.h rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/ipcmaxlen.h diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/jsonapi.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/jsonapi.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/jsonapi.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/jsonapi.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/monitor.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/monitor.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/monitor.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/monitor.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/pyversion_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/pyversion_compat.h similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/pyversion_compat.h rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/pyversion_compat.h diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/sixcerpt.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/sixcerpt.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/sixcerpt.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/sixcerpt.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/strtypes.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/strtypes.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/strtypes.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/strtypes.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/win32.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/win32.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/win32.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/win32.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/z85.py b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/z85.py similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/z85.py rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/z85.py diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/zmq_compat.h b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/zmq_compat.h similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/zmq_compat.h rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/zmq_compat.h diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/zmq_constants.h b/scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/zmq_constants.h similarity index 100% rename from scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/zmq_constants.h rename to scripts/external_libs/pyzmq-14.5.0/python3/ucs4/64bit/zmq/utils/zmq_constants.h -- 2.16.6

g3M486qQtwYdg;P?zz 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/message.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/message.cpython-34m.so deleted file mode 100644 index d7f21128a7347cf188c443efb70b42eb9b58ed6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51204 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 Ih{NCi0fp5b0RR91 diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/socket.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/socket.cpython-34m.so deleted file mode 100644 index f524bd39b225f93bf7f77a18450e9544271f7dc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90224 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 JCNGa3{|g6(|LFh# diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/utils.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/backend/cython/utils.cpython-34m.so deleted file mode 100644 index 2834d64592aad3f8f837d94279a1dced17babd02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24532 zcmeHve|%KcweJp%5HV$fjY=(7=hgthLP#(wzuJZ$37`aGAi&kqA!G(7CBMv^fyBqp z&Wz>sFp@TEeZ5xcN1w%(-qM1Wf_@r)lz^9NKv3G!Hq~fn2wH3@L@t{5{qDWbnaL2^ z-uM1^?~fkXS!eCN_S$Q&wf5d??{ns?FP>A9mX;>$>l5M=g4m85geU|&_<$-Y6mD^i z$Q3t>Ps?(fp0MX$m98O@B~*DC?saM#EX20!gczvH2LKL7nVmX;GqF5frxSp7%E3L8 zU3T9)h8O4+S91Mqlzswf=G+SL(XF$)1M7aWX!?8ie7wCf>+Q84x4p})d9oTIK8Ga5by;=S@WFwx)q+O0RmuigSE?ijUJ5^H&uBSG&lH) z8yo8zQ3~iOsc)>UG&C}=sw&vn=<{lHzR#F%G*(Ma^Ok+ZS7mr+`i!ZD;Z*h+ReteM z?SqiFzF~DGFnOozm-~?2=mVx}Pp_=0DbeybmNeGa&hR0pz6unj_1<8OkNjs;S5Y1U z&s^VX+|I6TsE0NbP=s@Qt9&(zD+t&zRhry2iW7;3MRF~9#60FRk8zfpgG;Z zw90@_i%9(lPg(Ni$27|pxTCpD*gzo@dYuDA)vv}VH>Nb1kj zI`4dXx#JnrVGqMM9vRvlrh2`~7m%gZ3SCm1D>O30M{R-5R?+M_44S&DYELmph~TJ4 zs>S1JXm0YpUC;o@FqRug;5s+HCkSiXAm*koD8ZRnb1m3zGOuZEUP;wp)_Qm>rlOTxRG|>RHejv?ZnBC6zS+8&7J1R1Wv4fxhOg zsa}Ro<^}5W?hv?dFyzQ5o=?1rcXtVo&s%9!Vh&yw2&mZ^S#@5KGp~I1%-M6t<>iT) zb7oJQ?irs~07n16UG}n=hFwSEANL?>Vhh$Vu3NkUw^m=vX#XYT@yag4ng}>d!@@-h zpP*rphBX>CX}DX%6B=IDFn6)4KSsks4JT+gMZ*~yF4fShp`l@uhMP3ptl^UyZq;yy zhPyO8sNrD^Pic5s!?PNm(@^}Ik~dw$Yz>ELn5*F!4X0>Wq+ywc3pDg<=-04G!!;Ui z*04pxtr|Y7;Vun#Yj{}0qZ*#puv5cx8lKlM9kB-OnW5n@4TozuM#Fp!i!_{};RX%E z8gACGMZ-rmd{V=$8a}Jxb`3AXp9V74x({#=;vYf?mO%&)%p}Z&UlI<19}*&%8b*kq zZaCq;3gIS1Je5O;&0Q{G0rnY$*nQ>`PQ)IaaEcHU2tSW~C*d?9iU?;3F@vyNhy{Ry zFjy87A~yRHA%e4|gcuWELTrTngpjv}5c~E9LhRiQ!cPj(MCcM?4Iu{C2Ew62gb5L7 zZX*1Y5St0H32!09S;C`)Hwp0s;V>bdB>c1xTM2I#;#tDaAf_bz7a_J2-hy)o!dr#d zMd%h{H{oqUyhNCTn3Qk?&M62-BIYCCLN8>Dk@OB|i5sne!G~rmBI}qjx z(M32;h!|nM5N8R;Bc>(9w0EAc5a%3(cL{Ns@NU={x*aqDb|#zzI}=WZoe94HI}>8_ zn@v~*I}=WYoe8JI&V(~yXToCGnXm+QCPaLlPY62}63&L53GacO3GWr6!hC0b=xlln zl86U39$15>tk#!$dwV0tjca0c$c@d0nPXx2%;E=*9O&H%O!Phj6U(dj891Zx^FH2* zYQ4|EsKU?Uc!$J!lHzA(yiMXTp78Tee22uj6Y;x=ZGIKS{OCGM7Z5ph59EQv$8 z!rwq#NSv(wO~lWAjEraI5Z^$&Q{rsOzlnH<#1{~6A>Jl&Htm0c_zsDGiTGCHTP41f z_%`A#6893{L41S6DVl#b@dk<45N{*CRN@rXf0%fg#0}yd#ET?O(fy~0=SzGI@lN7y ziEkhtBc3JkF!6K5g~T@z?;(EfBldqYajcf;zrP`w@Q2~@m%695`UI>KJg6_-$r}_@dk-+CtgH+sl;~>pGCY(;=72K5igSXZsLoH z=S%!0;!BCUCEiBdPdrQF2Z=Wj7ZRsx{Y}KrU1tA}65l|)Q{q&$e-rTziJu_eLcC4l zRK5QR;yWaMn)p`YTP5B}d>io=iFXm-L41S6X&V1-;tdi%OT3NvQi;=4{=>w}Bz~TF z2k|1{81D<`$9{;sjRzjVJQF&bwP9})78Vg)VugCpp-7uCBpT{~tW75*xPe5gnmYe-TI zl1Q6*$f&c5(k~RD=56M=*wgInjiEDXk>lo#!I!Ls>1OeHvoNQ(e3(^yzWWDOQKmT~ zCo39Sa{=0!kwYva8ajMYV(C`sAQ=cYaN@skH!u`SLn{M~J3@zhR(l3xtNjjS@8^(;W$Y_ZgBlUcpZOuxL#h|v02aaG7w`R|Z95Gzxf}C`; z-Fr;wOrx=8h|+yFx(lnDobMN6!gpK2jM(=igH2>ml5Vxo(Idx$)zRX!vR}pL0Met- z0QzH4rvt5p889@oGtd|c>%`W{UbdHHkTp7M4zyHdOI3!}SowP-Q{8FVO3H(7`oe{x ziXvm+g_6r@K?_}twOpc6T;czL&UXJs`IWTyEOW_ubM57V-q?94XybvC6DX+}>@kZw zUEvSG(F#2QCo8yMR-9&oH=@DzVvZaUX$#&P={2si1}S3{3f)Jf{>|c3v2D~v#cADuReDN#(zmHJtGKfr9)i&(p#DsA zj~kW^RbS?Jd)%80bBpP=n+o=X~Jtt>|+D|8eMgNt+tx?pb$XL$2a_fMgq zVbRbaHCnQxp>OF?6b(JC?l6|l_ZdsnC8bfS+JNcFv70fd;6l6^Z7K5=T!4+_5Yvtx zeF;$<`+H2!80YCPhu}sS@v-et*Tw@;1Y%ZM5vPY^Y$bG-{3cj4vpAj2%(C{LLdN7l zt}Rg%Q~yrKFfxx@7K_bxT`$X;mc=nJEz24jy5wCyX5Xa&(d_bx9cweKR>^t5p`vU7 zXS~Vm>Fa2#MCi=;?vt_i(R(;-XEaoXzH<0kq1}{8x=I^drTd_^W+)#N1-)iPms#3L zpZ_XKt%@$Iv=bbjiqAzgM_Rfe23Rkdws&u&V>|j$^C`!d*$x$PQhfv-w(&qcLOyHS zg6GloBIAqZ#|3TXoA5i+0JAAMv2w_Y5rgGos(HvUORz98oRY^~pLRB^KBs*Bwh5Iq=kMXWGO(X-|crgEbF)*|X$;oFDB~s{5GKmsOle zPQ^C&*D;ZCPM`nv9xd>3sY_?C8qb&<84>?_Qg(px- z+mBq~NkD1H>*zmgJ0rcW2qyw4%nC^(A901hiH^Vr;1292<2u{qUDD+DGpDq3a%P8X zOAjj3tP-I$z1N{SqgpbsHXi)D25SZg{in}r?bnvQgI0Umb-Y|YoKiq2?ykJ*rJW?|gR zfRDZnZ;MBJ7jzN4|mbSp~*Z&|L$B`(rsG9D@) z7C#G&hR0ZoJuiLJ6+T6Z($4k}bx{NX+Cyvxwh^XkDg&Km_x=NviTEjWHkb1xoKi+5 zv88|I#4t4@G~$jvE_=(Y?RKfZB5i{=VDK?xg2LLjrZ# zLTohFJ{TcLtvRE2k7K^>eY$!Vs_&@j-fs<58ESeRm=rKc=6m*muKP(Vw3S`B6uTel zkkUtr(Lyw|i(^}^Waof$o>lDBY`Yzqdwy;U8ZT!RxuHm2pK_I^vHYm@>HWV@G zVU^FqY;lX$T<>uit=!7UBq@%w_1b{85QqHM3dPuWIosDD4>tQ{G<3$1bC;G=Q49t} z_YYeV_Q!eCD2~3;nCeCL>n;Cq#PZ z!PP0oN+y@2fi_7ANL()#cTHk^dxT6wcdIgNK5}VD154No!<3-esGUJ(hgDm#L8uNq zL%K4SYkSIjT6WfDh9yVoBP3~$WP{PFfl#N#Fgk*1Z3>{ZlU|9%^cJj~)?*~1A)}%3 zkR|pO7hXwkr771)gKJDp$NYp1L`(S!v(<=9w})~U88jTS16k_9!Y}0RmBJB$ksT>pBqP@*s@d8*Y!JlU$-j}_ z;KKNI^nz7l!@BE*D{_bwC7F@77FU?-JUXHlU~tAH0d-N49DQK>tM?(uAZ)HCV8NXb zI+SgF0V_>-59)1LH&g_-Z&;Tlg3n!1Zz#mE>je)-L$s$E+5utPL)-CJnl`ivcNH+L zGV&9++rxtRP|V4YS5=c)isErl#JSBy3nqHuqwvA1L<-k9lL9V1peyoN?smKlPhUnMK>&|7@H5hBhhk!rXC}y zYe?OCN_CwhTFT0nuhn$m|@7xBO1GlCDtFtdlgmQfT&R8m={JARtUrGzq;N z)&j&@HT4up{TBXOJ3CQm$(^7j12?#RAdy?>`WM-H=)97Z6EC!l81t->6*@hq?$Tqw)%A*$)X27WQm3g> z-~N9swLSlX5iLOw`+ZzVJxfWAb}@lqym4>#Hr6D>JDZ+CMa=Pi9J@VK2r6FCSqA5f zYozvFn|{cdZ)X^s&<2}~?NxSZcZGj}u-9sp;YCqqXh0gmw$=_%^0qA9YCU1!LqQpk z2y6Ev&VV_B2Azn)750F);)N*0kC`8?jwW8F@X~A941HWjG7xc@7I8eQ+J`T$@PA28 zlmnb@aX58h7%EP(s1K)Mn$xR&IsHms;Y&Ky62>Q4WJCl;HG`6p?ihq!lO; z!RidAIn`NN)JMe6X%S2N%CwqjLW`1dC>_n)BZK^+p-vhE%CC^#L=!#Xw8hcc*F-;; z{)ox4FZ0<%`(b`gGw=DMt?LShxjiu@*H69@4NHD_bs?|y%wXc$; z?W?;fdl?+{pw2`X*|#r$(c|YuOczOtItDa$(b2{!w5~MYLymnk|6|SJKax2Fr#peM z3IyVLFyrzTy>1p^$feeT?1qt{l(dr?J@Sn&(+6m+3u;dOv2pFiMB{Ww_dyl@w?MM8AHhM@H>?AG|Ke)uc9I@riD4wXzb58ipKcr5+yvvA`0C_lmbb)LC0KK*Q_k=qSmStd4r@Cd zc|JjTyF+;mW-CyBR*E4b^3_fmV@s3`?8BukrTtqOswrnl80)jD=F$Gjn%M16o$sgC zYL)Q=cD_AjP)7MIlJ>u%g(L(B~hK9p{6kD@xvC$*6uMlWLN^ zSwy1WI%-Ppa)M|fiFW@TqQxX?b%>I772jpaQ#b_CA|_06j3x8>n+r~|sDqfXhp;T;xM~f=kdJbWnes92RLZ{&%o+6= zcj(8su5cyj5Nw@bACiuCBR8?WGZ$YAEVe<`c10cp(*N_=xt&-8cqV0DNSsH>^B=I^ zc%XDR&wuy;-`dMyv+pt9ca?C6_r8VbhAPBUR*Snd{mf|@gPyBDbK1pN<%(xc>PgaI z>pmWJn)hWPCiu|n+R}xgy6?jQ(ahNsU%~Sx3wy#|Yv`eAc;3|J3OBMP`@yy={2GW8 zN2OuDToA3;7LEAX)5pHVzu7rvWGQc8kJ$H4gV|mgm~+98c*$HHS;7cE`>iwr`gynR z=gTDEGoq)I3L=HTU15V#l%!7%L90MF1DzbgLWE;=8Qm<*u%=~f%W#GF!MUyS^nxSX z+~#A8CGiZ3yjS+>CiPg3PuuX6Zdw+f&rQNqZ^>qG{6v|1Wj+1e?Rx8;EJQ)(Jz3UG zW|YF=`J8J@42ILs=pJJx^rl;|_4YFg5~cKbq$ghs80rdtKzk>Yxu2+W?i_xGXhiA| zx_J+pQ`-`G@*b5c#R2|Fl@FaAh8E!Jh&e^oUy=M_0 zAHVry$m1MsGep6;I^I=?EP$XG!hBsp-p6l3nTpr&d@+6_`!P2&zN=6DdC0w5{T!6( zc<(-&KaTet{(mL^R(bIB7`xUkJH7>u+b*5t^ANt^czc94#4U2EOWyT;B;TNvjN_f5 zTHR^-NYSXbWNl0nL#-Fc$Jt&PbvXLH&Usv8G+W9sU#29Ma$_ERZ?zA;^Sk6svW?xx zOz@agmwdQy$@};!R>TRWDv{@yx@0v=5KgKRsJINlHtWZmSmHeCXa*LQk7hM#v*r9%fdmJU$AmSiEO(i^N zxb$lor$^3WW$oT*g|>1dbSd_XJ&Ge0a>>2&*uFpq#vh(yAEnXd6rqe>)<8nog1*X}i#X>f z>EV`~WUQAL)A)EF06z6lrqxiyP1)m#narhUvZ-<=n<{6r-$H8T$T$wbObe$ zFfd+$8P&kxkVu2Zln}`SLz#AiWJaB$!KArF%{4SP9tL({OeyBEt#2ea2fyF{I~6rf z>)o6BQ8=dRSKdr;aYguGGyVYmIjOHoU?n6^X5wD~0sI4&7O`KWzKl^muNSCGJUp72 zi9;(7eBHW9Ei5+$Z?G2Gw!oxh&#_QSgs&bXPqUm6zJw-L^-)OtJY?haj~8J)u!ejd zAN%){Y(Ci5fA?!4T=%nj#&YJWyV+%DmUfVre{>At2@Ek7j{1Ym~^H03AZLQ0| zvyhzFC@9`6!D$U9+}_mKQLiUEd19!82)ZW{Ot*IO$XW+XD>-yj zz?5OxgGRlDGdaz*r5?pNAWgia12rDEM*_}yA&j}7_3-#*Y8DPgKJ>0%t%Ih+PSBJl zU((TU3_6jkvE1yyGyd37EZleyo>+Chpd4WjLoB=s2un#3(sLNl$6ls|mz*zXOM0u! zUdOw?j^{7V($W1>_5K7FCcIgqR;7y0ZZr1l*X1M{{t5V5gLG^Bd9hj{2L(+htlh(G zwTh|f^v|)Q+WTCQAHh4Wcp8i2WW`aPdEA1w_N*k60(!8$a?n1A=Gsn3Pu}l}yu(pY z4-)M;kQnw8upe~8VH_mETuIR1w0{Ad;^R=v_c<9)4~NHWJn#`-+z6eWVg)n#3QIpB z^<1e7&b5zH0q_v{yu~a&0XoTC#<&$nolY`nd{a-Z z6-TX!);u}0&dajac9^9nbe!#lk7<`FJ>dk5E_zUXII+XXmXjKcGha49qi0rm#jcq1+*&{^>4#XA##i2oIW{-Ih0iG*KT>d^DPm*tT0_UJhzFvD& z$E(FhLkFj%#JS&w6D8u@1HcfcV!bLp$~U>NSQQ_QKZRWR9unqG)O2F6@jm7N^N>1=*fkP} zbb$xa(aEixYh7U#V2w(qu6GIJ^HFv`X@9} z(SflY4Lx`fzVSZhQ0&FsWT)CssidA904VJFuE!?mC2F;{62|DkR<*EGNWWOtp#jzyt8TOZ|YUH+PEm80TMczq~-3|SJnMTZT>=Zf5*5^y{7(ODnDegF#P%Ovj z(^4t!0ORYpxSKe50MF5trpBLeQ+5rIh~ zyrV@Oe(~-eHKJk^tJKvSZm$m?VL&bXY#H#LayBdkTW`xcLKR-BO-vDNp^vei?r@ zFN&KQ@Nov8*F7Sy;I6yB09Tv5HsS2tR?SNp4LeC{fIr~u!ga96s^vo5UerWtE=&|^q}GP@$(iiGidd1%;m=yU=hV+M7cWv!WysJk6*35{qOr0%;G5+3*`JqiSMlo`?%H6$a4+*g#z1hH%1Y%Tu5J#; z;CWKZRrR$E=(tf0*IT8&nBay>f}#5E0Q@np0QMc__SQqE^fY|Nqss4Y4A!Mo`iI(- zMn&JQ>Mng<tzIyZ#u z^T83cGmd0=s_Fti#;G!Zwlk~}WZmWPi)FsLDt~Qd<4WmIbzV2r#oPSS``r9WM4oJ( za{u%Crw0D1fq!a%8bEj=PvdOJysla5yBG-QMF6{T!u1;Rn;Q7}zxXjA9!E;ZS7Z5Y zs80g&n^1VFP|u%AfJFH51P1>Ff0=EQ zcOjJ^Eks(5v458isc zG!p49q!OfsNXwB{Aw7)rIMQ=STwPRbX!pJ^obJbGrR4gA#SP(3L*=sSnrfrjy{uWq zj=8?P6?yJa)eTjn#<)kx)p*osxm3wNd3ko2Q0evhyptxm)n{$S7UmUPg`mJLq9iMP zb-qS?UkTC6{S)qV>u>!?fv|GQ(2C1$-t>y{g~jdwzkdbk6783(NIIaKb?3fi{x5f7 zUOs}pdKG3Z^ZDvfTDKDGFe5cm2I{@l!CJNAUPVf$8~IluKsQv8EH9VgXh7bNRhPWa zZ3r%_sjeDB(Gjwac29B}tLvd%gwOI5XQ~P#j|G08TT#0!5gy>*sE2ovq-l6IcY3~3D~#8j4JVJaWiuW#sEy}sdU zwWZ6EO|m-@Pj*S-2K+FnKe^_v!8iN3J9TPH3V2JM{ED9p{;R7R>!HQ^I&T00GCrE+ zUbYB(o%IX-V{Par=-{9IjE2ia_3KJ(>3Pud$NTGSO%`K9WI>r3kOO{|Ya z-!l3~t{wRP&Odq`XP=AI`nwc; ze*^frLiK&ePT*I&E<={01w!DLR_dZcptCyUF&>atTAD~lUK8^0$se7EwvhKY@^IFn z^U_2n@}5RsMp9lD^1g>W#uf4czij0F1bK`>?7U&f`zi90+Z~R)eaK@>W7D~j*MYnt zNqITQ`yKM|o{GBAMlSN+K_1SeoxEp}7e`*QEMt&&9(l?A$VZ;2KwRY1#W#MCHvxIc zbtfQiI`SAR$qVgHL0(A;T@mu`Ltb(lGmv*b@{)Bm3wg_sm#mjL$XkIt#~si{8S*wD zFIiU$koWaI{P;~FA-;(`gdL82_U%6cd+A4b08JgXfzLIwfxER%7ovUOEqACsv;j}O zW=@|z$(@U@JdehzT$p#adwhPu`20Hx?r`UpWA&OJe({b z@~8{u@s!Ftw%RKsh8fr|^1RJ;f#zBT@ljA&Vy`gChzDg@E=aF#8fpxY$CE9QXZV`% zSAO6$ud!Z!WG~O>_blh;k)C5?iKd$d$bAPB_amgc0m-IYj(f@q@#TJpdmi@9zDUQb z63M1J2O6d}yHS*pj;SVzj^A5n>M1~`zNkB1jYu{>?ys1J%M$g+ZnsI(jR!mk8m4@^ z5P7^MpA8yPFX!)7DTz$dp-6mP(@D|GfFL<@2~fMvHWe@osjC#1YPk=Sq2@%wyCb8v58q+{BRWYck9%G6^M zX&Tb)OQK^Oz_cMrF>aLeYDZ!=+ik--$P~l9eUTThqeyHwp9n6}ja9euFU#yCZK2EF L1Kr6KI->s@*ybE& diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueue.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/devices/monitoredqueue.cpython-34m.so deleted file mode 100644 index 049ee6902ea4ca1cd322924e5fa53fb25fea9deb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33368 zcmeHwe|%KcweJZ=j2M|nQ^iVk>n66sYUX>-?jHSGa2yS z_wMK3_x^G6*;#w-z4qE`ueJ6*d#`im%mcm!RXW4Y0mkE5guz8qjmi#zzL{xQa^Ae)@SQ<7|=-t z$TK;0xBM<#5A?K8di#9To`p1bVYM;tHxJJ>|MZ;MeeaJ?t-U1l_SU+e>|@<+NR)-` z+ShH$GP*0zW!W7_cO$)Smc@4d+uyIA?R)Lm_Ax(usqenqC;TM-{@8(6-@|A|eta@` zRW=Ubn<?`H7(O$NX58T`_k!;*$E5y|;@ zkr{9hK9_gr9%uz`YjpsKgp>7MOu5x^VPKeiGL+S--8+W>lysNk=CC5Z^)4Ut&H|XY4q$* z9Fq_qw!bQa{@OHp*58?iv;CqByeADO{g*Q2eLjPKB%}UdM!hcsKLDQ2hy0(*=xv27Pe`eSQZ0A2a&jnbH1O1|CTpFZF*< zM*TFDIUmaV&l&aiJC%T}|7k}5^D^Z9eMbFfGx*KSz(34r|ErAtp3bO$C_^7V%joYr z8T>CyKe={~Hypo{-&@|x$5SnU-s99Yv%gHGsEFl6!=zYztqYgYVWO~Jb6dVfuMYjdMpIKQ!_8ADe9L^m(42{pB#MR=L+#_98OM#$)ZALz5OHfOn(MX9bAolGAgEdBUy1C9P8Hz-{|bMDQl93fh|&k+YOJC* zTo-^9ly+w~_-i@d1+b9rfJ(>EU4B)O7U)lPt}QgXwxNM$teG9~*WJ6w4^4((m<7Sc zpfjGut6=g*B|#?T3coObampi2bu?)WbptWVTWcGgzQnAvVAh&>{#I6|+rZV`Y+6ML zSK)7juR*ltI#3g8D9|>ZSzoWJP^2{v!%%M51s$Et@zXs)=M>DRt2d2sSEnjf=!j5L)3T}! z@{896Lp6=H!KNB2q^91#B3K8pPam9?5kpimrh6(1IsIHIl?zp>DJs5 z=1Mw&WJD7b znIGabgwYh-ylDR1`3ol%7aMaI%%3&8W^!>U7&-Y8b+P#` z`JZ+%{x9L@FiG1K;6O6+Z zXnaMDBU{6K4aaL(s9}+YGc+vIuu{V+4eK=wXxOIVY7HOMutUR58gABbyM{Y7JfPu0 z4UcHpui>DE$2H7et;Un1;dl)vXjr6SiH2nw&e5<+!`n3sXxO0PY7N(E*rDMD4L57J zMZ+B$?$+?2hP@j0Yj{+{;~EZWn1ekj{VZ3*2^xAeJc;=+n$!6{z;m#FB^-k`gy*3h zA-1P^gqVE!gkH=m!UDup2(K^&%vJjc0w!*cM)Q9y@U{Z>3TxU^#CCT*g%LCp@k4~hY7JF zv=L$tznaiv80!cxFpMZ64o>ZapD>IE39&!#Ap9iG&xAN+JVJPpVLV1S9%ll=iw$El z;iquUC%nWkwh~S-jBSLUHjM3rmm0gk`WZ;Y`?>a2D)L=!2aJ%VB52 zxv(?gJlL6VKI}~RMcA2e0qjgzfjAT4LY$olZ#Ild!b;em@D|vga1rcJxES^)tb+Xs zt6_h_TMeVy`rTslSat#74-dx3S#H1c#eKui z@T4~U1GtWShJOGjHv-Hj`_XLp2XJ;H!0KeL;5@tqSePW+;UB;mi~#>7w+Rm88v!rz zO@cEUC?wt?I3|k`fMty2I>A{Lz|1g`ErP?SMxc!N62VCtm`A))a2U}DR1z-}oJ|9_ z6E6`QMl%9Sh9MgUzk3GsD;Zy`RFc#Gg$iI)*y zBKS7q48tZX1>a7*l6aZmJBZ&-yhQNb#Fr5F3f@ILKs-A>J!^KJh%_U4oA%&aiiKo8S|Odx>un+)KQWcn5F@Cm*a+ zw=PaRiTwI~H{5O*=CQnWyH4VQWkl|_O$rw43XhGOz3@>hyC6}I65BL#4I}w8X(GT+UbHW>28pCeMy9XZ!7&$gx%3|Ee~?>=rvhHP|l?CyQbI_$aG z)(n;pyxb8FUt!oYv#nggpH>Qq@5a^Cxh~|}^Rg3DMc@~4v9RaQi@g~3SXBkt(DCpq zYK$69l)_vC$KuJ>^prm`Y&HDaeWY`T?@zP#LUS4ujhZOJXm2VsC=L_8o!sFDHQwIuJYy zf>@WQz00jV%QUj=ildPKEHf+1uI`8B&N4@3*=r749(zr%b&b1)jChyRQoOb`zIC+-^|6YYvaQ(iWRj`XVZz<;+ zCIhA#Jt47kh^n{thcEAeJt!p&avaWq(w^{ju9Jp8VGWJ&PVq;_Z!_u=e-gHlJ#lmQ zF~~(zn|(50$bKSy?;pq@B`^JNHT+=xzVjjM`eR(EKx@VFIk1hqx+k9hixSoo-Jog{ z_oBq=NeQ_&HtdP6M5P^L3wGA-HhO}MAPS~bVlo7@_NE#(rY7f2u|uBdwd64?+b*ku zV_IDG?KQd9>-MZXc+8UNz8p{NGLWqA7C8sSH85WteI&!^UCrN(xfDcZu`T(5?+TqN zSF>L7$yFd!(;EC&d|M46{yaB2mQc_{yr6*_#*t?$-OMS-jhi`t01;+h;+H3ehe4Mk zrd(Z+-IHCwY~n{4uG`R1V3M^62sk6eS@e2h?rmk^mz~ileTDm6_f~Tm z(j=~>LslP!2(B;Y!=O(>j1y(xG0qxHmQ%a#Lj4vDgLxAkA&a#d#*!8AkAE5-P8Ly@ zw0E`j3U>seA^6vRsL3wNP8@{L>-XJ_1D#!2##Q4LXh~l&r`mJ#xLui>XYV=;KGV!Kg!TaOp_;+Phz)aiC!OO_Dz+wa4+WO`Y#*b?PR9Df@ zIr3%N6T6!VT#q7;Cl{ibD=po2N@UpSgZp`xhs6!Vc^AeQ_ao5Jk2L4;r3U zp6!XXQ!xv3?3p=Ra>8rv`PrqzTfA1q(Qu>vj0|e5JyX;*Gf(MbdY0$mN2o6DUNHM1 z(uJ<3Mr!CYu7*b2qm^zv(bZ^cb{APgvNBUIzkz=2wYdWiS=IgUC{D&i1BSxQMVGZF zJRjQ&t1{QxYYjpdiE}YUpas|^OYI=CB2TBbUz_8iIk2MAKIgFUL>FMhrNaZ!#QX2d z434ct!I=$l8CoSd!IyEriR+(vtRb-q`d`0q3}OaY%6xt7p!#U!0_=8pW#jJN_T|9i z?Pm(Hw8c(%qC7#^onBthtB+u3;b}jG-3B&K({f+;Ja`DT@XUwaL0RdG1G&oX*4}9^ zt-Um!J;v(U^WJ6g>~mfjvS;j{zUJryzgu%bd|uYHmmc_S>7i+Bj(WbkH>-D=?}+Ci z3yk8~`|Zfl=_Qc|?3QeEbe4A6&JuKP8}JiAF3|8!mt+=cm^DbKNbk+1((vll9iQt`58+^U?O@lGBq8_gC#mKXox%^wV!w_i=XH z=0O-yJP3<$+-!iSvDxp@%-V|`WxH)orReqy{*UB=N-1m zTqv-Gv`sNG7M8!KH{w)5U-d*EAp>plqhj(qSW?kHJ-65MFprEhc{$2TU$i1e21Z*S zz~1HYDHm9OfxWZ-^2%_0%7+x+iu6Hs)29rrhKYZHg80o@1FzyrgJVWwAy<#R$yeF8 zNRoVjB37dbE=K4q5ANZ4?oien@RYS<w5If0t9!FC1bEy#U~ByX(=nbsWVK{ldAP2~fseioZ%f9pmv!9(N=^O? zC39Bv;oQcoK1Z47%&L^f;7v4K zzpojh{9pBafV)WaY@5jFYfv|`IPd&CZg#lRY#$*_D<}q@>`3Wj{V`rcc%->i-R*zkGX8^vCTGW`j%WAMy*k{nE+@pW8UwGazfcoB-#vGO8MluJ;`Nuzu$6Nm1^h1?{K==M?8aHB8>W5-(IJ6MVx za_>dB<eN$fKF5Yh zoo2v8%8}?*iRT8S(SA>q&ufwW2qPY%b+Ci}W8z<75bYi|3oqn~C$WJGJyDZ_IH3Yh zw2oauqFcDv7|}H!+EfGPDPQ`%wo{c{~I@I-A6SbUtfwMJ_8ZAbzk7zIppzN45!h^skHrJ!@N zrp<+yKPpZ8tf9naJ=LK88REo!u12gOPqc!Bj*7yop}oXp*cNJVEffBdc5czji*W9T zm0mp5O97XC$G6nw#9hoErenHwjJ9+2m#9xiayY%=vW|gAQx}01@KBdBDHnC;w3r-7 z=aSqt0{a?SIz1$JK&5W)9m(5x6>&sc){(r1xFZ~J25a5Mz#j)5SF>6TT;}!X)X-^x zL7>1WdmirEf-tU>ccpkQvQ`WSe&>QyhtxUk%I2TN(rmNau#r$&u^Pru9skhG^rdVGf=6DN{{0ujq}-RCxL1rA}O>N}h&ER|rT zC;B%;7?5=8Uh<#UJLVM{*_vavPYrSHglVy+7_Jm_d?AmdR z_kOP&1D^CX+60^SmOSMcLy52BA}>p0cwV|eFzaJ)Q_BeAra9_i6e)SR1R@S{5Yp~Y z!;=MYIxbUb8UU5G=7`LR-ZZKY;NGrv92yxv*u9h@?D6$eTglrp{1KN>5dO0wyZ{tE zzI3%FV=jNVCj3{?zoY2$$&p*!)93BmDGEpB*ORbQPlaks1sTk5Q-sNR*de41Swvf^ z>c^fYnlqw*09)?Boeja7en*?5dHKWM`E|W9NbbM_a=NJhsCqcV;BPvk#NSWRC%?%U zka8m|`1!7Qn~^QXP@&YX zR;c!sOpxvRNI^Ge6FKiEp5dqI6>rY4_iHBx1~NO1su~ zQzsIGz$kuyz3;c4*!7Urkz*1D566=b0*(UMugA?57$3(#4m@IhMP#*11{fTg@sN%* ze}-~N^MVSkIWCgy z<06DOpm_uo+^B{>YnzXt3#GmO)3o=f=-JbLKW1y?}k`WEQ$@=sL)1^UGT7$rd z24gZCJO(i>^LA;l4*%i1GM!+@#4moWT<93eJ<*#$X`2lhG(XfdgF^GZ46Rqu@FD`O zO|{LfC_rwCZEjJy65Bkia)<$MSGhvlY*)Dg+uW>jUfb+axe2zpLFLBdu8_**+vbBR zmuH)gsT^W@yHyUsu@05XPMoc!JdOfS^j@gher6N$cIQ<7m+&5(c}gKg4i}Wz&vdhC z6+(Lq^;IFf7nV?;7x@WD9~t74E2o~{&?Qz^Bk{(slpcqq_X99Nyt4^m8>|NS&zUZs zoLx{v>I?o&QRfJC4Al0zC@bdab1rsl6>Rh4zREkZOu2>)y z@6k;=ZxCs?bWj>Jryo29sS>89&J*gVg?ho6s4;_#M75^Q7wTrAzT-^P<4Jv`rXDZU zlR%ALl^gdjro}7yjzN}#c(eJWH@h%6SGSgJx5kFS!B7W^m1{LJ9L+uK=by;Y%)%-(*40yWr+ zD0hd$df+fvFa38}ZvlzYVUKKeGFksmm-U5Uot(_srUj3a`>QD%zro>&-{oO=={FQY zpu}bl2Nd2=(95tpqp}@<>Ajr) zf7r{jue!bLcYFEPX}vrJGW4=MHRX1>)RPd$jN40baozbe3b%QZpO%taSn?E0a+2ps z$!wN9$&z!Ee?=@UZhKks1WPVYzMU%h2UYT#lnn9cw3#KJO72UQ@OkhZc;MeiJ|%^m zerjW`ypGCOelQD^$9zj1<4Cj{T)9?tR z^#*T!K9hhW*z+q9TErdE=-1J)eJ*qBkc(IBwyL+`3Ya6$2vlr$Zt4B-5E@l)lbb*{ z@}lAEwuRR6ZMJ>et%|L@Nd7DBNIJV>Yj~99!3pMUyJE97#=g)RH1}p%?(K;vC+z9> zBh+Gjke4s8JJCz$wrTuWb z$=oKHgPz!T5Vx{#%`rd7_C&u48uNp*RdCY$;4I~X<_DvG!k|dp{62K;d3YR~;+z~e ze@NZS8GNdHIp_0DJWj+rpX4>93PFwqcy3R;rsEfwtEODv-e)8Lt5w`QiKg%#PP4?@ zaFF%g9EX1N6nZY7fS{CJKAvK)&9~Nc+Y9roiY|Lat`+aVRn&^?mV0#vtc@FZ-R2ja&v3CH=a=a+v%;Ui#%S7JPwblrI_HTH zVlzmNS$GLK?IJnu^v%tlw#O4Q$)S@)(>Aih@I|&jSkCUm$$5BMuO~KsVJd&)OJert=5}%6lddDMwq)ly-89%Z&vWg<_M~AjpRE-RZ z(dU{;2t>;G5KHg1dbn|Y6rp3gGi`hvz8WJ|r+F`r9N#`rV;7%3EKJ z1PhD-ni|s@pcqr9Gp5e;F|8(TYPC9>V-n|!S09N-`YbUhER*;fZyUo}jZk*#=0$Wf z&MbDE&ST@bc~A67;<)$0x#5diu@>45W9t4Hf{$hXuSQY2w~71u;_-T#HQvD1 z=nujs{*D5cI|3GgPof1KS+RP`6%$f)zJRiBB*tf7;Bh^PZ@~_-|KaHhBp0JuJT`|t z0Gs|2u>y@<15BK@{cMO5k7tVb1 zH^*a}*|K_Dy!!C69^ck11OK1m!nvIkK(N2X|DB+Y1xPB>TP-{TV|h+F;oF(ziH)XS zV&qRJgG>^3kU4}Qv}4TBUV9}9PWYb63csXmXU9cwng!1uEz(qc1B)G#xxSJ0uG>P( zP*~#npDS*ogih2X!?0uXsEpVaw6S9gB)?Vim6G2k`6|h8m;CLLmxqXAcS(M?lrNEd zm*hpkF*)?8V`1!ol;;Y~LCNPyzE|@3l0PhY33JE#BtJpQk4WAt`F_cZVPi)nUx;$t z?ZFIyx)V}VB&5eAUn2QI$xo5|ami1W{E*~lNdBbc%Or2$zby+8Ob~mXUh^!6V?Dcp zRL|0^cKkv7r=n?g?i(04e_y=G)BY`#sX47@jYFLcCznehR;L`A(DNcq({`^d^U7S) zn?=9An11}1Hxl=u)_fcDsO=`MVV}W8U3sRu9=KB!jBXWQX#0%v1J?r}7^m7)p2{>>N)^8nAn4ef@}x*Ek{o7@oFH^ek@Mv@+u*I^<1HIi#=_c$1XkzojALX zogi&bnfH~7xo>ZA`?ho0LbJi85YiT{f!KH9UFXob@cY*_%}&(bq2?H}_v zUhNplzm;Ps|5lEn{98GO@^9rBcS&327|OquWBkAI@6B|wn2hWBHoBUxS9!Ubtn~62 zhPGA6l%K2Vs{DMrlq)~qA$jHJYPu>v=XCYNHeykT$Hl+ZCLUrnt%TRpfhYx3vzD-+5CiE=?O*Bo}dJD=X&2@3IUPkR7t>EVyawT)9tO$hOD z{Ul;oi!eh(piiWGIhMr4B1K_MqviG|KM6wa!)5Z>vKqU?(mcz0l#mI!??(2k{Kuuk z{2}M@nyw3U@#jTZn5Ntky!@|VMx4pvUZf_(9w-0>{xK7bo{7M^i^H%_Ueo2L-*_1$6J49EW_KuI_{)BGTN2-mh`o7d?wJ}$Rz|lBjK)VvqT|!4vpQqI#c>ZFQinHS^ywUcg8I*i9_i|nzg zW^Ckgdm)0ucTo@}GQ`0tR`Rx#M|`mIO^2#9?s(uZS|ocj501ZJ>$BNqv)(k`u_gp&p_VctRvh6xP0|G(x>gc ziG0OZTncT?=M;sNqd2YtVcguOj>Cv)@5Yj)j=a}^5QF(2MxY4MvC>Scc$5gQKSgFH#c9(E20%uMED=v1yZu9H3xnT5-yTJr& zg2Q{J=6wvs1K+oXw4bbH5XteA{hk=V%AtHjdC1LN3Vz9@Izz@R#LSYnK`6a?)Wbfi z$?w=?0)2%uOZf|=I|i|xo;*?c-iFN+d-7Wx;|S6{BS`lxzKg!E;Au}Ql2Ow%9g3YuR9p3@gqBpZ??SIsi`*7X# zF1P7MHoZccGR~nyxrK$_#>Cg;x4YyfYyOg|sc~!mi8a4QjRa@T_Ixb@c2?ij(ayr( zL*4!D7aPVyNE?tIMcRb)1d{H;?=pIij5d%_dL*Sh-$IbG#DWsr#5% zDD>U!Gqn5a8QS3pS_^5Uo!lQkL%W;K(5_p3QB4-6wQc$?`x)AfJ*{nc3<6K8U75a5 ze};CiKkw+w8KWo4FFzu5C2c(q%Y&d$HlkH)x-E$^CFlGBtyIW^!H$u$|1EfQ@3w--Q)Cp8pL?wsHK@ysYeql*IA;WyNm&2$}mpSs&QqFvzvt zIeT-(ww~|c|7Ta@zjIb@XI{?u)Pf4+$-zvo>VMoRdxYrsxRBrhQrVE;@%B<&V0idywa>)kva;LV^Vd;U_SXkG5v)Hk^R_&EeTH0~=MK^KFgo}g z^?5FWf>8@Ob5*_(p5u8A-|*{SGGj@2ihZBgyg%QFoW~RVfuEpN^-<4r_*NgQJ<&~2 zpFPVvZGZS$h-UU=TYCro(Y`Nd;3e)!9wGfXw&8iMGSB?&l64=T#R|4)@q*336I?b~ zPiq!|)*LcC4^9I?-rabelCF}mWBwS+O?={+h!)yF#ML*Vb8Bzpf29YK!|%bYJa=SV?W!>>y|f*nGj-t+>%=+~ z;yasfgHOjmCpFtdanMal9z=cHydX%<m3}nD62-5(Gnsh9k$F_l%^ykEsex69%|^3GZGC zHsQ^R!FunCaP86tzjs-4q^TbNTfISf1+2f`EALV?CKgXFDG3!T;0=bnP0e9%tyFrO zijxVAN2bTsLf_NF= zNZx_kkT)FgdsnvNeWb#z$Qwp0yciO#&;oBMHHtD69xfM>JTVv4GSHeHV zhtW>gr_3CZw;_k1KbJ2YDAMF_Yr%V);Z7gHQQ76p!%K~}M!h!In3)nsB)Jkk8xPL}V#t|1R(=%kTwupu;Qsl1yuBz9hmx3v1@ z9j}=l%J;XbnoK`YHPT$x7yc7$X>)Uf!GD6$n;ZOX;?;msHe0!v3?p+!=qg9L+K|c_ zwP7#cof|e>57ah6MPoC{D}tdAmlMk2%wN1ISPuXb*U5r`lSO??D^%WQuwG{~yRK;! zt$oBak}1n+`|;;v4ScMDk2UbI20qrn#~S!p10QSPV-0+)fsZxt->Lz`tcKZv1DRir zBME<}fwAGU@f{?>3pC_!KHy10V>TdOt1b|?f#kQ8_*e~pL+Q__hMR|w=XcJ=<7pX? z8dJdpkK7scK=@V%JZ_C&i@^KF?^8c@R)V-Jp60`EH5vG|CcMWSUxsHsfQKacz4$H= zBW5M<&PSB1c`C{wb2DYbZKdYb=p6TEn|TA}|Hp^FW$1h!$3UJ!dI9NWq&Jb?MLLBv z77s;Uid2kr1JXjIdytxt)*?NG^f=N}NG~A0jPxebyGW;y#$Jf_NX1AuAT30?2dN2Z zEz(0sk0U*W^a9e$NN*y&i*yQUER=gGQZdpENDGnfL25!;i}VoE<48{-y@2#G(wj){ zBAr4Si+e_wA{8UufV2?l9;7CuwMY*kJ&yDg(hEp0BfW|AF4CDk70%BJ-NK(0Qjs@A zaB3NW)IXmTDjqXtW(1+L*3g)1)Mw0Ry%oWxMPCG*)fz;YW^OBEjji;sk)MpiexZAy zFY=~N^axS9NBW{M-ZOvPqy86`UKwnYGrKH?cOW#AFql5 z6sHJho<@SWDuQ;a5cO;fHq^Fy!_5*3WelyQwYhDT=HV^Oqw7;rT$7SQ1w|0@Y~jy;g}h6f!vV%BX%P$(0a3(eEy#}9d-E)om{7^+SiW@RmZTnoPnrG(Lb0wA)vR`*`-T`V$dk-grVnp5xeqQ;Okl6_Xc%lmy-oqN~AWt7vhA(%BdWLCkn%E#^I&x$_RfAx7&eyHetA z-rD+l-k@mqE^TeDt*=9XFJ&$9ch~kQ%jmBEbNo`KRSb=p%khI^M#c}W%`$Y1vdZ7u zh+7^AAR7yt!}wjX20w$@{(ALmZ8zhtMJT)qv1=VQR5w*t)MD<_!woglj4A{rRf{_+ zZc!P;WN`xoA=%ncT`*|ic1x>KuYM`5UIMB$H7fiI5(o%A;0L`3)bN>8hD9!91o4w* z^3z`UH8lP}T8)u%3ue`izv+-E@Q}fu2dh*6Ya0AbjDRvpFNC_Al)hNY_+_hCSH6!0*Tk=AB2@YyTX9!of7Wf@ygHXmi& zr#WR+XmdNtu+7q+EMqI^?m!v$SMovIZ76F%8MZ2J*>;qzL)qnS8NSwpvhSe`+dG$T zH_Eo4%)JVOUl+=Lj50jM#@S$3h!)eSP;pxccyc~Fd$XnO!<-6-S!Q9dZU3vFLQ z8TXb>*%Flf0%hs4)T8Y6jJ5%k9YGoQpHAC@=;LjaaWASqSw=6)-pSxcy}ysL^s&({ zf6FL4g0i#Q)bEZ8KgisGe$Pc&x(@n5H!h=$_PqpU>GCB|b_L3~Uv~H%L)mpGOV`05 z%BG_%U026ZHWOv(G7q8bizve#XZ^`CPNM8)l%?yQK6V?*(q*9!F3l**L0Kcp(q+j- z**cWr=cUvK_RT}tPL!qlWIoFJQC65nHy&jTQpBH8M8D#}1`!veZ zWobd#XENvtQFb-TTpgf~B9u)+8GbrS%baDDpzJ1;rR&eBPKR@6&%WMUh+i7N$~&ca zO7Z8tlS@h`mt0$Vt+#Lyu1)iBgGtJ-DZLJN?}|eKT*h##-6+N#I)CxB{&I^7JRpQ?5gYbt(XKK8{T;MFAd&ke>w~LY}D%$(g65W1{bnC;9P=$&jo zId@8s*p_rWlQQuv>U>Dc&r~FyD@n&QB@@4t>GaETCLa>dq0I9v%EUg>`vq!LA<=J1 z$FnR`7nnKxNY8n9HxlV)A@S_X#4|DJaO@Mlq+5nWSt&YyznF>rIv?`mrxwYfYX=Qe zi&Kd@W|JN3t4=zJ4Kc4ZKCP8db+Jf>i2Ef#hyi-p|d7nXYIcrqndt00j`SEiQiNz&E@FDFrDl7k4=OnR(uDcI( JuVv5?{of&%S#SUV diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/libzmq.so.3 b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/libzmq.so.3 deleted file mode 100644 index 3d94abe0eedae33d942a7e56754aaec22ca37f22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414996 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�}SKxex)9QCxqh7+;pm*EvHqZHQ&0KC>w0O}ycP+kqsXk@zzqdUw z_vyRa?VHm0ESAz|-QGVV|29=;wAh!FF9E&Z>Ss>xQkQq=m7y|kv3H{K4UMwwLRPW7 z=VlWJ_@4ghwe-SC16kSK9_ z$pv$>rQQ+QJAny42R2sj_wJJeW!8=AE3;m{zEHXJ@!f&)mai{3uYVnm^67!%Ed%BI zuI)RiubTdM?c1M4Us(ehmw;gHYfOOl{lBq2C-t?4RT+b|uQ4*^%Qu@y2a0oVbSgZV>yv`T(r5gXd0x%hF>nBhHI61Y38N6Q9BkL=M(KsQ(g z=AYi9?FWlS^=O@7Etq~jcAP={iHZ^yNqlfWSP6#k6k!9{G_FTG4u)Ma4m^d7AVyHCxiAV_+IMKe3<6FeFM*5^wC$qQN{c8C3X1 zdk&ZemVm`z6?h121c&nu_T%7eF!YCtvKov54}dA)klDlsXM!bQNILN){HN3>SOs>1 z&N)3=1iwU?3dVyQ!3=Q7+#anETn1Kx^S za%lBA>UQc0ECsiKq4TLPa1D4IJOPF>iY&Q< ze8IzD8fecZUoa+ze8CK`1}p)a!CJ5j>;fYvD9XOO$QRtRn0&#oydJF>ycw(lW0p}* zU>?{B&iDoO^dm)a<>TMrJTMd74iJT|@;K!KE7$dCE#Q&gP_N+h z^^}hXHgdpLF!o8(;p(Fmi~>8J$9}@&x6;nwUa$ZhwGI2h3a}3BehEKBU-%0B5-bCY z!A5WkxaxPb3z)bae*n9|5Pr|O{Z;A@T(bi|1y8(2yMeCPv767P%-Tu60*l_DAA?(J z$sb(v2mBx1K`#mNwB=wTIN<>G1-AZ) za)Y@Cu^Vgzw}8lB_!T%0>;P~63-xjd^$f;>m0&8k7t95Z zw=zzF!;jG3VC-kKw}iJ*zIa7xIZC;~+3mC^sQewj0(XODp!*p4fyw{GkA**hA74s8 z`xkxyP6ac-wH>qrxczhd5ww3vJ%iO?8#unRM{`c0{l3DFzyn|ssC-R*gH`{gp1|2% z)DxK9P5Xn(-INn7@!efOMu#@)_MS~l_WH9kmx0VAQ;jLMvV9^M-wjEqO(ycXv$)ntw8+7u<$;itUC2q7^ zO8{qs8Q@y50G!5KVK;)EpmQqy<}9~X0v-XYz>qO+tr2VmJHVQ=vHuE1+2JA`@Hnry zuP1&OpDkzur}IIKD0Bt9tUek10?Y>Y@gah6^waqiMIpGFFK%rFhx7WGIxvy10JVY9 ze0{FwO3q(k3m7}uttr#+Q!oll;^T11;65-19L=ZkO2B!SQ%{NXComdp<7?3=U=**r z$pPnpC15#N1s(+(!IgZZy#wq5!^rQ%G`AKD&b-R4rGj&k+*%%343>dYrn|KU@^fB; zyXJ)yza`5<#Zmsre z(*2oRYX#?n%5>^Ki}Hd=x4X5tYpAarx0VjZ@ME1S(iz21?mEC_U>NCigK^+|etMS< zt_EwsonSNQ{DoWV0%w2`G{0xi+o4_P6;WutA z6D$V{z)r9nOkGd^1gpUPV91ly8<+)#q~PbgOFIf&0w#hx!3=OXuQ$&J=YeJ5RyAx;EjTGigUYbC&_m<}-DL;HDR`<9hP1 z!A^7~JE=GD5ZDEVzJcGMOR1&(!L?vLIHivK!45En_=#`RE?_2@10DuTz^>ic4X%EN z@`D?|4)7q@oJ#t?$KD$_4}dAN7*@e5(D?`S;5@JcoY{aM+(^FfQVwwZUdjP>gN5L} z_plG#)QEqAC4Z#7Nxv411!J4&*I??O=+|I1SO&%&q@BTZunVjQBeAC)%m5=kqCLTE zumY?AYe8o-ehnT1o!EEa5dHv8|Ag{`ag0(YI< zt3}SH{X=`TM6lzOUM&k;F}znR0;|AE@Bmm3CY{==wS#$J$WQ1uU<}v|rhxIM^=i3b zDOd`Q8_}y(gJ~mswf$f**a5o1aO!78c&`=@DyR2q8DJ4u2%Z3ADNn)~y;?T*?*mJ~ zf(X(BC!E=n0Q&QRx_9S0b9VZ%X>8? zlYTR`SBnBmuISa0!8R}(Y`nTxYbBi>)6o$>9H*bY{MA-B>_DWn6s!4$CWI?@4) zW|9s#<9f;kW~EXtuoQHIbztN?`~*w@U3`8q1Ka`@fH|{zwT)oxjra@L3ATef)2Qd$ zsNb8&4{ZG@c7ii+#!hex*Z{VH?O-Aw6%NUw--FTM+6>}>JHQ;U1uOwQx8M(;YcBo( zPRqm}z{q*nc{}snEbIdhgZbdR+bJJ-6s!jG=l5!j;MzOL7i<8X^BKppX%}!7m;fFH z)4|q-_yw4CC;kn#gH>Qo4)%j1?&{Urz|cj+zXSgT6TxYVd$mk(8(0XA&ZVBfRbU-B z>gV_cxEWNkIbK41Fat~kT}z1%W`Tv^R&XO&w2b&*^m5{ZRiLtf`u`>I!R=roxUB&H z0+Uxz?_edk1>;z{#!FZ5^9bgzRuPwb=5?BLfg4>=aK3KVxehjv~ zK>py77s($yx{dt7q?fRN5&aWP0gr(>U`#dT24{j*;1Vz+m+Od^X$P?K6~+~CH&_pb z{EqeqXM)b3qXVPBW-tki+)g`ynP3rE308vbU_BV~D)HqQbS|NtUn4%4T0?xW3d{mS zUMD`71y+J}U_BVQllb7wTKdmY>Twt8+>IZ-MLjKJoB(6MF?Ey^+zaM_dv@c`U?*4& zu6c+05gzOWlmEc@`U{TVr9XgQzfV8QryW0_{qLb)e@Oi;XFNYZyMyEY$an%Kfu&&i zXVg2Ge2nuCm;-i!NB>Db{U!DBIerQr>ZE*N<-hS$a8Wn)4%YIj$42VE6+8~QRgV_B z7{3|f(PF^ap&l&-`~u7Y%TDoVC1BWak5&z)gH2#3*a@yX)uV;eP9u0TM!Hr=0 z4@e(e1Ga(npp*8Ai}YyG;A$`#+y!QX1!qw|;H)u}3yeOSa)ArMNZPXoOaPCA8Q@kI z`GJLFDGxY%oJVT_%fVRMao#x|E$LqT^oJfTYz6k6>(S!C(LeHN>0n~4N2>t$U+B?l zL1hy8{EBhvBJu(Ef*IhFi^&HZeF^!1yW`0RoH&K@gH=~~wEg&lJ;|eWfRn+n0^)(O z;5IN79CNit%L6xqWnk8Hk5&UtxyGZlfRnEEXbSc&2cy6ZU^ciLEC!SKWM36n2{wXZ zKPEpg4lKa_EU*RK0lL9BzTp^FNc&!g9pE;;(U}T{@$J=I(8Z_wO2JgH8k}_lwwC&(7unA1hzz@N&Tkyk`%$vY?uxSqU z4yG=~UeL1yKat~Q_z8FrYy*e=(xZjk&wOA7{twQ-k9@(hBI*w;deEblOL&P#YX*m{ zAwO^p7+ysG`8D=}>%bInQYrNaMm_4$ioo*6$QMi~qus$)uo+yvj`$C7ol=gy;P?vK zADs7F+8-?0NIY=&CXZGJhE`%PIAJsPu44Rt4tv2VFJLd&v<-W~6JQxQteScP7rsnA zfzy76-Cze8`5@)lj^BZ6UnO5~#185SOav>y$u;B)wt}tT7dz=s#aw^9Nq+)Iy+wJ! zs3J;Xd@AN>TJ^npjq0@s2?VBClFckti= z{0+=+!Y{zQKT%JsiT{yDO9OM8$qyX$G5r@T`h<93!k=kZa2?nRRvji^aQ9#Ei-$RX z{*8JDNB@g>zovh8(635qhcD95znVn!q*ZXj&I|0*s`-T~V5r0B!*@!3n$_z6e|mZUIN1i@jyE zQw;WkQ5Rq@xC{(^ob)cjUa*dj+vb6(e6+X>jN%*JouCIyTSxh>fCo=pNjbntNt6Rz zHl1>SQ<5pi6WDQsrWMm(9&igdX%_i{i@6bdfC*`Qt`e*O ztHF?)C^r}bc7hpTIQEa8t!eRK2bcl2r}K(#F!ra|i`|*vcJLLj32Xtwv2!9X$BYB3 zz-a7k1CzlaKhv~qa4J{~W`bM5EnoxK47P(I8Q5P=KLew|HZU1nJBRq-nz@=*0+$ouXkRcX zmv$#SBu~>KI6e+GfTNbtu3+XbDBqLJf50@bE+2m&yzn0U0BpDyKP9~FSF|HIX(jCl z&MKlE!O0KMjuq7JD#{0Xz+5o87{34;9>NdM9WJ5WIIe$0)7)Uf8v5N+l)sdE07D+7 zT;P7N2EKHyrZs~T*3qvB?*_MkZBJ-gBRHvC(>lPg_1L$8^KJ!x3EDT%kHBOw7c2!! z!8))S>;U(JyM9Z2aLv=S^KUud@zRxea3U`<%mBML;~!w;^V9>F0M>(xz&3CX=-h~Z zgHhn{t=I`J0kgmjU=g?*tOSpO^a<>0lL@4~Ey{FJL)X1J;7g zU@O=KR{b8oe3o%)5B>_qg85)NSO!KkkS{pzUHSvK4(tGrf?=C!r@f2^;5INB>;#MC z_&xjt+}MbpfNS3;9$2)G@;*nqe}KK9^FvMB2+lk}KLs1WkS+MjA8CJ%Q=2rc06g{) z^$tcVzCYXYRF*Am1tCM9yy+uF`N0oDoz7yLkB>rEO>hyP>YCy}O$5CBQD$$Ehdep&AVv0;Sn9*Yc98f##n%4xr{Axx zaz5w~K9Mc#vu-WMgqO54*&^Gzwd=wD_|%nf1#GD%oJl*p|0k1n$cyUH&L<83c98he z4l9H3S@5Os6&CS}2oL>XkM^_)?;@;{Z4LY{{dq&(H^3c5lWd_8JCCys8*iOYDD_$b zKP^Zayz^bzismfPiOyKhE)G)(-*Rs7H1g0C#`I`spdXY5$6{w0d_Mez{yc3d{C4=& z@Mir&_$K%Y_z5QQU4(VQH{wS%WIibWYX^KSf<9F^u}8bdBn`%7F5sTN3GX7T96kzO`lj>xqJetW+gxm@MI$e^O%n~9u`Psefv??qu9VC7Qyu7N|Dt;~e+92^;;CEWY zcagsvK5bHu)+^=jS~*aE`j{gc7Zp44q8^PQUvVBWXbgQX2~9PcpMcKy0yR?BY`C^d zdbBB$4x6#9TpSh?=z*WdzVo@jG(=N{CLz8@yInMonQQi=k@tP)isn~=8nLAl&0aJ! zMZ@NAOSsDQ5WLrxYXZ}75hWhY1vkIW$ls_Ew@< zF~z*Ei7oZ;Mev#II}hJCP#!~HX-89s<{Z(m8OtnrgbX1a3*H4E4d2k0$7=IDQqVXr zGtWcP$brv<-^IT3CxK~*rW8##8frpu-WaG6TeqW0PteQDv9T;J4x8Z1;d9t`{=htq zE;OxZ%<4nZh!~2mU9Q{lS>Zq)hB{3^vmQ+*djC3g5tade2>yP5-q3dn(M*}D+xlRk zX+D)`R-&=8wH|&IytiJjH&3G-P06$#?E-&W^sy==gmXp^J{rEtf_IT-GJGw3f`9sk zvgV*^Lc^qIaD5pxrD#@N#WQy{Yt42vH(%YO&7jf;)w^Nd*Nmo+XDqJ`l9wCJW;6#R zuSw2`$Ecg!i4tT4%Mc6Q|`DR+D9}6D`Z#K6O`%>Yj!kf(-T=2Q@AAEeRq$%2o)p-20% z!;ja?EVdS-Nl)w1R+*$B{1*5O@~AiAU4%8jPe>1*$8j{XerBGBq!Aj*Tz+owG-A=@ z%rj5J+y3we;JsrnY5I@Nx$xJ(&zq_@Q{ryk(tvdMQ@TYtG3Rg%b*QIS}4*y5jd}*!; z8O}Aq?L6b@pO2wkV$jsh@6j&z_hY>*De#9E@LZ=wS#sdVEi`F2^io$P@KyJijJ10D zRq##lX7gbe@f+dgx#?j2tOL!Wd#(L9>{RlAUr2gp?G+1OL>cQ%c(EZBKAJMhdV%w~ z<)-bChh}@9=Fvcn)I~X(tt+t8-~X=hT?5v@hw)7KNXdt-zunoD_|5Q6_)FLy#Orn0 z1s@6jx&y zc;)^c?PH5Nh&+w!C-_YNKB4!$1o-YEuET}@D1V?03}ZwlnvhkxW{e)sz)2= zAD?4MKNY_DY3u%z3;#uh^_;mBeiG?dOZrECVOpo#(d_EeGzMzC{*R^=J2L$3?DK#4 z$W7LK1RX0q2p9@F^DYUBsz_p9RlHN)+c&N@-G$ZD>-T*EJuTYeGh`cE45EG@5H-(4@S; z?~Np{x6C!EXxgfD&Fg`h2yB+Wfi>_sZ}qK#3+G}h+t#BkCy)NJaLyAhf$fWzdbF)z zKSwdqBAR4iyR5Y*lXrukp;aGSX6A!_si7o6K>p=MZY{Osc(Z-ta zF1QZ1u$mt2I)C19z6yt%@_LWIs7X4iT*stF18x@GWaUc`NWcedNA170vGvakM_KO8ss5qxZyX$kC5}+ z9f4_x#sydQmae(YT$6-m<=eVuuDK=~P3}9K-zBe~nQKbmR{UPq%nsCe+aFES9~g_I z+}Ib;{_tV%_GmjycqvZ@{N}wq+8CL?pJvFz;LG7~8{hBI4xx8Onrq_G%-+|d$;Z{5 zVFrz%{xi@V+TWwyDCw~I+gboWoZsHfHQ`-^Rlv`Le_F~?_w#}H24Ag1)5!1kyqdSo zHEn2SH0he%=9&-;Z1_`;rb=G#m}_FtY~{CrUQKPFM%pJ8P148KbE{nVR`?6BiQR!R z>3%QQ#2qcxbE|6jFW?i1>L1@l*nR?s|5=|qT^wkmXk_hseV^v+K#i0mg0*7TQGO50 zzJET#%i4F;-%Reu>E%d=ZzqpmSomQ+{OG^;XcznQ2LGu*6LUv)fLm4%OW!XNn;zX_In z*!=4?oOR;q9s0G1kvE*n;?bmi-lP4^KMlj0n5=!z>h004_Sfj+ZvlKhe1iDEkIc)m z5lyLw->LfhiSB20@YPz6cBx4oQWvf8dxP)_>%VRAGfm>V2y?-YP~6&+{=A`_NoZE1 zVFs%>?_V^iKE;MC_|`t2V`F^_Uj)Cy#&6%)H*1ed_^;tll{$zsq;K%^1~f~(pA(~Lug|lh*D$$&{Yrsy!cpEEg$7p^gzV)fOCJjw=XOFg8(up?D zD<938K25l}rUFf8pGFDPNZr+;x%n&B03crQ z$a5WY;0x$`R%ukA*)hhg-Rhr)Ud~$hVc2Qa7A^3j;jg!d?}ncNe~}6AA}o^eYYzM! z{=8wVOGL8?&A}j=EHr6x{JxZWH!G{;Rg5NjGQXJ(l1>#Gd0)WQ{`GD+&+JDt;fL1s z-T|LOK7R!V*tJxqX|!74D+{D&qvZJKy&yieuqmt zushIK4e4xzSjam8ilChf8Abg1yo>O9G<*9rv&}W_XeRJZ0dG3f%r&9R16QLtP0BUV zToa2XpLY^?HRA#`f#-|O+x*WLQ+bC$B6jze1%K{4U(AC$*T}IioSZKfS#aVr%i&~= zus=<9C7zrwN-Q`TPd8Yk*#NiIf@_1@VUean-8H~nfyUn!IcFWWNHZR;3+^goJiT7h z;9NiE_x~oGjHk(P875o_T(JeW1+Kw@tA`8Wy%J_=wn}~$oLlm<;3Dwx1`AHc(~#@T z^Gk(Gw%~H$isA6Wfx6b~tQfAzB3>n2_)PQs>fq8WI2ljNEVwSo&w`V+f^go?VOF29 zaA|OI|Fqv<^fIK#7&Xi7ea^w3%Z8f(muyn@BDmRbX(rr8xHT4BE!-Z9G@IeRfSYNO zW+znfi{Q6fs zG2zGIt>zwE;9If(7}uwR;v3Exjc7LC%p4A%a=tWgzy`y4TjqiLGIY)6K#kZMPJiBb z7w22{2jxXsT!h8J?}6V!`#bM7q+xirBpuC+pSw+;*N`;w;n&V_YhQ+t#!N#RhI4ua znp)Bri++$D9E+W`@WL9yLirY)FKE z1%9MI&#~~C@SEWS?lbFrA$;Eb)^oXy@I~-T{nOXWPzT=(Ki{7>_+}fLrXuTW5GU;z z{($v0h?FB5O&*$a{PWTMI~o3K>Tci?jLks)?(y+Q-a>F|xvL16Hne$B}{Zstg)Zkl*Xyn~dw_p#+4YaG? z?wRll;r}80ALk74hB2uK&7`|^%^q{j7BuoMDsMWkn`;`;>|W;f-BUeeuIWItNu$iy7YnpS{|xZ7@mSMVK4@D7-iR7qp;BUAVZ8+4r!nIbyC!LbIbp z*Bl7cNLjPdY2!>sIy$)rHQt!>4cK zT|)l6o_`4Ep*g%GjHe|A$JhC2_#Hv`WcV>Ju@+s%VM&^5i zGDDgvZxg+)65$Kp zus&yG!k5B(*EdE6+UO$RA~daNR*DVU%>m^Q%@#CMYjw@v%r%W@D$o>3Iv<#8I?%Y$ zED+5b=9=)68TaXH4@jAx3Diiv#iOaDzwMTE*o^J#ZGZUb^q1Kd^_CA`@TlALcVZI1 z9Dey)x9Pnn;cMUv;fFA{G0VRhetwzBT8-XrUGT%#>Gvf}?2ib=KjFR4jhOK9@bjNw zyfP`D3w=8L(Q>!;Ec=7(GxX&GG}*kz?>7H540HO8Xm;QmU6RgEemYRkhIH!D6s>n_ z7hB{d_0^7M9U8Mf?}86Gh4zGBEw-F(o=*&#VHLV&xVa`3P3}{=rk7r4GB)I)Ik>^C zUFlzLyjLmGy8c@3JIE3MOLhHs?a0_N?8x^<(OLSJB^YH%AFG_K*y z3BN&;gl6WO!PgeE(S*ItyCD7Z(#u>7p9Y^t{~Y8mhV@B#zPIu{x8*Y%@_g^aM$QfX z^=c@OJm2fw=hi$yG~uVRKKX%L+b4ZXUT)XdhKBl&M^k*jt&K71f8tN+@T;2K+MB{J zGf$%cjq4+~_5*)g^g5}4k8IY*v)P6;48C87rl3zV&0N!lrln6a(OeS}#(k@g-P$YC zKBLVwF=+PoY2>AVef45E-=v~x`ukVd9O8lCV%cyD8l@Uv!{mLuXcd>YL;CTYlc5)YsG3Gcx4w?i*SI{YN!CtJkN zhrb!#>RPKDei8f~{_zcMUyJ4yG{Npcw4%v6<_`M1BIgL6FaC#by=_q6GvpPGrjYUm z%o7ZKD+SF7G?z=A47n+wUR{($p6?Ce-JD)c4=Z(kJ|vnlG~*8InvOt?_xy(@fp>aZ z&1;(B^MdeQ@KP^7BELap*4r;)B(}oGTJZ7kg+cgq_|hPJKKw@bVw3b;gq6dG&?fH) zuLjnEXll`H>C=39qiJ2XqDelkr}L?~#u?7}5zX%2dg|f9Z8`N?;kJPQy;;eAlPxnPpn1acHtS z^mP7iu1QDZ{9LcEkIXd%Xg2q0_5^Aout)v|oep`VE`( zfljvm@)^!G?F3KlvL2&D7>B08kM~bQKfgx9C&PQ^xIeuiAP*Pui7h>D?GWgkWUi@!>vHRwm_SXSKTKQe?+;&leDj6=`l757Pugh??+BK5 z@#ka=-DAP!!A(?pz2m-ryi&MI3$6-oldab~C-;xn09Okq*S`K-8$n0mt}@}|9^-I( zuXl~XKVBr$Q z!@ZXKsKbDM*+yKeF*1qxo$%i0OeL|tey^XmvIsgfly`lCP7_}0V0?%*UkSe?2wxAs z3;x%jS^8~+Pdv$*muHkVz~@@TkAgn|f3*dl1Rp-E*LPk-6HtEm8hG&^Gy96*Ti^rM zUG(~^gtwpEt9@)Tub1|#hp#=QS9`|cm%cvkw!tT!=JOe|{GFs*8HA654;f(|-$njO z@Hz0^Qoixm4V2$7SCi+-r;XG#rw3}J93^OK!gwGT!!O^}k$c!(AKMpT_*^IA-Pmkn1xEB0=czGXrvI+0P<_`FZF}>Q2;Gpyk zbtKQ+G>+w+&K6~qXKqTy^_u>UO!7#B-vs}2$>V_^543~fUSvL+jvw}Fe=)IB+ClEM zRG-_c&9LBW;15Oj`krA$@9!(k@UiFd{$D6|1NbfiH^RSYk-j`nKJiDrrfbhGl9T7j zSHa7@Kt2GTe9yu3@rK2g`~GS?KMSrMyi-Z0n5yHvU-_4=+)LtDNo>o4@LBNX@MA%<_(g=Thd;-HuOz&E ztqHG>KlSj(gYazSQfmpp*QGz z(~8lgqY+{y~<7WYD)`m3-c|J9iHuXL)f5tVY-J1uyZv_E|8HNDz}w4?L= zqyQfiO)HwI*Y;{7Mf172#>qKk0{vzsdNYmqS~QwsG+Zs3)@3sMPWTBHd^UVNe5MKS zBCHtRNx!?_pEvZ)Dl}PWazt}eU|Gb@{b;Jtoa3L4J_g8h2_YNxvYut0hCG)rA5Er3 z8gcNO;e*+lj%LWyx~*?t70@>Xv}OCz5;$0yj7jo!q48+Yxx{bi}1Ale=N%3 zhEF4YfxhH z@7TmjYa80&lc@(*;7xtk8NxUK@AWG*{pTLNj8X7=;j2vIy9i5ypFN{j>+v6F4EGA; zxrB*)8)u?_8XQX+#qbI6zwze{ZBd2h6*K{LrTcax{66@59e(9BoR>P#M5p#@_sMub zUj1b?XymzsRkM1vA0cpFdgXw|U`srj5ZdH2e|z;hljjnm%-U7ARh~;og!f*bpJ$$j zJeN>{=37+{Z- zsT0j~(wWKrARo}%PM%B1gSRSk9DFgnx6CGaxJWl0&A8`+m$?8<6PiEy+hG{wRZ~S(!sZxz9#E3;k`;>m(X}d^+nf7JM@NR`_xL zJjX7!Z1^hpv@q)Y-%|(L#qgW=5;QH@z1mBR%g)6-jnj8cXt>6%Mw7kR{G1{A?1#^R zzemP^dktwA>Qvr4wtI=LDK*!~d&eU97L+%gXUsM7-myjZ^lE#h-glU5GSP$==$bdp zHAQH4uISZHVw`r?8#IP;Z$Z=a2kU;?06(n3+-Jq-+u_H+Ta8!p-mxk0R%2^4{A_sd zcy-udqrt~g&}>3ub*{^SANH=^Z=MTGL)xztO(mLOW5sr{WiQw4(#MI@?cov^CYp2DAC!(hMn`f#e-!=vpOR0M!Cu38EfLMcAZcX6Pl8`5d5kioVW_tv zG^J=VE$pa--w&T7{9!}iF{IIeCW3EBS(T+7KAy2ALwt3!Aq~TMFOoo)?*%61k$TUAuXvetEdTb?$C@(uP`>XKYY~4td?D#u z%?q30UxA-s5x*0@iT~o|rv4|-B^=|MV_wbk z=9&UDi})UySM#j7W+R#}YI?OhC9kK=HT7tw?9?^u0yR?S?PwyYlYnQe^*Rq3LEprG zy!oK-?^Au_Km6={y@AiY>U=VMIlT9J-z0uEd@+kY&O`iq8-;@fLSEcj&jqwrswr0*h5Hhk@$ zSljcDZx~BT(5yR18~AIeV@ab5{s{bf>7N|;w~?Xm?MIV-h;L0o57OxE)B)cCf7pT# z3+K6^PkOb#n(!{dV&U^zSVN)@Ij`bu(szzF{O&XjP2=%iZJWQHhOtK8J2tz6K5U_p zIpM47Mc}Tt3_(3$6@q+R1#!3-nL3nxNelTq9gL-w({AKK$dg z6Vx%Ba)ADvtjFe`YRy`;jGvb!-=06x*WHJlb8-KJ54BYw*it zf@?;4w29&`XH6N<80M*R9^O65qg^JNDS;ZXrIhUu-x@p*dk5vE_d}_-Hoi4z#=GG5 zvvu=r!E62F8*J@FC43tO=5i+;`hHmhan1c}TOrUJQLY z6U~t*kMADa*1)`^%tdI@qdk`IO{;{T1uxGK49Z8ZlX}8up2znXO?VgSw-LT(f=Bzv zpEr~@gu0j(;|coSv=}svXznIWGdoh?$DPmj@ci@9?aYCnIMHMI-n0_$#M6+ckl#&I0YqF9gRGq^IwbisSyo3&VeVoTd4rfneieAn{5%Nt2^P&&FFn1^WOo^R1Lx@MiZrUi|i?`V3{dBR+yFdr|R;n8|X(^+n= zi9(b9V_oxTpeBO2@;7kqnQ>R&xkoq`TPfe;ECTz-2CNLCpw}3Aeaw~k@@F{5oX5GK|G6R;TohY$0eu^!*-Z10b4)jyRDX@`SJ{M5 zxR>wCn(!{dirHqt-z$9g#in^k{Zv_`A?0XfYl7!$VX&RL4aW)p!Xmy4E|hv2y+XHP zrMV5UX!6ipZIMSR{CapR8|1mL8u)W8;>-18Z4ka1z7Bq-Mg0BnC*WsW@E!0`zp{=m z_e!G+8D}iw$HFgx&oJR#gr&mYe4oerK2+yV;sV-HG%|Ned%&YPK~4DMVQ0 zNkX&zk>KgbZ@BY+9Xy>9G&|7bN?tc#6i{ZdS)MDhmwL35#OA94HPR27(6pnW9}g~< zUT%5!L>%AVebk>fj2RJB$R;#aX~e^?n(NViBzF95(txdoddWbumoy%fe2f}H{T8B` zxR&u(()q-YjzLq2X3b;zIq9Q7jg+}T@A%O|nSqunRA zJZ7$uclm61T({-dff}(T4b34mR<`89w^MiCZ^NMP_ie+NT#jblt<*0xrVnWJHmrf) z1pjA$-q40EXfo!R`@h)fhF=2zQ~xyd@iLM%>niwI6W&Ew0(>p}BlIKZuP+?1(O^R+ zn(?=Lv=1!OD1<)OZXpH?IP3(G)>GuQ0mKykZ z@MlOqX9lJr8o5_GdxJ;25WjbxYS0+kQ0|pB@m+GW`V~Ksd!eBjjG` z_GdlXA1(My_)5~hfwaux7s4NepJ2gngpYnszji{?-!6Lob@1|Cb*uDS;lBuyzQR4k zO{8CCV!w;*<{5be+LE@*uSHma! zr?0nJ9(*%A9%*V{8GL&Xemi^@{EsZ+H^DpUr&fF?d>OpiGsP~_4ClV$xIG@tE$KgX zzG<7sqv`I`tToqUpgHgdJ)H;5HHB!lHh6r`l<}dGgwA+HD6NjekechLh=@{}#N3;C{kMH@OgE0g4 z81gDWleb^j)R}8GqKW%Z*K9S{)T3$t*rT;cxysBn?P&Isj`#V_Ul}w8n?q0KS(^j8 z=B_}E^bPq&Q`}*XRwsF}_181L?cz|r(bNS0RFL|UZ!|?7V$Aa&a}2hWqZ#*!C-Av; zL;cmFsXpS-_K>gh1H9dDY!Z80(L}X)Outtqyb{J-!-97~yWmq!1ox{XG)Zk-QwAw> zHkw68J(|m3V<=AvnuYCpTMrK`kJux>;hyk!UDL%`!>`Puk$a`b`ZPz(HC<>{cj!LT zXs(Gojcc4^`g-^mnyTT0`HXy{sSbO8L3)Gy z&QO2yji&I=Jz8N9zmjh>9q!V7W~jklJsq((d<4%`d}-}7aq#&Tyo>m0@H777(T@4s zYN)q-G-2H)>ktMzD$qGJK@QFaQb@u{qVct&$i$@bUw?1m)~#?8Kzmz9b(}}z*}8crNWO2!pptV z(eU&y*YG4dA-1{m*v-~XcG^7qH z;g7)IX<hb;!+#?%5%l{r(HF0Ik z?ay2HzXXD6;p*_=evWhagAU(#pFwcOIL&*{-^j0mmwXG@R-K~-yw6x{E@#^ScRgqp zw}#+-@X1CVyCmHvwr;pznQ$G1&582WMSr?_c|>lw7k1VSCilX!iMtcsp!1udUyD5+ zG@py+;jsa>y9m!=Yy6?Ex!YV*ie~+IT{G8QvmH(Lxtew<_3ymaT+@tZMYOJo3)Dzm zyV+u5Xh(2Rxu_QxVe))KBYdzqY9gA9^R%FI)GRb(Vm042%WI@;;>*Qo=1kBmuUX{T z!Ws)6Qx#3KjUE35qSx$+2OP?S4)r$vUhFjO1siy zlNEJ4|AI21E)*B5$;v#Ra?r6a?~^8}^OZtLj+BO7qaL&=9s1Ep)71sadi@~sDfyAs zVW-M(Kzf|&qajMUs(w9Gc`sy8(h16J!*RTNh4NG1aY%xCm6B!PE>^#l_KY#=WxSgr zPq|BF1!S{Wb3ivKG*XRI&L==_VPO5BV?}%NEZfL4VXjkecdWCiPui51BqB9^uU_vV z@oI*$%ojN%T1`|k^?lRuZ%%LQ`FlwH5xdI0u^o2xkX`wscmDxt$5-VaR$ed$oF;|I zRJnJvT=xDThPiDj_xQ@}=kqqUKiFmeEBg{}l!UR+Gu2YNvP4~HQ+{oe-Pi405FE3s zPdSxU4)t?~velvPb|`On_m4Rw{2k{{z47BE{?+QgY|4C~{KMQI`r>Y~E4Qkj*pvrsDvOWL+GM}UrV?Cg=Z+@Avm#|S zzSXY2W>-G3Kgj;mPIa48IpE}UrGswY(C zg(1GoFZk|JB6HMchw_e1eZir8X;Y8d70q_Zdv@g^y*%H<51TWRDyozQp-_X5PMt8a z*`|Cb+*-Zweaj&6!;frXf43=5^hFE|8l2hSqmXOWRAr&hDC7RfRC_ip^M*~?E@rLN zQ~z$kqt7L3rdsGwR@>AkY@~AA-|XDH^<@{Fbw%^|UH(J17Q6DOU46!`RM=Ja|0ITZ z{hnG3J2QoOuuXm4ru^B~fM*aEdG~JH2X>{wu0H1Aec=7W-4}YU-hm_`Ke~NE$-xfjca$@7yWSHh(ul~BS1VK1<;qeS z92)h+%|lPUSmo}^4eDl_@=skDAzk5Im4^y1R(IKyc#s!;F*casrb)NE=p5Mqz)m38NZAymh zY}A9V$Wl4aQ+Xs~o5xRhf9+6z=TNHn?^Hf^s9!pi z+BXjfr~X9!lTGn9HIpr0$-Y%k;#Hin<>8qs{lv#ytlh4DWmkS9gZzgM^{_)(DKoU! zRdtW598>2oNgS%~9;zH2Djyo84#$sXF_dwt(yr{1%zx)lKXNFKIVXMXRMx8MZ&c-X zs;_EY@^i2Y^B!aFWZU96=2Sj&svNA6v($_7kJP@YfBW-ZPn)Hd=+kae2n;dysnZvY z^mUDHn@qhFeaLQb7XgonMS;n($OCPCjOr9h2ILMB1q zZQf;})+byW9Lke6mCMJ+?6*DOQ1%zU}^kq`zMYqLzEAP;H<tF$cN4VCR)F%?>&EOxlx6A77oBUU5>F7UAEveNvZk1O9oI3_@5qnB6o~ z*<)AVb|`Ij6_4_G_t!eFA)MI_kXWI(>O5b=T-@i{O zzWMt2hjKEzMXo-Vsho_cZswv)s(dFVf*;abaM0QLyPPn;*@h=Qg(-^AB8CUz56RqQVIX)q(*_=r>flg{Nz;i%`nA%s`_Y{ zvN}xmcZ5lJcbG~_e>qM5zcWHTI70bgWHkFPhO2eqO5N$(C8MopsBfO3yctn3l!MhS zG2wBklHKwTkDIBR#v>mu+Mct$8LIrle#IV#QtMFJ?{RFCpnt3C>LJSgL!0E_*^^YB zt$KM_p`C*xp(-)|Df6H8r}$F5X#Op}3-vO)tV_Ia7YC?tD3AB85^QxU&p6e3RoN*W z@?-sa=KtGh=gMs5D>@o07C5F;`KMhvNUvS}z@bz))a?#smp)v42k8U0EjIO4oAR;r zTKek_{Su31lGhx{C(`>~aH{UsX{b11;>ee=i zVfL@mp&xOmJjA`m`5;gBK}S~GF6yxoknoy2=&2{%FdB@ zF_Q~dzY15LJv~!V-W{bL9Hp!}Ba0z2LVZ3$`8a~m-ZRzJqm`Yb*?lxp-4Lnli(JS< zMq|{s$0(nVY4@FGBX8ogCD%cF9m)v@QdU-rRh*Hf7^$jnJIs$;@|9h4C|wTm=a-%8 z=T7CAQzn&fi9i_i!t=Yzn#ik}&UzKS%b6C1KbC0c#?Y7UHN}Jx(zn$vx z$>N?n?P*6G$_9tZ?+u=JsO)o!WhUt4shnnK;@{7kRe4oa|DY;$Tzjg@za)X*>Is~EHU|^L!Lz$;bq=M) z>+FA%=xg+za@qYhwbrJ*YE!?qDF>xX9=APf<9YU{`xX({Z*eqAQ27vb>k#D`NxWXq z;j}ZK#Kf;{>iu@*Is5-Fmd~u#!%jO>F4jJ^sV8i#p#C3S5aXh5vC6actk_b+J` zI-I^BW^y7ss#I)Qxr<18AFF>5@3UqI|%u4W~k<`j10lftdY`POg?Q;|IS~%WcY| zHuXcBve%|QU{^d+3(x99{`aHD>SvNN@0Hkp>~iPnLAzX#bB|-2G#?gxv&bv+_nq(3 z?&R{#3l&yp@czp&Z+m~^J+Vxdu@Bjl-*5xPyUfM@O8XW2LzGPpwa}?-cgSRdsRR38 zJ5<7d=Zt4i?Q*KCRpowtfPL8p@zPNBk3*Hlp(1)YWF-H;mT&J+m{E(ljl$gERh#d= z4-XXdPb%J`Rx5|RU^}YMy9)KI4)3JmRokRL$+a7rCmbp>l13-jD3atk)wXrE!*=B( zyZVGfDaA5}@~%VWL&3e$PL+E4|6N(%gyJcO@>kp9gLdUL-6yPxJ7pdDzP|GT1=k0K z)4w~RJ11*kEE8~RrSE#bFY^Fm*o67dcxQ&*8Vh!G^7FQl-Ya3Bi+eAq)8{j3V=n29 z92j!)!?uwdZOTr)Ji$^Q%$emicRu&Hxsf!G*Psx;yvE)+pBrmO`tGHCVpp2%>aV@$ zbLQ=R-SodF(kp(mcT{-T!Bki6uq%JJEyOqL`m*~rqOb-0sOoY1yTjf-Mfuw)zP>>> zzFJw}yKhTHu^!{S--wF`J34v#dp5&e5dT9%+t67wE&tZObA+b(_V``WMa+TqzjXGi zMsjm{gpFrH73F%?a*L-7@I~;ElWoeeIPN=MXj9VJ+_66Glap1Y6kg)J#J>E=@svyG z^Rfl`OXS6-`Ip(0*;8yv5!(2#Y)VTfw`$m;*c!g%t~r~NZ41v#q_A~-&PoDXJX=c# zTDB;*6Y|-=DXfm-y^uQm%AN9-;_}?e^J^^TdddGloHZ7d_8y5do@kc-+l}0 zt!xEs2w+x+`efzR} zc1gPNi%FL)lC7`3y_xF&#J;;P4Q^ip>8#`SdKX*B{WfJcH*^jZ;Ai*Rl!{;3l>8Mw zAKExYRhrOBnyu{j{YlswrjTj+ntxyTx5X6Nbo!$5D&y{Y1`deepxCP!-9~_$NL!*-c+zC>8(tKK?B> zrjm#8PkiFgIJ3ne|Wc|E;4P0qK_wb11XUB8`z;G>vfZEfWXtKXUNwAJ@VWTuxnTS5m?pO2K5i zk`ZrL>cP-U>`E@UjIE4#si5>5v8#HjU0KD(E7rWno7m51JCWy5itcnM%h-4|qL(Wp zd?A~Y7psh5YenPX!xB>7v5BhUx@vH{c?-|KR`R*|2D`HV`hog2j!$)@IpPYtGB4S# zL|l#C)9seylZ;7{UggiRo9(!Myq^66wl@8^l>H@aV%u9+`r2EbdFvaW!Y=iVPZ5GV zFYXd##o60-=mpz#bW9uUFHnR2vWctQW>+@M!-j00&d9VY2Qw(^E!-!VYge-7`0Q|z zP99oGJJXP+giRoB$F08cXi(zc;-H=Q!xr0>;zf3)m6t@7llLaJ=?iK9JE`{tzWg`p z`S&F$Wj=`A6>Rb+by1XMS7xxupVZN$+qs0%kG+8=|8h9TW%6uQ%da_;ub~YdviJAz zieE5Z(+++8`;Dsx`nQ}LD_F{zv(9JV=p^%cF1l=pQv4ic+5ErnKMCX^{il*X6$KVP zYgek+LJ9An?@0e?;aK{Q*mY#9U8!M{{v*dt>~CfB??1xrA-saktpD6X*{%9d5kJE3 z;^j+mZ2#-=qv{1;`8%*PlKpMegZoqm-|k~f;aJL_0(#4jU9+m~N;I3d{2V8-KbkF| z{BV;A4`nkee|eDdyDlH1tgf*u*<3#!V)gU8j{kA5+LavQ$^0gI2exvY%O+!qq`h^Q zUD?RCj;(}kC0pO0^wo2&_W7lR_KhFL`AyW+A!fa!qpMJj?JunE}{Q?Tw77+*AwukTDgU%%i(m+{TJyllI#LFJ%?GUZE_- zY|?&mT*>}&Hvje$ZXMw{Y-a8E9_?3mrSIJPskG&cfwq+J6Px zS#ar=O-!o{Len%c6rn1bSfys2G%>odXkr;-lNwQ!YOL!b#G;9HEXq2>5Mt3(_WAny z5;rvnRf_hHkMzlT{C?+o&%Ni|-@U%!cwB(7$4|0Lr1!%89zR{5eo|~-pLCSR-rroM z%n1ed`g$&*H+CvWr=2TJmkOo{$`N8=Xk7f^p9M--<@duKV#34_kgK+ zkM{M$I}^?2lhk{fIjH?T`al1WcEgRoO*BI=2CinuUF+bpxT1}jCWnWjN3V|m@jdV#%Uq|Oz0e0|u3P5#4c11|=fII$tc`-> zsdjbo7U@3F@m2hLgzI7K@s;c#=>bS}eBF#;-4^?rdH~%IX0Q*O%&!#wJvwHuk^aML zln*Cw+V_pWDZ@rax{kvo!l|6AIMaN6x@8(3VSV8G{Cc)^U-qN353^62`)T`8kanG? zjJXiMj!=H#T+8G^Cd`9rAg6ZyW9#VranAo_`%y3Xd-j1b^MX#k)8>u`u}E9|A*22;GAV{{MIsu`z+HB zAMx=(oy(Q{>g^VCg*ymao9*zA2|G@5-v#>d?r45TCSQ4WBU=EeTm$mpdmMk5a*=cQ z50+UCsz?bQ+I5U4Q%#`x zsd$WV5XR0=$qtZS0jcKa3C6@ZKM$k3Y;lJ1E~2c38KwgcF12lrhh7*xCa2IVTShuu z;>p+?m?Rju6#?#NkSiP{oIKu2pO>FuF7ShZSODKmyoOPR>Z48vz^n)Taj&DcQ_b)>s6j-YA+4;p=LO`ja%&J!EzR`yx= zc}!KztmYx$a|LFK-wvOe&9^p)@A4SKi^K8$e0=+M^NAci#k}3DI`%L73#+6~^jpa5Vh`DYZZCTMTwj9N zunqUDgRJpE(sRLwtc$XO=yvh!U>EfcvhD>5`_OAgRzi9G)Z0Z}F46~C7rL-58rp4W zpX0uZPCxaQqt{EGVZx3Jb1b6}gHGs%9_WJs7=jVV;z#*8;07=FApl{BLJT^g8+xD* z24DzAAgi4G;07=FApl{BLJT^g8+xD*24DzAAd4U7=YSi$;D-Q&Aqp|*gl_18J{W)@ z7=f$`@`D?^;D-Q&Aqp|*gl_18J{W)@7=f%x@`D?^;D-Q&Aqp|*gl_18J{W)@7=f&9 z#j`8`qlW z3OASsCQP(4GCwzIvd?T<=P!PK!NNt0bCi34f($Lt{ z-161dw#du-zSh1!x^~_Aq7561OE&p8mu@NBTK;@R<+klRcJ6v1;92fn`t0tB zw5Bk3$(O$T%B#MG3+8K}ir26Ax^j!lwl8rNc%Ja&yYln$R_8sHSK!L62-Uetsv~y# z@>Q#N6)UZs9+UJu@#Lq^hV&I8ebr2_4e9kVy(>uXl+wG$^d9;Dci-S?t8a_6MyhL! z=cT5XJ@wUX^~O`Tzo~71qwPmpZOOh+Yun!DrcXqwkhO*yq;CgW8Y0HCw`nhbBcXQw z?jeGxxvn}=Z9Jj+sy(gMjiIXgI&wNOima`z3bogUS|U}nq#3HWh!+-{{p zWMvi8LAuiG;*ao=AUl_AYtqSv$3SV)lYLCcF6KDyn-ChCtanB ze2`5{VcEq*HhQW<<}lSOw-zRY^ki2Pva2aBCq3B9%8*Yoe_^8_$R|Og))hm0W(Dw@+ z=i~^HAU(Ca3mq}M$k8&!l?XQCJ9>w)m5ODK5SdfnD@l5%qZvlT|7jWNa*p1&2|MMT zp1^wr(Cm_i?Hs)y5S5;eQ!X~R-1(VtTdJ)!THfnPdIjhepqDg!ck2C7lHMBh)}ZIq zr81pxcaom$k3RI?V$L|ul?eO-Ut_HH$v!xYee_x)ju$Ua?dS!kAD7B_M+IBz6eT2_ z>J`5OM^AR&tJq%`IFm1-BfSerdaerF<~l2>JQs2~or|hp?OR>RJ4)+$K1SGaPJjPQ dLQ?j)-r2-&52WkJoVGdnM`+_;ok)`2{{Ylz-v$5x diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/compiler.json b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/compiler.json deleted file mode 100644 index d95952e3..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/compiler.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "runtime_library_dirs": [ - "$ORIGIN/.." - ], - "library_dirs": [ - "zmq" - ], - "include_dirs": [ - "/tmp/zmq/zmq-bin/include", - "zmq/utils", - "zmq/backend/cython", - "zmq/devices" - ], - "extra_link_args": [], - "libraries": [ - "zmq" - ], - "define_macros": [] -} \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/config.json b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/config.json deleted file mode 100644 index 544b389d..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/32bit/zmq/utils/config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "zmq_prefix": "/tmp/zmq/zmq-bin", - "build_ext": { - "library_dirs": "/tmp/zmq/zmq-bin/lib" - }, - "skip_check_zmq": false, - "no_libzmq_extension": true, - "have_sys_un_h": false, - "bdist_egg": { - "plat-name": "linux-i686" - }, - "libzmq_extension": false -} \ No newline at end of file diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/__init__.py deleted file mode 100644 index 3408b3ba..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/__init__.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Python bindings for 0MQ.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import os -import sys -import glob - -# load bundled libzmq, if there is one: - -here = os.path.dirname(__file__) - -bundled = [] -bundled_sodium = [] -for ext in ('pyd', 'so', 'dll', 'dylib'): - bundled_sodium.extend(glob.glob(os.path.join(here, 'libsodium*.%s*' % ext))) - bundled.extend(glob.glob(os.path.join(here, 'libzmq*.%s*' % ext))) - -if bundled: - import ctypes - if bundled_sodium: - if bundled[0].endswith('.pyd'): - # a Windows Extension - _libsodium = ctypes.cdll.LoadLibrary(bundled_sodium[0]) - else: - _libsodium = ctypes.CDLL(bundled_sodium[0], mode=ctypes.RTLD_GLOBAL) - if bundled[0].endswith('.pyd'): - # a Windows Extension - _libzmq = ctypes.cdll.LoadLibrary(bundled[0]) - else: - _libzmq = ctypes.CDLL(bundled[0], mode=ctypes.RTLD_GLOBAL) - del ctypes -else: - import zipimport - try: - if isinstance(__loader__, zipimport.zipimporter): - # a zipped pyzmq egg - from zmq import libzmq as _libzmq - except (NameError, ImportError): - pass - finally: - del zipimport - -del os, sys, glob, here, bundled, bundled_sodium, ext - -# zmq top-level imports - -from zmq import backend -from zmq.backend import * -from zmq import sugar -from zmq.sugar import * -from zmq import devices - -def get_includes(): - """Return a list of directories to include for linking against pyzmq with cython.""" - from os.path import join, dirname, abspath, pardir - base = dirname(__file__) - parent = abspath(join(base, pardir)) - return [ parent ] + [ join(parent, base, subdir) for subdir in ('utils',) ] - - -__all__ = ['get_includes'] + sugar.__all__ + backend.__all__ - diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/__init__.py deleted file mode 100644 index 11d3ad6b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Utilities for ZAP authentication. - -To run authentication in a background thread, see :mod:`zmq.auth.thread`. -For integration with the tornado eventloop, see :mod:`zmq.auth.ioloop`. - -.. versionadded:: 14.1 -""" - -from .base import * -from .certs import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/base.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/base.py deleted file mode 100644 index 9b4aaed7..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/base.py +++ /dev/null @@ -1,272 +0,0 @@ -"""Base implementation of 0MQ authentication.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import logging - -import zmq -from zmq.utils import z85 -from zmq.utils.strtypes import bytes, unicode, b, u -from zmq.error import _check_version - -from .certs import load_certificates - - -CURVE_ALLOW_ANY = '*' -VERSION = b'1.0' - -class Authenticator(object): - """Implementation of ZAP authentication for zmq connections. - - Note: - - libzmq provides four levels of security: default NULL (which the Authenticator does - not see), and authenticated NULL, PLAIN, and CURVE, which the Authenticator can see. - - until you add policies, all incoming NULL connections are allowed - (classic ZeroMQ behavior), and all PLAIN and CURVE connections are denied. - """ - - def __init__(self, context=None, encoding='utf-8', log=None): - _check_version((4,0), "security") - self.context = context or zmq.Context.instance() - self.encoding = encoding - self.allow_any = False - self.zap_socket = None - self.whitelist = set() - self.blacklist = set() - # passwords is a dict keyed by domain and contains values - # of dicts with username:password pairs. - self.passwords = {} - # certs is dict keyed by domain and contains values - # of dicts keyed by the public keys from the specified location. - self.certs = {} - self.log = log or logging.getLogger('zmq.auth') - - def start(self): - """Create and bind the ZAP socket""" - self.zap_socket = self.context.socket(zmq.REP) - self.zap_socket.linger = 1 - self.zap_socket.bind("inproc://zeromq.zap.01") - - def stop(self): - """Close the ZAP socket""" - if self.zap_socket: - self.zap_socket.close() - self.zap_socket = None - - def allow(self, *addresses): - """Allow (whitelist) IP address(es). - - Connections from addresses not in the whitelist will be rejected. - - - For NULL, all clients from this address will be accepted. - - For PLAIN and CURVE, they will be allowed to continue with authentication. - - whitelist is mutually exclusive with blacklist. - """ - if self.blacklist: - raise ValueError("Only use a whitelist or a blacklist, not both") - self.whitelist.update(addresses) - - def deny(self, *addresses): - """Deny (blacklist) IP address(es). - - Addresses not in the blacklist will be allowed to continue with authentication. - - Blacklist is mutually exclusive with whitelist. - """ - if self.whitelist: - raise ValueError("Only use a whitelist or a blacklist, not both") - self.blacklist.update(addresses) - - def configure_plain(self, domain='*', passwords=None): - """Configure PLAIN authentication for a given domain. - - PLAIN authentication uses a plain-text password file. - To cover all domains, use "*". - You can modify the password file at any time; it is reloaded automatically. - """ - if passwords: - self.passwords[domain] = passwords - - def configure_curve(self, domain='*', location=None): - """Configure CURVE authentication for a given domain. - - CURVE authentication uses a directory that holds all public client certificates, - i.e. their public keys. - - To cover all domains, use "*". - - You can add and remove certificates in that directory at any time. - - To allow all client keys without checking, specify CURVE_ALLOW_ANY for the location. - """ - # If location is CURVE_ALLOW_ANY then allow all clients. Otherwise - # treat location as a directory that holds the certificates. - if location == CURVE_ALLOW_ANY: - self.allow_any = True - else: - self.allow_any = False - try: - self.certs[domain] = load_certificates(location) - except Exception as e: - self.log.error("Failed to load CURVE certs from %s: %s", location, e) - - def handle_zap_message(self, msg): - """Perform ZAP authentication""" - if len(msg) < 6: - self.log.error("Invalid ZAP message, not enough frames: %r", msg) - if len(msg) < 2: - self.log.error("Not enough information to reply") - else: - self._send_zap_reply(msg[1], b"400", b"Not enough frames") - return - - version, request_id, domain, address, identity, mechanism = msg[:6] - credentials = msg[6:] - - domain = u(domain, self.encoding, 'replace') - address = u(address, self.encoding, 'replace') - - if (version != VERSION): - self.log.error("Invalid ZAP version: %r", msg) - self._send_zap_reply(request_id, b"400", b"Invalid version") - return - - self.log.debug("version: %r, request_id: %r, domain: %r," - " address: %r, identity: %r, mechanism: %r", - version, request_id, domain, - address, identity, mechanism, - ) - - - # Is address is explicitly whitelisted or blacklisted? - allowed = False - denied = False - reason = b"NO ACCESS" - - if self.whitelist: - if address in self.whitelist: - allowed = True - self.log.debug("PASSED (whitelist) address=%s", address) - else: - denied = True - reason = b"Address not in whitelist" - self.log.debug("DENIED (not in whitelist) address=%s", address) - - elif self.blacklist: - if address in self.blacklist: - denied = True - reason = b"Address is blacklisted" - self.log.debug("DENIED (blacklist) address=%s", address) - else: - allowed = True - self.log.debug("PASSED (not in blacklist) address=%s", address) - - # Perform authentication mechanism-specific checks if necessary - username = u("user") - if not denied: - - if mechanism == b'NULL' and not allowed: - # For NULL, we allow if the address wasn't blacklisted - self.log.debug("ALLOWED (NULL)") - allowed = True - - elif mechanism == b'PLAIN': - # For PLAIN, even a whitelisted address must authenticate - if len(credentials) != 2: - self.log.error("Invalid PLAIN credentials: %r", credentials) - self._send_zap_reply(request_id, b"400", b"Invalid credentials") - return - username, password = [ u(c, self.encoding, 'replace') for c in credentials ] - allowed, reason = self._authenticate_plain(domain, username, password) - - elif mechanism == b'CURVE': - # For CURVE, even a whitelisted address must authenticate - if len(credentials) != 1: - self.log.error("Invalid CURVE credentials: %r", credentials) - self._send_zap_reply(request_id, b"400", b"Invalid credentials") - return - key = credentials[0] - allowed, reason = self._authenticate_curve(domain, key) - - if allowed: - self._send_zap_reply(request_id, b"200", b"OK", username) - else: - self._send_zap_reply(request_id, b"400", reason) - - def _authenticate_plain(self, domain, username, password): - """PLAIN ZAP authentication""" - allowed = False - reason = b"" - if self.passwords: - # If no domain is not specified then use the default domain - if not domain: - domain = '*' - - if domain in self.passwords: - if username in self.passwords[domain]: - if password == self.passwords[domain][username]: - allowed = True - else: - reason = b"Invalid password" - else: - reason = b"Invalid username" - else: - reason = b"Invalid domain" - - if allowed: - self.log.debug("ALLOWED (PLAIN) domain=%s username=%s password=%s", - domain, username, password, - ) - else: - self.log.debug("DENIED %s", reason) - - else: - reason = b"No passwords defined" - self.log.debug("DENIED (PLAIN) %s", reason) - - return allowed, reason - - def _authenticate_curve(self, domain, client_key): - """CURVE ZAP authentication""" - allowed = False - reason = b"" - if self.allow_any: - allowed = True - reason = b"OK" - self.log.debug("ALLOWED (CURVE allow any client)") - else: - # If no explicit domain is specified then use the default domain - if not domain: - domain = '*' - - if domain in self.certs: - # The certs dict stores keys in z85 format, convert binary key to z85 bytes - z85_client_key = z85.encode(client_key) - if z85_client_key in self.certs[domain] or self.certs[domain] == b'OK': - allowed = True - reason = b"OK" - else: - reason = b"Unknown key" - - status = "ALLOWED" if allowed else "DENIED" - self.log.debug("%s (CURVE) domain=%s client_key=%s", - status, domain, z85_client_key, - ) - else: - reason = b"Unknown domain" - - return allowed, reason - - def _send_zap_reply(self, request_id, status_code, status_text, user_id='user'): - """Send a ZAP reply to finish the authentication.""" - user_id = user_id if status_code == b'200' else b'' - if isinstance(user_id, unicode): - user_id = user_id.encode(self.encoding, 'replace') - metadata = b'' # not currently used - self.log.debug("ZAP reply code=%s text=%s", status_code, status_text) - reply = [VERSION, request_id, status_code, status_text, user_id, metadata] - self.zap_socket.send_multipart(reply) - -__all__ = ['Authenticator', 'CURVE_ALLOW_ANY'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/certs.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/certs.py deleted file mode 100644 index 4d26ad7b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/certs.py +++ /dev/null @@ -1,119 +0,0 @@ -"""0MQ authentication related functions and classes.""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import datetime -import glob -import io -import os -import zmq -from zmq.utils.strtypes import bytes, unicode, b, u - - -_cert_secret_banner = u("""# **** Generated on {0} by pyzmq **** -# ZeroMQ CURVE **Secret** Certificate -# DO NOT PROVIDE THIS FILE TO OTHER USERS nor change its permissions. - -""") - -_cert_public_banner = u("""# **** Generated on {0} by pyzmq **** -# ZeroMQ CURVE Public Certificate -# Exchange securely, or use a secure mechanism to verify the contents -# of this file after exchange. Store public certificates in your home -# directory, in the .curve subdirectory. - -""") - -def _write_key_file(key_filename, banner, public_key, secret_key=None, metadata=None, encoding='utf-8'): - """Create a certificate file""" - if isinstance(public_key, bytes): - public_key = public_key.decode(encoding) - if isinstance(secret_key, bytes): - secret_key = secret_key.decode(encoding) - with io.open(key_filename, 'w', encoding='utf8') as f: - f.write(banner.format(datetime.datetime.now())) - - f.write(u('metadata\n')) - if metadata: - for k, v in metadata.items(): - if isinstance(v, bytes): - v = v.decode(encoding) - f.write(u(" {0} = {1}\n").format(k, v)) - - f.write(u('curve\n')) - f.write(u(" public-key = \"{0}\"\n").format(public_key)) - - if secret_key: - f.write(u(" secret-key = \"{0}\"\n").format(secret_key)) - - -def create_certificates(key_dir, name, metadata=None): - """Create zmq certificates. - - Returns the file paths to the public and secret certificate files. - """ - public_key, secret_key = zmq.curve_keypair() - base_filename = os.path.join(key_dir, name) - secret_key_file = "{0}.key_secret".format(base_filename) - public_key_file = "{0}.key".format(base_filename) - now = datetime.datetime.now() - - _write_key_file(public_key_file, - _cert_public_banner.format(now), - public_key) - - _write_key_file(secret_key_file, - _cert_secret_banner.format(now), - public_key, - secret_key=secret_key, - metadata=metadata) - - return public_key_file, secret_key_file - - -def load_certificate(filename): - """Load public and secret key from a zmq certificate. - - Returns (public_key, secret_key) - - If the certificate file only contains the public key, - secret_key will be None. - """ - public_key = None - secret_key = None - if not os.path.exists(filename): - raise IOError("Invalid certificate file: {0}".format(filename)) - - with open(filename, 'rb') as f: - for line in f: - line = line.strip() - if line.startswith(b'#'): - continue - if line.startswith(b'public-key'): - public_key = line.split(b"=", 1)[1].strip(b' \t\'"') - if line.startswith(b'secret-key'): - secret_key = line.split(b"=", 1)[1].strip(b' \t\'"') - if public_key and secret_key: - break - - return public_key, secret_key - - -def load_certificates(directory='.'): - """Load public keys from all certificates in a directory""" - certs = {} - if not os.path.isdir(directory): - raise IOError("Invalid certificate directory: {0}".format(directory)) - # Follow czmq pattern of public keys stored in *.key files. - glob_string = os.path.join(directory, "*.key") - - cert_files = glob.glob(glob_string) - for cert_file in cert_files: - public_key, _ = load_certificate(cert_file) - if public_key: - certs[public_key] = 'OK' - return certs - -__all__ = ['create_certificates', 'load_certificate', 'load_certificates'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/ioloop.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/ioloop.py deleted file mode 100644 index 1f448b47..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/ioloop.py +++ /dev/null @@ -1,34 +0,0 @@ -"""ZAP Authenticator integrated with the tornado IOLoop. - -.. versionadded:: 14.1 -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq.eventloop import ioloop, zmqstream -from .base import Authenticator - - -class IOLoopAuthenticator(Authenticator): - """ZAP authentication for use in the tornado IOLoop""" - - def __init__(self, context=None, encoding='utf-8', log=None, io_loop=None): - super(IOLoopAuthenticator, self).__init__(context) - self.zap_stream = None - self.io_loop = io_loop or ioloop.IOLoop.instance() - - def start(self): - """Start ZAP authentication""" - super(IOLoopAuthenticator, self).start() - self.zap_stream = zmqstream.ZMQStream(self.zap_socket, self.io_loop) - self.zap_stream.on_recv(self.handle_zap_message) - - def stop(self): - """Stop ZAP authentication""" - if self.zap_stream: - self.zap_stream.close() - self.zap_stream = None - super(IOLoopAuthenticator, self).stop() - -__all__ = ['IOLoopAuthenticator'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/thread.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/thread.py deleted file mode 100644 index 8c3355a9..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/auth/thread.py +++ /dev/null @@ -1,184 +0,0 @@ -"""ZAP Authenticator in a Python Thread. - -.. versionadded:: 14.1 -""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import logging -from threading import Thread - -import zmq -from zmq.utils import jsonapi -from zmq.utils.strtypes import bytes, unicode, b, u - -from .base import Authenticator - -class AuthenticationThread(Thread): - """A Thread for running a zmq Authenticator - - This is run in the background by ThreadedAuthenticator - """ - - def __init__(self, context, endpoint, encoding='utf-8', log=None): - super(AuthenticationThread, self).__init__() - self.context = context or zmq.Context.instance() - self.encoding = encoding - self.log = log = log or logging.getLogger('zmq.auth') - self.authenticator = Authenticator(context, encoding=encoding, log=log) - - # create a socket to communicate back to main thread. - self.pipe = context.socket(zmq.PAIR) - self.pipe.linger = 1 - self.pipe.connect(endpoint) - - def run(self): - """ Start the Authentication Agent thread task """ - self.authenticator.start() - zap = self.authenticator.zap_socket - poller = zmq.Poller() - poller.register(self.pipe, zmq.POLLIN) - poller.register(zap, zmq.POLLIN) - while True: - try: - socks = dict(poller.poll()) - except zmq.ZMQError: - break # interrupted - - if self.pipe in socks and socks[self.pipe] == zmq.POLLIN: - terminate = self._handle_pipe() - if terminate: - break - - if zap in socks and socks[zap] == zmq.POLLIN: - self._handle_zap() - - self.pipe.close() - self.authenticator.stop() - - def _handle_zap(self): - """ - Handle a message from the ZAP socket. - """ - msg = self.authenticator.zap_socket.recv_multipart() - if not msg: return - self.authenticator.handle_zap_message(msg) - - def _handle_pipe(self): - """ - Handle a message from front-end API. - """ - terminate = False - - # Get the whole message off the pipe in one go - msg = self.pipe.recv_multipart() - - if msg is None: - terminate = True - return terminate - - command = msg[0] - self.log.debug("auth received API command %r", command) - - if command == b'ALLOW': - addresses = [u(m, self.encoding) for m in msg[1:]] - try: - self.authenticator.allow(*addresses) - except Exception as e: - self.log.exception("Failed to allow %s", addresses) - - elif command == b'DENY': - addresses = [u(m, self.encoding) for m in msg[1:]] - try: - self.authenticator.deny(*addresses) - except Exception as e: - self.log.exception("Failed to deny %s", addresses) - - elif command == b'PLAIN': - domain = u(msg[1], self.encoding) - json_passwords = msg[2] - self.authenticator.configure_plain(domain, jsonapi.loads(json_passwords)) - - elif command == b'CURVE': - # For now we don't do anything with domains - domain = u(msg[1], self.encoding) - - # If location is CURVE_ALLOW_ANY, allow all clients. Otherwise - # treat location as a directory that holds the certificates. - location = u(msg[2], self.encoding) - self.authenticator.configure_curve(domain, location) - - elif command == b'TERMINATE': - terminate = True - - else: - self.log.error("Invalid auth command from API: %r", command) - - return terminate - -def _inherit_docstrings(cls): - """inherit docstrings from Authenticator, so we don't duplicate them""" - for name, method in cls.__dict__.items(): - if name.startswith('_'): - continue - upstream_method = getattr(Authenticator, name, None) - if not method.__doc__: - method.__doc__ = upstream_method.__doc__ - return cls - -@_inherit_docstrings -class ThreadAuthenticator(object): - """Run ZAP authentication in a background thread""" - - def __init__(self, context=None, encoding='utf-8', log=None): - self.context = context or zmq.Context.instance() - self.log = log - self.encoding = encoding - self.pipe = None - self.pipe_endpoint = "inproc://{0}.inproc".format(id(self)) - self.thread = None - - def allow(self, *addresses): - self.pipe.send_multipart([b'ALLOW'] + [b(a, self.encoding) for a in addresses]) - - def deny(self, *addresses): - self.pipe.send_multipart([b'DENY'] + [b(a, self.encoding) for a in addresses]) - - def configure_plain(self, domain='*', passwords=None): - self.pipe.send_multipart([b'PLAIN', b(domain, self.encoding), jsonapi.dumps(passwords or {})]) - - def configure_curve(self, domain='*', location=''): - domain = b(domain, self.encoding) - location = b(location, self.encoding) - self.pipe.send_multipart([b'CURVE', domain, location]) - - def start(self): - """Start the authentication thread""" - # create a socket to communicate with auth thread. - self.pipe = self.context.socket(zmq.PAIR) - self.pipe.linger = 1 - self.pipe.bind(self.pipe_endpoint) - self.thread = AuthenticationThread(self.context, self.pipe_endpoint, encoding=self.encoding, log=self.log) - self.thread.start() - - def stop(self): - """Stop the authentication thread""" - if self.pipe: - self.pipe.send(b'TERMINATE') - if self.is_alive(): - self.thread.join() - self.thread = None - self.pipe.close() - self.pipe = None - - def is_alive(self): - """Is the ZAP thread currently running?""" - if self.thread and self.thread.is_alive(): - return True - return False - - def __del__(self): - self.stop() - -__all__ = ['ThreadAuthenticator'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/__init__.py deleted file mode 100644 index 7cac725c..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Import basic exposure of libzmq C API as a backend""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import os -import platform -import sys - -from zmq.utils.sixcerpt import reraise - -from .select import public_api, select_backend - -if 'PYZMQ_BACKEND' in os.environ: - backend = os.environ['PYZMQ_BACKEND'] - if backend in ('cython', 'cffi'): - backend = 'zmq.backend.%s' % backend - _ns = select_backend(backend) -else: - # default to cython, fallback to cffi - # (reverse on PyPy) - if platform.python_implementation() == 'PyPy': - first, second = ('zmq.backend.cffi', 'zmq.backend.cython') - else: - first, second = ('zmq.backend.cython', 'zmq.backend.cffi') - - try: - _ns = select_backend(first) - except Exception: - exc_info = sys.exc_info() - exc = exc_info[1] - try: - _ns = select_backend(second) - except ImportError: - # prevent 'During handling of the above exception...' on py3 - # can't use `raise ... from` on Python 2 - if hasattr(exc, '__cause__'): - exc.__cause__ = None - # raise the *first* error, not the fallback - reraise(*exc_info) - -globals().update(_ns) - -__all__ = public_api diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/__init__.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/__init__.py deleted file mode 100644 index ca3164d3..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -"""CFFI backend (for PyPY)""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from zmq.backend.cffi import (constants, error, message, context, socket, - _poll, devices, utils) - -__all__ = [] -for submod in (constants, error, message, context, socket, - _poll, devices, utils): - __all__.extend(submod.__all__) - -from .constants import * -from .error import * -from .message import * -from .context import * -from .socket import * -from .devices import * -from ._poll import * -from ._cffi import zmq_version_info, ffi -from .utils import * diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cdefs.h b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cdefs.h deleted file mode 100644 index d3300575..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cdefs.h +++ /dev/null @@ -1,68 +0,0 @@ -void zmq_version(int *major, int *minor, int *patch); - -void* zmq_socket(void *context, int type); -int zmq_close(void *socket); - -int zmq_bind(void *socket, const char *endpoint); -int zmq_connect(void *socket, const char *endpoint); - -int zmq_errno(void); -const char * zmq_strerror(int errnum); - -void* zmq_stopwatch_start(void); -unsigned long zmq_stopwatch_stop(void *watch); -void zmq_sleep(int seconds_); -int zmq_device(int device, void *frontend, void *backend); - -int zmq_unbind(void *socket, const char *endpoint); -int zmq_disconnect(void *socket, const char *endpoint); -void* zmq_ctx_new(); -int zmq_ctx_destroy(void *context); -int zmq_ctx_get(void *context, int opt); -int zmq_ctx_set(void *context, int opt, int optval); -int zmq_proxy(void *frontend, void *backend, void *capture); -int zmq_socket_monitor(void *socket, const char *addr, int events); - -int zmq_curve_keypair (char *z85_public_key, char *z85_secret_key); -int zmq_has (const char *capability); - -typedef struct { ...; } zmq_msg_t; -typedef ... zmq_free_fn; - -int zmq_msg_init(zmq_msg_t *msg); -int zmq_msg_init_size(zmq_msg_t *msg, size_t size); -int zmq_msg_init_data(zmq_msg_t *msg, - void *data, - size_t size, - zmq_free_fn *ffn, - void *hint); - -size_t zmq_msg_size(zmq_msg_t *msg); -void *zmq_msg_data(zmq_msg_t *msg); -int zmq_msg_close(zmq_msg_t *msg); - -int zmq_msg_send(zmq_msg_t *msg, void *socket, int flags); -int zmq_msg_recv(zmq_msg_t *msg, void *socket, int flags); - -int zmq_getsockopt(void *socket, - int option_name, - void *option_value, - size_t *option_len); - -int zmq_setsockopt(void *socket, - int option_name, - const void *option_value, - size_t option_len); -typedef struct -{ - void *socket; - int fd; - short events; - short revents; -} zmq_pollitem_t; - -int zmq_poll(zmq_pollitem_t *items, int nitems, long timeout); - -// miscellany -void * memcpy(void *restrict s1, const void *restrict s2, size_t n); -int get_ipc_path_max_len(void); diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cffi.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cffi.py deleted file mode 100644 index c73ebf83..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_cffi.py +++ /dev/null @@ -1,127 +0,0 @@ -# coding: utf-8 -"""The main CFFI wrapping of libzmq""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - - -import json -import os -from os.path import dirname, join -from cffi import FFI - -from zmq.utils.constant_names import all_names, no_prefix - - -base_zmq_version = (3,2,2) - -def load_compiler_config(): - """load pyzmq compiler arguments""" - import zmq - zmq_dir = dirname(zmq.__file__) - zmq_parent = dirname(zmq_dir) - - fname = join(zmq_dir, 'utils', 'compiler.json') - if os.path.exists(fname): - with open(fname) as f: - cfg = json.load(f) - else: - cfg = {} - - cfg.setdefault("include_dirs", []) - cfg.setdefault("library_dirs", []) - cfg.setdefault("runtime_library_dirs", []) - cfg.setdefault("libraries", ["zmq"]) - - # cast to str, because cffi can't handle unicode paths (?!) - cfg['libraries'] = [str(lib) for lib in cfg['libraries']] - for key in ("include_dirs", "library_dirs", "runtime_library_dirs"): - # interpret paths relative to parent of zmq (like source tree) - abs_paths = [] - for p in cfg[key]: - if p.startswith('zmq'): - p = join(zmq_parent, p) - abs_paths.append(str(p)) - cfg[key] = abs_paths - return cfg - - -def zmq_version_info(): - """Get libzmq version as tuple of ints""" - major = ffi.new('int*') - minor = ffi.new('int*') - patch = ffi.new('int*') - - C.zmq_version(major, minor, patch) - - return (int(major[0]), int(minor[0]), int(patch[0])) - - -cfg = load_compiler_config() -ffi = FFI() - -def _make_defines(names): - _names = [] - for name in names: - define_line = "#define %s ..." % (name) - _names.append(define_line) - - return "\n".join(_names) - -c_constant_names = [] -for name in all_names: - if no_prefix(name): - c_constant_names.append(name) - else: - c_constant_names.append("ZMQ_" + name) - -# load ffi definitions -here = os.path.dirname(__file__) -with open(os.path.join(here, '_cdefs.h')) as f: - _cdefs = f.read() - -with open(os.path.join(here, '_verify.c')) as f: - _verify = f.read() - -ffi.cdef(_cdefs) -ffi.cdef(_make_defines(c_constant_names)) - -try: - C = ffi.verify(_verify, - modulename='_cffi_ext', - libraries=cfg['libraries'], - include_dirs=cfg['include_dirs'], - library_dirs=cfg['library_dirs'], - runtime_library_dirs=cfg['runtime_library_dirs'], - ) - _version_info = zmq_version_info() -except Exception as e: - raise ImportError("PyZMQ CFFI backend couldn't find zeromq: %s\n" - "Please check that you have zeromq headers and libraries." % e) - -if _version_info < (3,2,2): - raise ImportError("PyZMQ CFFI backend requires zeromq >= 3.2.2," - " but found %i.%i.%i" % _version_info - ) - -nsp = new_sizet_pointer = lambda length: ffi.new('size_t*', length) - -new_uint64_pointer = lambda: (ffi.new('uint64_t*'), - nsp(ffi.sizeof('uint64_t'))) -new_int64_pointer = lambda: (ffi.new('int64_t*'), - nsp(ffi.sizeof('int64_t'))) -new_int_pointer = lambda: (ffi.new('int*'), - nsp(ffi.sizeof('int'))) -new_binary_data = lambda length: (ffi.new('char[%d]' % (length)), - nsp(ffi.sizeof('char') * length)) - -value_uint64_pointer = lambda val : (ffi.new('uint64_t*', val), - ffi.sizeof('uint64_t')) -value_int64_pointer = lambda val: (ffi.new('int64_t*', val), - ffi.sizeof('int64_t')) -value_int_pointer = lambda val: (ffi.new('int*', val), - ffi.sizeof('int')) -value_binary_data = lambda val, length: (ffi.new('char[%d]' % (length + 1), val), - ffi.sizeof('char') * length) - -IPC_PATH_MAX_LEN = C.get_ipc_path_max_len() diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_poll.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_poll.py deleted file mode 100644 index 9bca34ca..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_poll.py +++ /dev/null @@ -1,56 +0,0 @@ -# coding: utf-8 -"""zmq poll function""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import C, ffi, zmq_version_info - -from .constants import * - -from zmq.error import _check_rc - - -def _make_zmq_pollitem(socket, flags): - zmq_socket = socket._zmq_socket - zmq_pollitem = ffi.new('zmq_pollitem_t*') - zmq_pollitem.socket = zmq_socket - zmq_pollitem.fd = 0 - zmq_pollitem.events = flags - zmq_pollitem.revents = 0 - return zmq_pollitem[0] - -def _make_zmq_pollitem_fromfd(socket_fd, flags): - zmq_pollitem = ffi.new('zmq_pollitem_t*') - zmq_pollitem.socket = ffi.NULL - zmq_pollitem.fd = socket_fd - zmq_pollitem.events = flags - zmq_pollitem.revents = 0 - return zmq_pollitem[0] - -def zmq_poll(sockets, timeout): - cffi_pollitem_list = [] - low_level_to_socket_obj = {} - for item in sockets: - if isinstance(item[0], int): - low_level_to_socket_obj[item[0]] = item - cffi_pollitem_list.append(_make_zmq_pollitem_fromfd(item[0], item[1])) - else: - low_level_to_socket_obj[item[0]._zmq_socket] = item - cffi_pollitem_list.append(_make_zmq_pollitem(item[0], item[1])) - items = ffi.new('zmq_pollitem_t[]', cffi_pollitem_list) - list_length = ffi.cast('int', len(cffi_pollitem_list)) - c_timeout = ffi.cast('long', timeout) - rc = C.zmq_poll(items, list_length, c_timeout) - _check_rc(rc) - result = [] - for index in range(len(items)): - if not items[index].socket == ffi.NULL: - if items[index].revents > 0: - result.append((low_level_to_socket_obj[items[index].socket][0], - items[index].revents)) - else: - result.append((items[index].fd, items[index].revents)) - return result - -__all__ = ['zmq_poll'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_verify.c b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_verify.c deleted file mode 100644 index 547840eb..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/_verify.c +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include -#include - -#include -#include -#include "zmq_compat.h" - -int get_ipc_path_max_len(void) { - struct sockaddr_un *dummy; - return sizeof(dummy->sun_path) - 1; -} diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/constants.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/constants.py deleted file mode 100644 index ee293e74..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/constants.py +++ /dev/null @@ -1,15 +0,0 @@ -# coding: utf-8 -"""zmq constants""" - -from ._cffi import C, c_constant_names -from zmq.utils.constant_names import all_names - -g = globals() -for cname in c_constant_names: - if cname.startswith("ZMQ_"): - name = cname[4:] - else: - name = cname - g[name] = getattr(C, cname) - -__all__ = all_names diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/context.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/context.py deleted file mode 100644 index 16a7b257..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/context.py +++ /dev/null @@ -1,100 +0,0 @@ -# coding: utf-8 -"""zmq Context class""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import weakref - -from ._cffi import C, ffi - -from .socket import * -from .constants import * - -from zmq.error import ZMQError, _check_rc - -class Context(object): - _zmq_ctx = None - _iothreads = None - _closed = None - _sockets = None - _shadow = False - - def __init__(self, io_threads=1, shadow=None): - - if shadow: - self._zmq_ctx = ffi.cast("void *", shadow) - self._shadow = True - else: - self._shadow = False - if not io_threads >= 0: - raise ZMQError(EINVAL) - - self._zmq_ctx = C.zmq_ctx_new() - if self._zmq_ctx == ffi.NULL: - raise ZMQError(C.zmq_errno()) - if not shadow: - C.zmq_ctx_set(self._zmq_ctx, IO_THREADS, io_threads) - self._closed = False - self._sockets = set() - - @property - def underlying(self): - """The address of the underlying libzmq context""" - return int(ffi.cast('size_t', self._zmq_ctx)) - - @property - def closed(self): - return self._closed - - def _add_socket(self, socket): - ref = weakref.ref(socket) - self._sockets.add(ref) - return ref - - def _rm_socket(self, ref): - if ref in self._sockets: - self._sockets.remove(ref) - - def set(self, option, value): - """set a context option - - see zmq_ctx_set - """ - rc = C.zmq_ctx_set(self._zmq_ctx, option, value) - _check_rc(rc) - - def get(self, option): - """get context option - - see zmq_ctx_get - """ - rc = C.zmq_ctx_get(self._zmq_ctx, option) - _check_rc(rc) - return rc - - def term(self): - if self.closed: - return - - C.zmq_ctx_destroy(self._zmq_ctx) - - self._zmq_ctx = None - self._closed = True - - def destroy(self, linger=None): - if self.closed: - return - - sockets = self._sockets - self._sockets = set() - for s in sockets: - s = s() - if s and not s.closed: - if linger: - s.setsockopt(LINGER, linger) - s.close() - - self.term() - -__all__ = ['Context'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/devices.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/devices.py deleted file mode 100644 index c7a514a8..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/devices.py +++ /dev/null @@ -1,24 +0,0 @@ -# coding: utf-8 -"""zmq device functions""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import C, ffi, zmq_version_info -from .socket import Socket -from zmq.error import ZMQError, _check_rc - -def device(device_type, frontend, backend): - rc = C.zmq_proxy(frontend._zmq_socket, backend._zmq_socket, ffi.NULL) - _check_rc(rc) - -def proxy(frontend, backend, capture=None): - if isinstance(capture, Socket): - capture = capture._zmq_socket - else: - capture = ffi.NULL - - rc = C.zmq_proxy(frontend._zmq_socket, backend._zmq_socket, capture) - _check_rc(rc) - -__all__ = ['device', 'proxy'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/error.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/error.py deleted file mode 100644 index 3bb64de0..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/error.py +++ /dev/null @@ -1,13 +0,0 @@ -"""zmq error functions""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import C, ffi - -def strerror(errno): - return ffi.string(C.zmq_strerror(errno)) - -zmq_errno = C.zmq_errno - -__all__ = ['strerror', 'zmq_errno'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/message.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/message.py deleted file mode 100644 index c35decb6..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/message.py +++ /dev/null @@ -1,69 +0,0 @@ -"""Dummy Frame object""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import ffi, C - -import zmq -from zmq.utils.strtypes import unicode - -try: - view = memoryview -except NameError: - view = buffer - -_content = lambda x: x.tobytes() if type(x) == memoryview else x - -class Frame(object): - _data = None - tracker = None - closed = False - more = False - buffer = None - - - def __init__(self, data, track=False): - try: - view(data) - except TypeError: - raise - - self._data = data - - if isinstance(data, unicode): - raise TypeError("Unicode objects not allowed. Only: str/bytes, " + - "buffer interfaces.") - - self.more = False - self.tracker = None - self.closed = False - if track: - self.tracker = zmq.MessageTracker() - - self.buffer = view(self.bytes) - - @property - def bytes(self): - data = _content(self._data) - return data - - def __len__(self): - return len(self.bytes) - - def __eq__(self, other): - return self.bytes == _content(other) - - def __str__(self): - if str is unicode: - return self.bytes.decode() - else: - return self.bytes - - @property - def done(self): - return True - -Message = Frame - -__all__ = ['Frame', 'Message'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/socket.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/socket.py deleted file mode 100644 index 3c427739..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/socket.py +++ /dev/null @@ -1,244 +0,0 @@ -# coding: utf-8 -"""zmq Socket class""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -import random -import codecs - -import errno as errno_mod - -from ._cffi import (C, ffi, new_uint64_pointer, new_int64_pointer, - new_int_pointer, new_binary_data, value_uint64_pointer, - value_int64_pointer, value_int_pointer, value_binary_data, - IPC_PATH_MAX_LEN) - -from .message import Frame -from .constants import * - -import zmq -from zmq.error import ZMQError, _check_rc, _check_version -from zmq.utils.strtypes import unicode - - -def new_pointer_from_opt(option, length=0): - from zmq.sugar.constants import ( - int64_sockopts, bytes_sockopts, - ) - if option in int64_sockopts: - return new_int64_pointer() - elif option in bytes_sockopts: - return new_binary_data(length) - else: - # default - return new_int_pointer() - -def value_from_opt_pointer(option, opt_pointer, length=0): - from zmq.sugar.constants import ( - int64_sockopts, bytes_sockopts, - ) - if option in int64_sockopts: - return int(opt_pointer[0]) - elif option in bytes_sockopts: - return ffi.buffer(opt_pointer, length)[:] - else: - return int(opt_pointer[0]) - -def initialize_opt_pointer(option, value, length=0): - from zmq.sugar.constants import ( - int64_sockopts, bytes_sockopts, - ) - if option in int64_sockopts: - return value_int64_pointer(value) - elif option in bytes_sockopts: - return value_binary_data(value, length) - else: - return value_int_pointer(value) - - -class Socket(object): - context = None - socket_type = None - _zmq_socket = None - _closed = None - _ref = None - _shadow = False - - def __init__(self, context=None, socket_type=None, shadow=None): - self.context = context - if shadow is not None: - self._zmq_socket = ffi.cast("void *", shadow) - self._shadow = True - else: - self._shadow = False - self._zmq_socket = C.zmq_socket(context._zmq_ctx, socket_type) - if self._zmq_socket == ffi.NULL: - raise ZMQError() - self._closed = False - if context: - self._ref = context._add_socket(self) - - @property - def underlying(self): - """The address of the underlying libzmq socket""" - return int(ffi.cast('size_t', self._zmq_socket)) - - @property - def closed(self): - return self._closed - - def close(self, linger=None): - rc = 0 - if not self._closed and hasattr(self, '_zmq_socket'): - if self._zmq_socket is not None: - rc = C.zmq_close(self._zmq_socket) - self._closed = True - if self.context: - self.context._rm_socket(self._ref) - return rc - - def bind(self, address): - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_bind(self._zmq_socket, address) - if rc < 0: - if IPC_PATH_MAX_LEN and C.zmq_errno() == errno_mod.ENAMETOOLONG: - # py3compat: address is bytes, but msg wants str - if str is unicode: - address = address.decode('utf-8', 'replace') - path = address.split('://', 1)[-1] - msg = ('ipc path "{0}" is longer than {1} ' - 'characters (sizeof(sockaddr_un.sun_path)).' - .format(path, IPC_PATH_MAX_LEN)) - raise ZMQError(C.zmq_errno(), msg=msg) - else: - _check_rc(rc) - - def unbind(self, address): - _check_version((3,2), "unbind") - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_unbind(self._zmq_socket, address) - _check_rc(rc) - - def connect(self, address): - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_connect(self._zmq_socket, address) - _check_rc(rc) - - def disconnect(self, address): - _check_version((3,2), "disconnect") - if isinstance(address, unicode): - address = address.encode('utf8') - rc = C.zmq_disconnect(self._zmq_socket, address) - _check_rc(rc) - - def set(self, option, value): - length = None - if isinstance(value, unicode): - raise TypeError("unicode not allowed, use bytes") - - if isinstance(value, bytes): - if option not in zmq.constants.bytes_sockopts: - raise TypeError("not a bytes sockopt: %s" % option) - length = len(value) - - c_data = initialize_opt_pointer(option, value, length) - - c_value_pointer = c_data[0] - c_sizet = c_data[1] - - rc = C.zmq_setsockopt(self._zmq_socket, - option, - ffi.cast('void*', c_value_pointer), - c_sizet) - _check_rc(rc) - - def get(self, option): - c_data = new_pointer_from_opt(option, length=255) - - c_value_pointer = c_data[0] - c_sizet_pointer = c_data[1] - - rc = C.zmq_getsockopt(self._zmq_socket, - option, - c_value_pointer, - c_sizet_pointer) - _check_rc(rc) - - sz = c_sizet_pointer[0] - v = value_from_opt_pointer(option, c_value_pointer, sz) - if option != zmq.IDENTITY and option in zmq.constants.bytes_sockopts and v.endswith(b'\0'): - v = v[:-1] - return v - - def send(self, message, flags=0, copy=False, track=False): - if isinstance(message, unicode): - raise TypeError("Message must be in bytes, not an unicode Object") - - if isinstance(message, Frame): - message = message.bytes - - zmq_msg = ffi.new('zmq_msg_t*') - c_message = ffi.new('char[]', message) - rc = C.zmq_msg_init_size(zmq_msg, len(message)) - C.memcpy(C.zmq_msg_data(zmq_msg), c_message, len(message)) - - rc = C.zmq_msg_send(zmq_msg, self._zmq_socket, flags) - C.zmq_msg_close(zmq_msg) - _check_rc(rc) - - if track: - return zmq.MessageTracker() - - def recv(self, flags=0, copy=True, track=False): - zmq_msg = ffi.new('zmq_msg_t*') - C.zmq_msg_init(zmq_msg) - - rc = C.zmq_msg_recv(zmq_msg, self._zmq_socket, flags) - - if rc < 0: - C.zmq_msg_close(zmq_msg) - _check_rc(rc) - - _buffer = ffi.buffer(C.zmq_msg_data(zmq_msg), C.zmq_msg_size(zmq_msg)) - value = _buffer[:] - C.zmq_msg_close(zmq_msg) - - frame = Frame(value, track=track) - frame.more = self.getsockopt(RCVMORE) - - if copy: - return frame.bytes - else: - return frame - - def monitor(self, addr, events=-1): - """s.monitor(addr, flags) - - Start publishing socket events on inproc. - See libzmq docs for zmq_monitor for details. - - Note: requires libzmq >= 3.2 - - Parameters - ---------- - addr : str - The inproc url used for monitoring. Passing None as - the addr will cause an existing socket monitor to be - deregistered. - events : int [default: zmq.EVENT_ALL] - The zmq event bitmask for which events will be sent to the monitor. - """ - - _check_version((3,2), "monitor") - if events < 0: - events = zmq.EVENT_ALL - if addr is None: - addr = ffi.NULL - rc = C.zmq_socket_monitor(self._zmq_socket, addr, events) - - -__all__ = ['Socket', 'IPC_PATH_MAX_LEN'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/utils.py b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/utils.py deleted file mode 100644 index fde7827b..00000000 --- a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cffi/utils.py +++ /dev/null @@ -1,62 +0,0 @@ -# coding: utf-8 -"""miscellaneous zmq_utils wrapping""" - -# Copyright (C) PyZMQ Developers -# Distributed under the terms of the Modified BSD License. - -from ._cffi import ffi, C - -from zmq.error import ZMQError, _check_rc, _check_version -from zmq.utils.strtypes import unicode - -def has(capability): - """Check for zmq capability by name (e.g. 'ipc', 'curve') - - .. versionadded:: libzmq-4.1 - .. versionadded:: 14.1 - """ - _check_version((4,1), 'zmq.has') - if isinstance(capability, unicode): - capability = capability.encode('utf8') - return bool(C.zmq_has(capability)) - -def curve_keypair(): - """generate a Z85 keypair for use with zmq.CURVE security - - Requires libzmq (≥ 4.0) to have been linked with libsodium. - - Returns - ------- - (public, secret) : two bytestrings - The public and private keypair as 40 byte z85-encoded bytestrings. - """ - _check_version((3,2), "monitor") - public = ffi.new('char[64]') - private = ffi.new('char[64]') - rc = C.zmq_curve_keypair(public, private) - _check_rc(rc) - return ffi.buffer(public)[:40], ffi.buffer(private)[:40] - - -class Stopwatch(object): - def __init__(self): - self.watch = ffi.NULL - - def start(self): - if self.watch == ffi.NULL: - self.watch = C.zmq_stopwatch_start() - else: - raise ZMQError('Stopwatch is already runing.') - - def stop(self): - if self.watch == ffi.NULL: - raise ZMQError('Must start the Stopwatch before calling stop.') - else: - time = C.zmq_stopwatch_stop(self.watch) - self.watch = ffi.NULL - return time - - def sleep(self, seconds): - C.zmq_sleep(seconds) - -__all__ = ['has', 'curve_keypair', 'Stopwatch'] diff --git a/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_device.cpython-34m.so b/scripts/external_libs/pyzmq-14.5.0/python3/cel59/64bit/zmq/backend/cython/_device.cpython-34m.so deleted file mode 100644 index 6e97bc0b62a3c2d4619ef541a28bf42fd6d7da4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29976 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

T(eTpD);5f8V^K=H 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%0Acx*MegfpbjFV^uf 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⋙F{Ty7{yaso8w0c`*l{E<=LNrxzf9-lYVUFK6>9 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 diff --git a/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/socket.so b/scripts/external_libs/pyzmq-14.5.0/python2/fedora18/64bit/zmq/backend/cython/socket.so deleted file mode 100644 index 48655525adcd051d94118589a16f9002c41526bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105752 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