code-loader 1.0.91__tar.gz → 1.0.91.dev0__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.91 → code_loader-1.0.91.dev0}/PKG-INFO +1 -1
  2. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/datasetclasses.py +10 -0
  3. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/inner_leap_binder/leapbinder_decorators.py +68 -0
  4. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/pyproject.toml +1 -1
  5. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/LICENSE +0 -0
  6. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/README.md +0 -0
  7. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/__init__.py +0 -0
  8. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/__init__.py +0 -0
  9. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/enums.py +0 -0
  10. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/exceptions.py +0 -0
  11. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/mapping.py +0 -0
  12. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/responsedataclasses.py +0 -0
  13. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/contract/visualizer_classes.py +0 -0
  14. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/default_losses.py +0 -0
  15. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/default_metrics.py +0 -0
  16. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/__init__.py +0 -0
  17. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/api.py +0 -0
  18. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/cli_config_utils.py +0 -0
  19. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/client.py +0 -0
  20. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/epoch.py +0 -0
  21. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/experiment.py +0 -0
  22. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/experiment_context.py +0 -0
  23. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/types.py +0 -0
  24. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/utils.py +0 -0
  25. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  26. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/inner_leap_binder/__init__.py +0 -0
  27. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  28. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/leaploader.py +0 -0
  29. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/leaploaderbase.py +0 -0
  30. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/utils.py +0 -0
  31. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/code_loader/visualizers/__init__.py +0 -0
  32. {code_loader-1.0.91 → code_loader-1.0.91.dev0}/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.91
3
+ Version: 1.0.91.dev0
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -38,6 +38,7 @@ class PreprocessResponse:
38
38
  sample_ids: Optional[Union[List[str], List[int]]] = None
39
39
  state: Optional[DataStateType] = None
40
40
  sample_id_type: Optional[Union[Type[str], Type[int]]] = None
41
+ sample_ids_to_instance_mappings: Optional[Dict[Union[str, int], Union[List[str], List[int]]]] = None # in use only for element instance
41
42
 
42
43
  def __post_init__(self) -> None:
43
44
  def is_valid_string(s: str) -> bool:
@@ -188,6 +189,15 @@ class InputHandler(DatasetBaseHandler):
188
189
  shape: Optional[List[int]] = None
189
190
  channel_dim: Optional[int] = -1
190
191
 
192
+ @dataclass
193
+ class ElementInstance:
194
+ name: str
195
+ mask: npt.NDArray[np.float32]
196
+
197
+ @dataclass
198
+ class ElementInstanceHandler:
199
+ input_name: str
200
+ instance_function: [[int, PreprocessResponse], List[ElementInstance]]
191
201
 
192
202
  @dataclass
193
203
  class GroundTruthHandler(DatasetBaseHandler):
@@ -270,6 +270,49 @@ def tensorleap_preprocess():
270
270
 
271
271
  return decorating_function
272
272
 
273
+ def tensorleap_element_instance_preprocess(instance_mask_encoder: Callable[[int, PreprocessResponse], List[PreprocessResponse]]):
274
+ def decorating_function(user_function: Callable[[], List[PreprocessResponse]]):
275
+ leap_binder.set_preprocess(user_function)
276
+
277
+ def _validate_input_args(*args, **kwargs):
278
+ assert len(args) == 0 and len(kwargs) == 0, \
279
+ (f'tensorleap_preprocess validation failed: '
280
+ f'The function should not take any arguments. Got {args} and {kwargs}.')
281
+
282
+ def _validate_result(result):
283
+ assert isinstance(result, list), \
284
+ (f'tensorleap_preprocess validation failed: '
285
+ f'The return type should be a list. Got {type(result)}.')
286
+ for i, response in enumerate(result):
287
+ assert isinstance(response, PreprocessResponse), \
288
+ (f'tensorleap_preprocess validation failed: '
289
+ f'Element #{i} in the return list should be a PreprocessResponse. Got {type(response)}.')
290
+ assert len(set(result)) == len(result), \
291
+ (f'tensorleap_preprocess validation failed: '
292
+ f'The return list should not contain duplicate PreprocessResponse objects.')
293
+
294
+ def inner(*args, **kwargs):
295
+ _validate_input_args(*args, **kwargs)
296
+ result = user_function()
297
+ for preprocess_response in result:
298
+ data_length = len(preprocess_response.sample_ids)
299
+ sample_ids_to_instance_mappings = {}
300
+ all_sample_ids = preprocess_response.sample_ids
301
+ for sample_id in preprocess_response.sample_ids:
302
+ instances_masks = instance_mask_encoder(sample_id, preprocess_response)
303
+ instances_ids = list(range(data_length, data_length + len(instances_masks)))
304
+ sample_ids_to_instance_mappings[sample_id] = instances_ids
305
+ all_sample_ids.extend(instances_ids)
306
+ preprocess_response.sample_ids_to_instance_mappings = sample_ids_to_instance_mappings
307
+ data_length = len(all_sample_ids)
308
+ preprocess_response.sample_ids = all_sample_ids
309
+ _validate_result(result)
310
+ return result
311
+
312
+ return inner
313
+
314
+ return decorating_function
315
+
273
316
 
274
317
  def tensorleap_unlabeled_preprocess():
275
318
  def decorating_function(user_function: Callable[[], PreprocessResponse]):
@@ -296,6 +339,31 @@ def tensorleap_unlabeled_preprocess():
296
339
  return decorating_function
297
340
 
298
341
 
342
+ def tensorleap_instance_encoder():
343
+ def decorating_function(user_function: Callable[[], PreprocessResponse]):
344
+ leap_binder.set_unlabeled_data_preprocess(user_function)
345
+
346
+ def _validate_input_args(*args, **kwargs):
347
+ assert len(args) == 0 and len(kwargs) == 0, \
348
+ (f'tensorleap_instance_encoder validation failed: '
349
+ f'The function should not take any arguments. Got {args} and {kwargs}.')
350
+
351
+ def _validate_result(result):
352
+ assert isinstance(result, PreprocessResponse), \
353
+ (f'tensorleap_instance_encoder validation failed: '
354
+ f'The return type should be a PreprocessResponse. Got {type(result)}.')
355
+
356
+ def inner(*args, **kwargs):
357
+ _validate_input_args(*args, **kwargs)
358
+ result = user_function()
359
+ _validate_result(result)
360
+ return result
361
+
362
+ return inner
363
+
364
+ return decorating_function
365
+
366
+
299
367
  def tensorleap_input_encoder(name: str, channel_dim=-1, model_input_index=None):
300
368
  def decorating_function(user_function: SectionCallableInterface):
301
369
  for input_handler in leap_binder.setup_container.inputs:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.91"
3
+ version = "1.0.91.dev0"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"
File without changes