code-loader 1.0.193.dev1__tar.gz → 1.0.193.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.193.dev1 → code_loader-1.0.193.dev3}/PKG-INFO +1 -1
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/inner_leap_binder/leapbinder_decorators.py +16 -5
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/leaploader.py +22 -3
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/pyproject.toml +1 -1
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/LICENSE +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/README.md +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/__init__.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/datasetclasses.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/sim_config.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/mixpanel_tracker.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/utils.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/visualizers/default_visualizers.py +0 -0
|
@@ -36,6 +36,10 @@ from code_loader.mixpanel_tracker import clear_integration_events, AnalyticsEven
|
|
|
36
36
|
|
|
37
37
|
_called_from_inside_tl_decorator = 0
|
|
38
38
|
_called_from_inside_tl_integration_test_decorator = False
|
|
39
|
+
# Whether any integration test wrapper was entered in this process. The crash reporter uses it
|
|
40
|
+
# to tell a raise in the test body (report as code-flow failure) from a module-level crash
|
|
41
|
+
# before any test ran (report as a plain script crash).
|
|
42
|
+
_integration_test_started = False
|
|
39
43
|
_call_from_tl_platform = os.environ.get('IS_TENSORLEAP_PLATFORM') == 'true'
|
|
40
44
|
|
|
41
45
|
# ---- warnings store (module-level) ----
|
|
@@ -299,7 +303,8 @@ def tensorleap_integration_test():
|
|
|
299
303
|
func_name='integration_test', expected_names=["idx", "preprocess"], **kwargs)
|
|
300
304
|
_validate_input_args(*args, **kwargs)
|
|
301
305
|
|
|
302
|
-
global _called_from_inside_tl_integration_test_decorator
|
|
306
|
+
global _called_from_inside_tl_integration_test_decorator, _integration_test_started
|
|
307
|
+
_integration_test_started = True
|
|
303
308
|
# Clear integration test events for new test
|
|
304
309
|
try:
|
|
305
310
|
clear_integration_events()
|
|
@@ -3402,7 +3407,11 @@ def tensorleap_status_table():
|
|
|
3402
3407
|
return
|
|
3403
3408
|
|
|
3404
3409
|
if _crashed["value"]:
|
|
3405
|
-
|
|
3410
|
+
crashed_at = _current_func['name']
|
|
3411
|
+
if crashed_at:
|
|
3412
|
+
print(f"\nScript crashed before completing all steps. crashed at function '{crashed_at}'.")
|
|
3413
|
+
else:
|
|
3414
|
+
print("\nScript crashed before completing all steps.")
|
|
3406
3415
|
return
|
|
3407
3416
|
|
|
3408
3417
|
print(ready_mess) if ready else print(
|
|
@@ -3477,9 +3486,11 @@ def tensorleap_status_table():
|
|
|
3477
3486
|
row = _find_row(crashed_name)
|
|
3478
3487
|
if row:
|
|
3479
3488
|
row["Added to integration"] = CROSS
|
|
3480
|
-
elif not crashed_name:
|
|
3481
|
-
# Crash with no decorator currently running
|
|
3482
|
-
# code flow itself failed; report that rather than
|
|
3489
|
+
elif not crashed_name and _integration_test_started:
|
|
3490
|
+
# Crash with no decorator currently running while an integration test has been
|
|
3491
|
+
# entered = the test body / code flow itself failed; report that rather than
|
|
3492
|
+
# blaming a decorator. Without a started test (a module-level crash between
|
|
3493
|
+
# decorator registrations) the plain script-crash message is the truthful one.
|
|
3483
3494
|
code_mapping_failure[0] = 1
|
|
3484
3495
|
|
|
3485
3496
|
traceback.print_exception(exc_type, exc_value, exc_traceback)
|
|
@@ -545,21 +545,39 @@ class LeapLoader(LeapLoaderBase):
|
|
|
545
545
|
test_result.is_passed = False
|
|
546
546
|
return test_result
|
|
547
547
|
|
|
548
|
+
@staticmethod
|
|
549
|
+
def _validate_autoregressive_step_inputs(step_inputs: Dict[str, Any],
|
|
550
|
+
sample_id: Union[int, str]) -> None:
|
|
551
|
+
# The parse-time check only covers the first sample of each state; the engine runtime
|
|
552
|
+
# paths must enforce the same key/value contract for every sample they touch.
|
|
553
|
+
for key, value in step_inputs.items():
|
|
554
|
+
if key.startswith('_'):
|
|
555
|
+
raise Exception(f'The autoregressive step hook returned model input key "{key}" '
|
|
556
|
+
f'for sample {sample_id} — underscore passthrough keys were '
|
|
557
|
+
'replaced by the explicit state channel; move passthrough values '
|
|
558
|
+
'into the returned state.')
|
|
559
|
+
if not isinstance(value, np.ndarray):
|
|
560
|
+
raise Exception('The autoregressive step hook returned a non-numpy value for '
|
|
561
|
+
f'model input "{key}" ({type(value).__name__}) for sample '
|
|
562
|
+
f'{sample_id}.')
|
|
563
|
+
|
|
548
564
|
def _ensure_autoregressive_input_shapes(self) -> Dict[str, List[int]]:
|
|
549
565
|
handler = global_leap_binder.setup_container.autoregressive_step
|
|
550
566
|
assert handler is not None
|
|
551
567
|
if handler.input_shapes is None:
|
|
552
568
|
preprocess_result = self._preprocess_result()
|
|
553
569
|
first_state_response = next(iter(preprocess_result.values()))
|
|
554
|
-
|
|
570
|
+
first_sample_id = first_state_response.sample_ids[0]
|
|
571
|
+
first_result = handler.function(first_sample_id, None, None, None,
|
|
555
572
|
first_state_response)
|
|
556
573
|
if not isinstance(first_result, tuple) or len(first_result) != 2 or \
|
|
557
574
|
not isinstance(first_result[0], dict):
|
|
558
575
|
raise Exception('The autoregressive step hook must return a (next_inputs, state) '
|
|
559
576
|
'tuple with a dict of initial model inputs on its first call, '
|
|
560
577
|
f'got {type(first_result)}.')
|
|
561
|
-
|
|
562
|
-
|
|
578
|
+
self._validate_autoregressive_step_inputs(first_result[0], first_sample_id)
|
|
579
|
+
handler.input_shapes = {key: list(value.shape)
|
|
580
|
+
for key, value in first_result[0].items()}
|
|
563
581
|
return handler.input_shapes
|
|
564
582
|
|
|
565
583
|
def run_simulation(self, sim_name, params=None, n_samples=1, seed=0,
|
|
@@ -897,6 +915,7 @@ class LeapLoader(LeapLoaderBase):
|
|
|
897
915
|
'The autoregressive step hook must return a (next_inputs, state) tuple with a '
|
|
898
916
|
f'dict of initial model inputs on its first call, got {type(step_zero_result)} '
|
|
899
917
|
f'for sample {sample_id}.')
|
|
918
|
+
self._validate_autoregressive_step_inputs(step_zero_result[0], sample_id)
|
|
900
919
|
inputs.update(step_zero_result[0])
|
|
901
920
|
return inputs
|
|
902
921
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/datasetclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.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.193.dev1 → code_loader-1.0.193.dev3}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.193.dev1 → code_loader-1.0.193.dev3}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|