code-loader 1.0.180.dev3__tar.gz → 1.0.180.dev5__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.dev3 → code_loader-1.0.180.dev5}/PKG-INFO +1 -1
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/datasetclasses.py +10 -8
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/inner_leap_binder/leapbinder_decorators.py +65 -25
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/pyproject.toml +1 -1
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/LICENSE +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/README.md +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/__init__.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/sim_config.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/leaploader.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/mixpanel_tracker.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/utils.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/visualizers/default_visualizers.py +0 -0
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/datasetclasses.py
RENAMED
|
@@ -13,6 +13,8 @@ from code_loader.contract.sim_config import SimConfig
|
|
|
13
13
|
|
|
14
14
|
custom_latent_space_attribute = "custom_latent_space"
|
|
15
15
|
|
|
16
|
+
_simulation_context: dict = {"active": False}
|
|
17
|
+
|
|
16
18
|
|
|
17
19
|
@dataclass
|
|
18
20
|
class PreprocessResponse:
|
|
@@ -62,14 +64,14 @@ class PreprocessResponse:
|
|
|
62
64
|
raise Exception("length is deprecated, please use sample_ids instead.")
|
|
63
65
|
|
|
64
66
|
if self.state is None:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
if not _simulation_context["active"]:
|
|
68
|
+
from code_loader.inner_leap_binder.leapbinder_decorators import store_warning_by_param
|
|
69
|
+
store_warning_by_param(
|
|
70
|
+
param_name="PreprocessResponse.state",
|
|
71
|
+
user_func_name="tensorleap_preprocess",
|
|
72
|
+
default_value=str("specific order"),
|
|
73
|
+
link_to_docs="https://docs.tensorleap.ai/tensorleap-integration/writing-integration-code/preprocess-function",
|
|
74
|
+
)
|
|
73
75
|
else:
|
|
74
76
|
assert isinstance(self.state, DataStateType), f"PreprocessResponse.state must be of type {DataStateType.__name__} but got {type(self.state)}"
|
|
75
77
|
|
|
@@ -1424,7 +1424,7 @@ def tensorleap_simulation(name: str, sim_params: dict):
|
|
|
1424
1424
|
leap_binder.set_simulation(user_function, name, sim_params)
|
|
1425
1425
|
|
|
1426
1426
|
if not _call_from_tl_platform:
|
|
1427
|
-
|
|
1427
|
+
register_sim(name)
|
|
1428
1428
|
|
|
1429
1429
|
def _validate_input_args(*args, **kwargs):
|
|
1430
1430
|
assert len(args) == 0, (
|
|
@@ -1442,29 +1442,40 @@ def tensorleap_simulation(name: str, sim_params: dict):
|
|
|
1442
1442
|
f"{user_function.__name__}() validation failed: "
|
|
1443
1443
|
f"Expected return type PreprocessResponse. Got {type(result).__name__}."
|
|
1444
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
1445
|
|
|
1451
1446
|
def inner(*args, **kwargs):
|
|
1452
1447
|
if not _call_from_tl_platform:
|
|
1453
|
-
set_current('
|
|
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")
|
|
1448
|
+
set_current('tensorleap simulation')
|
|
1460
1449
|
try:
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1450
|
+
from code_loader.contract.datasetclasses import _simulation_context
|
|
1451
|
+
_validate_input_args(*args, **kwargs)
|
|
1452
|
+
_simulation_context["active"] = True
|
|
1453
|
+
try:
|
|
1454
|
+
result = user_function(*args, **kwargs)
|
|
1455
|
+
finally:
|
|
1456
|
+
_simulation_context["active"] = False
|
|
1457
|
+
_validate_result(result)
|
|
1458
|
+
if result.state is not None and result.state != DataStateType.additional:
|
|
1459
|
+
logger.warning(
|
|
1460
|
+
f"{user_function.__name__}() returned state={result.state!r}; "
|
|
1461
|
+
f"overriding to DataStateType.additional."
|
|
1462
|
+
)
|
|
1463
|
+
result.state = DataStateType.additional
|
|
1464
|
+
result.tl_generated = True
|
|
1465
|
+
try:
|
|
1466
|
+
emit_integration_event_once(AnalyticsEvent.SIMULATION_INTEGRATION_TEST, {
|
|
1467
|
+
'simulation_name': name,
|
|
1468
|
+
'sim_params_count': len(sim_params)
|
|
1469
|
+
})
|
|
1470
|
+
except Exception as e:
|
|
1471
|
+
logger.debug(f"Failed to emit simulation integration test event: {e}")
|
|
1472
|
+
if not _call_from_tl_platform:
|
|
1473
|
+
mark_sim_result(name, True)
|
|
1474
|
+
return result
|
|
1475
|
+
except Exception:
|
|
1476
|
+
if not _call_from_tl_platform:
|
|
1477
|
+
mark_sim_result(name, False)
|
|
1478
|
+
raise
|
|
1468
1479
|
|
|
1469
1480
|
return inner
|
|
1470
1481
|
|
|
@@ -2092,6 +2103,9 @@ def tensorleap_status_table():
|
|
|
2092
2103
|
def _print_table():
|
|
2093
2104
|
_print_param_default_warnings()
|
|
2094
2105
|
|
|
2106
|
+
for msg in _sim_messages:
|
|
2107
|
+
print(f"\n⚠️ {msg}")
|
|
2108
|
+
|
|
2095
2109
|
if not started_from("leap_integration.py"):
|
|
2096
2110
|
return
|
|
2097
2111
|
|
|
@@ -2144,12 +2158,41 @@ def tensorleap_status_table():
|
|
|
2144
2158
|
else:
|
|
2145
2159
|
_set_status(name, CROSS)
|
|
2146
2160
|
|
|
2161
|
+
_sim_tracking: dict = {}
|
|
2162
|
+
_sim_messages: list = []
|
|
2163
|
+
|
|
2164
|
+
def register_sim(sim_name: str):
|
|
2165
|
+
if not _sim_tracking:
|
|
2166
|
+
table.append({"name": "tensorleap simulation (optional)", "Added to integration": UNKNOWN})
|
|
2167
|
+
_sim_tracking[sim_name] = "registered"
|
|
2168
|
+
|
|
2169
|
+
def mark_sim_result(sim_name: str, passed: bool):
|
|
2170
|
+
_sim_tracking[sim_name] = "passed" if passed else "failed"
|
|
2171
|
+
|
|
2172
|
+
def _resolve_sim_row():
|
|
2173
|
+
if not _sim_tracking:
|
|
2174
|
+
return
|
|
2175
|
+
row = _find_row("tensorleap simulation")
|
|
2176
|
+
if not row:
|
|
2177
|
+
return
|
|
2178
|
+
failed = [n for n, s in _sim_tracking.items() if s == "failed"]
|
|
2179
|
+
not_called = [n for n, s in _sim_tracking.items() if s == "registered"]
|
|
2180
|
+
if failed:
|
|
2181
|
+
row["Added to integration"] = CROSS
|
|
2182
|
+
_sim_messages.append(f"Simulation(s) failed validation: {', '.join(sorted(failed))}")
|
|
2183
|
+
elif not_called:
|
|
2184
|
+
row["Added to integration"] = UNKNOWN
|
|
2185
|
+
_sim_messages.append(f"Simulation(s) not called in integration test: {', '.join(sorted(not_called))}")
|
|
2186
|
+
else:
|
|
2187
|
+
row["Added to integration"] = CHECK
|
|
2188
|
+
|
|
2147
2189
|
def run_on_exit():
|
|
2148
2190
|
if _finalizer_called["done"]:
|
|
2149
2191
|
return
|
|
2150
2192
|
_finalizer_called["done"] = True
|
|
2151
2193
|
if not _crashed["value"]:
|
|
2152
2194
|
_mark_unknowns_as_cross()
|
|
2195
|
+
_resolve_sim_row()
|
|
2153
2196
|
|
|
2154
2197
|
_print_table()
|
|
2155
2198
|
|
|
@@ -2164,17 +2207,14 @@ def tensorleap_status_table():
|
|
|
2164
2207
|
traceback.print_exception(exc_type, exc_value, exc_traceback)
|
|
2165
2208
|
run_on_exit()
|
|
2166
2209
|
|
|
2167
|
-
def add_table_row(name: str):
|
|
2168
|
-
table.append({"name": name, "Added to integration": UNKNOWN})
|
|
2169
|
-
|
|
2170
2210
|
atexit.register(run_on_exit)
|
|
2171
2211
|
sys.excepthook = handle_exception
|
|
2172
2212
|
|
|
2173
|
-
return set_current, update_env_params,
|
|
2213
|
+
return set_current, update_env_params, register_sim, mark_sim_result
|
|
2174
2214
|
|
|
2175
2215
|
|
|
2176
2216
|
if not _call_from_tl_platform:
|
|
2177
|
-
set_current, update_env_params_func,
|
|
2217
|
+
set_current, update_env_params_func, register_sim, mark_sim_result = tensorleap_status_table()
|
|
2178
2218
|
|
|
2179
2219
|
|
|
2180
2220
|
|
|
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.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/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.dev3 → code_loader-1.0.180.dev5}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.180.dev3 → code_loader-1.0.180.dev5}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|