leap-model-parser 0.1.185.dev12__tar.gz → 0.1.187__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.185.dev12 → leap_model_parser-0.1.187}/PKG-INFO +2 -2
  2. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/leap_graph_editor.py +15 -9
  3. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/model_parser.py +6 -4
  4. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/pyproject.toml +2 -2
  5. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/LICENSE +0 -0
  6. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/README.md +0 -0
  7. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/__init__.py +0 -0
  8. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/contract/__init__.py +0 -0
  9. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/contract/graph.py +0 -0
  10. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/contract/importmodelresponse.py +0 -0
  11. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/contract/nodedata.py +0 -0
  12. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/contract/ui_components.json +0 -0
  13. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/keras_json_model_import.py +0 -0
  14. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/__init__.py +0 -0
  15. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/layerpedia/__init__.py +0 -0
  16. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/layerpedia/layerpedia.py +0 -0
  17. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/tlinspection/__init__.py +0 -0
  18. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/tlinspection/leapinspection.py +0 -0
  19. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/uicomponents/__init__.py +0 -0
  20. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/uicomponents/generatenodedata.py +0 -0
  21. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/uicomponents/tensorflowinscpection.py +0 -0
  22. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/leap_model_parser/utils/uicomponents/ui_components.json +0 -0
  23. {leap_model_parser-0.1.185.dev12 → leap_model_parser-0.1.187}/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.185.dev12
3
+ Version: 0.1.187
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/leap-model-parser
6
6
  License: MIT
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.8
13
13
  Classifier: Programming Language :: Python :: 3.9
14
14
  Classifier: Programming Language :: Python :: 3.10
15
- Requires-Dist: code-loader (==1.0.87.dev8)
15
+ Requires-Dist: code-loader (==1.0.89)
16
16
  Requires-Dist: keras-data-format-converter (==0.1.22)
17
17
  Requires-Dist: leap-model-rebuilder (==0.1.7)
18
18
  Requires-Dist: numpy (>=1.22.3,<2.0.0)
@@ -1,8 +1,8 @@
1
1
  from enum import Enum
2
2
  from typing import Optional, Dict, Any, List
3
3
 
4
- from code_loader.contract.mapping import NodeConnection, NodeMappingType, NodeMapping
5
- from keras import Model
4
+ from code_loader.contract.mapping import NodeConnection, NodeMappingType, NodeMapping # type: ignore
5
+ from keras import Model # type: ignore
6
6
 
7
7
  from leap_model_parser.contract.graph import Node as Node, OutputData, ConnectionOutput, ConnectionInput, InputData
8
8
 
@@ -26,7 +26,10 @@ class LeapGraphEditor:
26
26
  if node_connection.node.type == NodeMappingType.PredictionLabels:
27
27
  prediction_labels_name = node_connection.node.name
28
28
  prediction_node = list(node_connection.node_inputs.values())[0]
29
- prediction_node_id = self._find_node_by_origin_name(prediction_node.name).id
29
+ prediction_mapping_node = self._find_node_by_origin_name(prediction_node.name)
30
+ assert prediction_mapping_node is not None, \
31
+ f"Prediction node with name {prediction_node.name} not found in model graph"
32
+ prediction_node_id = prediction_mapping_node.id
30
33
  self.model_graph[prediction_node_id].data['prediction_type'] = prediction_labels_name
31
34
  if node_connection.node.type == NodeMappingType.Visualizer:
