code-loader 1.0.105.dev0__tar.gz → 1.0.107__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.

Potentially problematic release.


This version of code-loader might be problematic. Click here for more details.

Files changed (35) hide show
  1. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/PKG-INFO +1 -1
  2. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/contract/datasetclasses.py +5 -0
  3. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/inner_leap_binder/leapbinder_decorators.py +71 -42
  4. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/pyproject.toml +1 -1
  5. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/LICENSE +0 -0
  6. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/README.md +0 -0
  7. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/__init__.py +0 -0
  8. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/contract/__init__.py +0 -0
  9. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/contract/enums.py +0 -0
  10. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/contract/exceptions.py +0 -0
  11. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/contract/mapping.py +0 -0
  12. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/contract/responsedataclasses.py +0 -0
  13. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/contract/visualizer_classes.py +0 -0
  14. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/default_losses.py +0 -0
  15. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/default_metrics.py +0 -0
  16. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/__init__.py +0 -0
  17. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/api.py +0 -0
  18. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/cli_config_utils.py +0 -0
  19. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/client.py +0 -0
  20. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/epoch.py +0 -0
  21. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/experiment.py +0 -0
  22. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/experiment_context.py +0 -0
  23. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/types.py +0 -0
  24. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/utils.py +0 -0
  25. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  26. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/inner_leap_binder/__init__.py +0 -0
  27. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  28. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/leaploader.py +0 -0
  29. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/leaploaderbase.py +0 -0
  30. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/plot_functions/__init__.py +0 -0
  31. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/plot_functions/plot_functions.py +0 -0
  32. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/plot_functions/visualize.py +0 -0
  33. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/utils.py +0 -0
  34. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/code_loader/visualizers/__init__.py +0 -0
  35. {code_loader-1.0.105.dev0 → code_loader-1.0.107}/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.105.dev0
3
+ Version: 1.0.107
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -43,6 +43,9 @@ class PreprocessResponse:
43
43
  instance_ids_to_names: Optional[Dict[str, str]] = None # in use only for element instance
44
44
 
45
45
  def __post_init__(self) -> None:
46
+ def is_valid_string(s: str) -> bool:
47
+ return bool(re.match(r'^[A-Za-z0-9_]+$', s))
48
+
46
49
  assert self.sample_ids_to_instance_mappings is None, f"Keep sample_ids_to_instance_mappings None when initializing PreprocessResponse"
47
50
  assert self.instance_to_sample_ids_mappings is None, f"Keep instance_to_sample_ids_mappings None when initializing PreprocessResponse"
48
51
  assert self.instance_ids_to_names is None, f"Keep instance_ids_to_names None when initializing PreprocessResponse"
@@ -57,6 +60,8 @@ class PreprocessResponse:
57
60
  if self.sample_id_type == str:
58
61
  for sample_id in self.sample_ids:
59
62
  assert isinstance(sample_id, str), f"Sample id should be of type str. Got: {type(sample_id)}"
63
+ if not is_valid_string(sample_id):
64
+ raise Exception(f"Sample id should contain only letters (A-Z, a-z), numbers or '_'. Got: {sample_id}")
60
65
  else:
61
66
  raise Exception("length is deprecated.")
62
67
 
