code-loader 1.0.131__py3-none-any.whl → 1.0.132.dev1__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.

@@ -21,12 +21,22 @@ class NodeMappingType(Enum):
21
21
  Prediction1 = 'Prediction1'
22
22
  Prediction2 = 'Prediction2'
23
23
  Prediction3 = 'Prediction3'
24
+ Prediction4 = 'Prediction4'
25
+ Prediction5 = 'Prediction5'
26
+ Prediction6 = 'Prediction6'
27
+ Prediction7 = 'Prediction7'
28
+ Prediction8 = 'Prediction8'
29
+ Prediction9 = 'Prediction9'
24
30
  Input0 = 'Input0'
25
31
  Input1 = 'Input1'
26
32
  Input2 = 'Input2'
27
33
  Input3 = 'Input3'
28
34
  Input4 = 'Input4'
29
35
  Input5 = 'Input5'
36
+ Input6 = 'Input6'
37
+ Input7 = 'Input7'
38
+ Input8 = 'Input8'
39
+ Input9 = 'Input9'
30
40
  PredictionLabels = 'PredictionLabels'
31
41
 
32
42
 
@@ -39,6 +49,7 @@ class NodeMapping:
39
49
  arg_names: Optional[List[str]] = None
40
50
 
41
51
 
52
+
42
53
  @dataclass
43
54
  class NodeConnection:
44
55
  node: NodeMapping
@@ -69,6 +69,11 @@ def integration_test():
69
69
 
70
70
  return decorating_function
71
71
 
72
+ def _safe_get_item(key):
73
+ try:
74
+ return NodeMappingType[f'Input{str(key)}']
75
+ except ValueError:
76
+ raise Exception(f'Tensorleap currently supports models with no more then 10 inputs')
72
77
 
73
78
  def tensorleap_load_model(prediction_types: Optional[List[PredictionTypeHandler]] = None):
74
79
  for i, prediction_type in enumerate(prediction_types):