32
35
  new_visualizer_node_id = self._add_visualizer_node(
@@ -198,12 +201,15 @@ class LeapGraphEditor:
198
201
  input_name = f'{node_id}-{input_name}'
199
202
  self.model_graph[node_id].inputs[input_name] = ConnectionInput([InputData(input_node_id, output_name)])
200
203
 
204
+ output_connection = OutputData(node_id, input_name)
201
205
  self.model_graph[input_node_id].outputs[output_name].connections.append(output_connection)
202
206
 
203
- def _handle_input_node_with_index(self, input_node: NodeMapping):
207
+ def _handle_input_node_with_index(self, input_node: NodeMapping) -> str:
204
208
  input_index = int(input_node.type.value.replace('Input', ''))
205
209
  origin_name = self.keras_model.inputs[input_index].node.layer.name
206
- input_node_id = self._find_input_node_by_origin_name(origin_name).id
210
+ input_node = self._find_input_node_by_origin_name(origin_name)
211
+ assert input_node is not None, f"Input node with origin name {origin_name} not found in model graph"
212
+ input_node_id = input_node.id
207
213
  self.model_graph[input_node_id].data['output_name'] = input_node.name
208
214
  output_keys = list(self.model_graph[input_node_id].outputs.keys())
209
215
  for output_key in output_keys:
@@ -218,9 +224,6 @@ class LeapGraphEditor:
218
224
  if connection_input.output == output_key:
219
225
  connection_input.output = new_output_key
220
226
 
221
- if input_node_id is None:
222
- raise Exception(f"Couldn't find input node by origin name {origin_name}")
223
-
224
227
  return input_node_id
225
228
 
226
229
  def _find_or_add_input_node(self, input_node: NodeMapping) -> str:
@@ -234,7 +237,10 @@ class LeapGraphEditor:
234
237
  elif 'Input' in input_node.type.value:
235
238
  input_node_id = self._handle_input_node_with_index(input_node)
236
239
  elif input_node.type.value.startswith('Prediction'):
237
- input_node_id = self._find_node_by_origin_name(input_node.name).id
240
+ node_by_origin_name = self._find_node_by_origin_name(input_node.name)
241
+ assert node_by_origin_name is not None, \
242
+ f"Prediction node with name {input_node.name} not found in model graph"
243
+ input_node_id = node_by_origin_name.id
238
244
  else:
239
245
  input_node_id = self._find_layer_node_id(input_node.name)
240
246
 
@@ -5,10 +5,10 @@ import tarfile
5
5
  import tempfile
6
6
  from importlib.util import find_spec
7
7
  from pathlib import Path
8
- from typing import Callable, Optional, List, Dict, Tuple, Type
8
+
9
9
 
10
10
  import tensorflow as tf # type: ignore
11
- from code_loader.contract.mapping import NodeConnection, leap_output
11
+ from code_loader.contract.mapping import NodeConnection # type: ignore
12
12
  from keras import Model # type: ignore
13
13
  from keras_data_format_converter import convert_channels_first_to_last # type: ignore
14
14
  from leap_model_rebuilder import rebuild_model # type: ignore
@@ -21,7 +21,9 @@ from tensorflow.keras.models import load_model # type: ignore
21
21
  from leap_model_parser.contract.graph import Node, InputInfo
22
22
  from leap_model_parser.contract.importmodelresponse import ImportModelTypeEnum
23
23
  from leap_model_parser.keras_json_model_import import KerasJsonModelImport
24
- from leap_model_parser.leap_graph_editor import LeapGraphEditor
24
+ from leap_model_parser.leap_graph_editor import LeapGraphEditor # type: ignore
25
+
26
+ from typing import Callable, Optional, List, Dict, Tuple, Type
25
27
 
26
28
  onnx_imported = False
27
29
  package_name = 'onnx'
@@ -33,7 +35,7 @@ if spec is not None:
33
35
 
34
36
  class ModelParser:
35
37
  def __init__(self, should_transform_inputs_and_outputs=False,
36
- custom_layers: Optional[Dict[str, Type[tf.keras.layers.Layer]]] = None,
38
+ custom_layers=None,
37
39
  mapping_connections: Optional[List[NodeConnection]] = None):
38
40
  self._should_transform_inputs_and_outputs = should_transform_inputs_and_outputs
39
41
  self.custom_layers = custom_layers
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "leap-model-parser"
3
- version = "0.1.185.dev12"
3
+ version = "0.1.187"
4
4
  description = ""
5
5
  authors = ["idan <idan.yogev@tensorleap.ai>"]
6
6
  license = "MIT"
@@ -22,7 +22,7 @@ onnx2kerastl = "0.0.174"
22
22
  keras-data-format-converter = "0.1.22"
23
23
  leap-model-rebuilder = "0.1.7"
24
24
  tensorflow-io-gcs-filesystem = "0.34.0"
25
- code-loader = "1.0.87.dev8"
25
+ code-loader = "1.0.89"
26
26
 
27
27
  [tool.poetry.dev-dependencies]
28
28
  pytest = "^7.1.1"