clarifai 11.1.6rc1__py3-none-any.whl → 11.1.7rc1__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.
Files changed (31) hide show
  1. clarifai/__init__.py +1 -1
  2. clarifai/cli/__pycache__/model.cpython-310.pyc +0 -0
  3. clarifai/cli/model.py +25 -0
  4. clarifai/client/model.py +158 -393
  5. clarifai/client/model_client.py +4 -2
  6. clarifai/runners/__init__.py +2 -7
  7. clarifai/runners/__pycache__/__init__.cpython-310.pyc +0 -0
  8. clarifai/runners/__pycache__/server.cpython-310.pyc +0 -0
  9. clarifai/runners/dockerfile_template/Dockerfile.template +3 -0
  10. clarifai/runners/models/__pycache__/model_builder.cpython-310.pyc +0 -0
  11. clarifai/runners/models/__pycache__/model_class.cpython-310.pyc +0 -0
  12. clarifai/runners/models/__pycache__/model_run_locally.cpython-310.pyc +0 -0
  13. clarifai/runners/models/__pycache__/model_runner.cpython-310.pyc +0 -0
  14. clarifai/runners/models/__pycache__/model_servicer.cpython-310.pyc +0 -0
  15. clarifai/runners/models/model_builder.py +24 -7
  16. clarifai/runners/models/model_class.py +256 -28
  17. clarifai/runners/models/model_run_locally.py +3 -78
  18. clarifai/runners/models/model_runner.py +2 -0
  19. clarifai/runners/models/model_servicer.py +11 -2
  20. clarifai/runners/utils/__pycache__/data_types.cpython-310.pyc +0 -0
  21. clarifai/runners/utils/__pycache__/method_signatures.cpython-310.pyc +0 -0
  22. clarifai/runners/utils/__pycache__/serializers.cpython-310.pyc +0 -0
  23. clarifai/runners/utils/data_types.py +46 -5
  24. clarifai/runners/utils/method_signatures.py +104 -39
  25. clarifai/runners/utils/serializers.py +19 -5
  26. {clarifai-11.1.6rc1.dist-info → clarifai-11.1.7rc1.dist-info}/METADATA +2 -1
  27. {clarifai-11.1.6rc1.dist-info → clarifai-11.1.7rc1.dist-info}/RECORD +31 -31
  28. {clarifai-11.1.6rc1.dist-info → clarifai-11.1.7rc1.dist-info}/LICENSE +0 -0
  29. {clarifai-11.1.6rc1.dist-info → clarifai-11.1.7rc1.dist-info}/WHEEL +0 -0
  30. {clarifai-11.1.6rc1.dist-info → clarifai-11.1.7rc1.dist-info}/entry_points.txt +0 -0
  31. {clarifai-11.1.6rc1.dist-info → clarifai-11.1.7rc1.dist-info}/top_level.txt +0 -0
@@ -12,9 +12,9 @@ from clarifai_grpc.grpc.api import resources_pb2
12
12
  from google.protobuf.message import Message as MessageProto
13
13
 
14
14
  from clarifai.runners.utils import data_types
15
- from clarifai.runners.utils.serializers import (AtomicFieldSerializer, ListSerializer,
16
- MessageSerializer, NamedFieldsSerializer,
17
- NDArraySerializer, Serializer, TupleSerializer)
15
+ from clarifai.runners.utils.serializers import (
16
+ AtomicFieldSerializer, JSONSerializer, ListSerializer, MessageSerializer,
17
+ NamedFieldsSerializer, NDArraySerializer, Serializer, TupleSerializer)
18
18
 
19
19
 
20
20
  def build_function_signature(func):
@@ -66,7 +66,7 @@ def build_function_signature(func):
66
66
  #method_signature.inputs.extend(input_vars)
67
67
  #method_signature.outputs.extend(output_vars)
68
68
  method_signature.inputs = input_sigs
69
- method_signature.outputs = output_sig
69
+ method_signature.outputs = [output_sig]
70
70
  return method_signature
71
71
 
72
72
 
