code-loader 1.0.206.dev2__tar.gz → 1.0.206.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.
Files changed (37) hide show
  1. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/PKG-INFO +1 -1
  2. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/inner_leap_binder/leapbinder_decorators.py +17 -5
  3. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/pyproject.toml +1 -1
  4. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/LICENSE +0 -0
  5. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/README.md +0 -0
  6. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/__init__.py +0 -0
  7. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/__init__.py +0 -0
  8. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/datasetclasses.py +0 -0
  9. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/enums.py +0 -0
  10. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/exceptions.py +0 -0
  11. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/mapping.py +0 -0
  12. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/responsedataclasses.py +0 -0
  13. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/sim_config.py +0 -0
  14. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/contract/visualizer_classes.py +0 -0
  15. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/default_losses.py +0 -0
  16. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/default_metrics.py +0 -0
  17. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/__init__.py +0 -0
  18. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/api.py +0 -0
  19. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/cli_config_utils.py +0 -0
  20. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/client.py +0 -0
  21. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/epoch.py +0 -0
  22. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/experiment.py +0 -0
  23. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/experiment_context.py +0 -0
  24. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/types.py +0 -0
  25. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/utils.py +0 -0
  26. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  27. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/inner_leap_binder/__init__.py +0 -0
  28. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  29. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/leaploader.py +0 -0
  30. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/leaploaderbase.py +0 -0
  31. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/mixpanel_tracker.py +0 -0
  32. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/plot_functions/__init__.py +0 -0
  33. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/plot_functions/plot_functions.py +0 -0
  34. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/plot_functions/visualize.py +0 -0
  35. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/utils.py +0 -0
  36. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/visualizers/__init__.py +0 -0
  37. {code_loader-1.0.206.dev2 → code_loader-1.0.206.dev3}/code_loader/visualizers/default_visualizers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.206.dev2
3
+ Version: 1.0.206.dev3
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -3017,6 +3017,11 @@ def tensorleap_element_instance_preprocess(
3017
3017
  resolved = {}
3018
3018
  for name, value in element_instance_metadata.items():
3019
3019
  if name in declared:
3020
+ # Still type-check the VALUE. Master ran every key through
3021
+ # map_dict_to_metadata_types, so declaring a key must not become a way to
3022
+ # smuggle a list or an ndarray past validation and have it fail at eval time.
3023
+ if not is_absent_metadata_value(value):
3024
+ get_metadata_type_from_variable(value)
3020
3025
  continue
3021
3026
  if is_absent_metadata_value(value):
3022
3027
  raise Exception(
@@ -3034,11 +3039,18 @@ def tensorleap_element_instance_preprocess(
3034
3039
  found_instance_metadata = False
3035
3040
  # Resolve types on training, like mechanism (a) does (leapbinder.get_preprocess_result):
3036
3041
  # only training is allowed to fail on an unresolvable absence. `state` is still None here
3037
- # whenever the integration did not set it, so fall back to list position -- which is what
3038
- # get_preprocess_result would assign, and position 0 is training.
3039
- probe_order = sorted(
3040
- range(len(result)),
3041
- key=lambda i: DataStateEnum[result[i].state.name] if result[i].state is not None else i)
3042
+ # whenever the integration did not set it, so fall back to list position -- which is the
3043
+ # state get_preprocess_result would assign, and position 0 is training. Rank training
3044
+ # against everything else rather than sorting on the state value itself: mixing enum
3045
+ # values with list positions in one key lets a validation response tie with position 1
3046
+ # and keep its place ahead of training.
3047
+ def _is_training(i: int) -> bool:
3048
+ response = result[i]
3049
+ if response.state is not None:
3050
+ return response.state == DataStateType.training
3051
+ return i == 0
3052
+
3053
+ probe_order = sorted(range(len(result)), key=lambda i: (0 if _is_training(i) else 1, i))
3042
3054
  for preprocess_response in (result[i] for i in probe_order):
3043
3055
  if preprocess_response.is_grouped:
3044
3056
  raise Exception(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
- version = "1.0.206.dev2"
3
+ version = "1.0.206.dev3"
4
4
  description = ""
5
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
6
6
  license = "MIT"