code-loader 1.0.119rc2__py3-none-any.whl → 1.0.120__py3-none-any.whl

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.

Potentially problematic release.


This version of code-loader might be problematic. Click here for more details.

@@ -212,6 +212,11 @@ class MetadataHandler:
212
212
  metadata_type: Optional[Union[DatasetMetadataType, Dict[str, DatasetMetadataType]]] = None
213
213
 
214
214
 
215
+ @dataclass
216
+ class CustomLatentSpaceHandler:
217
+ function: SectionCallableInterface
218
+ name: str = 'custom_latent_space'
219
+
215
220
  @dataclass
216
221
  class PredictionTypeHandler:
217
222
  name: str
@@ -241,6 +246,7 @@ class DatasetIntegrationSetup:
241
246
  custom_loss_handlers: List[CustomLossHandler] = field(default_factory=list)
242
247
  metrics: List[MetricHandler] = field(default_factory=list)
243
248
  custom_layers: Dict[str, CustomLayerHandler] = field(default_factory=dict)
249
+ custom_latent_space: Optional[CustomLatentSpaceHandler] = None
244
250
 
245
251
 
246
252
  @dataclass
@@ -252,4 +258,5 @@ class DatasetSample:
252
258
  index: Union[int, str]
253
259
  state: DataStateEnum
254
260
  instance_masks: Optional[Dict[str, List[ElementInstance]]] = None
261
+ custom_latent_space: Optional[npt.NDArray[np.float32]] = None
255
262
 
@@ -11,7 +11,7 @@ from code_loader.contract.datasetclasses import SectionCallableInterface, InputH
11
11
  CustomCallableInterfaceMultiArgs, ConfusionMatrixCallableInterfaceMultiArgs, LeapData, \
12
12
  CustomMultipleReturnCallableInterfaceMultiArgs, DatasetBaseHandler, custom_latent_space_attribute, \
13
13
  RawInputsForHeatmap, VisualizerHandlerData, MetricHandlerData, CustomLossHandlerData, SamplePreprocessResponse, \
14
- ElementInstanceMasksHandler, InstanceCallableInterface
14
+ ElementInstanceMasksHandler, InstanceCallableInterface, CustomLatentSpaceHandler
15
15
  from code_loader.contract.enums import LeapDataType, DataStateEnum, DataStateType, MetricDirection, DatasetMetadataType
16
16
  from code_loader.contract.mapping import NodeConnection, NodeMapping, NodeMappingType
17
17
  from code_loader.contract.responsedataclasses import DatasetTestResultPayload
@@ -421,6 +421,19 @@ class LeapBinder:
421
421
  """
422
422
  self.setup_container.metadata.append(MetadataHandler(name, function, metadata_type))
423
423
 
424
+ def set_custom_latent_space(self, function: SectionCallableInterface) -> None:
425
+ """
426
+ Set a custom latent space function.
427
+
428
+ Args:
429
+ function (SectionCallableInterface): The metadata handler function.
430
+ This function receives:
431
+ subset (PreprocessResponse): The subset of the data.
432
+ index (int): The index of the sample within the subset.
433
+ This function should numpy float32 array contains the latent space vec of the sample.
434
+ """
435
+ self.setup_container.custom_latent_space = CustomLatentSpaceHandler(function)
436
+
424
437
  def set_custom_layer(self, custom_layer: Type[Any], name: str, inspect_layer: bool = False,
425
438
  kernel_index: Optional[int] = None, use_custom_latent_space: bool = False) -> None:
426
439
  """
