code-loader 1.0.192__tar.gz → 1.0.193__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.192 → code_loader-1.0.193}/PKG-INFO +1 -1
  2. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/leaploader.py +29 -9
  3. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/leaploaderbase.py +7 -2
  4. {code_loader-1.0.192 → code_loader-1.0.193}/pyproject.toml +1 -2
  5. {code_loader-1.0.192 → code_loader-1.0.193}/LICENSE +0 -0
  6. {code_loader-1.0.192 → code_loader-1.0.193}/README.md +0 -0
  7. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/__init__.py +0 -0
  8. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/__init__.py +0 -0
  9. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/datasetclasses.py +0 -0
  10. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/enums.py +0 -0
  11. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/exceptions.py +0 -0
  12. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/mapping.py +0 -0
  13. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/responsedataclasses.py +0 -0
  14. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/sim_config.py +0 -0
  15. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/contract/visualizer_classes.py +0 -0
  16. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/default_losses.py +0 -0
  17. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/default_metrics.py +0 -0
  18. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/__init__.py +0 -0
  19. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/api.py +0 -0
  20. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/cli_config_utils.py +0 -0
  21. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/client.py +0 -0
  22. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/epoch.py +0 -0
  23. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/experiment.py +0 -0
  24. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/experiment_context.py +0 -0
  25. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/types.py +0 -0
  26. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/utils.py +0 -0
  27. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
  28. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/inner_leap_binder/__init__.py +0 -0
  29. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/inner_leap_binder/leapbinder.py +0 -0
  30. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/inner_leap_binder/leapbinder_decorators.py +0 -0
  31. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/mixpanel_tracker.py +0 -0
  32. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/plot_functions/__init__.py +0 -0
  33. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/plot_functions/plot_functions.py +0 -0
  34. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/plot_functions/visualize.py +0 -0
  35. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/utils.py +0 -0
  36. {code_loader-1.0.192 → code_loader-1.0.193}/code_loader/visualizers/__init__.py +0 -0
  37. {code_loader-1.0.192 → code_loader-1.0.193}/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.192
3
+ Version: 1.0.193
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -539,8 +539,8 @@ class LeapLoader(LeapLoaderBase):
539
539
  return handler.input_shapes
540
540
 
541
541
  def run_simulation(self, sim_name, params=None, n_samples=1, seed=0,
542
- sample_ids=None, extend_preprocess=True):
543
- # type: (str, Optional[Dict[str, Any]], int, int, Optional[List[str]], bool) -> Dict[str, Any]
542
+ sample_ids=None, extend_preprocess=True, allow_partial=False):
543
+ # type: (str, Optional[Dict[str, Any]], int, int, Optional[List[str]], bool, bool) -> Dict[str, Any]
544
544
  # extend_preprocess=True (default): also extend preprocess_result[additional] with the
545
545
  # new synthetic sample_ids (producer-side behavior — synthetic worker needs this for
546
546
  # enumeration / data_length tracking). Pass False from consumer-side populators that
@@ -567,19 +567,26 @@ class LeapLoader(LeapLoaderBase):
567
567
  for sample_id in original_sample_ids:
568
568
  for handler in global_leap_binder.setup_container.inputs:
569
569
  per_encoder[handler.name].append(handler.function(sample_id, sim_preprocess))
570
- encoded = {name: np.stack(arrays) for name, arrays in per_encoder.items()}
570
+ encoded = {
571
+ name: np.stack(arrays) if arrays else np.empty((0,), dtype=np.float32)
572
+ for name, arrays in per_encoder.items()
573
+ }
571
574
  if sample_ids is not None:
572
- if len(sample_ids) != len(original_sample_ids):
573
- raise ValueError(
574
- "sample_ids length ({}) does not match simulation output length ({})".format(
575
- len(sample_ids), len(original_sample_ids)
576
- )
577
- )
578
575
  for sid in sample_ids:
579
576
  if not isinstance(sid, str):
580
577
  raise TypeError(
581
578
  "All sample_ids must be of type str. Got: {}".format(type(sid))
582
579
  )
580
+ if len(sample_ids) != len(original_sample_ids):
581
+ if not allow_partial:
582
+ raise ValueError(
583
+ "sample_ids length ({}) does not match simulation output length ({})".format(
584
+ len(sample_ids), len(original_sample_ids)
585
+ )
586
+ )
587
+ n_bound = min(len(sample_ids), len(original_sample_ids))
588
+ sample_ids = list(sample_ids)[:n_bound]
589
+ original_sample_ids = original_sample_ids[:n_bound]
583
590
  for synth_id, original_local_id in zip(sample_ids, original_sample_ids):
584
591
  self._synthetic_lookup[synth_id] = (sim_preprocess, original_local_id)
585
592
  if extend_preprocess:
@@ -589,6 +596,19 @@ class LeapLoader(LeapLoaderBase):
589
596
  returned_sample_ids = original_sample_ids
590
597
  return {"encoded": encoded, "sample_ids": returned_sample_ids}
591
598
 
599
+ def prune_synthetic_lookup(self, keep_ids):
600
+ # type: (List[str]) -> None
601
+ # Keep only the given synthetic sample_ids in the in-memory lookup and
602
+ # drop the rest, so preprocess responses don't accumulate across many
603
+ # run_simulation calls (e.g. a synthetic calibration loop keeps only its
604
+ # running top-K trials). Keep-set semantics (rather than evict-list) so
605
+ # the caller can bound the lookup to a known-good set each iteration
606
+ # without tracking everything it ever generated.
607
+ keep = set(keep_ids)
608
+ self._synthetic_lookup = {
609
+ sid: entry for sid, entry in self._synthetic_lookup.items() if sid in keep
610
+ }
611
+
592
612
  def _extend_additional_preprocess(self, new_sample_ids: List[str]) -> None:
593
613
  if self._preprocess_result_cached is None:
594
614
  self._preprocess_result()
@@ -159,8 +159,13 @@ class LeapLoaderBase:
159
159
  pass
160
160
 
161
161
  @abstractmethod
162
- def run_simulation(self, sim_name, params=None, n_samples=1, seed=0, sample_ids=None):
163
- # type: (str, Optional[Dict[str, Any]], int, int, Optional[List[str]]) -> Dict[str, Any]
162
+ def run_simulation(self, sim_name, params=None, n_samples=1, seed=0, sample_ids=None,
163
+ extend_preprocess=True, allow_partial=False):
164
+ # type: (str, Optional[Dict[str, Any]], int, int, Optional[List[str]], bool, bool) -> Dict[str, Any]
165
+ pass
166
+
167
+ def prune_synthetic_lookup(self, keep_ids):
168
+ # type: (List[str]) -> None
164
169
  pass
165
170
 
166
171
  def is_custom_latent_space(self) -> bool:
@@ -1,7 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "code-loader"
3
-
4
- version = "1.0.192"
3
+ version = "1.0.193"
5
4
  description = ""
6
5
  authors = ["dorhar <doron.harnoy@tensorleap.ai>"]
7
6
  license = "MIT"
File without changes
File without changes