code-loader 1.0.162__tar.gz → 1.0.164.dev1__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 (36) hide show
  1. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/PKG-INFO +1 -1
  2. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/inner_leap_binder/leapbinder_decorators.py +20 -13
  3. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/plot_functions/plot_functions.py +14 -1
  4. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/pyproject.toml +1 -1
  5. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/LICENSE +0 -0
  6. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/README.md +0 -0
  7. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/__init__.py +0 -0
  8. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/contract/__init__.py +0 -0
  9. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/contract/datasetclasses.py +0 -0
  10. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/contract/enums.py +0 -0
  11. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/contract/exceptions.py +0 -0
  12. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/contract/mapping.py +0 -0
  13. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/contract/responsedataclasses.py +0 -0
  14. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/contract/visualizer_classes.py +0 -0
  15. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/default_losses.py +0 -0
  16. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/default_metrics.py +0 -0
  17. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/__init__.py +0 -0
  18. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/api.py +0 -0
  19. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/cli_config_utils.py +0 -0
  20. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/client.py +0 -0
  21. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/epoch.py +0 -0
  22. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/experiment.py +0 -0
  23. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/experiment_context.py +0 -0
  24. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/types.py +0 -0
  25. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/utils.py +0 -0
  26. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  27. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/inner_leap_binder/__init__.py +0 -0
  28. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  29. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/leaploader.py +0 -0
  30. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/leaploaderbase.py +0 -0
  31. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/mixpanel_tracker.py +0 -0
  32. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/plot_functions/__init__.py +0 -0
  33. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/plot_functions/visualize.py +0 -0
  34. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/utils.py +0 -0
  35. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/code_loader/visualizers/__init__.py +0 -0
  36. {code_loader-1.0.162 → code_loader-1.0.164.dev1}/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.162
3
+ Version: 1.0.164.dev1
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -24,7 +24,7 @@ from code_loader.contract.enums import MetricDirection, LeapDataType, DatasetMet
24
24
  from code_loader import leap_binder, LeapLoader
25
25
  from code_loader.contract.mapping import NodeMapping, NodeMappingType, NodeConnection
26
26
  from code_loader.contract.visualizer_classes import LeapImage, LeapImageMask, LeapTextMask, LeapText, LeapGraph, \
27
- LeapHorizontalBar, LeapImageWithBBox, LeapImageWithHeatmap
27
+ LeapHorizontalBar, LeapImageWithBBox, LeapImageWithHeatmap, LeapVideo
28
28
  from code_loader.inner_leap_binder.leapbinder import mapping_runtime_mode_env_var_mame
29
29
  from code_loader.mixpanel_tracker import clear_integration_events, AnalyticsEvent, emit_integration_event_once
30
30
 
@@ -693,14 +693,15 @@ def tensorleap_custom_metric(name: str,
693
693
  f'Keys in the direction mapping should be part of result keys. Got key {direction_key}.')
694
694
 
695
695
  if compute_insights is not None:
696
- assert isinstance(compute_insights, dict), \
696
+ assert isinstance(compute_insights, (bool, dict)), \
697
697
  (f'{user_function.__name__}() validation failed: '
698
- f'compute_insights should be dict if using the dict results. Got {type(compute_insights)}.')
698
+ f'compute_insights should be bool or dict if using the dict results. Got {type(compute_insights)}.')
699
699
 
700
- for ci_key in compute_insights:
701
- assert ci_key in result, \
702
- (f'{user_function.__name__}() validation failed: '
703
- f'Keys in the compute_insights mapping should be part of result keys. Got key {ci_key}.')
700
+ if isinstance(compute_insights, dict):
701
+ for ci_key in compute_insights:
702
+ assert ci_key in result, \
703
+ (f'{user_function.__name__}() validation failed: '
704
+ f'Keys in the compute_insights mapping should be part of result keys. Got key {ci_key}.')
704
705
 
705
706
  else:
706
707
  _validate_single_metric(result)
@@ -824,7 +825,8 @@ def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
824
825
  LeapDataType.Graph: LeapGraph,
825
826
  LeapDataType.HorizontalBar: LeapHorizontalBar,
826
827
  LeapDataType.ImageWithBBox: LeapImageWithBBox,