@@ -112,7 +112,7 @@ def build_variable_signature(name, annotation, default=inspect.Parameter.empty,
112
112
  if not is_output:
113
113
  sig.required = (default is inspect.Parameter.empty)
114
114
  if not sig.required:
115
- sig.default = default
115
+ sig.default = str(default)
116
116
 
117
117
  return sig, type, streaming
118
118
 
@@ -120,13 +120,24 @@ def build_variable_signature(name, annotation, default=inspect.Parameter.empty,
120
120
  def _fill_signature_type(sig, tp):
121
121
  try:
122
122
  if tp in _DATA_TYPES:
123
- sig.data_type = _DATA_TYPES[tp].data_type
123
+ sig.type = _DATA_TYPES[tp].type
124
124
  return
125
125
  except TypeError:
126
126
  pass # not hashable type
127
127
 
128
+ # Check for dynamically generated NamedFields subclasses (from type annotations)
129
+ if inspect.isclass(tp) and issubclass(tp, data_types.NamedFields) and hasattr(
130
+ tp, '__annotations__'):
131
+ sig.type = DataType.NAMED_FIELDS
132
+ for name, inner_type in tp.__annotations__.items():
133
+ inner_sig = _VariableSignature()
134
+ inner_sig.name = name
135
+ _fill_signature_type(inner_sig, inner_type)
136
+ sig.type_args.append(inner_sig)
137
+ return
138
+
128
139
  if isinstance(tp, data_types.NamedFields):
129
- sig.data_type = DataType.NAMED_FIELDS
140
+ sig.type = DataType.NAMED_FIELDS
130
141
  for name, inner_type in tp.items():
131
142
  # inner_sig = sig.type_args.add()
132
143
  sig.type_args.append(inner_sig := _VariableSignature())
@@ -135,7 +146,7 @@ def _fill_signature_type(sig, tp):
135
146
  return
136
147
 
137
148
  if get_origin(tp) == tuple:
138
- sig.data_type = DataType.TUPLE
149
+ sig.type = DataType.TUPLE
139
150
  for inner_type in get_args(tp):
140
151
  #inner_sig = sig.type_args.add()
141
152
  sig.type_args.append(inner_sig := _VariableSignature())
@@ -143,7 +154,7 @@ def _fill_signature_type(sig, tp):
143
154
  return
144
155
 
145
156
  if get_origin(tp) == list:
146
- sig.data_type = DataType.LIST
157
+ sig.type = DataType.LIST
147
158
  inner_type = get_args(tp)[0]
148
159
  #inner_sig = sig.type_args.add()
149
160
  sig.type_args.append(inner_sig := _VariableSignature())
@@ -157,23 +168,25 @@ def serializer_from_signature(signature):
157
168
  '''
158
169
  Get the serializer for the given signature.
159
170
  '''
160
- if signature.data_type in _SERIALIZERS_BY_TYPE_ENUM:
161
- return _SERIALIZERS_BY_TYPE_ENUM[signature.data_type]
162
- if signature.data_type == DataType.LIST:
171
+ if signature.type in _SERIALIZERS_BY_TYPE_ENUM:
172
+ return _SERIALIZERS_BY_TYPE_ENUM[signature.type]
173
+ if signature.type == DataType.LIST:
163
174
  return ListSerializer(serializer_from_signature(signature.type_args[0]))
164
- if signature.data_type == DataType.TUPLE:
175
+ if signature.type == DataType.TUPLE:
165
176
  return TupleSerializer([serializer_from_signature(sig) for sig in signature.type_args])
166
- if signature.data_type == DataType.NAMED_FIELDS:
177
+ if signature.type == DataType.NAMED_FIELDS:
167
178
  return NamedFieldsSerializer(
168
179
  {sig.name: serializer_from_signature(sig)
169
180
  for sig in signature.type_args})
170
- raise ValueError(f'Unsupported type: {signature.data_type}')
181
+ raise ValueError(f'Unsupported type: {signature.type}')
171
182
 
172
183
 
173
184
  def signatures_to_json(signatures):
174
185
  assert isinstance(
175
186
  signatures, dict), 'Expected dict of signatures {name: signature}, got %s' % type(signatures)
176
- return json.dumps(signatures, default=repr)
187
+ # TODO change to proto when ready
188
+ #signatures = {name: MessageToDict(sig) for name, sig in signatures.items()}
189
+ return json.dumps(signatures)
177
190
 
178
191
 
179
192
  def signatures_from_json(json_str):
@@ -184,7 +197,15 @@ def signatures_from_json(json_str):
184
197
  def signatures_to_yaml(signatures):
185
198
  # XXX go in/out of json to get the correct format and python dict types
186
199
  d = json.loads(signatures_to_json(signatures))
187
- return yaml.dump(d, default_flow_style=False)
200
+
201
+ def _filter_empty(d):
202
+ if isinstance(d, (list, tuple)):
203
+ return [_filter_empty(v) for v in d if v]
204
+ if isinstance(d, dict):
205
+ return {k: _filter_empty(v) for k, v in d.items() if v}
206
+ return d
207
+
208
+ return yaml.dump(_filter_empty(d), default_flow_style=False)
188
209
 
189
210
 
190
211
  def signatures_from_yaml(yaml_str):
@@ -204,7 +225,14 @@ def serialize(kwargs, signatures, proto=None, is_output=False):
204
225
  raise TypeError('Got a single return value, but expected multiple outputs {%s}' %
205
226
  ', '.join(sig.name for sig in signatures))
206
227
  raise TypeError('Got unexpected key: %s' % ', '.join(unknown))
207
- for sig in signatures:
228
+ inline_first_value = False
229
+ if (is_output and len(signatures) == 1 and signatures[0].name == 'return' and
230
+ len(kwargs) == 1 and 'return' in kwargs):
231
+ # if there is only one output, flatten it and return directly
232
+ inline_first_value = True
233
+ if signatures and signatures[0].type not in _NON_INLINABLE_TYPES:
234
+ inline_first_value = True
235
+ for sig_i, sig in enumerate(signatures):
208
236
  if sig.name not in kwargs:
209
237
  if sig.required:
210
238
  raise TypeError(f'Missing required argument: {sig.name}')
@@ -213,9 +241,16 @@ def serialize(kwargs, signatures, proto=None, is_output=False):
213
241
  serializer = serializer_from_signature(sig)
214
242
  # TODO determine if any (esp the first) var can go in the proto without parts
215
243
  # and whether to put this in the signature or dynamically determine it
216
- part = proto.parts.add()
217
- part.id = sig.name
218
- serializer.serialize(part.data, data)
244
+ if inline_first_value and sig_i == 0 and id(data) not in _ZERO_VALUE_IDS:
245
+ # inlined first value; note data must not be empty or 0 to inline, since that
246
+ # will correspond to the missing value case (which uses function defaults).
247
+ # empty values are put explicitly in parts.
248
+ serializer.serialize(proto, data)
249
+ else:
250
+ # add the part to the proto
251
+ part = proto.parts.add()
252
+ part.id = sig.name
253
+ serializer.serialize(part.data, data)
219
254
  return proto
220
255
 
221
256
 
@@ -227,10 +262,18 @@ def deserialize(proto, signatures, is_output=False):
227
262
  signatures = [signatures] # TODO update return key level and make consistnet
228
263
  kwargs = {}
229
264
  parts_by_name = {part.id: part for part in proto.parts}
230
- for sig in signatures:
265
+ for sig_i, sig in enumerate(signatures):
231
266
  serializer = serializer_from_signature(sig)
232
267
  part = parts_by_name.get(sig.name)
233
268
  if part is None:
269
+ if sig_i == 0:
270
+ # possible inlined first value
271
+ value = serializer.deserialize(proto)
272
+ if id(value) not in _ZERO_VALUE_IDS:
273
+ # note missing values are not set to defaults, since they are not in parts
274
+ # an actual zero value passed in must be set in an explicit part
275
+ kwargs[sig.name] = value
276
+ continue
234
277
  if sig.required or is_output: # TODO allow optional outputs?
235
278
  raise ValueError(f'Missing required field: {sig.name}')
236
279
  continue
@@ -273,14 +316,34 @@ def _normalize_type(tp):
273
316
 
274
317
 
275
318
  def _normalize_data_type(tp):
276
- # check if list, and if so, get inner type
277
- if get_origin(tp) == list:
278
- tp = get_args(tp)[0]
279
- return List[_normalize_data_type(tp)]
319
+
320
+ # jsonable list and dict, these can be serialized as json
321
+ # (tuple we want to keep as a tuple for args and returns, so don't include here)
322
+ if tp in (list, dict) or (get_origin(tp) in (list, dict) and _is_jsonable(tp)):
323
+ return data_types.JSON
324
+
325
+ # container types that need to be serialized as parts
326
+ if get_origin(tp) == list and get_args(tp):
327
+ return List[_normalize_data_type(get_args(tp)[0])]
328
+
329
+ if get_origin(tp) == tuple:
330
+ if not get_args(tp):
331
+ raise TypeError('Tuple must have types specified')
332
+ return Tuple[tuple(_normalize_data_type(val) for val in get_args(tp))]
280
333
 
281
334
  if isinstance(tp, (tuple, list)):
282
335
  return Tuple[tuple(_normalize_data_type(val) for val in tp)]
283
336
 
337
+ if tp == data_types.NamedFields:
338
+ raise TypeError('NamedFields must have types specified')
339
+
340
+ # Handle dynamically generated NamedFields subclasses with annotations
341
+ if isinstance(tp, type) and issubclass(tp, data_types.NamedFields) and hasattr(
342
+ tp, '__annotations__'):
343
+ return data_types.NamedFields(
344
+ **{k: _normalize_data_type(v)
345
+ for k, v in tp.__annotations__.items()})
346
+
284
347
  if isinstance(tp, (dict, data_types.NamedFields)):
285
348
  return data_types.NamedFields(**{name: _normalize_data_type(val) for name, val in tp.items()})
286
349
 
@@ -290,15 +353,13 @@ def _normalize_data_type(tp):
290
353
 
291
354
  # check for PIL images (sometimes types use the module, sometimes the class)
292
355
  # set these to use the Image data handler
293
- if tp in (data_types.Image, PIL.Image, PIL.Image.Image):
356
+ if tp in (data_types.Image, PIL.Image.Image):
294
357
  return data_types.Image
295
358
 
296
- # check for jsonable types
297
- # TODO should we include dict vs list in the data type somehow?
298
- if tp == dict or (get_origin(tp) == dict and tp not in _DATA_TYPES and _is_jsonable(tp)):
299
- return data_types.JSON
300
- if tp == list or (get_origin(tp) == list and tp not in _DATA_TYPES and _is_jsonable(tp)):
301
- return data_types.JSON
359
+ if tp == PIL.Image:
360
+ raise TypeError(
361
+ 'Use the Image class from the PIL.Image module i.e. `PIL.Image.Image`, not the module itself'
362
+ )
302
363
 
303
364
  # check for known data types
304
365
  try:
@@ -313,9 +374,7 @@ def _normalize_data_type(tp):
313
374
  def _is_jsonable(tp):
314
375
  if tp in (dict, list, tuple, str, int, float, bool, type(None)):
315
376
  return True
316
- if get_origin(tp) == list:
317
- return _is_jsonable(get_args(tp)[0])
318
- if get_origin(tp) == dict:
377
+ if get_origin(tp) in (tuple, list, dict):
319
378
  return all(_is_jsonable(val) for val in get_args(tp))
320
379
  return False
321
380
 
@@ -339,10 +398,10 @@ class _VariableSignature(_SignatureDict):
339
398
  self.description = ''
340
399
 
341
400
 
342
- # data_type: name of the data type
401
+ # type: name of the data type
343
402
  # data_field: name of the field in the data proto
344
403
  # serializer: serializer for the data type
345
- _DataType = namedtuple('_DataType', ('data_type', 'serializer'))
404
+ _DataType = namedtuple('_DataType', ('type', 'serializer'))
346
405
 
347
406
 
348
407
  # this will come from the proto module, but for now, define it here
@@ -370,6 +429,9 @@ class DataType:
370
429
  LIST = 'LIST'
371
430
 
372
431
 
432
+ _NON_INLINABLE_TYPES = {DataType.NAMED_FIELDS, DataType.TUPLE, DataType.LIST}
433
+ _ZERO_VALUE_IDS = {id(None), id(''), id(b''), id(0), id(0.0), id(False)}
434
+
373
435
  # simple, non-container types that correspond directly to a data field
374
436
  _DATA_TYPES = {
375
437
  str:
@@ -384,6 +446,9 @@ _DATA_TYPES = {
384
446
  _DataType(DataType.BOOL, AtomicFieldSerializer('bool_value')),
385
447
  np.ndarray:
386
448
  _DataType(DataType.NDARRAY, NDArraySerializer('ndarray')),
449
+ data_types.JSON:
450
+ _DataType(DataType.JSON, JSONSerializer('string_value')
451
+ ), # TODO change to json_value when new proto is ready
387
452
  data_types.Text:
388
453
  _DataType(DataType.TEXT, MessageSerializer('text', data_types.Text)),
389
454
  data_types.Image:
@@ -400,7 +465,7 @@ _DATA_TYPES = {
400
465
  _DataType(DataType.VIDEO, MessageSerializer('video', data_types.Video)),
401
466
  }
402
467
 
403
- _SERIALIZERS_BY_TYPE_ENUM = {dt.data_type: dt.serializer for dt in _DATA_TYPES.values()}
468
+ _SERIALIZERS_BY_TYPE_ENUM = {dt.type: dt.serializer for dt in _DATA_TYPES.values()}
404
469
 
405
470
 
406
471
  class CompatibilitySerializer(Serializer):
@@ -71,11 +71,13 @@ class MessageSerializer(Serializer):
71
71
  values = [self.message_class.from_proto(x) for x in src]
72
72
  if len(values) == 1:
73
73
  return values[0]
74
- return values
74
+ return values if values else None
75
75
  else:
76
+ if not data_proto.HasField(self.field_name):
77
+ return None
76
78
  return self.message_class.from_proto(src)
77
79
 
78
- def deserialize_list(self, data_proto, values):
80
+ def deserialize_list(self, data_proto):
79
81
  assert self.is_repeated_field
80
82
  src = getattr(data_proto, self.field_name)
81
83
  return [self.message_class.from_proto(x) for x in src]
@@ -100,6 +102,8 @@ class NDArraySerializer(Serializer):
100
102
 
101
103
  def deserialize(self, data_proto):
102
104
  proto = getattr(data_proto, self.field_name)
105
+ if not proto.buffer:
106
+ return None
103
107
  array = np.frombuffer(proto.buffer, dtype=np.dtype(proto.dtype)).reshape(proto.shape)
104
108
  if self.as_list:
105
109
  return array.tolist()
@@ -121,7 +125,10 @@ class JSONSerializer(Serializer):
121
125
  raise TypeError(f"Incompatible type for {self.field_name}: {type(value)}") from e
122
126
 
123
127
  def deserialize(self, data_proto):
124
- return json.loads(getattr(data_proto, self.field_name))
128
+ value = getattr(data_proto, self.field_name)
129
+ if not value:
130
+ return None
131
+ return json.loads(value)
125
132
 
126
133
 
127
134
  class ListSerializer(Serializer):
@@ -169,6 +176,11 @@ class TupleSerializer(Serializer):
169
176
  serializer.serialize(part.data, item)
170
177
 
171
178
  def deserialize(self, data_proto):
179
+ if not data_proto.parts and self.inner_serializers:
180
+ return None
181
+ if len(data_proto.parts) != len(self.inner_serializers):
182
+ raise ValueError(
183
+ f"Expected tuple of length {len(self.inner_serializers)}, got {len(data_proto.parts)}")
172
184
  return tuple(
173
185
  serializer.deserialize(part.data)
174
186
  for serializer, part in zip(self.inner_serializers, data_proto.parts))
@@ -183,11 +195,13 @@ class NamedFieldsSerializer(Serializer):
183
195
  def serialize(self, data_proto, value):
184
196
  for name, serializer in self.named_field_serializers.items():
185
197
  if name not in value:
186
- raise KeyError(f"Missing field {name}")
198
+ raise TypeError(f"Missing field {name}")
187
199
  part = self._get_part(data_proto, name, add=True)
188
200
  serializer.serialize(part.data, value[name])
189
201
 
190
202
  def deserialize(self, data_proto):
203
+ if not data_proto.parts and self.named_field_serializers:
204
+ return None
191
205
  value = data_types.NamedFields()
192
206
  for name, serializer in self.named_field_serializers.items():
193
207
  part = self._get_part(data_proto, name)
@@ -202,7 +216,7 @@ class NamedFieldsSerializer(Serializer):
202
216
  part = data_proto.parts.add()
203
217
  part.id = name
204
218
  return part
205
- raise KeyError(f"Missing part with key {name}")
219
+ raise TypeError(f"Missing part with key {name}")
206
220
 
207
221
 
208
222
  # TODO dict serializer, maybe json only?
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: clarifai
3
- Version: 11.1.6rc1
3
+ Version: 11.1.7rc1
4
4
  Summary: Clarifai Python SDK
5
5
  Home-page: https://github.com/Clarifai/clarifai-python
6
6
  Author: Clarifai
@@ -32,6 +32,7 @@ Requires-Dist: tabulate >=0.9.0
32
32
  Requires-Dist: fsspec >=2024.6.1
33
33
  Requires-Dist: click >=8.1.7
34
34
  Requires-Dist: requests >=2.32.3
35
+ Requires-Dist: aiohttp >=3.8.1
35
36
  Provides-Extra: all
36
37
  Requires-Dist: pycocotools ==2.0.6 ; extra == 'all'
37
38
 
@@ -1,4 +1,4 @@
1
- clarifai/__init__.py,sha256=6rp6x13qSs-Ygf51vy09gdh_0LlaS4lRKX2x5Sm7wDM,26
1
+ clarifai/__init__.py,sha256=c5BRjVmGOcY6YKlqM_-vMJOMiIZM-v-k2IhMFcS0dSw,26
2
2
  clarifai/cli.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  clarifai/errors.py,sha256=RwzTajwds51wLD0MVlMC5kcpBnzRpreDLlazPSBZxrg,2605
4
4
  clarifai/versions.py,sha256=jctnczzfGk_S3EnVqb2FjRKfSREkNmvNEwAAa_VoKiQ,222
@@ -12,14 +12,14 @@ clarifai/cli/__main__.py~,sha256=ozwaF8wYiURORkuFhk0_wsDPUYZjH547Wz9eVk-4nro,70
12
12
  clarifai/cli/base.py,sha256=eaUsp7S1e2dslC437Hjk7gUBQsng13ID3N3lkYotB2U,3403
13
13
  clarifai/cli/compute_cluster.py,sha256=N2dNQNJEPg9nxsb8x2igEzYuGRzjn7l4kNttjFIxmhI,1827
14
14
  clarifai/cli/deployment.py,sha256=sUEuz5-rtozMx8deVcJXLi6lHsP2jc8x3y2MpUAVfqY,2506
15
- clarifai/cli/model.py,sha256=9tSR_IiyZcSdTwrXOfv36MqaQ_61wLltpwsggh3yE4w,11677
15
+ clarifai/cli/model.py,sha256=BDJy2DXD_vSNBBb83ylI8BPqFnUfHRnpH911gOyoDdQ,12402
16
16
  clarifai/cli/nodepool.py,sha256=yihxS_rIFoBBKzRlqBX8Ab42iPpBMJrJFsk8saph6ms,3049
17
17
  clarifai/cli/__pycache__/__init__.cpython-310.pyc,sha256=4ksYQqqaAMCKwyxNsG7hfJGjXDc8y78s9n7AxCEaTQo,160
18
18
  clarifai/cli/__pycache__/__main__.cpython-310.pyc,sha256=DddvGgYRrEZh9iwKsrGgMP2D7bslUckWV2UGRv2M2ZA,250
19
19
  clarifai/cli/__pycache__/base.cpython-310.pyc,sha256=a7mN_r511p_Ao8aXrWU9KPSe8wkDZJW4p8UhlD6EoB8,3151
20
20
  clarifai/cli/__pycache__/compute_cluster.cpython-310.pyc,sha256=NHLAcVEwqUhci0KB5DpnPWUqXcCttpWrA3F5zld4qN8,1985
21
21
  clarifai/cli/__pycache__/deployment.cpython-310.pyc,sha256=AhfbPlwjjj_TmC2UayjuRbNr00dOukDl6NfLhm2rIng,2278
22
- clarifai/cli/__pycache__/model.cpython-310.pyc,sha256=hMFmJcogfAxgU15tClmYYyqQ2g8G6Ds8IsBzNM37if4,9062
22
+ clarifai/cli/__pycache__/model.cpython-310.pyc,sha256=3UZJ0bgfHIsjiAy1kklnykTPkXWkLahnwKd8-7NEMjs,9639
23
23
  clarifai/cli/__pycache__/nodepool.cpython-310.pyc,sha256=nEmM-s1HFg7xM5x-bpnqHFWAVLWj0J0ZskYtd6NSq20,2473
24
24
  clarifai/client/#model_client.py#,sha256=tZUWNl6D5TyeTY-XaREcdDsD3eM-Rgha2lmHziOok8w,16700
25
25
  clarifai/client/__init__.py,sha256=xI1U0l5AZdRThvQAXCLsd9axxyFzXXJ22m8LHqVjQRU,662
@@ -30,8 +30,8 @@ clarifai/client/dataset.py,sha256=y3zKT_VhP1gyN3OO-b3cPeW21ZXyKbQ7ZJkEG06bsTU,32
30
30
  clarifai/client/deployment.py,sha256=w7Y6pA1rYG4KRK1SwusRZc2sQRXlG8wezuVdzSWpCo0,2586
31
31
  clarifai/client/input.py,sha256=obMAHMDU1OwfXZ8KraOnGFlWzlW-3F7Ob_2lcOQMlhY,46339
32
32
  clarifai/client/lister.py,sha256=03KGMvs5RVyYqxLsSrWhNc34I8kiF1Ph0NeyEwu7nMU,2082
33
- clarifai/client/model.py,sha256=vb8ETvr_FTgMeQ68Wp5D1dogx6lOEM5cWirkRAV46Wo,88675
34
- clarifai/client/model_client.py,sha256=sr98ZeJan17JTQfVGgltEv7_M9lItYSz74DCyBbMIJ8,16681
33
+ clarifai/client/model.py,sha256=jFSz-cVgneKhInwyX1CAE-1Giilz4lRw7kvNOTHP4x0,76934
34
+ clarifai/client/model_client.py,sha256=nuppfy5jxJLN6qwv_PWkTcpYeo8GX5rY5Ioseynl3_U,16805
35
35
  clarifai/client/module.py,sha256=FTkm8s9m-EaTKN7g9MnLhGJ9eETUfKG7aWZ3o1RshYs,4204
36
36
  clarifai/client/nodepool.py,sha256=la3vTFrO4LX8zm2eQ5jqf2L0-kQ63Dano8FibadoZbk,10152
37
37
  clarifai/client/search.py,sha256=GaPWN6JmTQGZaCHr6U1yv0zqR6wKFl7i9IVLg2ul1CI,14254
@@ -127,46 +127,46 @@ clarifai/rag/utils.py,sha256=yr1jAcbpws4vFGBqlAwPPE7v1DRba48g8gixLFw8OhQ,4070
127
127
  clarifai/rag/__pycache__/__init__.cpython-310.pyc,sha256=xAV8OBmLU6qidHU5fr1p2OvQc5N4sy6X1W6ToAUX3mw,213
128
128
  clarifai/rag/__pycache__/rag.cpython-310.pyc,sha256=_xylc1DvMu1KYcDr-dtfUU2uzUjL29Uq3mRH-Iu7_h0,9738
129
129
  clarifai/rag/__pycache__/utils.cpython-310.pyc,sha256=IDUXR7Iv4KfHSY3sbx_bgPdJQn2ozyRCuz01EUTmCUw,3694
130
- clarifai/runners/__init__.py,sha256=FcTqyCvPn9lJFDsi2eGZ-YL8LgPhJmRAS8K5Wobk03s,411
130
+ clarifai/runners/__init__.py,sha256=cDJ31l41dDsqW4Xn6sFMkKxxdIMTnGH9IW6sVkq0TNw,207
131
131
  clarifai/runners/server.py,sha256=xHDLdhQApCgYG19QOKXqJNCGNyw1Vsvobq3UdryDrVc,4132
132
- clarifai/runners/__pycache__/__init__.cpython-310.pyc,sha256=DJaUcWzP2wXHbIbFIyNP8nWogSFT-opppo4Vh1iVAYw,530
133
- clarifai/runners/__pycache__/server.cpython-310.pyc,sha256=HfZ6_Vrr5q78nznFqP_aWhPENplHIol_qPaf8lLlotE,3229
132
+ clarifai/runners/__pycache__/__init__.cpython-310.pyc,sha256=aTRPFOB5Lse4qTAh2Xr11Y2A3mDLnzGq5cZzjnMkuyY,365
133
+ clarifai/runners/__pycache__/server.cpython-310.pyc,sha256=7K18iuUCTuRW94t95_tkS1bakKRxsq5iJ5OiStyNJlY,3223
134
134
  clarifai/runners/dockerfile_template/Dockerfile.debug,sha256=sRlfRmSLE_TiLORcVRx-3-B0vvSNeUYgm0CCrWmLvAA,667
135
135
  clarifai/runners/dockerfile_template/Dockerfile.debug~,sha256=7YOVg3adIaiudfSkfLGeyxt-FfIBbD3UIIYccrIVJTs,426
136
- clarifai/runners/dockerfile_template/Dockerfile.template,sha256=5cjv7U8PmWa3DB_5B1CqSYh_6GE0E0np52TIAa7EIDE,2312
136
+ clarifai/runners/dockerfile_template/Dockerfile.template,sha256=NRybJOAOCtnIec-CyxQDG-vqdSLrPV_MEFFHmEv_9tc,2509
137
137
  clarifai/runners/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
138
  clarifai/runners/models/base_typed_model.py,sha256=0QCWxch8CcyJSKvE1D4PILd2RSnQZHTmx4DXlQQ6dpo,7856
139
- clarifai/runners/models/model_builder.py,sha256=CSGUbznix7xn4CMuRAH4BLfX9O91xAJ4GXFw3EzXgbY,32518
140
- clarifai/runners/models/model_class.py,sha256=9JSPAr4U4K7xI0kSl-q0mHB06zknm2OR-8XIgBCto94,1611
141
- clarifai/runners/models/model_run_locally.py,sha256=V770O-7yQQQlh80u48NZTEHkX3gj1HyclHbu1tjvaQ8,20864
142
- clarifai/runners/models/model_runner.py,sha256=PyxwK-33hLlhkD07tTXkjWZ_iNlZHl9_8AZ2W7WfExI,6097
143
- clarifai/runners/models/model_servicer.py,sha256=jtQmtGeQlvQ5ttMvVw7CMnNzq-rLkTaxR2IWF9SnHwk,2808
139
+ clarifai/runners/models/model_builder.py,sha256=kD3uSHRpTMKe_nQhc8OS6_t3bXc6rW5sEw5rnwtY45g,33086
140
+ clarifai/runners/models/model_class.py,sha256=-6U7zrRn1ZCCZzAAFG9BJoh7Oq2yBkR1lFdzlajgyy8,10767
141
+ clarifai/runners/models/model_run_locally.py,sha256=VZetm9Mko8MBjcjwr6PCnTU9gF3glgD5qvpbj-8tW2s,17962
142
+ clarifai/runners/models/model_runner.py,sha256=qyc73pe4xc9BsUKHwnOyC9g-RNCARiFis4GTh-yg0vg,6219
143
+ clarifai/runners/models/model_servicer.py,sha256=A--b1P71PBCAMJCpy_-fpNDkfCVdvdMh1LleW15dSas,3037
144
144
  clarifai/runners/models/__pycache__/__init__.cpython-310.pyc,sha256=GTFjzypyx5wnDGqxYeY01iya1CELKb5fOFBFLV031yU,171
145
145
  clarifai/runners/models/__pycache__/base_typed_model.cpython-310.pyc,sha256=DCpUDsUUFf_e37yBLvzPwOHC0aNsBTUWXfcLF1LTnjc,8271
146
- clarifai/runners/models/__pycache__/model_builder.cpython-310.pyc,sha256=avyCq8UMGVtKTtnH1GFTaYBv6iFmr3u-E_mbKQYlnow,26707
147
- clarifai/runners/models/__pycache__/model_class.cpython-310.pyc,sha256=Kxc1v0WwLNI5ObT-jATxiYSm6qbctTTUNn3XX4EZ854,1889
148
- clarifai/runners/models/__pycache__/model_run_locally.cpython-310.pyc,sha256=maLshBrvhTy0C6grT26JPAA14P-nD9WDWN25E2BErsE,16976
149
- clarifai/runners/models/__pycache__/model_runner.cpython-310.pyc,sha256=uOXQPDbXvsLFTEpcpcv5b9u7O9AhQzYi__RWw_VB7qQ,4964
150
- clarifai/runners/models/__pycache__/model_servicer.cpython-310.pyc,sha256=9QTYk4zVHBUtlTfkH3WaE6frNdN6ba57EVj4bKe18YA,2501
146
+ clarifai/runners/models/__pycache__/model_builder.cpython-310.pyc,sha256=VwzCpNztwsO5dRAu2P7bhQpjZwFONiSFD9dhqvWLeMs,27511
147
+ clarifai/runners/models/__pycache__/model_class.cpython-310.pyc,sha256=NBXtjp9Dzfy4h0IXkWXGMI7Y7pxk13mOK7edEhCgKqo,8867
148
+ clarifai/runners/models/__pycache__/model_run_locally.cpython-310.pyc,sha256=IuJhxSvvgD9Xh0i4twiMGbettxb0zBObXY-gVV9lS-4,17075
149
+ clarifai/runners/models/__pycache__/model_runner.cpython-310.pyc,sha256=hFFTbXt-fIJGVwwOt3qskn3ZBqVLXS8btYmGoF-5WJA,4999
150
+ clarifai/runners/models/__pycache__/model_servicer.cpython-310.pyc,sha256=7qMV72vZtE-u6lhJMVJfR_i8mBDsN3QqxnSq7bcMAww,2501
151
151
  clarifai/runners/models/__pycache__/model_upload.cpython-310.pyc,sha256=erkIUHtJv1ohMOFT8EAJuVfBsEY4o0GxpeXrZqjrfGk,21046
152
152
  clarifai/runners/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
153
  clarifai/runners/utils/const.py,sha256=bwj-Pcw558-pasdIFbNhnkn-9oiCdojYH1fNTTUG2gU,1048
154
154
  clarifai/runners/utils/data_handler.py,sha256=sxy9zlAgI6ETuxCQhUgEXAn2GCsaW1GxpK6GTaMne0g,6966
155
- clarifai/runners/utils/data_types.py,sha256=1OR676mTvpbLmqyqBBogjfOMSpP7-mevWrP_wTVWTjo,9661
155
+ clarifai/runners/utils/data_types.py,sha256=nJS9n4oQHcwf2scxH8pl5TjHcY9l6ZdY401fTwpEoe4,11032
156
156
  clarifai/runners/utils/data_utils.py,sha256=R1iQ82TuQ9JwxCJk8yEB1Lyb0BYVhVbWJI9YDi1zGOs,318
157
157
  clarifai/runners/utils/loader.py,sha256=SgNHMwRmCCymFQm8aDp73NmIUHhM-N60CBlTKbPzmVc,7470
158
- clarifai/runners/utils/method_signatures.py,sha256=E-sL37sJzNzY0gUmHS5Ge5ruEbtqZMoHjkdWm8NZxkA,14367
159
- clarifai/runners/utils/serializers.py,sha256=MNLZWETostu_paxgFGJThNZUN8h3HorssJj181FVIzk,6672
158
+ clarifai/runners/utils/method_signatures.py,sha256=SbHjtRVaPRvgn1UWv45KYwch4LdJ75bOQsCuqdf9el8,17079
159
+ clarifai/runners/utils/serializers.py,sha256=S4sRsOVvH191vAGTRTAAdwLlQwlK4T5QVRDGPptg9nQ,7191
160
160
  clarifai/runners/utils/url_fetcher.py,sha256=v_8JOWmkyFAzsBulsieKX7Nfjy1Yg7wGSZeqfEvw2cg,1640
161
161
  clarifai/runners/utils/__pycache__/__init__.cpython-310.pyc,sha256=PRPZOzUV5Z8grWizu5RKOkki0iLYxZDJBgsLfmCcieE,170
162
162
  clarifai/runners/utils/__pycache__/const.cpython-310.pyc,sha256=EBpjmzlqWBxRGqu_KXeVx80uDslhufrErs57SbLr3DE,953
163
163
  clarifai/runners/utils/__pycache__/data_handler.cpython-310.pyc,sha256=Mz5dhwefiMAVzHjO7ePfqAm3NILUoSDSUoTS03pt0f8,7961
164
- clarifai/runners/utils/__pycache__/data_types.cpython-310.pyc,sha256=S3PJCL10kHDN9upSyZoHYrOD6bM3XImDRUKetFI_Ygo,14158
164
+ clarifai/runners/utils/__pycache__/data_types.cpython-310.pyc,sha256=4rFe81vCKdXGYoavG5InNJVrak_ennjUexQKrxXy4pw,16465
165
165
  clarifai/runners/utils/__pycache__/data_utils.cpython-310.pyc,sha256=1e6NiK6bnJiiAo2KPsDmm91BSlbI3mVkQZKbDfh5hBI,642
166
166
  clarifai/runners/utils/__pycache__/loader.cpython-310.pyc,sha256=X1MwgLanVXLs-QLot1X145A36W29ONXZRZe5q6_jARo,7319
167
167
  clarifai/runners/utils/__pycache__/logging.cpython-310.pyc,sha256=VV0KFcnuYpFFtaG4EeDIgg7c4QEsBLo-eX_NnsyFEhA,331
168
- clarifai/runners/utils/__pycache__/method_signatures.cpython-310.pyc,sha256=Z_NTuOgsZETvKKw-vNa1nXvSkBskqVPTjIxHRP7HryM,12770
169
- clarifai/runners/utils/__pycache__/serializers.cpython-310.pyc,sha256=CcEzxUgI2PnQaeTVrUNj6RE5gZKFT_ok-qjQaooaDIk,8980
168
+ clarifai/runners/utils/__pycache__/method_signatures.cpython-310.pyc,sha256=ylq20Lo89M8QD7-_yK9V57Pdi-oT8SIlVsyjlaujeyY,14029
169
+ clarifai/runners/utils/__pycache__/serializers.cpython-310.pyc,sha256=FnCRyVyBD1MjGX0sjaxsRHV9AD-vueKX5mCZmdogRiQ,8975
170
170
  clarifai/runners/utils/__pycache__/url_fetcher.cpython-310.pyc,sha256=jFxVdOmm7DCkgatv1GwIXeefHthpvlkg4ybBlMnmxss,1739
171
171
  clarifai/schema/search.py,sha256=JjTi8ammJgZZ2OGl4K6tIA4zEJ1Fr2ASZARXavI1j5c,2448
172
172
  clarifai/schema/__pycache__/search.cpython-310.pyc,sha256=aYuMHmn0ovwmeOhTDj7QAURrQAjlyLm1CwKaz6xktZU,2484
@@ -197,9 +197,9 @@ clarifai/workflows/__pycache__/__init__.cpython-310.pyc,sha256=oRKg6B7Z-wWQy0EW2
197
197
  clarifai/workflows/__pycache__/export.cpython-310.pyc,sha256=cNmGLnww7xVpm4htd1vRhQJoEZ1dhpN1oD8iLLAtVzM,2418
198
198
  clarifai/workflows/__pycache__/utils.cpython-310.pyc,sha256=rm2kWk4a3GOKWoerXpEAEeRvGhEe7wPd0ZZ6jHtEGqY,1925
199
199
  clarifai/workflows/__pycache__/validate.cpython-310.pyc,sha256=QA1i6YdDpY824cqtQvkEaFPpaCa2iqfOwFouqwZfAKY,2139
200
- clarifai-11.1.6rc1.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
201
- clarifai-11.1.6rc1.dist-info/METADATA,sha256=qC_leGNZ6FwOj6WvvMvtVapQUD6ez-B7-IzhkJF6F1s,22198
202
- clarifai-11.1.6rc1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
203
- clarifai-11.1.6rc1.dist-info/entry_points.txt,sha256=X9FZ4Z-i_r2Ud1RpZ9sNIFYuu_-9fogzCMCRUD9hyX0,51
204
- clarifai-11.1.6rc1.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
205
- clarifai-11.1.6rc1.dist-info/RECORD,,
200
+ clarifai-11.1.7rc1.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
201
+ clarifai-11.1.7rc1.dist-info/METADATA,sha256=04I75hPIwGiq9MDminljrYnhEviMnOWciPeGVy50B2s,22229
202
+ clarifai-11.1.7rc1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
203
+ clarifai-11.1.7rc1.dist-info/entry_points.txt,sha256=X9FZ4Z-i_r2Ud1RpZ9sNIFYuu_-9fogzCMCRUD9hyX0,51
204
+ clarifai-11.1.7rc1.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
205
+ clarifai-11.1.7rc1.dist-info/RECORD,,