@@ -443,6 +443,55 @@ def tensorleap_metadata(
443
443
  return decorating_function
444
444
 
445
445
 
446
+
447
+ def tensorleap_custom_latent_space():
448
+ def decorating_function(user_function: SectionCallableInterface):
449
+ def _validate_input_args(sample_id: Union[int, str], preprocess_response: PreprocessResponse):
450
+ assert isinstance(sample_id, (int, str)), \
451
+ (f'tensorleap_custom_latent_space validation failed: '
452
+ f'Argument sample_id should be either int or str. Got {type(sample_id)}.')
453
+ assert isinstance(preprocess_response, PreprocessResponse), \
454
+ (f'tensorleap_custom_latent_space validation failed: '
455
+ f'Argument preprocess_response should be a PreprocessResponse. Got {type(preprocess_response)}.')
456
+ assert type(sample_id) == preprocess_response.sample_id_type, \
457
+ (f'tensorleap_custom_latent_space validation failed: '
458
+ f'Argument sample_id should be as the same type as defined in the preprocess response '
459
+ f'{preprocess_response.sample_id_type}. Got {type(sample_id)}.')
460
+
461
+ def _validate_result(result):
462
+ assert isinstance(result, np.ndarray), \
463
+ (f'tensorleap_custom_loss validation failed: '
464
+ f'The return type should be a numpy array. Got {type(result)}.')
465
+
466
+ def inner_without_validate(sample_id, preprocess_response):
467
+ global _called_from_inside_tl_decorator
468
+ _called_from_inside_tl_decorator += 1
469
+
470
+ try:
471
+ result = user_function(sample_id, preprocess_response)
472
+ finally:
473
+ _called_from_inside_tl_decorator -= 1
474
+
475
+ return result
476
+
477
+ leap_binder.set_custom_latent_space(inner_without_validate)
478
+
479
+ def inner(sample_id, preprocess_response):
480
+ if os.environ.get(mapping_runtime_mode_env_var_mame):
481
+ return None
482
+
483
+ _validate_input_args(sample_id, preprocess_response)
484
+
485
+ result = inner_without_validate(sample_id, preprocess_response)
486
+
487
+ _validate_result(result)
488
+ return result
489
+
490
+ return inner
491
+
492
+ return decorating_function
493
+
494
+
446
495
  def tensorleap_preprocess():
447
496
  def decorating_function(user_function: Callable[[], List[PreprocessResponse]]):
448
497
  leap_binder.set_preprocess(user_function)
@@ -626,8 +675,6 @@ def tensorleap_input_encoder(name: str, channel_dim=-1, model_input_index=None):
626
675
  if channel_dim <= 0 and channel_dim != -1:
627
676
  raise Exception(f"Channel dim for input {name} is expected to be either -1 or positive")
628
677
 
629
- leap_binder.set_input(user_function, name, channel_dim=channel_dim)
630
-
631
678
  def _validate_input_args(sample_id: Union[int, str], preprocess_response: PreprocessResponse):
632
679
  assert isinstance(sample_id, (int, str)), \
633
680
  (f'tensorleap_input_encoder validation failed: '
@@ -650,15 +697,35 @@ def tensorleap_input_encoder(name: str, channel_dim=-1, model_input_index=None):
650
697
  assert channel_dim - 1 <= len(result.shape), (f'tensorleap_input_encoder validation failed: '
651
698
  f'The channel_dim ({channel_dim}) should be <= to the rank of the resulting input rank ({len(result.shape)}).')
652
699
 
700
+ def inner_without_validate(sample_id, preprocess_response):
701
+
702
+ global _called_from_inside_tl_decorator
703
+ _called_from_inside_tl_decorator += 1
704
+
705
+ try:
706
+ result = user_function(sample_id, preprocess_response)
707
+ finally:
708
+ _called_from_inside_tl_decorator -= 1
709
+
710
+ return result
711
+
712
+ leap_binder.set_input(inner_without_validate, name, channel_dim=channel_dim)
713
+
714
+
653
715
  def inner(sample_id, preprocess_response):
654
716
  _validate_input_args(sample_id, preprocess_response)
655
- result = user_function(sample_id, preprocess_response)
717
+
718
+ result = inner_without_validate(sample_id, preprocess_response)
719
+
656
720
  _validate_result(result)
657
721
 
658
722
  if _called_from_inside_tl_decorator == 0:
659
723
  result = np.expand_dims(result, axis=0)
724
+
660
725
  return result
661
726
 
727
+
728
+
662
729
  node_mapping_type = NodeMappingType.Input
663
730
  if model_input_index is not None:
664
731
  node_mapping_type = NodeMappingType(f'Input{str(model_input_index)}')
@@ -695,8 +762,6 @@ def tensorleap_gt_encoder(name: str):
695
762
  raise Exception(f'GT with name {name} already exists. '
696
763
  f'Please choose another')
697
764
 
698
- leap_binder.set_ground_truth(user_function, name)
699
-
700
765
  def _validate_input_args(sample_id: Union[int, str], preprocess_response: PreprocessResponse):
701
766
  assert isinstance(sample_id, (int, str)), \
702
767
  (f'tensorleap_gt_encoder validation failed: '
@@ -717,13 +782,30 @@ def tensorleap_gt_encoder(name: str):
717
782
  (f'tensorleap_gt_encoder validation failed: '
718
783
  f'The return type should be a numpy array of type float32. Got {result.dtype}.')
719
784
 
785
+ def inner_without_validate(sample_id, preprocess_response):
786
+ global _called_from_inside_tl_decorator
787
+ _called_from_inside_tl_decorator += 1
788
+
789
+ try:
790
+ result = user_function(sample_id, preprocess_response)
791
+ finally:
792
+ _called_from_inside_tl_decorator -= 1
793
+
794
+ return result
795
+
796
+ leap_binder.set_ground_truth(inner_without_validate, name)
797
+
798
+
720
799
  def inner(sample_id, preprocess_response):
721
800
  _validate_input_args(sample_id, preprocess_response)
722
- result = user_function(sample_id, preprocess_response)
801
+
802
+ result = inner_without_validate(sample_id, preprocess_response)
803
+
723
804
  _validate_result(result)
724
805
 
725
806
  if _called_from_inside_tl_decorator == 0:
726
807
  result = np.expand_dims(result, axis=0)
808
+
727
809
  return result
728
810
 
729
811
  inner.node_mapping = NodeMapping(name, NodeMappingType.GroundTruth)
@@ -760,14 +842,8 @@ def tensorleap_custom_loss(name: str, connects_to=None):
760
842
  f'Please choose another')
761
843
 
762
844
  valid_types = (np.ndarray, SamplePreprocessResponse)
763
- try:
764
- import tensorflow as tf
765
- valid_types = (np.ndarray, SamplePreprocessResponse, tf.Tensor)
766
- except ImportError:
767
- pass
768
845
 
769
846
  def _validate_input_args(*args, **kwargs):
770
-
771
847
  for i, arg in enumerate(args):
772
848
  if isinstance(arg, list):
773
849
  for y, elem in enumerate(arg):
@@ -786,10 +862,11 @@ def tensorleap_custom_loss(name: str, connects_to=None):
786
862
  f'Argument #{_arg_name} should be a numpy array. Got {type(arg)}.')
787
863
 
788
864
  def _validate_result(result):
789
- assert isinstance(result, valid_types), \
865
+ assert isinstance(result, np.ndarray), \
790
866
  (f'tensorleap_custom_loss validation failed: '
791
867
  f'The return type should be a numpy array. Got {type(result)}.')
792
868
 
869
+
793
870
  @functools.wraps(user_function)
794
871
  def inner_without_validate(*args, **kwargs):
795
872
  global _called_from_inside_tl_decorator
code_loader/leaploader.py CHANGED
@@ -16,7 +16,7 @@ from code_loader.contract.datasetclasses import DatasetSample, DatasetBaseHandle
16
16
  PreprocessResponse, VisualizerHandler, LeapData, \
17
17
  PredictionTypeHandler, MetadataHandler, CustomLayerHandler, MetricHandler, VisualizerHandlerData, MetricHandlerData, \
18
18
  MetricCallableReturnType, CustomLossHandlerData, CustomLossHandler, RawInputsForHeatmap, SamplePreprocessResponse, \
19
- ElementInstance
19
+ ElementInstance, custom_latent_space_attribute
20
20
  from code_loader.contract.enums import DataStateEnum, TestingSectionEnum, DataStateType, DatasetMetadataType
21
21
  from code_loader.contract.exceptions import DatasetScriptException
22
22
  from code_loader.contract.responsedataclasses import DatasetIntegParseResult, DatasetTestResultPayload, \
@@ -34,7 +34,7 @@ class LeapLoader(LeapLoaderBase):
34
34
  super().__init__(code_path, code_entry_name)
35
35
 
36
36
  self._preprocess_result_cached = None
37
-
37
+
38
38
  try:
39
39
  from code_loader.mixpanel_tracker import track_code_loader_loaded
40
40
  track_code_loader_loaded({
@@ -77,6 +77,8 @@ class LeapLoader(LeapLoaderBase):
77
77
  file_path = Path(self.code_path, self.code_entry_name)
78
78
  append_path_recursively(str(file_path))
79
79
 
80
+ importlib.invalidate_caches()
81
+
80
82
  spec = importlib.util.spec_from_file_location(self.code_path, file_path)
81
83
  if spec is None or spec.loader is None:
82
84
  raise DatasetScriptException(f'Something is went wrong with spec file from: {file_path}')
@@ -162,12 +164,20 @@ class LeapLoader(LeapLoaderBase):
162
164
  self._preprocess_result(update_unlabeled_preprocess=True)
163
165
 
164
166
  metadata, metadata_is_none = self._get_metadata(state, sample_id)
167
+
168
+ custom_latent_space = None
169
+ if global_leap_binder.setup_container.custom_latent_space is not None:
170
+ custom_latent_space = global_leap_binder.setup_container.custom_latent_space.function(sample_id,
171
+ preprocess_result[
172
+ state])
173
+
165
174
  sample = DatasetSample(inputs=self._get_inputs(state, sample_id),
166
175
  gt=None if state == DataStateEnum.unlabeled else self._get_gt(state, sample_id),
167
176
  metadata=metadata,
168
177
  metadata_is_none=metadata_is_none,
169
178
  index=sample_id,
170
- state=state)
179
+ state=state,
180
+ custom_latent_space=custom_latent_space)
171
181
  return sample
172
182
 
173
183
  def get_sample_with_masks(self, state: DataStateEnum, sample_id: Union[int, str]) -> DatasetSample:
@@ -210,8 +220,6 @@ class LeapLoader(LeapLoaderBase):
210
220
  general_error = f"Something went wrong. {repr(e.__cause__)} in file {file_name}, line_number: {line_number}\nStacktrace:\n{stacktrace}"
211
221
  is_valid = False
212
222
 
213
-
214
-
215
223
  print_log = stdout_steam.getvalue()
216
224
  is_valid_for_model = bool(global_leap_binder.setup_container.custom_layers)
217
225
  model_setup = self.get_model_setup_response()
@@ -476,7 +484,8 @@ class LeapLoader(LeapLoaderBase):
476
484
  def _get_inputs(self, state: DataStateEnum, sample_id: Union[int, str]) -> Dict[str, npt.NDArray[np.float32]]:
477
485
  return self._get_dataset_handlers(global_leap_binder.setup_container.inputs, state, sample_id)
478
486
 
479
- def _get_instances_masks(self, state: DataStateEnum, sample_id: Union[int, str]) -> Dict[str, List[ElementInstance]]:
487
+ def _get_instances_masks(self, state: DataStateEnum, sample_id: Union[int, str]) -> Dict[
488
+ str, List[ElementInstance]]:
480
489
  preprocess_result = self._preprocess_result()
481
490
  preprocess_state = preprocess_result[state]
482
491
  result_agg = {}
@@ -526,7 +535,8 @@ class LeapLoader(LeapLoaderBase):
526
535
 
527
536
  return converted_value, is_none
528
537
 
529
- def _get_metadata(self, state: DataStateEnum, sample_id: Union[int, str]) -> Tuple[Dict[str, Union[str, int, bool, float]], Dict[str, bool]]:
538
+ def _get_metadata(self, state: DataStateEnum, sample_id: Union[int, str]) -> Tuple[
539
+ Dict[str, Union[str, int, bool, float]], Dict[str, bool]]:
530
540
  result_agg = {}
531
541
  is_none = {}
532
542
  preprocess_result = self._preprocess_result()
@@ -555,6 +565,11 @@ class LeapLoader(LeapLoaderBase):
555
565
 
556
566
  return id_type
557
567
 
568
+ @lru_cache()
569
+ def has_custom_latent_space_decorator(self) -> bool:
570
+ self.exec_script()
571
+ return global_leap_binder.setup_container.custom_latent_space is not None
572
+
558
573
  def get_instances_data(self, state: DataStateEnum) -> Tuple[Dict[str, List[str]], Dict[str, str], Dict[str, str]]:
559
574
  """
560
575
  This Method get the data state and returns two dictionaries that holds the mapping of the sample ids to their
@@ -114,6 +114,10 @@ class LeapLoaderBase:
114
114
  def get_sample_id_type(self) -> Type:
115
115
  pass
116
116
 
117
+ @abstractmethod
118
+ def has_custom_latent_space_decorator(self) -> bool:
119
+ pass
120
+
117
121
  @abstractmethod
118
122
  def get_heatmap_visualizer_raw_vis_input_arg_name(self, visualizer_name: str) -> Optional[str]:
119
123
  pass
@@ -94,10 +94,6 @@ class MixpanelTracker:
94
94
  Args:
95
95
  event_properties: Optional additional properties to include in the event
96
96
  """
97
-
98
- if os.environ.get('IS_TENSORLEAP_PLATFORM') == 'true':
99
- return
100
-
101
97
  try:
102
98
  distinct_id = self._get_distinct_id()
103
99
 
@@ -110,8 +106,6 @@ class MixpanelTracker:
110
106
  '$device_id': device_id, # Always use device_id for $device_id
111
107
  'python_version': f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}",
112
108
  'platform': os.name,
113
- 'code_loader_version': '1.0',
114
- 'is_tensorleap_platform': os.environ.get('IS_TENSORLEAP_PLATFORM'),
115
109
  }
