code-loader 1.0.118.dev3__tar.gz → 1.0.119.dev2__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.
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/PKG-INFO +1 -1
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/datasetclasses.py +0 -7
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/inner_leap_binder/leapbinder.py +1 -14
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/inner_leap_binder/leapbinder_decorators.py +7 -51
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/leaploader.py +7 -20
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/leaploaderbase.py +0 -4
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/mixpanel_tracker.py +6 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/pyproject.toml +1 -1
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/LICENSE +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/README.md +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/__init__.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/utils.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/visualizers/default_visualizers.py +0 -0
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/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.dev3 → code_loader-1.0.119.dev2}/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, \
|
|
@@ -34,7 +34,7 @@ class LeapLoader(LeapLoaderBase):
|
|
|
34
34
|
super().__init__(code_path, code_entry_name)
|
|
35
35
|
|
|
36
36
|
self._preprocess_result_cached = None
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
try:
|
|
39
39
|
from code_loader.mixpanel_tracker import track_code_loader_loaded
|
|
40
40
|
track_code_loader_loaded({
|
|
@@ -162,20 +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,
|
|
169
|
-
preprocess_result[
|
|
170
|
-
state])
|
|
171
|
-
|
|
172
165
|
sample = DatasetSample(inputs=self._get_inputs(state, sample_id),
|
|
173
166
|
gt=None if state == DataStateEnum.unlabeled else self._get_gt(state, sample_id),
|
|
174
167
|
metadata=metadata,
|
|
175
168
|
metadata_is_none=metadata_is_none,
|
|
176
169
|
index=sample_id,
|
|
177
|
-
state=state
|
|
178
|
-
custom_latent_space=custom_latent_space)
|
|
170
|
+
state=state)
|
|
179
171
|
return sample
|
|
180
172
|
|
|
181
173
|
def get_sample_with_masks(self, state: DataStateEnum, sample_id: Union[int, str]) -> DatasetSample:
|
|
@@ -218,6 +210,8 @@ class LeapLoader(LeapLoaderBase):
|
|
|
218
210
|
general_error = f"Something went wrong. {repr(e.__cause__)} in file {file_name}, line_number: {line_number}\nStacktrace:\n{stacktrace}"
|
|
219
211
|
is_valid = False
|
|
220
212
|
|
|
213
|
+
|
|
214
|
+
|
|
221
215
|
print_log = stdout_steam.getvalue()
|
|
222
216
|
is_valid_for_model = bool(global_leap_binder.setup_container.custom_layers)
|
|
223
217
|
model_setup = self.get_model_setup_response()
|
|
@@ -482,8 +476,7 @@ class LeapLoader(LeapLoaderBase):
|
|
|
482
476
|
def _get_inputs(self, state: DataStateEnum, sample_id: Union[int, str]) -> Dict[str, npt.NDArray[np.float32]]:
|
|
483
477
|
return self._get_dataset_handlers(global_leap_binder.setup_container.inputs, state, sample_id)
|
|
484
478
|
|
|
485
|
-
def _get_instances_masks(self, state: DataStateEnum, sample_id: Union[int, str]) -> Dict[
|
|
486
|
-
str, List[ElementInstance]]:
|
|
479
|
+
def _get_instances_masks(self, state: DataStateEnum, sample_id: Union[int, str]) -> Dict[str, List[ElementInstance]]:
|
|
487
480
|
preprocess_result = self._preprocess_result()
|
|
488
481
|
preprocess_state = preprocess_result[state]
|
|
489
482
|
result_agg = {}
|
|
@@ -533,8 +526,7 @@ class LeapLoader(LeapLoaderBase):
|
|
|
533
526
|
|
|
534
527
|
return converted_value, is_none
|
|
535
528
|
|
|
536
|
-
def _get_metadata(self, state: DataStateEnum, sample_id: Union[int, str]) -> Tuple[
|
|
537
|
-
Dict[str, Union[str, int, bool, float]], Dict[str, bool]]:
|
|
529
|
+
def _get_metadata(self, state: DataStateEnum, sample_id: Union[int, str]) -> Tuple[Dict[str, Union[str, int, bool, float]], Dict[str, bool]]:
|
|
538
530
|
result_agg = {}
|
|
539
531
|
is_none = {}
|
|
540
532
|
preprocess_result = self._preprocess_result()
|
|
@@ -563,11 +555,6 @@ class LeapLoader(LeapLoaderBase):
|
|
|
563
555
|
|
|
564
556
|
return id_type
|
|
565
557
|
|
|
566
|
-
@lru_cache()
|
|
567
|
-
def has_custom_latent_space_decorator(self) -> bool:
|
|
568
|
-
self.exec_script()
|
|
569
|
-
return global_leap_binder.setup_container.custom_latent_space is not None
|
|
570
|
-
|
|
571
558
|
def get_instances_data(self, state: DataStateEnum) -> Tuple[Dict[str, List[str]], Dict[str, str], Dict[str, str]]:
|
|
572
559
|
"""
|
|
573
560
|
This Method get the data state and returns two dictionaries that holds the mapping of the sample ids to their
|
|
@@ -114,10 +114,6 @@ class LeapLoaderBase:
|
|
|
114
114
|
def get_sample_id_type(self) -> Type:
|
|
115
115
|
pass
|
|
116
116
|
|
|
117
|
-
@abstractmethod
|
|
118
|
-
def has_custom_latent_space_decorator(self) -> bool:
|
|
119
|
-
pass
|
|
120
|
-
|
|
121
117
|
@abstractmethod
|
|
122
118
|
def get_heatmap_visualizer_raw_vis_input_arg_name(self, visualizer_name: str) -> Optional[str]:
|
|
123
119
|
pass
|
|
@@ -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.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/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.dev3 → code_loader-1.0.119.dev2}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.118.dev3 → code_loader-1.0.119.dev2}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|