Metadata-Version: 2.4
Name: model-inspect-tool
Version: 0.1.0
Summary: Inspect input and output metadata for common AI model formats.
Author-email: yyling0101 <yyling0101@gmail.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/yyling0101-a11y/model-inspect-tool
Project-URL: Repository, https://github.com/yyling0101-a11y/model-inspect-tool.git
Project-URL: Issues, https://github.com/yyling0101-a11y/model-inspect-tool/issues
Keywords: onnx,pytorch,tflite,tensorrt,cvimodel,rknn,model-inspection,ai-model,model-metadata
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: onnx
Requires-Dist: onnx>=1.14; extra == "onnx"
Provides-Extra: onnxruntime
Requires-Dist: onnx>=1.14; extra == "onnxruntime"
Requires-Dist: onnxruntime>=1.16; extra == "onnxruntime"
Provides-Extra: tflite
Requires-Dist: tflite-runtime>=2.14; platform_system != "Windows" and extra == "tflite"
Provides-Extra: tensorflow
Requires-Dist: tensorflow>=2.14; extra == "tensorflow"
Provides-Extra: torch
Requires-Dist: torch>=2.1; extra == "torch"
Provides-Extra: ultralytics
Requires-Dist: torch>=2.1; extra == "ultralytics"
Requires-Dist: ultralytics>=8.0; extra == "ultralytics"
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=5; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: ruff>=0.5; extra == "dev"
Dynamic: license-file

# model-inspect

A unified command-line tool for inspecting model input/output metadata.

Supported backends:

- ONNX: native `onnx` parser
- TFLite: `tflite-runtime` or TensorFlow Lite Interpreter
- PyTorch: TorchScript by default; checkpoint loading only with explicit opt-in
- TensorRT Engine: TensorRT Python API or `trtexec`
- CVIModel/BModel: external `model_tool --info`
- RKNN: best-effort external RKNN toolkit integration

## Install

Core CLI:

```bash
pip install model-inspect-tool
```

Install common open-format backends:

```bash
pip install "model-inspect-tool[onnx,torch]"
```

On Linux, TFLite can often be installed with:

```bash
pip install "model-inspect-tool[tflite]"
```

Alternatively install TensorFlow:

```bash
pip install "model-inspect-tool[tensorflow]"
```

Vendor formats require their matching SDK/runtime:

- TensorRT: NVIDIA TensorRT and/or `trtexec`
- CVIModel: TPU-MLIR `model_tool`
- RKNN: RKNN Toolkit2

## Usage

Human-readable output:

```bash
model-inspect model.onnx
```

JSON output:

```bash
model-inspect model.onnx --json
```

Write JSON to a file:

```bash
model-inspect model.onnx --json --output report.json
```

Force a backend:

```bash
model-inspect unknown.bin --format onnx
```

Inspect an ordinary PyTorch checkpoint:

```bash
model-inspect model.pt --allow-unsafe-pickle
```

> Warning: ordinary PyTorch checkpoints may use Python Pickle. Never enable
> `--allow-unsafe-pickle` for untrusted model files.

## Output schema

```json
{
  "format": "onnx",
  "path": "/absolute/path/model.onnx",
  "backend": "onnx",
  "inputs": [
    {
      "name": "images",
      "shape": [1, 3, 640, 640],
      "dtype": "float32"
    }
  ],
  "outputs": [],
  "dynamic": false,
  "metadata": {},
  "warnings": []
}
```

## Development

```bash
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev,onnx,torch]"
pytest
model-inspect tests/assets/example.onnx --json
```

## Build

```bash
python -m build
python -m twine check dist/*
```

## Security

The tool does not load arbitrary PyTorch Pickle checkpoints unless the user
explicitly supplies `--allow-unsafe-pickle`. Vendor command execution uses
argument arrays and does not invoke a shell.