116
110
 
117
111
  if tensorleap_user_id:
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 TensorLeap
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,7 +1,8 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.119rc2
3
+ Version: 1.0.120
4
4
  Summary:
5
+ Home-page: https://github.com/tensorleap/code-loader
5
6
  License: MIT
6
7
  Author: dorhar
7
8
  Author-email: doron.harnoy@tensorleap.ai
@@ -19,7 +20,6 @@ Requires-Dist: numpy (>=2.3.2,<3.0.0) ; python_version >= "3.11" and python_vers
19
20
  Requires-Dist: psutil (>=5.9.5,<6.0.0)
20
21
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
21
22
  Requires-Dist: requests (>=2.32.3,<3.0.0)
22
- Project-URL: Homepage, https://github.com/tensorleap/code-loader
23
23
  Project-URL: Repository, https://github.com/tensorleap/code-loader
24
24
  Description-Content-Type: text/markdown
25
25
 
@@ -1,6 +1,7 @@
1
+ LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
1
2
  code_loader/__init__.py,sha256=outxRQ0M-zMfV0QGVJmAed5qWfRmyD0TV6-goEGAzBw,406
2
3
  code_loader/contract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- code_loader/contract/datasetclasses.py,sha256=gJsXu4zVAaiBlq6GJwPxfTD2e0gICTtI_6Ir61MRL48,8838
