code-loader 1.0.66.dev2__tar.gz → 1.0.66.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.66.dev2 → code_loader-1.0.66.dev3}/PKG-INFO +1 -1
  2. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/contract/visualizer_classes.py +13 -3
  3. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/default_metrics.py +2 -0
  4. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/inner_leap_binder/leapbinder_decorators.py +16 -18
  5. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/pyproject.toml +1 -1
  6. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/LICENSE +0 -0
  7. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/README.md +0 -0
  8. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/__init__.py +0 -0
  9. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/code_inegration_processes_manager.py +0 -0
  10. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/contract/__init__.py +0 -0
  11. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/contract/datasetclasses.py +0 -0
  12. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/contract/enums.py +0 -0
  13. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/contract/exceptions.py +0 -0
  14. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/contract/responsedataclasses.py +0 -0
  15. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/default_losses.py +0 -0
  16. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/__init__.py +0 -0
  17. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/api.py +0 -0
  18. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/cli_config_utils.py +0 -0
  19. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/client.py +0 -0
  20. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/epoch.py +0 -0
  21. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/experiment.py +0 -0
  22. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/experiment_context.py +0 -0
  23. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/types.py +0 -0
  24. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/utils.py +0 -0
  25. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  26. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/inner_leap_binder/__init__.py +0 -0
  27. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  28. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/leaploader.py +0 -0
  29. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/leaploaderbase.py +0 -0
  30. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/utils.py +0 -0
  31. {code_loader-1.0.66.dev2 → code_loader-1.0.66.dev3}/code_loader/visualizers/__init__.py +0 -0
  32. {code_loader-1.0.66.dev2 → code_loader-1.0.66.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.66.dev2
3
+ Version: 1.0.66.dev3
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -1,4 +1,4 @@
1
- from typing import List, Any, Union
1
+ from typing import List, Any, Union, Optional
2
2
 
3
3
  import numpy as np
4
4
  import numpy.typing as npt
@@ -112,11 +112,12 @@ class LeapText:
112
112
 
113
113
  Example:
114
114
  text_data = ['I', 'ate', 'a', 'banana', '', '', '']
115
- leap_text = LeapText(data=text_data) # Create LeapText object
116
- LeapText(leap_text)
115
+ heatmap = [0.1, 0.3, 0.2, 0.9, 0.0, 0.0, 0.0]
116
+ leap_text = LeapText(data=text_data heatmap=heatmap) # Create LeapText object
117
117
  """
118
118
  data: List[str]
119
119
  type: LeapDataType = LeapDataType.Text
120
+ heatmap: Optional[List[float]] = None
120
121
 
121
122
  def __post_init__(self) -> None:
122
123
  validate_type(self.type, LeapDataType.Text)
@@ -124,6 +125,15 @@ class LeapText:
124
125
  for value in self.data:
125
126
  validate_type(type(value), str)
126
127
 
128
+ if self.heatmap is not None:
129
+ validate_type(type(self.heatmap), list)
130
+ for v in self.heatmap:
131
+ validate_type(type(v), float)
132
+ if len(self.heatmap) != len(self.data):
133
+ raise LeapValidationError(
134
+ f"Heatmap length ({len(self.heatmap)}) must match the number of tokens in `data` ({len(self.data)})."
135
+ )
136
+
127
137
 
128
138
  @dataclass
129
139
  class LeapHorizontalBar:
@@ -1,3 +1,5 @@
1
+ # mypy: ignore-errors
2
+
1
3
  from enum import Enum
2
4
  from typing import List, Tuple
3
5
  import numpy as np
@@ -340,38 +340,36 @@ def tensorleap_custom_loss(name: str):
340
340
 
341
341
  leap_binder.add_custom_loss(user_function, name)
342
342
 
343
+ valid_types = np.ndarray
344
+ try:
345
+ import tensorflow as tf
346
+ valid_types = (np.ndarray, tf.Tensor)
347
+ except ImportError:
348
+ pass
349
+
343
350
  def _validate_input_args(*args, **kwargs):
344
- try:
345
- import tensorflow as tf
346
- except ImportError as e:
347
- raise Exception('the input arguments of the custom loss function should be tensorflow tensors') from e
348
351
 
349
352
  for i, arg in enumerate(args):
350
353
  if isinstance(arg, list):
351
354
  for y, elem in enumerate(arg):
352
- assert isinstance(elem, tf.Tensor), (f'tensorleap_custom_loss validation failed: '
353
- f'Element #{y} of list should be a tensorflow tensor. Got {type(elem)}.')
355
+ assert isinstance(elem, valid_types), (f'tensorleap_custom_loss validation failed: '
356
+ f'Element #{y} of list should be a numpy array. Got {type(elem)}.')
354
357
  else:
355
358
  assert isinstance(arg, tf.Tensor), (f'tensorleap_custom_loss validation failed: '
356
- f'Argument #{i} should be a tensorflow tensor. Got {type(arg)}.')
359
+ f'Argument #{i} should be a numpy array. Got {type(arg)}.')
357
360
  for _arg_name, arg in kwargs.items():
358
361
  if isinstance(arg, list):
359
362
  for y, elem in enumerate(arg):
360
- assert isinstance(elem, tf.Tensor), (f'tensorleap_custom_loss validation failed: '
361
- f'Element #{y} of list should be a tensorflow tensor. Got {type(elem)}.')
363
+ assert isinstance(elem,valid_types), (f'tensorleap_custom_loss validation failed: '
364
+ f'Element #{y} of list should be a numpy array. Got {type(elem)}.')
362
365
  else:
363
- assert isinstance(arg, tf.Tensor), (f'tensorleap_custom_loss validation failed: '
364
- f'Argument #{_arg_name} should be a tensorflow tensor. Got {type(arg)}.')
366
+ assert isinstance(arg, valid_types), (f'tensorleap_custom_loss validation failed: '
367
+ f'Argument #{_arg_name} should be a numpy array. Got {type(arg)}.')
365
368
 
366
369
  def _validate_result(result):
367
- try:
368
- import tensorflow as tf
369
- except ImportError:
370
- raise Exception('the input arguments of the custom loss function should be tensorflow tensors')
371
-
372
- assert isinstance(result, (np.ndarray, tf.Tensor)), \
370
+ assert isinstance(result, valid_types), \
373
371
  (f'tensorleap_custom_loss validation failed: '
374
- f'The return type should be a numpy array or a tensorflow tensor. Got {type(result)}.')
372
+ f'The return type should be a numpy array. Got {type(result)}.')
375
373
 
376
374
  def inner(*args, **kwargs):
377
375
  _validate_input_args(*args, **kwargs)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.66.dev2"
3
+ version = "1.0.66.dev3"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"