code-loader 1.0.87.dev1__tar.gz → 1.0.87.dev3__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 (32) hide show
  1. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/PKG-INFO +1 -1
  2. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/contract/mapping.py +11 -1
  3. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/contract/responsedataclasses.py +8 -1
  4. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/inner_leap_binder/leapbinder_decorators.py +25 -11
  5. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/leaploader.py +2 -1
  6. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/pyproject.toml +1 -1
  7. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/LICENSE +0 -0
  8. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/README.md +0 -0
  9. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/__init__.py +0 -0
  10. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/contract/__init__.py +0 -0
  11. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/contract/datasetclasses.py +0 -0
  12. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/contract/enums.py +0 -0
  13. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/contract/exceptions.py +0 -0
  14. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/contract/visualizer_classes.py +0 -0
  15. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/default_losses.py +0 -0
  16. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/default_metrics.py +0 -0
  17. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/__init__.py +0 -0
  18. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/api.py +0 -0
  19. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/cli_config_utils.py +0 -0
  20. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/client.py +0 -0
  21. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/epoch.py +0 -0
  22. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/experiment.py +0 -0
  23. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/experiment_context.py +0 -0
  24. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/types.py +0 -0
  25. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/utils.py +0 -0
  26. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  27. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/inner_leap_binder/__init__.py +0 -0
  28. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  29. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/leaploaderbase.py +0 -0
  30. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/utils.py +0 -0
  31. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/visualizers/__init__.py +0 -0
  32. {code_loader-1.0.87.dev1 → code_loader-1.0.87.dev3}/code_loader/visualizers/default_visualizers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.87.dev1
3
+ Version: 1.0.87.dev3
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -39,4 +39,14 @@ class NodeMapping:
39
39
  class NodeConnection:
40
40
  node: NodeMapping
41
41
  node_inputs: Optional[Dict[str, NodeMapping]]
42
- prediction_type_name: Optional[str] = None
42
+ prediction_type_name: Optional[str] = None
43
+
44
+
45
+ def leap_output(idx):
46
+ def dummy():
47
+ return None
48
+
49
+ node_mapping_type = NodeMappingType(f'Prediction{str(idx)}')
50
+ dummy.node_mapping = NodeMapping('', node_mapping_type)
51
+
52
+ return dummy
@@ -2,6 +2,7 @@ from typing import List, Optional, Dict, Any, Union
2
2
 
3
3
  from dataclasses import dataclass, field
4
4
  from code_loader.contract.enums import DatasetMetadataType, LeapDataType
5
+ from code_loader.contract.mapping import NodeConnection
5
6
 
6
7
 
7
8
  @dataclass
@@ -74,7 +75,6 @@ class DatasetSetup:
74
75
  metadata: List[DatasetMetadataInstance]
75
76
  outputs: List[DatasetOutputInstance]
76
77
  visualizers: List[VisualizerInstance]
77
- prediction_types: List[PredictionTypeInstance]
78
78
  custom_losses: List[CustomLossInstance]
79
79
  metrics: List[MetricInstance] = field(default_factory=list)
80
80
 
@@ -120,6 +120,12 @@ class BoundingBox:
120
120
  metadata: Optional[Dict[str, Union[str, int, float]]] = None
121
121
 
122
122
 
123
+
124
+ @dataclass
125
+ class EngineFileContract:
126
+ node_connections: Optional[List[NodeConnection]] = None
127
+
128
+
123
129
  @dataclass
124
130
  class DatasetIntegParseResult:
125
131
  payloads: List[DatasetTestResultPayload]
@@ -129,3 +135,4 @@ class DatasetIntegParseResult:
129
135
  model_setup: Optional[ModelSetup] = None
130
136
  general_error: Optional[str] = None
131
137
  print_log: Optional[str] = None
138
+ engine_file_contract: Optional[EngineFileContract] = None
@@ -16,6 +16,16 @@ from code_loader.contract.visualizer_classes import LeapImage, LeapImageMask, Le
16
16
  LeapHorizontalBar, LeapImageWithBBox, LeapImageWithHeatmap
17
17
 
18
18
 
