"""Import basic exposure of libzmq C API as a backend""" | |
# Copyright (C) PyZMQ Developers | |
# Distributed under the terms of the Modified BSD License. | |
from importlib import import_module | |
from typing import Dict | |
public_api = [ | |
'Context', | |
'Socket', | |
'Frame', | |
'Message', | |
'device', | |
'proxy', | |
'proxy_steerable', | |
'zmq_poll', | |
'strerror', | |
'zmq_errno', | |
'has', | |
'curve_keypair', | |
'curve_public', | |
'zmq_version_info', | |
'IPC_PATH_MAX_LEN', | |
] | |
def select_backend(name: str) -> Dict: | |
"""Select the pyzmq backend""" | |
try: | |
mod = import_module(name) | |
except ImportError: | |
raise | |
except Exception as e: | |
raise ImportError(f"Importing {name} failed with {e}") from e | |
ns = { | |
# private API | |
'monitored_queue': mod.monitored_queue, | |
} | |
ns.update({key: getattr(mod, key) for key in public_api}) | |
return ns | |