827
- LeapDataType.ImageWithHeatmap: LeapImageWithHeatmap
828
+ LeapDataType.ImageWithHeatmap: LeapImageWithHeatmap,
829
+ LeapDataType.Video: LeapVideo
828
830
  }
829
831
  validate_output_structure(result, func_name=user_function.__name__,
830
832
  expected_type_name=result_type_map[visualizer_type])
@@ -1687,8 +1689,12 @@ def tensorleap_status_table():
1687
1689
  mandatory_ready_mess = "\nAll mandatory parts have been successfully set. If no errors accured, you can now push the project to the Tensorleap system or continue to the next optional reccomeded interface,adding: "
1688
1690
  code_mapping_failure_mes = "Tensorleap_integration_test code flow failed, check raised exception."
1689
1691
 
1690
- name_width = max(len(row["name"]) for row in table)
1691
- status_width = max(len(row["Added to integration"]) for row in table)
1692
+ # Sort table: CHECK first, then CROSS, then UNKNOWN
1693
+ status_order = {CHECK: 0, CROSS: 1, UNKNOWN: 2}
1694
+ sorted_table = sorted(table, key=lambda row: status_order.get(row["Added to integration"], 3))
1695
+
1696
+ name_width = max(len(row["name"]) for row in sorted_table)
1697
+ status_width = max(len(row["Added to integration"]) for row in sorted_table)
1692
1698
 
1693
1699
  header = f"{'Decorator Name'.ljust(name_width)} | {'Added to integration'.ljust(status_width)}"
1694
1700
  sep = "-" * len(header)
@@ -1696,11 +1702,13 @@ def tensorleap_status_table():
1696
1702
  print("\n" + header)
1697
1703
  print(sep)
1698
1704
 
1705
+ for row in sorted_table:
1706
+ print(f"{row['name'].ljust(name_width)} | {row['Added to integration'].ljust(status_width)}")
1707
+
1708
+ # Determine next_step based on original table order (recommended integration order)
1699
1709
  ready = True
1700
1710
  next_step = None
1701
-
1702
1711
  for row in table:
1703
- print(f"{row['name'].ljust(name_width)} | {row['Added to integration'].ljust(status_width)}")
1704
1712
  if not _crashed["value"] and ready:
1705
1713
  if row["Added to integration"] != CHECK:
1706
1714
  ready = False
@@ -1764,4 +1772,3 @@ if not _call_from_tl_platform:
1764
1772
 
1765
1773
 
1766
1774
 
1767
-
@@ -20,7 +20,7 @@ from textwrap import wrap
20
20
  import math
21
21
 
22
22
  from code_loader.contract.visualizer_classes import LeapImage, LeapImageWithBBox, LeapGraph, LeapText, \
23
- LeapHorizontalBar, LeapImageMask, LeapTextMask, LeapImageWithHeatmap
23
+ LeapHorizontalBar, LeapImageMask, LeapTextMask, LeapImageWithHeatmap, LeapVideo
24
24
 
25
25
  def run_only_on_non_mapping_mode():
26
26
  """
@@ -388,6 +388,18 @@ def plot_text_mask(leap_data: LeapTextMask, title: str) -> None:
388
388
 
389
389
  plt.show()
390
390
 
391
+ @run_only_on_non_mapping_mode()
392
+ def plot_video(leap_data: LeapVideo, title: str) -> None:
393
+ video_data = leap_data.data
394
+ fig, ax = plt.subplots()
395
+ fig.patch.set_facecolor('black')
396
+ ax.set_facecolor('black')
397
+ ax.set_title(title, color='white')
398
+ for frame in video_data:
399
+ ax.imshow(frame)
400
+ plt.pause(0.1) # Adjust the pause duration as needed
401
+ plt.show()
402
+
391
403
  @run_only_on_non_mapping_mode()
392
404
  def plot_image_with_heatmap(leap_data: LeapImageWithHeatmap, title: str) -> None:
393
405
  """
@@ -441,4 +453,5 @@ plot_switch = {
441
453
  LeapDataType.TextMask: plot_text_mask,
442
454
  LeapDataType.ImageWithHeatmap: plot_image_with_heatmap,
443
455
  LeapDataType.ImageWithBBox: plot_image_with_b_box,
456
+ LeapDataType.Video: plot_video,
444
457
  }
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.162"
3
+ version = "1.0.164.dev1"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"