@@ -152,12 +152,6 @@ def tensorleap_custom_metric(name: str,
152
152
  raise Exception(f'Metric with name {name} already exists. '
153
153
  f'Please choose another')
154
154
 
155
- leap_binder.add_custom_metric(user_function, name, direction, compute_insights)
156
-
157
- if connects_to is not None:
158
- arg_names = leap_binder.setup_container.metrics[-1].metric_handler_data.arg_names
159
- _add_mapping_connections(connects_to, arg_names, NodeMappingType.Metric, name)
160
-
161
155
  def _validate_input_args(*args, **kwargs) -> None:
162
156
  for i, arg in enumerate(args):
163
157
  assert isinstance(arg, (np.ndarray, SamplePreprocessResponse)), (
@@ -233,9 +227,7 @@ def tensorleap_custom_metric(name: str,
233
227
  (f'tensorleap_custom_metric validation failed: '
234
228
  f'compute_insights should be boolean. Got {type(compute_insights)}.')
235
229
 
236
- def inner(*args, **kwargs):
237
- _validate_input_args(*args, **kwargs)
238
-
230
+ def inner_without_validate(*args, **kwargs):
239
231
  global _called_from_inside_tl_decorator
240
232
  _called_from_inside_tl_decorator += 1
241
233
 
@@ -244,6 +236,19 @@ def tensorleap_custom_metric(name: str,
244
236
  finally:
245
237
  _called_from_inside_tl_decorator -= 1
246
238
 
239
+ return result
240
+
241
+ leap_binder.add_custom_metric(inner_without_validate, name, direction, compute_insights)
242
+
243
+ if connects_to is not None:
244
+ arg_names = leap_binder.setup_container.metrics[-1].metric_handler_data.arg_names
245
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.Metric, name)
246
+
247
+ def inner(*args, **kwargs):
248
+ _validate_input_args(*args, **kwargs)
249
+
250
+ result = inner_without_validate(*args, **kwargs)
251
+
247
252
  _validate_result(result)
248
253
  return result
249
254
 
@@ -284,12 +289,6 @@ def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
284
289
  raise Exception(f'Visualizer with name {name} already exists. '
285
290
  f'Please choose another')
286
291
 
287
- leap_binder.set_visualizer(user_function, name, visualizer_type, heatmap_function)
288
-
289
- if connects_to is not None:
290
- arg_names = leap_binder.setup_container.visualizers[-1].visualizer_handler_data.arg_names
291
- _add_mapping_connections(connects_to, arg_names, NodeMappingType.Visualizer, name)
292
-
293
292
  def _validate_input_args(*args, **kwargs):
294
293
  for i, arg in enumerate(args):
295
294
  assert isinstance(arg, (np.ndarray, SamplePreprocessResponse)), (
@@ -324,9 +323,8 @@ def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
324
323
  (f'tensorleap_custom_visualizer validation failed: '
325
324
  f'The return type should be {result_type_map[visualizer_type]}. Got {type(result)}.')
326
325
 
327
- def inner(*args, **kwargs):
328
- _validate_input_args(*args, **kwargs)
329
326
 
327
+ def inner_without_validate(*args, **kwargs):
330
328
  global _called_from_inside_tl_decorator
331
329
  _called_from_inside_tl_decorator += 1
332
330
 
@@ -335,9 +333,23 @@ def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
335
333
  finally:
336
334
  _called_from_inside_tl_decorator -= 1
337
335
 
336
+ return result
337
+
338
+ leap_binder.set_visualizer(inner_without_validate, name, visualizer_type, heatmap_function)
339
+
340
+ if connects_to is not None:
341
+ arg_names = leap_binder.setup_container.visualizers[-1].visualizer_handler_data.arg_names
342
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.Visualizer, name)
343
+
344
+ def inner(*args, **kwargs):
345
+ _validate_input_args(*args, **kwargs)
346
+
347
+ result = inner_without_validate()
348
+
338
349
  _validate_result(result)
339
350
  return result
340
351
 
352
+
341
353
  def mapping_inner(*args, **kwargs):
342
354
  user_unique_name = mapping_inner.name
343
355
  if 'user_unique_name' in kwargs:
@@ -372,8 +384,6 @@ def tensorleap_metadata(
372
384
  raise Exception(f'Metadata with name {name} already exists. '
373
385
  f'Please choose another')
374
386
 
375
- leap_binder.set_metadata(user_function, name, metadata_type)
376
-
377
387
  def _validate_input_args(sample_id: Union[int, str], preprocess_response: PreprocessResponse):
378
388
  assert isinstance(sample_id, (int, str)), \
379
389
  (f'tensorleap_metadata validation failed: '
@@ -401,11 +411,7 @@ def tensorleap_metadata(
401
411
  (f'tensorleap_metadata validation failed: '
402
412
  f'Values in the return dict should be of type {str(supported_result_types)}. Got {type(value)}.')
403
413
 
404
- def inner(sample_id, preprocess_response):
405
- if os.environ.get(mapping_runtime_mode_env_var_mame):
406
- return None
407
-
408
- _validate_input_args(sample_id, preprocess_response)
414
+ def inner_without_validate(sample_id, preprocess_response):
409
415
 
410
416
  global _called_from_inside_tl_decorator
411
417
  _called_from_inside_tl_decorator += 1
@@ -415,6 +421,19 @@ def tensorleap_metadata(
415
421
  finally:
416
422
  _called_from_inside_tl_decorator -= 1
417
423
 
424
+ return result
425
+
426
+
427
+ leap_binder.set_metadata(inner_without_validate, name, metadata_type)
428
+
429
+ def inner(sample_id, preprocess_response):
430
+ if os.environ.get(mapping_runtime_mode_env_var_mame):
431
+ return None
432
+
433
+ _validate_input_args(sample_id, preprocess_response)
434
+
435
+ result = inner_without_validate(sample_id, preprocess_response)
436
+
418
437
  _validate_result(result)
419
438
  return result
420
439
 
@@ -549,8 +568,6 @@ def tensorleap_unlabeled_preprocess():
549
568
 
550
569
  def tensorleap_instances_masks_encoder(name: str):
551
570
  def decorating_function(user_function: InstanceCallableInterface):
552
- leap_binder.set_instance_masks(user_function, name)
553
-
554
571
  def _validate_input_args(sample_id: str, preprocess_response: PreprocessResponse):
555
572
  assert isinstance(sample_id, str), \
556
573
  (f'tensorleap_instances_masks_encoder validation failed: '
@@ -568,13 +585,7 @@ def tensorleap_instances_masks_encoder(name: str):
568
585
  (f'tensorleap_instances_masks_encoder validation failed: '
569
586
  f'Unsupported return type. Should be a numpy array. Got {type(result)}.')
570
587
 
571
-
572
- def inner(sample_id, preprocess_response):
573
- if os.environ.get(mapping_runtime_mode_env_var_mame):
574
- return None
575
-
576
- _validate_input_args(sample_id, preprocess_response)
577
-
588
+ def inner_without_validate(sample_id, preprocess_response):
578
589
  global _called_from_inside_tl_decorator
579
590
  _called_from_inside_tl_decorator += 1
580
591
 
@@ -583,6 +594,19 @@ def tensorleap_instances_masks_encoder(name: str):
583
594
  finally:
584
595
  _called_from_inside_tl_decorator -= 1
585
596
 
597
+ return result
598
+
599
+ leap_binder.set_instance_masks(inner_without_validate, name)
600
+
601
+
602
+ def inner(sample_id, preprocess_response):
603
+ if os.environ.get(mapping_runtime_mode_env_var_mame):
604
+ return None
605
+
606
+ _validate_input_args(sample_id, preprocess_response)
607
+
608
+ result = inner_without_validate(sample_id, preprocess_response)
609
+
586
610
  _validate_result(result)
587
611
  return result
588
612
 
@@ -733,12 +757,6 @@ def tensorleap_custom_loss(name: str, connects_to=None):
733
757
  raise Exception(f'Custom loss with name {name} already exists. '
734
758
  f'Please choose another')
735
759
 
736
- leap_binder.add_custom_loss(user_function, name)
737
-
738
- if connects_to is not None:
739
- arg_names = leap_binder.setup_container.custom_loss_handlers[-1].custom_loss_handler_data.arg_names
740
- _add_mapping_connections(connects_to, arg_names, NodeMappingType.CustomLoss, name)
741
-
742
760
 
743
761
  valid_types = (np.ndarray, SamplePreprocessResponse)
744
762
  try:
@@ -771,9 +789,7 @@ def tensorleap_custom_loss(name: str, connects_to=None):
771
789
  (f'tensorleap_custom_loss validation failed: '
772
790
  f'The return type should be a numpy array. Got {type(result)}.')
773
791
 
774
- def inner(*args, **kwargs):
775
- _validate_input_args(*args, **kwargs)
776
-
792
+ def inner_without_validate(*args, **kwargs):
777
793
  global _called_from_inside_tl_decorator
778
794
  _called_from_inside_tl_decorator += 1
779
795
 
@@ -782,6 +798,19 @@ def tensorleap_custom_loss(name: str, connects_to=None):
782
798
  finally:
783
799
  _called_from_inside_tl_decorator -= 1
784
800
 
801
+ return result
802
+
803
+ leap_binder.add_custom_loss(inner_without_validate, name)
804
+
805
+ if connects_to is not None:
806
+ arg_names = leap_binder.setup_container.custom_loss_handlers[-1].custom_loss_handler_data.arg_names
807
+ _add_mapping_connections(connects_to, arg_names, NodeMappingType.CustomLoss, name)
808
+
809
+ def inner(*args, **kwargs):
810
+ _validate_input_args(*args, **kwargs)
811
+
812
+ result = inner_without_validate(*args, **kwargs)
813
+
785
814
  _validate_result(result)
786
815
  return result
787
816
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.105.dev0"
3
+ version = "1.0.107"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"