code-loader 1.0.118.dev2__tar.gz → 1.0.119.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.
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/PKG-INFO +3 -3
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/datasetclasses.py +0 -7
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/inner_leap_binder/leapbinder.py +1 -14
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/inner_leap_binder/leapbinder_decorators.py +7 -51
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/leaploader.py +2 -8
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/mixpanel_tracker.py +6 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/pyproject.toml +1 -1
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/LICENSE +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/README.md +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/__init__.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/utils.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/visualizers/default_visualizers.py +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: code-loader
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.119.dev1
|
|
4
4
|
Summary:
|
|
5
|
-
Home-page: https://github.com/tensorleap/code-loader
|
|
6
5
|
License: MIT
|
|
7
6
|
Author: dorhar
|
|
8
7
|
Author-email: doron.harnoy@tensorleap.ai
|
|
@@ -20,6 +19,7 @@ Requires-Dist: numpy (>=2.3.2,<3.0.0) ; python_version >= "3.11" and python_vers
|
|
|
20
19
|
Requires-Dist: psutil (>=5.9.5,<6.0.0)
|
|
21
20
|
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
|
|
22
21
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
|
22
|
+
Project-URL: Homepage, https://github.com/tensorleap/code-loader
|
|
23
23
|
Project-URL: Repository, https://github.com/tensorleap/code-loader
|
|
24
24
|
Description-Content-Type: text/markdown
|
|
25
25
|
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/datasetclasses.py
RENAMED
|
@@ -212,11 +212,6 @@ class MetadataHandler:
|
|
|
212
212
|
metadata_type: Optional[Union[DatasetMetadataType, Dict[str, DatasetMetadataType]]] = None
|
|
213
213
|
|
|
214
214
|
|
|
215
|
-
@dataclass
|
|
216
|
-
class CustomLatentSpaceHandler:
|
|
217
|
-
function: SectionCallableInterface
|
|
218
|
-
name: str = 'custom_latent_space'
|
|
219
|
-
|
|
220
215
|
@dataclass
|
|
221
216
|
class PredictionTypeHandler:
|
|
222
217
|
name: str
|
|
@@ -246,7 +241,6 @@ class DatasetIntegrationSetup:
|
|
|
246
241
|
custom_loss_handlers: List[CustomLossHandler] = field(default_factory=list)
|
|
247
242
|
metrics: List[MetricHandler] = field(default_factory=list)
|
|
248
243
|
custom_layers: Dict[str, CustomLayerHandler] = field(default_factory=dict)
|
|
249
|
-
custom_latent_space: Optional[CustomLatentSpaceHandler] = None
|
|
250
244
|
|
|
251
245
|
|
|
252
246
|
@dataclass
|
|
@@ -258,5 +252,4 @@ class DatasetSample:
|
|
|
258
252
|
index: Union[int, str]
|
|
259
253
|
state: DataStateEnum
|
|
260
254
|
instance_masks: Optional[Dict[str, List[ElementInstance]]] = None
|
|
261
|
-
custom_latent_space: Optional[npt.NDArray[np.float32]] = None
|
|
262
255
|
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
@@ -11,7 +11,7 @@ from code_loader.contract.datasetclasses import SectionCallableInterface, InputH
|
|
|
11
11
|
CustomCallableInterfaceMultiArgs, ConfusionMatrixCallableInterfaceMultiArgs, LeapData, \
|
|
12
12
|
CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, \
|
|
13
13
|
RawInputsForHeatmap, VisualizerHandlerData, MetricHandlerData, CustomLossHandlerData, SamplePreprocessResponse, \
|
|
14
|
-
ElementInstanceMasksHandler, InstanceCallableInterface
|
|
14
|
+
ElementInstanceMasksHandler, InstanceCallableInterface
|
|
15
15
|
from code_loader.contract.enums import LeapDataType, DataStateEnum, DataStateType, MetricDirection, DatasetMetadataType
|
|
16
16
|
from code_loader.contract.mapping import NodeConnection, NodeMapping, NodeMappingType
|
|
17
17
|
from code_loader.contract.responsedataclasses import DatasetTestResultPayload
|
|
@@ -421,19 +421,6 @@ class LeapBinder:
|
|
|
421
421
|
"""
|
|
422
422
|
self.setup_container.metadata.append(MetadataHandler(name, function, metadata_type))
|
|
423
423
|
|
|
424
|
-
def set_custom_latent_space(self, function: SectionCallableInterface) -> None:
|
|
425
|
-
"""
|
|
426
|
-
Set a custom latent space function.
|
|
427
|
-
|
|
428
|
-
Args:
|
|
429
|
-
function (SectionCallableInterface): The metadata handler function.
|
|
430
|
-
This function receives:
|
|
431
|
-
subset (PreprocessResponse): The subset of the data.
|
|
432
|
-
index (int): The index of the sample within the subset.
|
|
433
|
-
This function should numpy float32 array contains the latent space vec of the sample.
|
|
434
|
-
"""
|
|
435
|
-
self.setup_container.custom_latent_space = CustomLatentSpaceHandler(function)
|
|
436
|
-
|
|
437
424
|
def set_custom_layer(self, custom_layer: Type[Any], name: str, inspect_layer: bool = False,
|
|
438
425
|
kernel_index: Optional[int] = None, use_custom_latent_space: bool = False) -> None:
|
|
439
426
|
"""
|
|
@@ -443,55 +443,6 @@ def tensorleap_metadata(
|
|
|
443
443
|
return decorating_function
|
|
444
444
|
|
|
445
445
|
|
|
446
|
-
|
|
447
|
-
def tensorleap_custom_latent_space():
|
|
448
|
-
def decorating_function(user_function: SectionCallableInterface):
|
|
449
|
-
def _validate_input_args(sample_id: Union[int, str], preprocess_response: PreprocessResponse):
|
|
450
|
-
assert isinstance(sample_id, (int, str)), \
|
|
451
|
-
(f'tensorleap_custom_latent_space validation failed: '
|
|
452
|
-
f'Argument sample_id should be either int or str. Got {type(sample_id)}.')
|
|
453
|
-
assert isinstance(preprocess_response, PreprocessResponse), \
|
|
454
|
-
(f'tensorleap_custom_latent_space validation failed: '
|
|
455
|
-
f'Argument preprocess_response should be a PreprocessResponse. Got {type(preprocess_response)}.')
|
|
456
|
-
assert type(sample_id) == preprocess_response.sample_id_type, \
|
|
457
|
-
(f'tensorleap_custom_latent_space validation failed: '
|
|
458
|
-
f'Argument sample_id should be as the same type as defined in the preprocess response '
|
|
459
|
-
f'{preprocess_response.sample_id_type}. Got {type(sample_id)}.')
|
|
460
|
-
|
|
461
|
-
def _validate_result(result):
|
|
462
|
-
assert isinstance(result, np.ndarray), \
|
|
463
|
-
(f'tensorleap_custom_loss validation failed: '
|
|
464
|
-
f'The return type should be a numpy array. Got {type(result)}.')
|
|
465
|
-
|
|
466
|
-
def inner_without_validate(sample_id, preprocess_response):
|
|
467
|
-
global _called_from_inside_tl_decorator
|
|
468
|
-
_called_from_inside_tl_decorator += 1
|
|
469
|
-
|
|
470
|
-
try:
|
|
471
|
-
result = user_function(sample_id, preprocess_response)
|
|
472
|
-
finally:
|
|
473
|
-
_called_from_inside_tl_decorator -= 1
|
|
474
|
-
|
|
475
|
-
return result
|
|
476
|
-
|
|
477
|
-
leap_binder.set_custom_latent_space(inner_without_validate)
|
|
478
|
-
|
|
479
|
-
def inner(sample_id, preprocess_response):
|
|
480
|
-
if os.environ.get(mapping_runtime_mode_env_var_mame):
|
|
481
|
-
return None
|
|
482
|
-
|
|
483
|
-
_validate_input_args(sample_id, preprocess_response)
|
|
484
|
-
|
|
485
|
-
result = inner_without_validate(sample_id, preprocess_response)
|
|
486
|
-
|
|
487
|
-
_validate_result(result)
|
|
488
|
-
return result
|
|
489
|
-
|
|
490
|
-
return inner
|
|
491
|
-
|
|
492
|
-
return decorating_function
|
|
493
|
-
|
|
494
|
-
|
|
495
446
|
def tensorleap_preprocess():
|
|
496
447
|
def decorating_function(user_function: Callable[[], List[PreprocessResponse]]):
|
|
497
448
|
leap_binder.set_preprocess(user_function)
|
|
@@ -809,8 +760,14 @@ def tensorleap_custom_loss(name: str, connects_to=None):
|
|
|
809
760
|
f'Please choose another')
|
|
810
761
|
|
|
811
762
|
valid_types = (np.ndarray, SamplePreprocessResponse)
|
|
763
|
+
try:
|
|
764
|
+
import tensorflow as tf
|
|
765
|
+
valid_types = (np.ndarray, SamplePreprocessResponse, tf.Tensor)
|
|
766
|
+
except ImportError:
|
|
767
|
+
pass
|
|
812
768
|
|
|
813
769
|
def _validate_input_args(*args, **kwargs):
|
|
770
|
+
|
|
814
771
|
for i, arg in enumerate(args):
|
|
815
772
|
if isinstance(arg, list):
|
|
816
773
|
for y, elem in enumerate(arg):
|
|
@@ -829,11 +786,10 @@ def tensorleap_custom_loss(name: str, connects_to=None):
|
|
|
829
786
|
f'Argument #{_arg_name} should be a numpy array. Got {type(arg)}.')
|
|
830
787
|
|
|
831
788
|
def _validate_result(result):
|
|
832
|
-
assert isinstance(result,
|
|
789
|
+
assert isinstance(result, valid_types), \
|
|
833
790
|
(f'tensorleap_custom_loss validation failed: '
|
|
834
791
|
f'The return type should be a numpy array. Got {type(result)}.')
|
|
835
792
|
|
|
836
|
-
|
|
837
793
|
@functools.wraps(user_function)
|
|
838
794
|
def inner_without_validate(*args, **kwargs):
|
|
839
795
|
global _called_from_inside_tl_decorator
|
|
@@ -16,7 +16,7 @@ from code_loader.contract.datasetclasses import DatasetSample, DatasetBaseHandle
|
|
|
16
16
|
PreprocessResponse, VisualizerHandler, LeapData, \
|
|
17
17
|
PredictionTypeHandler, MetadataHandler, CustomLayerHandler, MetricHandler, VisualizerHandlerData, MetricHandlerData, \
|
|
18
18
|
MetricCallableReturnType, CustomLossHandlerData, CustomLossHandler, RawInputsForHeatmap, SamplePreprocessResponse, \
|
|
19
|
-
ElementInstance
|
|
19
|
+
ElementInstance
|
|
20
20
|
from code_loader.contract.enums import DataStateEnum, TestingSectionEnum, DataStateType, DatasetMetadataType
|
|
21
21
|
from code_loader.contract.exceptions import DatasetScriptException
|
|
22
22
|
from code_loader.contract.responsedataclasses import DatasetIntegParseResult, DatasetTestResultPayload, \
|
|
@@ -162,18 +162,12 @@ class LeapLoader(LeapLoaderBase):
|
|
|
162
162
|
self._preprocess_result(update_unlabeled_preprocess=True)
|
|
163
163
|
|
|
164
164
|
metadata, metadata_is_none = self._get_metadata(state, sample_id)
|
|
165
|
-
|
|
166
|
-
custom_latent_space = None
|
|
167
|
-
if global_leap_binder.setup_container.custom_latent_space is not None:
|
|
168
|
-
custom_latent_space = global_leap_binder.setup_container.custom_latent_space.function(sample_id, preprocess_result[state])
|
|
169
|
-
|
|
170
165
|
sample = DatasetSample(inputs=self._get_inputs(state, sample_id),
|
|
171
166
|
gt=None if state == DataStateEnum.unlabeled else self._get_gt(state, sample_id),
|
|
172
167
|
metadata=metadata,
|
|
173
168
|
metadata_is_none=metadata_is_none,
|
|
174
169
|
index=sample_id,
|
|
175
|
-
state=state
|
|
176
|
-
custom_latent_space=custom_latent_space)
|
|
170
|
+
state=state)
|
|
177
171
|
return sample
|
|
178
172
|
|
|
179
173
|
def get_sample_with_masks(self, state: DataStateEnum, sample_id: Union[int, str]) -> DatasetSample:
|
|
@@ -94,6 +94,10 @@ class MixpanelTracker:
|
|
|
94
94
|
Args:
|
|
95
95
|
event_properties: Optional additional properties to include in the event
|
|
96
96
|
"""
|
|
97
|
+
|
|
98
|
+
if os.environ.get('IS_TENSORLEAP_PLATFORM') == 'true':
|
|
99
|
+
return
|
|
100
|
+
|
|
97
101
|
try:
|
|
98
102
|
distinct_id = self._get_distinct_id()
|
|
99
103
|
|
|
@@ -106,6 +110,8 @@ class MixpanelTracker:
|
|
|
106
110
|
'$device_id': device_id, # Always use device_id for $device_id
|
|
107
111
|
'python_version': f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}",
|
|
108
112
|
'platform': os.name,
|
|
113
|
+
'code_loader_version': '1.0',
|
|
114
|
+
'is_tensorleap_platform': os.environ.get('IS_TENSORLEAP_PLATFORM'),
|
|
109
115
|
}
|
|
110
116
|
|
|
111
117
|
if tensorleap_user_id:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/experiment_api/experiment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev2 → code_loader-1.0.119.dev1}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|