19
+ def _add_mapping_connections(connects_to, arg_names, node_mapping_type, name):
20
+ for user_unique_name, connection_destinations in connects_to.items():
21
+ main_node_mapping = NodeMapping(name, node_mapping_type, user_unique_name, arg_names=arg_names)
22
+ node_inputs = {}
23
+ for arg_name, destination in zip(arg_names, connection_destinations):
24
+ node_inputs[arg_name] = destination.node_mapping
25
+
26
+ leap_binder.mapping_connections.append(NodeConnection(main_node_mapping, node_inputs))
27
+
28
+
19
29
  def tensorleap_custom_metric(name: str,
20
30
  direction: Union[MetricDirection, Dict[str, MetricDirection]] = MetricDirection.Downward,
21
31
  compute_insights: Optional[Union[bool, Dict[str, bool]]] = None,
@@ -32,15 +42,7 @@ def tensorleap_custom_metric(name: str,
32
42
 
33
43
  if connects_to is not None:
34
44
  arg_names = leap_binder.setup_container.metrics[-1].metric_handler_data.arg_names
35
- for user_unique_name, connection_destinations in connects_to.items():
36
- main_node_mapping = NodeMapping(name, NodeMappingType.Metric, user_unique_name, arg_names=arg_names)
37
- node_inputs = {}
38
- for arg_name, destination in zip(arg_names, connection_destinations):
39
- node_inputs[arg_name] = destination.node_mapping
40
-
41
- leap_binder.mapping_connections.append(NodeConnection(main_node_mapping, node_inputs))
42
-
43
-
45
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.Metric, name)
44
46
 
45
47
  def _validate_input_args(*args, **kwargs) -> None:
46
48
  for i, arg in enumerate(args):
@@ -130,7 +132,8 @@ def tensorleap_custom_metric(name: str,
130
132
 
131
133
 
132
134
  def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
133
- heatmap_function: Optional[Callable[..., npt.NDArray[np.float32]]] = None):
135
+ heatmap_function: Optional[Callable[..., npt.NDArray[np.float32]]] = None,
136
+ connects_to=None):
134
137
  def decorating_function(user_function: VisualizerCallableInterface):
135
138
  for viz_handler in leap_binder.setup_container.visualizers:
136
139
  if viz_handler.visualizer_handler_data.name == name:
@@ -139,6 +142,10 @@ def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
139
142
 
140
143
  leap_binder.set_visualizer(user_function, name, visualizer_type, heatmap_function)
141
144
 
145
+ if connects_to is not None:
146
+ arg_names = leap_binder.setup_container.visualizers[-1].visualizer_handler_data.arg_names
147
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.Visualizer, name)
148
+
142
149
  def _validate_input_args(*args, **kwargs):
143
150
  for i, arg in enumerate(args):
144
151
  assert isinstance(arg, (np.ndarray, SamplePreprocessResponse)), (
@@ -328,6 +335,8 @@ def tensorleap_input_encoder(name: str, channel_dim=-1):
328
335
  _validate_result(result)
329
336
  return result
330
337
 
338
+ inner.node_mapping = NodeMapping(name, NodeMappingType.Input)
339
+
331
340
  return inner
332
341
 
333
342
  return decorating_function
@@ -377,7 +386,7 @@ def tensorleap_gt_encoder(name: str):
377
386
  return decorating_function
378
387
 
379
388
 
380
- def tensorleap_custom_loss(name: str):
389
+ def tensorleap_custom_loss(name: str, connects_to=None):
381
390
  def decorating_function(user_function: CustomCallableInterface):
382
391
  for loss_handler in leap_binder.setup_container.custom_loss_handlers:
383
392
  if loss_handler.custom_loss_handler_data.name == name:
@@ -386,6 +395,11 @@ def tensorleap_custom_loss(name: str):
386
395
 
387
396
  leap_binder.add_custom_loss(user_function, name)
388
397
 
398
+ if connects_to is not None:
399
+ arg_names = leap_binder.setup_container.custom_loss_handlers[-1].custom_loss_handler_data.arg_names
400
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.CustomLoss, name)
401
+
402
+
389
403
  valid_types = (np.ndarray, SamplePreprocessResponse)
390
404
  try:
391
405
  import tensorflow as tf
@@ -179,7 +179,8 @@ class LeapLoader(LeapLoaderBase):
179
179
  return DatasetIntegParseResult(is_valid=is_valid, payloads=test_payloads,
180
180
  is_valid_for_model=is_valid_for_model, setup=setup_response,
181
181
  model_setup=model_setup, general_error=general_error,
182
- print_log=print_log)
182
+ print_log=print_log,
183
+ engine_file_contract=global_leap_binder.mapping_connections)
183
184
 
184
185
  def _check_preprocess(self) -> DatasetTestResultPayload:
185
186
  test_result = DatasetTestResultPayload('preprocess')
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.87.dev1"
3
+ version = "1.0.87.dev3"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"