@@ -92,6 +97,20 @@ def tensorleap_load_model(prediction_types: Optional[List[PredictionTypeHandler]
92
97
  def _convert_onnx_inputs_to_correct_type(
93
98
  self, float_arrays_inputs: Dict[str, np.ndarray]
94
99
  ) -> Dict[str, np.ndarray]:
100
+ ONNX_TYPE_TO_NP = {
101
+ "tensor(float)": np.float32,
102
+ "tensor(double)": np.float64,
103
+ "tensor(int64)": np.int64,
104
+ "tensor(int32)": np.int32,
105
+ "tensor(int16)": np.int16,
106
+ "tensor(int8)": np.int8,
107
+ "tensor(uint64)": np.uint64,
108
+ "tensor(uint32)": np.uint32,
109
+ "tensor(uint16)": np.uint16,
110
+ "tensor(uint8)": np.uint8,
111
+ "tensor(bool)": np.bool_,
112
+ }
113
+
95
114
  """
96
115
  Cast user-provided NumPy inputs to match the dtypes/shapes
97
116
  expected by an ONNX Runtime InferenceSession.
@@ -106,7 +125,11 @@ def tensorleap_load_model(prediction_types: Optional[List[PredictionTypeHandler]
106
125
  continue
107
126
 
108
127
  info = meta[name]
109
- want_dtype = np.dtype(info.type) # ONNX Runtime gives NumPy dtype string
128
+ onnx_type = info.type
129
+ want_dtype = ONNX_TYPE_TO_NP.get(onnx_type)
130
+
131
+ if want_dtype is None:
132
+ raise TypeError(f"Unsupported ONNX input type: {onnx_type}")
110
133
 
111
134
  # Cast dtype if needed
112
135
  if arr.dtype != want_dtype:
@@ -141,15 +164,20 @@ def tensorleap_load_model(prediction_types: Optional[List[PredictionTypeHandler]
141
164
  f'Expected key to be an int, got {type(key)} instead.'
142
165
 
143
166
  ret = TempMapping()
144
- ret.node_mapping = NodeMapping('', NodeMappingType(f'Prediction{str(key)}'))
167
+ try:
168
+ ret.node_mapping = NodeMapping('', NodeMappingType(f'Prediction{str(key)}'))
169
+ except ValueError as e:
170
+ raise Exception(f'Tensorleap currently supports models with no more then 10 active predictions,'
171
+ f' {key} not supported.')
145
172
  return ret
146
173
 
147
174
  class ModelPlaceholder:
175
+
148
176
  # keras interface
149
177
  def __call__(self, arg):
150
178
  if isinstance(arg, list):
151
179
  for i, elem in enumerate(arg):
152
- elem.node_mapping.type = NodeMappingType[f'Input{str(i)}']
180
+ elem.node_mapping.type = _safe_get_item(i)
153
181
  else:
154
182
  arg.node_mapping.type = NodeMappingType.Input0
155
183
 
@@ -164,14 +192,14 @@ def tensorleap_load_model(prediction_types: Optional[List[PredictionTypeHandler]
164
192
  if isinstance(input_key, NodeMappingType):
165
193
  elem.node_mapping.type = input_key
166
194
  else:
167
- elem.node_mapping.type = NodeMappingType[f'Input{str(i)}']
195
+ elem.node_mapping.type = _safe_get_item(i)
168
196
 
169
197
  return ModelOutputPlaceholder()
170
198
 
171
199
  def get_inputs(self):
172
200
  class FollowIndex:
173
201
  def __init__(self, index):
174
- self.name = NodeMappingType[f'Input{str(i)}']
202
+ self.name = _safe_get_item(index)
175
203
 
176
204
  class FollowInputIndex:
177
205
  def __init__(self):
@@ -8,11 +8,13 @@ import uuid
8
8
  from typing import Optional, Dict, Any
9
9
  import mixpanel # type: ignore[import]
10
10
 
11
+ TRACKING_VERSION = '1'
12
+
11
13
 
12
14
  class MixpanelTracker:
13
15
  """Handles Mixpanel event tracking for code-loader."""
14
16
 
15
- def __init__(self, token: str = "f1bf46fb339d8c2930cde8c1acf65491"):
17
+ def __init__(self, token: str = "0c1710c9656bbfb1056bb46093e23ca1"):
16
18
  self.token = token
17
19
  self.mp = mixpanel.Mixpanel(token)
18
20
  self._user_id: Optional[str] = None
@@ -106,6 +108,8 @@ class MixpanelTracker:
106
108
  device_id = self._get_or_create_device_id()
107
109
 
108
110
  properties = {
111
+ 'tracking_version': TRACKING_VERSION,
112
+ 'service': 'code-loader',
109
113
  'whoami': whoami,
110
114
  '$device_id': device_id, # Always use device_id for $device_id
111
115
  'python_version': f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: code-loader
3
- Version: 1.0.131
3
+ Version: 1.0.132.dev1
4
4
  Summary:
5
5
  Home-page: https://github.com/tensorleap/code-loader
6
6
  License: MIT
@@ -4,7 +4,7 @@ code_loader/contract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
4
4
  code_loader/contract/datasetclasses.py,sha256=u0gfDDy02skhFG3ejJOxqxCnykhAcBPGJfv8Bi4s9eQ,8966
5
5
  code_loader/contract/enums.py,sha256=GEFkvUMXnCNt-GOoz7NJ9ecQZ2PPDettJNOsxsiM0wk,1622
6
6
  code_loader/contract/exceptions.py,sha256=jWqu5i7t-0IG0jGRsKF4DjJdrsdpJjIYpUkN1F4RiyQ,51
7
- code_loader/contract/mapping.py,sha256=e11h_sprwOyE32PcqgRq9JvyahQrPzwqgkhmbQLKLQY,1165
7
+ code_loader/contract/mapping.py,sha256=sWJhpng-IkOzQnWQdMT5w2ZZ3X1Z_OOzSwCLXIS7oxE,1446
8
8
  code_loader/contract/responsedataclasses.py,sha256=6-5DJkYBdXb3UB1eNidTTPPBIYxMjEoMdYDkp9VhH8o,4223
9
9
  code_loader/contract/visualizer_classes.py,sha256=Wz9eItmoRaKEHa3p0aW0Ypxx4_xUmaZyLBznnTuxwi0,15425
10
10
  code_loader/default_losses.py,sha256=NoOQym1106bDN5dcIk56Elr7ZG5quUHArqfP5-Nyxyo,1139
@@ -21,17 +21,17 @@ code_loader/experiment_api/utils.py,sha256=XZHtxge12TS4H4-8PjV3sKuhp8Ud6ojAiIzTZ
21
21
  code_loader/experiment_api/workingspace_config_utils.py,sha256=DLzXQCg4dgTV_YgaSbeTVzq-2ja_SQw4zi7LXwKL9cY,990
22
22
  code_loader/inner_leap_binder/__init__.py,sha256=koOlJyMNYzGbEsoIbXathSmQ-L38N_pEXH_HvL7beXU,99
23
23
  code_loader/inner_leap_binder/leapbinder.py,sha256=Q3D9yVM-GNEJfYRFvMV__BoZbcWOgnWKhrZXAv6Tu7o,33232
24
- code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=wXZT-wNvixOC3-iKOf1YMWbr0DWQgSA5WsS2UetQ90k,48693
24
+ code_loader/inner_leap_binder/leapbinder_decorators.py,sha256=WnHy5tdSwPI3RRFMcIHG_SYw0vaqE7t5URyhEtO635E,49896
25
25
  code_loader/leaploader.py,sha256=85XUWd7Y8kup76xeqefgd8db7pGaeHMhE7QlmYlNFMw,29747
26
26
  code_loader/leaploaderbase.py,sha256=LIFcC6xo6V_iiGN3BjibXETu_l84EWM_WIOKAvkfTiM,4458
27
- code_loader/mixpanel_tracker.py,sha256=mJaJvs8Pc5w3FEmSSObFIMVekcs5pKdM3iZmN4wVFqA,4822
27
+ code_loader/mixpanel_tracker.py,sha256=l9z_szKKQ7apEbdNZpGH1TKAiT_TsBHb9AQnePaWTyo,4942
28
28
  code_loader/plot_functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  code_loader/plot_functions/plot_functions.py,sha256=VyVWxd7R3lALIo2z8oZlYybbN0Ip6G0OiKNTNZ77xHk,14557
30
30
  code_loader/plot_functions/visualize.py,sha256=gsBAYYkwMh7jIpJeDMPS8G4CW-pxwx6LznoQIvi4vpo,657
31
31
  code_loader/utils.py,sha256=gXENTYpjdidq2dx0gVbXlErPeHoNs-4TYAZbLRe0y2c,2712
32
32
  code_loader/visualizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  code_loader/visualizers/default_visualizers.py,sha256=onRnLE_TXfgLN4o52hQIOOhUcFexGlqJ3xSpQDVLuZM,2604
34
- code_loader-1.0.131.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
35
- code_loader-1.0.131.dist-info/METADATA,sha256=J6wQd25HCrreLLrxFsLGpQN-rskZXT2jqeTOhJBcyQM,1090
36
- code_loader-1.0.131.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
37
- code_loader-1.0.131.dist-info/RECORD,,
34
+ code_loader-1.0.132.dev1.dist-info/LICENSE,sha256=qIwWjdspQeSMTtnFZBC8MuT-95L02FPvzRUdWFxrwJY,1067
35
+ code_loader-1.0.132.dev1.dist-info/METADATA,sha256=Ay8oSYnVpGPGak8xrsh8k4L7Yv5yM8cn4_l_uqPUpLU,1095
36
+ code_loader-1.0.132.dev1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
37
+ code_loader-1.0.132.dev1.dist-info/RECORD,,