code-loader 1.0.61.dev1__tar.gz → 1.0.61.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 (30) hide show
  1. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/PKG-INFO +1 -1
  2. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/contract/datasetclasses.py +14 -4
  3. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/inner_leap_binder/leapbinder.py +4 -3
  4. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/leaploader.py +23 -5
  5. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/leaploaderbase.py +10 -6
  6. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/pyproject.toml +1 -1
  7. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/LICENSE +0 -0
  8. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/README.md +0 -0
  9. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/__init__.py +0 -0
  10. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/code_inegration_processes_manager.py +0 -0
  11. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/contract/__init__.py +0 -0
  12. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/contract/enums.py +0 -0
  13. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/contract/exceptions.py +0 -0
  14. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/contract/responsedataclasses.py +0 -0
  15. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/contract/visualizer_classes.py +0 -0
  16. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/__init__.py +0 -0
  17. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/api.py +0 -0
  18. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/cli_config_utils.py +0 -0
  19. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/client.py +0 -0
  20. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/epoch.py +0 -0
  21. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/experiment.py +0 -0
  22. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/experiment_context.py +0 -0
  23. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/types.py +0 -0
  24. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/utils.py +0 -0
  25. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  26. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/inner_leap_binder/__init__.py +0 -0
  27. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/inner_leap_binder/leapbinder_decorators.py +0 -0
  28. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/utils.py +0 -0
  29. {code_loader-1.0.61.dev1 → code_loader-1.0.61.dev3}/code_loader/visualizers/__init__.py +0 -0
  30. {code_loader-1.0.61.dev1 → code_loader-1.0.61.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.61.dev1
3
+ Version: 1.0.61.dev3
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -124,24 +124,34 @@ class CustomLossHandler:
124
124
 
125
125
 
126
126
  @dataclass
127
- class MetricHandler:
127
+ class MetricHandlerData:
128
128
  name: str
129
- function: Union[CustomCallableInterfaceMultiArgs, ConfusionMatrixCallableInterfaceMultiArgs]
130
129
  arg_names: List[str]
131
130
  direction: Optional[MetricDirection] = MetricDirection.Downward
132
131
 
133
132
 
133
+ @dataclass
134
+ class MetricHandler:
135
+ metric_handler_data: MetricHandlerData
136
+ function: Union[CustomCallableInterfaceMultiArgs, ConfusionMatrixCallableInterfaceMultiArgs]
137
+
138
+
134
139
  @dataclass
135
140
  class RawInputsForHeatmap:
136
141
  raw_input_by_vizualizer_arg_name: Dict[str, npt.NDArray[np.float32]]
137
142
 
138
143
 
139
144
  @dataclass
140
- class VisualizerHandler:
145
+ class VisualizerHandlerData:
141
146
  name: str
142
- function: VisualizerCallableInterface
143
147
  type: LeapDataType
144
148
  arg_names: List[str]
149
+
150
+
151
+ @dataclass
152
+ class VisualizerHandler:
153
+ visualizer_handler_data: VisualizerHandlerData
154
+ function: VisualizerCallableInterface
145
155
  heatmap_function: Optional[Callable[..., npt.NDArray[np.float32]]] = None
146
156
 
147
157
 
@@ -9,7 +9,8 @@ from code_loader.contract.datasetclasses import SectionCallableInterface, InputH
9
9
  PreprocessHandler, VisualizerCallableInterface, CustomLossHandler, CustomCallableInterface, PredictionTypeHandler, \
10
10
  MetadataSectionCallableInterface, UnlabeledDataPreprocessHandler, CustomLayerHandler, MetricHandler, \
11
11
  CustomCallableInterfaceMultiArgs, ConfusionMatrixCallableInterfaceMultiArgs, LeapData, \
12
- CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, RawInputsForHeatmap
12
+ CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, \
13
+ RawInputsForHeatmap, VisualizerHandlerData, MetricHandlerData
13
14
  from code_loader.contract.enums import LeapDataType, DataStateEnum, DataStateType, MetricDirection
14
15
  from code_loader.contract.responsedataclasses import DatasetTestResultPayload
15
16
  from code_loader.contract.visualizer_classes import map_leap_data_type_to_visualizer_class
@@ -127,7 +128,7 @@ class LeapBinder:
127
128
  f'should be {expected_return_type}')
128
129
 
129
130
  self.setup_container.visualizers.append(
130
- VisualizerHandler(name, function, visualizer_type, arg_names, heatmap_visualizer))
131
+ VisualizerHandler(VisualizerHandlerData(name, visualizer_type, arg_names), function, heatmap_visualizer))
131
132
  self._visualizer_names.append(name)
132
133
 
133
134
  def set_preprocess(self, function: Callable[[], List[PreprocessResponse]]) -> None:
@@ -251,7 +252,7 @@ class LeapBinder:
251
252
  leap_binder.add_custom_metric(custom_metric_function, name='custom_metric', direction=MetricDirection.Downward)
252
253
  """
253
254
  arg_names = inspect.getfullargspec(function)[0]
254
- self.setup_container.metrics.append(MetricHandler(name, function, arg_names, direction))
255
+ self.setup_container.metrics.append(MetricHandler(MetricHandlerData(name, arg_names, direction), function))
255
256
 
256
257
  def add_prediction(self, name: str, labels: List[str], channel_dim: int = -1) -> None:
257
258
  """
@@ -12,7 +12,7 @@ import numpy.typing as npt
12
12
 