4
+ code_loader/contract/datasetclasses.py,sha256=dzEzQY5F-uTNB28omGcdZp4cIXWn7NJhNyL0_Y04Yyo,9092
4
5
  code_loader/contract/enums.py,sha256=GEFkvUMXnCNt-GOoz7NJ9ecQZ2PPDettJNOsxsiM0wk,1622
5
6
  code_loader/contract/exceptions.py,sha256=jWqu5i7t-0IG0jGRsKF4DjJdrsdpJjIYpUkN1F4RiyQ,51
6
7
  code_loader/contract/mapping.py,sha256=e11h_sprwOyE32PcqgRq9JvyahQrPzwqgkhmbQLKLQY,1165
@@ -19,18 +20,18 @@ code_loader/experiment_api/types.py,sha256=MY8xFARHwdVA7p4dxyhD60ShmttgTvb4qdp1o
19
20
  code_loader/experiment_api/utils.py,sha256=XZHtxge12TS4H4-8PjV3sKuhp8Ud6ojAiIzTZJEqBqc,3304
20
21
  code_loader/experiment_api/workingspace_config_utils.py,sha256=DLzXQCg4dgTV_YgaSbeTVzq-2ja_SQw4zi7LXwKL9cY,990
21
22
  code_loader/inner_leap_binder/__init__.py,sha256=koOlJyMNYzGbEsoIbXathSmQ-L38N_pEXH_HvL7beXU,99
