code-loader 1.0.87.dev7__py3-none-any.whl → 1.0.88__py3-none-any.whl
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/contract/responsedataclasses.py +0 -8
- code_loader/inner_leap_binder/leapbinder.py +4 -3
- code_loader/inner_leap_binder/leapbinder_decorators.py +4 -39
- code_loader/leaploader.py +8 -6
- {code_loader-1.0.87.dev7.dist-info → code_loader-1.0.88.dist-info}/METADATA +1 -1
- {code_loader-1.0.87.dev7.dist-info → code_loader-1.0.88.dist-info}/RECORD +8 -9
- code_loader/contract/mapping.py +0 -53
- {code_loader-1.0.87.dev7.dist-info → code_loader-1.0.88.dist-info}/LICENSE +0 -0
- {code_loader-1.0.87.dev7.dist-info → code_loader-1.0.88.dist-info}/WHEEL +0 -0
@@ -2,7 +2,6 @@ from typing import List, Optional, Dict, Any, Union
|
|
2
2
|
|
3
3
|
from dataclasses import dataclass, field
|
4
4
|
from code_loader.contract.enums import DatasetMetadataType, LeapDataType
|
5
|
-
from code_loader.contract.mapping import NodeConnection
|
6
5
|
|
7
6
|
|
8
7
|
@dataclass
|
@@ -121,12 +120,6 @@ class BoundingBox:
|
|
121
120
|
metadata: Optional[Dict[str, Union[str, int, float]]] = None
|
122
121
|
|
123
122
|
|
124
|
-
|
125
|
-
@dataclass
|
126
|
-
class EngineFileContract:
|
127
|
-
node_connections: Optional[List[NodeConnection]] = None
|
128
|
-
|
129
|
-
|
130
123
|
@dataclass
|
131
124
|
class DatasetIntegParseResult:
|
132
125
|
payloads: List[DatasetTestResultPayload]
|
@@ -136,4 +129,3 @@ class DatasetIntegParseResult:
|
|
136
129
|
model_setup: Optional[ModelSetup] = None
|
137
130
|
general_error: Optional[str] = None
|
138
131
|
print_log: Optional[str] = None
|
139
|
-
engine_file_contract: Optional[EngineFileContract] = None
|
@@ -12,7 +12,6 @@ from code_loader.contract.datasetclasses import SectionCallableInterface, InputH
|
|
12
12
|
CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, \
|
13
13
|
RawInputsForHeatmap, VisualizerHandlerData, MetricHandlerData, CustomLossHandlerData, SamplePreprocessResponse
|
14
14
|
from code_loader.contract.enums import LeapDataType, DataStateEnum, DataStateType, MetricDirection, DatasetMetadataType
|
15
|
-
from code_loader.contract.mapping import NodeConnection
|
16
15
|
from code_loader.contract.responsedataclasses import DatasetTestResultPayload
|
17
16
|
from code_loader.contract.visualizer_classes import map_leap_data_type_to_visualizer_class
|
18
17
|
from code_loader.default_losses import loss_name_to_function
|
@@ -44,8 +43,6 @@ class LeapBinder:
|
|
44
43
|
self._extend_with_default_metrics()
|
45
44
|
self._extend_with_default_losses()
|
46
45
|
|
47
|
-
self.mapping_connections: List[NodeConnection] = []
|
48
|
-
|
49
46
|
self.batch_size_to_validate: Optional[int] = None
|
50
47
|
|
51
48
|
def _extend_with_default_visualizers(self) -> None:
|
@@ -508,6 +505,10 @@ class LeapBinder:
|
|
508
505
|
for i, (single_metadata_name, single_metadata_result) in enumerate(raw_result.items()):
|
509
506
|
metadata_test_result = metadata_test_result_payloads[i]
|
510
507
|
|
508
|
+
if not isinstance(single_metadata_result, (int, str, bool, float, np.unsignedinteger, np.signedinteger, np.bool_, np.floating)):
|
509
|
+
raise Exception(f"Unsupported return type of metadata {single_metadata_name}."
|
510
|
+
f"The return type should be one of [int, float, str, bool]. Got {type(single_metadata_result)}")
|
511
|
+
|
511
512
|
metadata_type = None
|
512
513
|
if single_metadata_result is None:
|
513
514
|
if state != DataStateEnum.training and test_result[i].name == f'{dataset_base_handler.name}_{single_metadata_name}':
|
@@ -11,25 +11,13 @@ from code_loader.contract.datasetclasses import CustomCallableInterfaceMultiArgs
|
|
11
11
|
ConfusionMatrixElement, SamplePreprocessResponse
|
12
12
|
from code_loader.contract.enums import MetricDirection, LeapDataType, DatasetMetadataType
|
13
13
|
from code_loader import leap_binder
|
14
|
-
from code_loader.contract.mapping import NodeMapping, NodeMappingType, NodeConnection
|
15
14
|
from code_loader.contract.visualizer_classes import LeapImage, LeapImageMask, LeapTextMask, LeapText, LeapGraph, \
|
16
15
|
LeapHorizontalBar, LeapImageWithBBox, LeapImageWithHeatmap
|
17
16
|
|
18
17
|
|
19
|
-
def _add_mapping_connections(connects_to, arg_names, node_mapping_type, name):
|
20
|
-
for user_unique_name, connection_destinations in connects_to.items():
|
21
|
-
main_node_mapping = NodeMapping(name, node_mapping_type, user_unique_name, arg_names=arg_names)
|
22
|
-
node_inputs = {}
|
23
|
-
for arg_name, destination in zip(arg_names, connection_destinations):
|
24
|
-
node_inputs[arg_name] = destination.node_mapping
|
25
|
-
|
26
|
-
leap_binder.mapping_connections.append(NodeConnection(main_node_mapping, node_inputs))
|
27
|
-
|
28
|
-
|
29
18
|
def tensorleap_custom_metric(name: str,
|
30
19
|
direction: Union[MetricDirection, Dict[str, MetricDirection]] = MetricDirection.Downward,
|
31
|
-
compute_insights: Optional[Union[bool, Dict[str, bool]]] = None
|
32
|
-
connects_to=None):
|
20
|
+
compute_insights: Optional[Union[bool, Dict[str, bool]]] = None):
|
33
21
|
def decorating_function(user_function: Union[CustomCallableInterfaceMultiArgs,
|
34
22
|
CustomMultipleReturnCallableInterfaceMultiArgs,
|
35
23
|
ConfusionMatrixCallableInterfaceMultiArgs]):
|
@@ -40,10 +28,6 @@ def tensorleap_custom_metric(name: str,
|
|
40
28
|
|
41
29
|
leap_binder.add_custom_metric(user_function, name, direction, compute_insights)
|
42
30
|
|
43
|
-
if connects_to is not None:
|
44
|
-
arg_names = leap_binder.setup_container.metrics[-1].metric_handler_data.arg_names
|
45
|
-
_add_mapping_connections(connects_to, arg_names, NodeMappingType.Metric, name)
|
46
|
-
|
47
31
|
def _validate_input_args(*args, **kwargs) -> None:
|
48
32
|
for i, arg in enumerate(args):
|
49
33
|
assert isinstance(arg, (np.ndarray, SamplePreprocessResponse)), (
|
@@ -132,8 +116,7 @@ def tensorleap_custom_metric(name: str,
|
|
132
116
|
|
133
117
|
|
134
118
|
def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
|
135
|
-
heatmap_function: Optional[Callable[..., npt.NDArray[np.float32]]] = None
|
136
|
-
connects_to=None):
|
119
|
+
heatmap_function: Optional[Callable[..., npt.NDArray[np.float32]]] = None):
|
137
120
|
def decorating_function(user_function: VisualizerCallableInterface):
|
138
121
|
for viz_handler in leap_binder.setup_container.visualizers:
|
139
122
|
if viz_handler.visualizer_handler_data.name == name:
|
@@ -142,10 +125,6 @@ def tensorleap_custom_visualizer(name: str, visualizer_type: LeapDataType,
|
|
142
125
|
|
143
126
|
leap_binder.set_visualizer(user_function, name, visualizer_type, heatmap_function)
|
144
127
|
|
145
|
-
if connects_to is not None:
|
146
|
-
arg_names = leap_binder.setup_container.visualizers[-1].visualizer_handler_data.arg_names
|
147
|
-
_add_mapping_connections(connects_to, arg_names, NodeMappingType.Visualizer, name)
|
148
|
-
|
149
128
|
def _validate_input_args(*args, **kwargs):
|
150
129
|
for i, arg in enumerate(args):
|
151
130
|
assert isinstance(arg, (np.ndarray, SamplePreprocessResponse)), (
|
@@ -296,7 +275,7 @@ def tensorleap_unlabeled_preprocess():
|
|
296
275
|
return decorating_function
|
297
276
|
|
298
277
|
|
299
|
-
def tensorleap_input_encoder(name: str, channel_dim=-1
|
278
|
+
def tensorleap_input_encoder(name: str, channel_dim=-1):
|
300
279
|
def decorating_function(user_function: SectionCallableInterface):
|
301
280
|
for input_handler in leap_binder.setup_container.inputs:
|
302
281
|
if input_handler.name == name:
|
@@ -335,11 +314,6 @@ def tensorleap_input_encoder(name: str, channel_dim=-1, model_input_index=None):
|
|
335
314
|
_validate_result(result)
|
336
315
|
return result
|
337
316
|
|
338
|
-
node_mapping_type = NodeMappingType.Input
|
339
|
-
if model_input_index is not None:
|
340
|
-
node_mapping_type = NodeMappingType(f'Input{str(model_input_index)}')
|
341
|
-
inner.node_mapping = NodeMapping(name, node_mapping_type)
|
342
|
-
|
343
317
|
return inner
|
344
318
|
|
345
319
|
return decorating_function
|
@@ -380,16 +354,12 @@ def tensorleap_gt_encoder(name: str):
|
|
380
354
|
_validate_result(result)
|
381
355
|
return result
|
382
356
|
|
383
|
-
inner.node_mapping = NodeMapping(name, NodeMappingType.GroundTruth)
|
384
|
-
|
385
357
|
return inner
|
386
358
|
|
387
|
-
|
388
|
-
|
389
359
|
return decorating_function
|
390
360
|
|
391
361
|
|
392
|
-
def tensorleap_custom_loss(name: str
|
362
|
+
def tensorleap_custom_loss(name: str):
|
393
363
|
def decorating_function(user_function: CustomCallableInterface):
|
394
364
|
for loss_handler in leap_binder.setup_container.custom_loss_handlers:
|
395
365
|
if loss_handler.custom_loss_handler_data.name == name:
|
@@ -398,11 +368,6 @@ def tensorleap_custom_loss(name: str, connects_to=None):
|
|
398
368
|
|
399
369
|
leap_binder.add_custom_loss(user_function, name)
|
400
370
|
|
401
|
-
if connects_to is not None:
|
402
|
-
arg_names = leap_binder.setup_container.custom_loss_handlers[-1].custom_loss_handler_data.arg_names
|
403
|
-
_add_mapping_connections(connects_to, arg_names, NodeMappingType.CustomLoss, name)
|
404
|
-
|
405
|
-
|
406
371
|
valid_types = (np.ndarray, SamplePreprocessResponse)
|
407
372
|
try:
|
408
373
|
import tensorflow as tf
|
code_loader/leaploader.py
CHANGED
@@ -19,8 +19,7 @@ from code_loader.contract.enums import DataStateEnum, TestingSectionEnum, DataSt
|
|
19
19
|
from code_loader.contract.exceptions import DatasetScriptException
|
20
20
|
from code_loader.contract.responsedataclasses import DatasetIntegParseResult, DatasetTestResultPayload, \
|
21
21
|
DatasetPreprocess, DatasetSetup, DatasetInputInstance, DatasetOutputInstance, DatasetMetadataInstance, \
|
22
|
-
VisualizerInstance, PredictionTypeInstance, ModelSetup, CustomLayerInstance, MetricInstance, CustomLossInstance
|
23
|
-
EngineFileContract
|
22
|
+
VisualizerInstance, PredictionTypeInstance, ModelSetup, CustomLayerInstance, MetricInstance, CustomLossInstance
|
24
23
|
from code_loader.inner_leap_binder import global_leap_binder
|
25
24
|
from code_loader.leaploaderbase import LeapLoaderBase
|
26
25
|
from code_loader.utils import get_root_exception_file_and_line_number
|
@@ -180,8 +179,7 @@ class LeapLoader(LeapLoaderBase):
|
|
180
179
|
return DatasetIntegParseResult(is_valid=is_valid, payloads=test_payloads,
|
181
180
|
is_valid_for_model=is_valid_for_model, setup=setup_response,
|
182
181
|
model_setup=model_setup, general_error=general_error,
|
183
|
-
print_log=print_log
|
184
|
-
engine_file_contract=EngineFileContract(global_leap_binder.mapping_connections))
|
182
|
+
print_log=print_log)
|
185
183
|
|
186
184
|
def _check_preprocess(self) -> DatasetTestResultPayload:
|
187
185
|
test_result = DatasetTestResultPayload('preprocess')
|
@@ -206,6 +204,9 @@ class LeapLoader(LeapLoaderBase):
|
|
206
204
|
preprocess_result = self._preprocess_result()
|
207
205
|
result_payloads: List[DatasetTestResultPayload] = []
|
208
206
|
dataset_base_handlers: List[Union[DatasetBaseHandler, MetadataHandler]] = self._get_all_dataset_base_handlers()
|
207
|
+
metadata_handlers_num = sum(isinstance(x, MetadataHandler) for x in dataset_base_handlers)
|
208
|
+
assert metadata_handlers_num < 100, f"More than 100 metadata function are not allowed, current metadata function discovered: {metadata_handlers_num}"
|
209
|
+
metadata_param_count = 0
|
209
210
|
for dataset_base_handler in dataset_base_handlers:
|
210
211
|
test_result = [DatasetTestResultPayload(dataset_base_handler.name)]
|
211
212
|
for state, preprocess_response in preprocess_result.items():
|
@@ -220,9 +221,10 @@ class LeapLoader(LeapLoaderBase):
|
|
220
221
|
test_result[0].display[
|
221
222
|
state_name] = f"{repr(e)} in file {file_name}, line_number: {line_number}\nStacktrace:\n{stacktrace}"
|
222
223
|
test_result[0].is_passed = False
|
223
|
-
|
224
|
+
if isinstance(dataset_base_handler, MetadataHandler):
|
225
|
+
metadata_param_count += len(test_result)
|
226
|
+
assert metadata_param_count < 800, f"More than 800 metadata keys are not allowed, current metadata keys discovered: {metadata_param_count}"
|
224
227
|
result_payloads.extend(test_result)
|
225
|
-
|
226
228
|
return result_payloads
|
227
229
|
|
228
230
|
@staticmethod
|
@@ -4,8 +4,7 @@ code_loader/contract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
4
4
|
code_loader/contract/datasetclasses.py,sha256=ZN6XC-tg0qaT-GF4YiV2SsM2dUQW4fc1akLF-J4YT0w,7964
|
5
5
|
code_loader/contract/enums.py,sha256=GEFkvUMXnCNt-GOoz7NJ9ecQZ2PPDettJNOsxsiM0wk,1622
|
6
6
|
code_loader/contract/exceptions.py,sha256=jWqu5i7t-0IG0jGRsKF4DjJdrsdpJjIYpUkN1F4RiyQ,51
|
7
|
-
code_loader/contract/
|
8
|
-
code_loader/contract/responsedataclasses.py,sha256=6-5DJkYBdXb3UB1eNidTTPPBIYxMjEoMdYDkp9VhH8o,4223
|
7
|
+
code_loader/contract/responsedataclasses.py,sha256=RSx9m_R3LawhK5o1nAcO3hfp2F9oJYtxZr_bpP3bTmw,4005
|
9
8
|
code_loader/contract/visualizer_classes.py,sha256=_nlukRfW8QeQaQG7G5HfAUSeCuoqslB4xJS2AGI_Nz8,15156
|
10
9
|
code_loader/default_losses.py,sha256=NoOQym1106bDN5dcIk56Elr7ZG5quUHArqfP5-Nyxyo,1139
|
11
10
|
code_loader/default_metrics.py,sha256=v16Mrt2Ze1tXPgfKywGVdRSrkaK4CKLNQztN1UdVqIY,5010
|
@@ -20,14 +19,14 @@ code_loader/experiment_api/types.py,sha256=MY8xFARHwdVA7p4dxyhD60ShmttgTvb4qdp1o
|
|
20
19
|
code_loader/experiment_api/utils.py,sha256=XZHtxge12TS4H4-8PjV3sKuhp8Ud6ojAiIzTZJEqBqc,3304
|
21
20
|
code_loader/experiment_api/workingspace_config_utils.py,sha256=DLzXQCg4dgTV_YgaSbeTVzq-2ja_SQw4zi7LXwKL9cY,990
|
22
21
|
code_loader/inner_leap_binder/__init__.py,sha256=koOlJyMNYzGbEsoIbXathSmQ-L38N_pEXH_HvL7beXU,99
|
23
|
-
code_loader/inner_leap_binder/leapbinder.py,sha256=
|
24
|
-
code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=
|
25
|
-
code_loader/leaploader.py,sha256=
|
22
|
+
code_loader/inner_leap_binder/leapbinder.py,sha256=1zPMMmpbdATQbWrEiLdHYrmfTgLqz-aOXWTJAup-pWw,31205
|
23
|
+
code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=qcYyekpIN1hgbmSqTrN7o6IMpfu8ZWp2J_lhMEoV8I8,22598
|
24
|
+
code_loader/leaploader.py,sha256=puboAweNAreN0nJ7hJG86ZE13hBYlw4pn_ilZ9PJbPU,26335
|
26
25
|
code_loader/leaploaderbase.py,sha256=VH0vddRmkqLtcDlYPCO7hfz1_VbKo43lUdHDAbd4iJc,4198
|
27
26
|
code_loader/utils.py,sha256=aw2i_fqW_ADjLB66FWZd9DfpCQ7mPdMyauROC5Nd51I,2197
|
28
27
|
code_loader/visualizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
28
|
code_loader/visualizers/default_visualizers.py,sha256=f95WzLYO2KU8endWxrmtwjHx7diDfm8AaWjucYHT7GI,2439
|
30
|
-
code_loader-1.0.
|
31
|
-
code_loader-1.0.
|
32
|
-
code_loader-1.0.
|
33
|
-
code_loader-1.0.
|
29
|
+
code_loader-1.0.88.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
|
30
|
+
code_loader-1.0.88.dist-info/METADATA,sha256=f7Wd5MJoAbaxyA6cBPOdDLnvQ8ge5euqtMoxXQ1F1DM,849
|
31
|
+
code_loader-1.0.88.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
32
|
+
code_loader-1.0.88.dist-info/RECORD,,
|
code_loader/contract/mapping.py
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
from enum import Enum
|
2
|
-
|
3
|
-
from typing import Optional, Dict, Any, List
|
4
|
-
from dataclasses import dataclass
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class NodeMappingType(Enum):
|
9
|
-
Visualizer = 'Visualizer'
|
10
|
-
Metric = 'Metric'
|
11
|
-
GroundTruth = 'GroundTruth'
|
12
|
-
Input = 'Input'
|
13
|
-
Layer = 'Layer'
|
14
|
-
Loss = 'Loss'
|
15
|
-
CustomLoss = 'CustomLoss'
|
16
|
-
Optimizer = 'Optimizer'
|
17
|
-
Prediction0 = 'Prediction0'
|
18
|
-
Prediction1 = 'Prediction1'
|
19
|
-
Prediction2 = 'Prediction2'
|
20
|
-
Prediction3 = 'Prediction3'
|
21
|
-
Input0 = 'Input0'
|
22
|
-
Input1 = 'Input1'
|
23
|
-
Input2 = 'Input2'
|
24
|
-
Input3 = 'Input3'
|
25
|
-
Input4 = 'Input4'
|
26
|
-
Input5 = 'Input5'
|
27
|
-
|
28
|
-
|
29
|
-
@dataclass
|
30
|
-
class NodeMapping:
|
31
|
-
name: str
|
32
|
-
type: NodeMappingType
|
33
|
-
user_unique_name: Optional[str] = None
|
34
|
-
sub_type: Optional[str] = None
|
35
|
-
arg_names: Optional[List[str]] = None
|
36
|
-
|
37
|
-
|
38
|
-
@dataclass
|
39
|
-
class NodeConnection:
|
40
|
-
node: NodeMapping
|
41
|
-
node_inputs: Optional[Dict[str, NodeMapping]]
|
42
|
-
prediction_type_name: Optional[str] = None
|
43
|
-
|
44
|
-
|
45
|
-
def leap_output(idx):
|
46
|
-
def dummy():
|
47
|
-
return None
|
48
|
-
|
49
|
-
node_mapping_type = NodeMappingType(f'Prediction{str(idx)}')
|
50
|
-
dummy.node_mapping = NodeMapping('', node_mapping_type)
|
51
|
-
|
52
|
-
return dummy
|
53
|
-
|
File without changes
|
File without changes
|