import onnx
from onnx import helper, TensorProto
def create_very_long_names_model():
long_input_name = "input_with_extremely_long_name_that_exceeds_one_hundred_characters_to_test_string_handling_in_the_parser_and_ir_converter_xyz"
long_output_name = "output_with_extremely_long_name_that_exceeds_one_hundred_characters_to_test_string_handling_in_the_parser_and_ir_converter_abc"
long_node_name = "relu_node_with_extremely_long_name_that_exceeds_one_hundred_characters_to_test_string_handling_capabilities_qwerty"
input_tensor = helper.make_tensor_value_info(
long_input_name, TensorProto.FLOAT, [2, 3]
)
output_tensor = helper.make_tensor_value_info(
long_output_name, TensorProto.FLOAT, [2, 3]
)
nodes = [
helper.make_node(
"Relu", [long_input_name], [long_output_name], name=long_node_name
),
]
graph = helper.make_graph(
nodes,
"very_long_names_model",
[input_tensor],
[output_tensor],
)
model = helper.make_model(
graph, producer_name="onnx-ir-test", opset_imports=[helper.make_opsetid("", 16)]
)
onnx.checker.check_model(model)
return model
def main():
model = create_very_long_names_model()
output_path = "../fixtures/very_long_names.onnx"
onnx.save(model, output_path)
print(f"Model saved to {output_path}")
print(f"\nModel info:")
print(f" Node name length: {len(model.graph.node[0].name)} chars")
print(f" Input name length: {len(model.graph.input[0].name)} chars")
print(f" Output name length: {len(model.graph.output[0].name)} chars")
print(f" Tests string handling for 100+ character names")
if __name__ == "__main__":
main()