22
- code_loader/inner_leap_binder/leapbinder.py,sha256=0iHVHxC2NjfH7F0vQFVGy1e0llgKEyUHUHh3DdtqL70,32602
23
- code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=wjtk3TflrjJ8Y-OeuedVBD-09ZuOjIKGUjL7sMBU0fQ,41017
24
- code_loader/leaploader.py,sha256=rQRK1lyUPSpZiRs6lKUUxVJBCe3grEY_UxEMxSIpuxI,29709
25
- code_loader/leaploaderbase.py,sha256=lKdw2pd6H9hFsxVmc7jJMoZd_vlG5He1ooqT-cR_yq8,4496
26
- code_loader/mixpanel_tracker.py,sha256=b4yUE-F_lVeq5JlGjcbTCpdDVL34qYCC3WCElmeisEU,4865
23
+ code_loader/inner_leap_binder/leapbinder.py,sha256=Q3D9yVM-GNEJfYRFvMV__BoZbcWOgnWKhrZXAv6Tu7o,33232
24
+ code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=r9J_AzZnALJFcyd89Yx_bhsk10QeOfJW1oYp6WmJSIQ,43719
25
+ code_loader/leaploader.py,sha256=hM8-7t8rnR5hQjceZqRzLFwUJkg4zEc2jjMlTzqBkc0,30495
26
+ code_loader/leaploaderbase.py,sha256=-FAJUQlgDTI4QwJP8lwgwEFVOlnwCRi3-nSvPruCVGU,4587
27
+ code_loader/mixpanel_tracker.py,sha256=U20vQXH8G7XIVXxcpQcVEZSuIwwGnyH5RMHXWZZG8HI,4639
27
28
  code_loader/plot_functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
