Files
zeekayandHanzo Dev f84fe1fd15 snapshot slice 1
Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 15:29:05 -07:00

81 lines
2.5 KiB
Python

# Copyright (c) ONNX Project Contributors
#
# SPDX-License-Identifier: Apache-2.0
from __future__ import annotations
from typing import Any
import numpy as np
import onnx
from onnx.backend.test.case.base import Base
from onnx.backend.test.case.node import expect
def optional_get_element_reference_implementation(optional: Any | None) -> Any:
assert optional is not None
return optional
class OptionalHasElement(Base):
@staticmethod
def export_get_element_tensor() -> None:
optional = np.array([1, 2, 3, 4]).astype(np.float32)
tensor_type_proto = onnx.helper.make_tensor_type_proto(
elem_type=onnx.TensorProto.FLOAT,
shape=[
4,
],
)
optional_type_proto = onnx.helper.make_optional_type_proto(tensor_type_proto)
node = onnx.helper.make_node(
"OptionalGetElement", inputs=["optional_input"], outputs=["output"]
)
output = optional_get_element_reference_implementation(optional)
expect(
node,
inputs=[optional],
outputs=[output],
input_type_protos=[optional_type_proto],
name="test_optional_get_element_optional_tensor",
)
expect(
node,
inputs=[optional],
outputs=[output],
input_type_protos=[tensor_type_proto],
name="test_optional_get_element_tensor",
)
@staticmethod
def export_get_element_sequence() -> None:
optional = [np.array([1, 2, 3, 4]).astype(np.int32)]
tensor_type_proto = onnx.helper.make_tensor_type_proto(
elem_type=onnx.TensorProto.INT32,
shape=[
4,
],
)
seq_type_proto = onnx.helper.make_sequence_type_proto(tensor_type_proto)
optional_type_proto = onnx.helper.make_optional_type_proto(seq_type_proto)
node = onnx.helper.make_node(
"OptionalGetElement", inputs=["optional_input"], outputs=["output"]
)
output = optional_get_element_reference_implementation(optional)
expect(
node,
inputs=[optional],
outputs=[output],
input_type_protos=[optional_type_proto],
name="test_optional_get_element_optional_sequence",
)
expect(
node,
inputs=[optional],
outputs=[output],
input_type_protos=[seq_type_proto],
name="test_optional_get_element_sequence",
)