{"library":"sng4onnx","title":"Simple ONNX Name Generator","type":"library","description":"sng4onnx is a Python library and CLI tool designed to automatically generate and assign an operation (OP) name to each operation within an ONNX (Open Neural Network Exchange) file, particularly useful for older format models lacking explicit OP names. The library is currently active, with version 2.0.1, and maintains a frequent release cadence, often rolling out updates for bug fixes and minor feature enhancements.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install -U onnx sng4onnx"],"cli":{"name":"sng4onnx","version":"usage: sng4onnx [-h] -if INPUT_ONNX_FILE_PATH -of OUTPUT_ONNX_FILE_PATH [-n]"}},"imports":["from sng4onnx import generate"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/PINTO0309/sng4onnx","docs":null,"changelog":null,"pypi":"https://pypi.org/project/sng4onnx/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"import onnx\nfrom onnx import helper, TensorProto\nimport numpy as np\nfrom sng4onnx import generate\nimport os\n\n# 1. Create a dummy ONNX model for demonstration\ndef create_dummy_onnx(path):\n    # Define graph inputs\n    X = helper.make_tensor_value_info('X', TensorProto.FLOAT, [1, 2, 3])\n    Y = helper.make_tensor_value_info('Y', TensorProto.FLOAT, [1, 2, 3])\n\n    # Define graph outputs\n    Z = helper.make_tensor_value_info('Z', TensorProto.FLOAT, [1, 2, 3])\n\n    # Create a node (Mul operator)\n    node_def = helper.make_node(\n        'Add',\n        ['X', 'Y'],\n        ['Z'],\n        name='MyAddOperation' # Can be empty in an 'old format' model\n    )\n\n    # Create the graph\n    graph_def = helper.make_graph(\n        [node_def],\n        'simple_graph',\n        [X, Y],\n        [Z]\n    )\n\n    # Create the model\n    model_def = helper.make_model(graph_def, producer_name='dummy-model')\n\n    # Save the model\n    onnx.save(model_def, path)\n\ninput_onnx_path = 'input_model.onnx'\noutput_onnx_path = 'output_model_renamed.onnx'\ncreate_dummy_onnx(input_onnx_path)\n\n# 2. Use sng4onnx to generate/assign OP names\nprint(f\"Processing {input_onnx_path}...\")\nrenamed_model = generate(\n    input_onnx_file_path=input_onnx_path,\n    output_onnx_file_path=output_onnx_path,\n    non_verbose=False\n)\n\n# 3. Verify the output (optional)\nif os.path.exists(output_onnx_path):\n    print(f\"Successfully generated {output_onnx_path}\")\n    loaded_model = onnx.load(output_onnx_path)\n    print(f\"Nodes in renamed model: {[node.name for node in loaded_model.graph.node]}\")\nelse:\n    print(\"Error: Output model not found.\")\n\n# Clean up dummy files\nos.remove(input_onnx_path)\nos.remove(output_onnx_path)","lang":"python","description":"This quickstart demonstrates how to use `sng4onnx` to process an ONNX model. It begins by programmatically creating a simple ONNX model, then passes it to the `generate` function to automatically assign operation names. Finally, it saves and verifies the processed model.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"2.0.1","pypi_latest":"2.0.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":6.6,"avg_import_s":0.57,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"-U","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"-U","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.7,"import_time_s":0.39,"mem_mb":14.1,"disk_size":"190M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"-U","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"-U","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.3,"import_time_s":0.59,"mem_mb":15.6,"disk_size":"200M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"-U","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"-U","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.1,"import_time_s":0.88,"mem_mb":17.7,"disk_size":"188M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"-U","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"-U","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.2,"import_time_s":0.49,"mem_mb":12.7,"disk_size":"187M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"-U","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"-U","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.7,"import_time_s":0.52,"mem_mb":14.8,"disk_size":"201M"}]}}