29
  code_loader/plot_functions/plot_functions.py,sha256=xg6Gi4myTN9crq6JtyrhYI38HLXjPVJcbnI7CIy8f7w,14625
29
30
  code_loader/plot_functions/visualize.py,sha256=gsBAYYkwMh7jIpJeDMPS8G4CW-pxwx6LznoQIvi4vpo,657
30
31
  code_loader/utils.py,sha256=_j8b60pimoNAvWMRj7hEkkT6C76qES6cZoBFHpXHMxA,2698
31
32
  code_loader/visualizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
33
  code_loader/visualizers/default_visualizers.py,sha256=onRnLE_TXfgLN4o52hQIOOhUcFexGlqJ3xSpQDVLuZM,2604
33
- code_loader-1.0.119rc2.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
34
- code_loader-1.0.119rc2.dist-info/METADATA,sha256=HFzUxae_sRJJHFJrzIVEKtpSCai_c8H4kbpDcxnrLOs,1105
35
- code_loader-1.0.119rc2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
36
- code_loader-1.0.119rc2.dist-info/RECORD,,
34
+ code_loader-1.0.120.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
35
+ code_loader-1.0.120.dist-info/METADATA,sha256=9Q19VKHg1KpGlL4j5Woq6b3hTUISy_gu945ySjwTNy0,1090
36
+ code_loader-1.0.120.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
37
+ code_loader-1.0.120.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.3
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
File without changes