code-loader 1.0.180.dev1__tar.gz → 1.0.180.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.
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/PKG-INFO +1 -1
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/datasetclasses.py +4 -3
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/responsedataclasses.py +2 -2
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/inner_leap_binder/leapbinder.py +3 -3
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/inner_leap_binder/leapbinder_decorators.py +43 -5
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/leaploader.py +2 -2
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/mixpanel_tracker.py +1 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/pyproject.toml +1 -1
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/LICENSE +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/README.md +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/__init__.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/sim_config.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/utils.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/visualizers/default_visualizers.py +0 -0
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/datasetclasses.py
RENAMED
|
@@ -42,6 +42,7 @@ class PreprocessResponse:
|
|
|
42
42
|
sample_id_type: Optional[Union[Type[str], Type[int]]] = None
|
|
43
43
|
sample_ids_to_instance_mappings: Optional[Dict[str, List[str]]] = None # in use only for element instance
|
|
44
44
|
instance_to_sample_ids_mappings: Optional[Dict[str, str]] = None # in use only for element instance
|
|
45
|
+
tl_generated: bool = False
|
|
45
46
|
|
|
46
47
|
def __post_init__(self) -> None:
|
|
47
48
|
assert self.sample_ids_to_instance_mappings is None, f"Keep sample_ids_to_instance_mappings None when initializing PreprocessResponse"
|
|
@@ -254,9 +255,9 @@ class CustomLayerHandler:
|
|
|
254
255
|
|
|
255
256
|
|
|
256
257
|
@dataclass
|
|
257
|
-
class
|
|
258
|
+
class SimulationHandler:
|
|
258
259
|
name: str
|
|
259
|
-
function: Callable[...,
|
|
260
|
+
function: Callable[..., PreprocessResponse]
|
|
260
261
|
sim_config: SimConfig
|
|
261
262
|
|
|
262
263
|
|
|
@@ -275,7 +276,7 @@ class DatasetIntegrationSetup:
|
|
|
275
276
|
instance_metrics: List[InstanceMetricHandler] = field(default_factory=list)
|
|
276
277
|
custom_layers: Dict[str, CustomLayerHandler] = field(default_factory=dict)
|
|
277
278
|
custom_latent_space: Optional[CustomLatentSpaceHandler] = None
|
|
278
|
-
simulations: List[
|
|
279
|
+
simulations: List[SimulationHandler] = field(default_factory=list)
|
|
279
280
|
|
|
280
281
|
|
|
281
282
|
@dataclass
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/responsedataclasses.py
RENAMED
|
@@ -70,7 +70,7 @@ class PredictionTypeInstance:
|
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
@dataclass
|
|
73
|
-
class
|
|
73
|
+
class SimulationInstance:
|
|
74
74
|
name: str
|
|
75
75
|
sim_config: Dict[str, Any]
|
|
76
76
|
|
|
@@ -85,7 +85,7 @@ class DatasetSetup:
|
|
|
85
85
|
prediction_types: List[PredictionTypeInstance]
|
|
86
86
|
custom_losses: List[CustomLossInstance]
|
|
87
87
|
metrics: List[MetricInstance] = field(default_factory=list)
|
|
88
|
-
simulations: List[
|
|
88
|
+
simulations: List[SimulationInstance] = field(default_factory=list)
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
@dataclass
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
@@ -13,7 +13,7 @@ from code_loader.contract.datasetclasses import SectionCallableInterface, InputH
|
|
|
13
13
|
CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, \
|
|
14
14
|
RawInputsForHeatmap, VisualizerHandlerData, MetricHandlerData, CustomLossHandlerData, SamplePreprocessResponse, \
|
|
15
15
|
ElementInstanceMasksHandler, InstanceCallableInterface, CustomLatentSpaceHandler, InstanceMetricHandler, \
|
|
16
|
-
|
|
16
|
+
SimulationHandler
|
|
17
17
|
from code_loader.contract.enums import LeapDataType, DataStateEnum, DataStateType, MetricDirection, DatasetMetadataType
|
|
18
18
|
from code_loader.contract.mapping import NodeConnection, NodeMapping, NodeMappingType
|
|
19
19
|
from code_loader.contract.responsedataclasses import DatasetTestResultPayload, LeapAnalysisConfiguration
|
|
@@ -221,7 +221,7 @@ class LeapBinder:
|
|
|
221
221
|
"""
|
|
222
222
|
self.setup_container.unlabeled_data_preprocess = UnlabeledDataPreprocessHandler(function)
|
|
223
223
|
|
|
224
|
-
def set_simulation(self, function: Callable[...,
|
|
224
|
+
def set_simulation(self, function: Callable[..., PreprocessResponse], name: str, sim_config_raw: Dict[str, Any]) -> None:
|
|
225
225
|
for sim in self.setup_container.simulations:
|
|
226
226
|
if sim.name == name:
|
|
227
227
|
raise Exception(
|
|
@@ -229,7 +229,7 @@ class LeapBinder:
|
|
|
229
229
|
)
|
|
230
230
|
sim_config = parse_sim_config(sim_config_raw)
|
|
231
231
|
self.setup_container.simulations.append(
|
|
232
|
-
|
|
232
|
+
SimulationHandler(name=name, function=function, sim_config=sim_config)
|
|
233
233
|
)
|
|
234
234
|
|
|
235
235
|
def set_input(self, function: SectionCallableInterface, name: str, channel_dim: int = -1) -> None:
|
|
@@ -1400,7 +1400,7 @@ def tensorleap_preprocess():
|
|
|
1400
1400
|
|
|
1401
1401
|
|
|
1402
1402
|
def tensorleap_simulation(name: str, sim_params: dict):
|
|
1403
|
-
def decorating_function(user_function: Callable):
|
|
1403
|
+
def decorating_function(user_function: Callable[..., PreprocessResponse]):
|
|
1404
1404
|
sig = inspect.signature(user_function)
|
|
1405
1405
|
func_params = set(sig.parameters.keys())
|
|
1406
1406
|
expected_params = set(sim_params.keys()) | {"N"}
|
|
@@ -1423,12 +1423,47 @@ def tensorleap_simulation(name: str, sim_params: dict):
|
|
|
1423
1423
|
|
|
1424
1424
|
leap_binder.set_simulation(user_function, name, sim_params)
|
|
1425
1425
|
|
|
1426
|
-
|
|
1427
|
-
|
|
1426
|
+
if not _call_from_tl_platform:
|
|
1427
|
+
add_table_row(f"tensorleap_simulation:{name} (optional)")
|
|
1428
|
+
|
|
1429
|
+
def _validate_input_args(*args, **kwargs):
|
|
1430
|
+
assert len(args) == 0, (
|
|
1431
|
+
f"{user_function.__name__}() validation failed: "
|
|
1432
|
+
f"Simulation functions must be called with keyword arguments only. Got positional args: {args}."
|
|
1433
|
+
)
|
|
1434
|
+
missing = expected_params - set(kwargs.keys())
|
|
1435
|
+
assert not missing, (
|
|
1436
|
+
f"{user_function.__name__}() validation failed: "
|
|
1437
|
+
f"Missing required keyword arguments: {missing}."
|
|
1438
|
+
)
|
|
1439
|
+
|
|
1440
|
+
def _validate_result(result):
|
|
1428
1441
|
assert isinstance(result, PreprocessResponse), (
|
|
1429
1442
|
f"{user_function.__name__}() validation failed: "
|
|
1430
1443
|
f"Expected return type PreprocessResponse. Got {type(result).__name__}."
|
|
1431
1444
|
)
|
|
1445
|
+
assert result.state == DataStateType.additional, (
|
|
1446
|
+
f"{user_function.__name__}() validation failed: "
|
|
1447
|
+
f"Simulation must return a PreprocessResponse with state=DataStateType.additional. "
|
|
1448
|
+
f"Got state={result.state!r}."
|
|
1449
|
+
)
|
|
1450
|
+
|
|
1451
|
+
def inner(*args, **kwargs):
|
|
1452
|
+
if not _call_from_tl_platform:
|
|
1453
|
+
set_current('tensorleap_simulation')
|
|
1454
|
+
_validate_input_args(*args, **kwargs)
|
|
1455
|
+
result = user_function(*args, **kwargs)
|
|
1456
|
+
_validate_result(result)
|
|
1457
|
+
result.tl_generated = True
|
|
1458
|
+
if not _call_from_tl_platform:
|
|
1459
|
+
update_env_params_func(f"tensorleap_simulation:{name}", "v")
|
|
1460
|
+
try:
|
|
1461
|
+
emit_integration_event_once(AnalyticsEvent.SIMULATION_INTEGRATION_TEST, {
|
|
1462
|
+
'simulation_name': name,
|
|
1463
|
+
'sim_params_count': len(sim_params)
|
|
1464
|
+
})
|
|
1465
|
+
except Exception as e:
|
|
1466
|
+
logger.debug(f"Failed to emit simulation integration test event: {e}")
|
|
1432
1467
|
return result
|
|
1433
1468
|
|
|
1434
1469
|
return inner
|
|
@@ -2129,14 +2164,17 @@ def tensorleap_status_table():
|
|
|
2129
2164
|
traceback.print_exception(exc_type, exc_value, exc_traceback)
|
|
2130
2165
|
run_on_exit()
|
|
2131
2166
|
|
|
2167
|
+
def add_table_row(name: str):
|
|
2168
|
+
table.append({"name": name, "Added to integration": UNKNOWN})
|
|
2169
|
+
|
|
2132
2170
|
atexit.register(run_on_exit)
|
|
2133
2171
|
sys.excepthook = handle_exception
|
|
2134
2172
|
|
|
2135
|
-
return set_current, update_env_params
|
|
2173
|
+
return set_current, update_env_params, add_table_row
|
|
2136
2174
|
|
|
2137
2175
|
|
|
2138
2176
|
if not _call_from_tl_platform:
|
|
2139
|
-
set_current, update_env_params_func = tensorleap_status_table()
|
|
2177
|
+
set_current, update_env_params_func, add_table_row = tensorleap_status_table()
|
|
2140
2178
|
|
|
2141
2179
|
|
|
2142
2180
|
|
|
@@ -22,7 +22,7 @@ from code_loader.contract.exceptions import DatasetScriptException
|
|
|
22
22
|
from code_loader.contract.responsedataclasses import DatasetIntegParseResult, DatasetTestResultPayload, \
|
|
23
23
|
DatasetPreprocess, DatasetSetup, DatasetInputInstance, DatasetOutputInstance, DatasetMetadataInstance, \
|
|
24
24
|
VisualizerInstance, PredictionTypeInstance, ModelSetup, CustomLayerInstance, MetricInstance, CustomLossInstance, \
|
|
25
|
-
EngineFileContract,
|
|
25
|
+
EngineFileContract, SimulationInstance
|
|
26
26
|
from code_loader.contract.sim_config import FloatBounds, IntBounds, CategoricalBounds
|
|
27
27
|
from code_loader.inner_leap_binder import global_leap_binder
|
|
28
28
|
from code_loader.inner_leap_binder.leapbinder import mapping_runtime_mode_env_var_mame
|
|
@@ -472,7 +472,7 @@ class LeapLoader(LeapLoaderBase):
|
|
|
472
472
|
}
|
|
473
473
|
for name, param in sim.sim_config.items()
|
|
474
474
|
}
|
|
475
|
-
simulations.append(
|
|
475
|
+
simulations.append(SimulationInstance(name=sim.name, sim_config=sim_config_serialized))
|
|
476
476
|
|
|
477
477
|
return DatasetSetup(preprocess=dataset_preprocess, inputs=inputs, outputs=ground_truths,
|
|
478
478
|
metadata=metadata_instances, visualizers=visualizers, prediction_types=prediction_types,
|
|
@@ -23,6 +23,7 @@ class AnalyticsEvent(str, Enum):
|
|
|
23
23
|
PREPROCESS_INTEGRATION_TEST = "preprocess_integration_test"
|
|
24
24
|
INPUT_ENCODER_INTEGRATION_TEST = "input_encoder_integration_test"
|
|
25
25
|
GT_ENCODER_INTEGRATION_TEST = "gt_encoder_integration_test"
|
|
26
|
+
SIMULATION_INTEGRATION_TEST = "simulation_integration_test"
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
class CodeLoaderLoadedProps(TypedDict, total=False):
|
|
File without changes
|
|
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.180.dev1 → code_loader-1.0.180.dev3}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/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.180.dev1 → code_loader-1.0.180.dev3}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev1 → code_loader-1.0.180.dev3}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|