Source code for mlprodict.onnxrt.ops
"""
Loads runtime operator.
:githublink:`%|py|5`
"""
[docs]def load_op(onnx_node, desc=None, options=None, variables=None, dtype=None):
"""
Sets up a class for a specific ONNX operator.
:param onnx_node: :epkg:`onnx` node
:param desc: internal representation
:param options: runtime options
:param variables: registered variables created by previous operators
:param dtype: float computational type
:return: runtime class
:githublink:`%|py|17`
"""
if desc is None:
raise ValueError( # pragma: no cover
"desc should not be None.")
if options is None:
provider = 'python' # pragma: no cover
else:
provider = options.get('provider', 'python')
if 'provider' in options:
options = options.copy()
del options['provider']
if provider == 'python':
from .ops_cpu import load_op as lo
return lo(onnx_node, desc=desc, options=options)
if provider == 'onnxruntime2':
from .ops_onnxruntime import load_op as lo
return lo(onnx_node, desc=desc, options=options, # pylint: disable=E1123
variables=variables, dtype=dtype)
raise ValueError("Unable to handle provider '{}'.".format(provider))