leap-model-parser 0.1.245.dev4__tar.gz → 0.1.245.dev6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/PKG-INFO +1 -1
  2. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/model_parser.py +29 -4
  3. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/pyproject.toml +1 -1
  4. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/LICENSE +0 -0
  5. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/README.md +0 -0
  6. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/__init__.py +0 -0
  7. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/contract/__init__.py +0 -0
  8. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/contract/graph.py +0 -0
  9. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/contract/importmodelresponse.py +0 -0
  10. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/contract/nodedata.py +0 -0
  11. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/contract/ui_components.json +0 -0
  12. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/keras_json_model_import.py +0 -0
  13. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/leap_graph_editor.py +0 -0
  14. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/__init__.py +0 -0
  15. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/layerpedia/__init__.py +0 -0
  16. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/layerpedia/layerpedia.py +0 -0
  17. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/tlinspection/__init__.py +0 -0
  18. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/tlinspection/leapinspection.py +0 -0
  19. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/uicomponents/__init__.py +0 -0
  20. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/uicomponents/generatenodedata.py +0 -0
  21. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/uicomponents/tensorflowinscpection.py +0 -0
  22. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/uicomponents/ui_components.json +0 -0
  23. {leap_model_parser-0.1.245.dev4 → leap_model_parser-0.1.245.dev6}/leap_model_parser/utils/uicomponents/ui_components_config.yaml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: leap-model-parser
3
- Version: 0.1.245.dev4
3
+ Version: 0.1.245.dev6
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/leap-model-parser
6
6
  License: MIT
@@ -67,24 +67,43 @@ def _is_empty_file(path: str) -> bool:
67
67
  return False
68
68
 
69
69
 
70
- def _raise_model_file_error(path: str, kind: str, original_exc: Exception) -> None:
70
+ def _validate_model_file(
71
+ path: str,
72
+ kind: str,
73
+ onnx_model: Optional["onnx.ModelProto"] = None,
74
+ post_load_check: bool = False,
75
+ ) -> None:
71
76
  suffix = Path(path).suffix
72
77
  if _is_empty_file(path):
73
78
  raise InvalidModelFile(
74
79
  f"The provided {kind} model file is empty (0 bytes). "
75
80
  "Please provide a real model binary."
76
- ) from original_exc
81
+ )
77
82
  if _is_git_lfs_pointer(path):
78
83
  raise InvalidModelFile(
79
84
  f"This {suffix} file is a Git LFS pointer, not the actual model binary. "
80
85
  "Run `git lfs pull` (or re-download the artifact) to fetch the real file."
81
- ) from original_exc
86
+ )
82
87
  snippet = _text_snippet(path)
83
88
  if snippet is not None:
84
89
  raise InvalidModelFile(
85
90
  f"The provided model is not a real {kind} model binary although its suffix is {suffix}. "
86
91
  f"File's content starts with:\n{snippet}."
87
- ) from original_exc
92
+ )
93
+ if post_load_check and onnx_model is not None:
94
+ if (
95
+ len(onnx_model.graph.node) == 0
96
+ and len(onnx_model.graph.input) == 0
97
+ and len(onnx_model.graph.output) == 0
98
+ ):
99
+ raise InvalidModelFile(
100
+ "The provided onnx model file appears to be empty or invalid "
101
+ "(no graph nodes, inputs, or outputs)."
102
+ )
103
+
104
+
105
+ def _raise_model_file_error(path: str, kind: str, original_exc: Exception) -> None:
106
+ _validate_model_file(path, kind)
88
107
  raise InvalidModelFile(f"Failed to open {kind} model file: {original_exc}") from original_exc
89
108
 
90
109
  class ModelParser:
@@ -190,6 +209,12 @@ class ModelParser:
190
209
  onnx_model = onnx.load_model(file_path)
191
210
  except Exception as e:
192
211
  _raise_model_file_error(file_path, "onnx", e)
212
+ _validate_model_file(
213
+ file_path,
214
+ "onnx",
215
+ onnx_model=onnx_model,
216
+ post_load_check=True,
217
+ )
193
218
  input_all = [_input.name for _input in onnx_model.graph.input]
194
219
  input_initializer = [
195
220
  node.name for node in onnx_model.graph.initializer]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "leap-model-parser"
3
- version = "0.1.245.dev4"
3
+ version = "0.1.245.dev6"
4
4
  description = ""
5
5
  authors = ["idan <idan.yogev@tensorleap.ai>"]
6
6
  license = "MIT"