13
13
  from code_loader.contract.datasetclasses import DatasetSample, DatasetBaseHandler, GroundTruthHandler, \
14
14
  PreprocessResponse, VisualizerHandler, LeapData, CustomLossHandler, \
15
- PredictionTypeHandler, MetadataHandler, CustomLayerHandler, MetricHandler
15
+ PredictionTypeHandler, MetadataHandler, CustomLayerHandler, MetricHandler, VisualizerHandlerData, MetricHandlerData
16
16
  from code_loader.contract.enums import DataStateEnum, TestingSectionEnum, DataStateType, DatasetMetadataType
17
17
  from code_loader.contract.exceptions import DatasetScriptException
18
18
  from code_loader.contract.responsedataclasses import DatasetIntegParseResult, DatasetTestResultPayload, \
@@ -65,7 +65,16 @@ class LeapLoader(LeapLoaderBase):
65
65
  spec.loader.exec_module(file)
66
66
 
67
67
  @lru_cache()
68
- def metric_by_name(self) -> Dict[str, MetricHandler]:
68
+ def metric_by_name(self) -> Dict[str, MetricHandlerData]:
69
+ self.exec_script()
70
+ setup = global_leap_binder.setup_container
71
+ return {
72
+ metric_handler.name: metric_handler.metric_handler_data
73
+ for metric_handler in setup.metrics
74
+ }
75
+
76
+ @lru_cache()
77
+ def _metric_handler_by_name(self) -> Dict[str, MetricHandler]:
69
78
  self.exec_script()
70
79
  setup = global_leap_binder.setup_container
71
80
  return {
@@ -74,7 +83,16 @@ class LeapLoader(LeapLoaderBase):
74
83
  }
75
84
 
76
85
  @lru_cache()
77
- def visualizer_by_name(self) -> Dict[str, VisualizerHandler]:
86
+ def visualizer_by_name(self) -> Dict[str, VisualizerHandlerData]:
87
+ self.exec_script()
88
+ setup = global_leap_binder.setup_container
89
+ return {
90
+ visualizer_handler.name: visualizer_handler.visualizer_handler_data
91
+ for visualizer_handler in setup.visualizers
92
+ }
93
+
94
+ @lru_cache()
95
+ def _visualizer_handler_by_name(self) -> Dict[str, VisualizerHandler]:
78
96
  self.exec_script()
79
97
  setup = global_leap_binder.setup_container
80
98
  return {
@@ -205,11 +223,11 @@ class LeapLoader(LeapLoaderBase):
205
223
  # global param that visualizer is using)
206
224
  self._preprocess_result()
207
225
 
208
- return self.visualizer_by_name()[visualizer_name].function(**input_tensors_by_arg_name)
226
+ return self._visualizer_handler_by_name()[visualizer_name].function(**input_tensors_by_arg_name)
209
227
 
210
228
  def run_heatmap_visualizer(self, visualizer_name: str, input_tensors_by_arg_name: Dict[str, npt.NDArray[np.float32]]
211
229
  ) -> npt.NDArray[np.float32]:
212
- heatmap_function = self.visualizer_by_name()[visualizer_name].heatmap_function
230
+ heatmap_function = self._visualizer_handler_by_name()[visualizer_name].heatmap_function
213
231
  if heatmap_function is None:
214
232
  assert len(input_tensors_by_arg_name) == 1
215
233
  return list(input_tensors_by_arg_name.values())[0]
@@ -7,8 +7,8 @@ from typing import Dict, List, Union, Type
7
7
  import numpy as np
8
8
  import numpy.typing as npt
9
9
 
10
- from code_loader.contract.datasetclasses import DatasetSample, VisualizerHandler, LeapData, CustomLossHandler, \
11
- PredictionTypeHandler, CustomLayerHandler
10
+ from code_loader.contract.datasetclasses import DatasetSample, LeapData, CustomLossHandler, \
11
+ PredictionTypeHandler, CustomLayerHandler, VisualizerHandlerData, MetricHandlerData
12
12
  from code_loader.contract.enums import DataStateEnum
13
13
  from code_loader.contract.responsedataclasses import DatasetIntegParseResult, DatasetTestResultPayload, \
14
14
  DatasetSetup, ModelSetup
@@ -19,14 +19,12 @@ class LeapLoaderBase:
19
19
  self.code_entry_name = code_entry_name
20
20
  self.code_path = code_path
21
21
 
22
- self._preprocess_result_cached = None
23
-
24
22
  @abstractmethod
25
- def metric_by_name(self):
23
+ def metric_by_name(self) -> Dict[str, MetricHandlerData]:
26
24
  pass
27
25
 
28
26
  @abstractmethod
29
- def visualizer_by_name(self) -> Dict[str, VisualizerHandler]:
27
+ def visualizer_by_name(self) -> Dict[str, VisualizerHandlerData]:
30
28
  pass
31
29
 
32
30
  @abstractmethod
@@ -75,3 +73,9 @@ class LeapLoaderBase:
75
73
  @abstractmethod
76
74
  def get_sample_id_type(self) -> Type:
77
75
  pass
76
+
77
+ def is_custom_latent_space(self) -> bool:
78
+ if not self.code_entry_name or not self.code_path:
79
+ return False
80
+ custom_layers = self.custom_layers()
81
+ return any(layer.use_custom_latent_space for layer in custom_layers.values())
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.61.dev1"
3
+ version = "1.0.61.dev3"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"