clarifai 11.2.4rc2__py3-none-any.whl → 11.2.4rc3__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.
- clarifai/__init__.py +1 -1
- clarifai/runners/models/model_builder.py +0 -55
- clarifai/runners/models/model_class.py +0 -5
- clarifai/runners/utils/data_utils.py +32 -34
- clarifai/runners/utils/method_signatures.py +1 -1
- clarifai/runners/utils/openai_convertor.py +126 -186
- {clarifai-11.2.4rc2.dist-info → clarifai-11.2.4rc3.dist-info}/METADATA +2 -13
- {clarifai-11.2.4rc2.dist-info → clarifai-11.2.4rc3.dist-info}/RECORD +12 -12
- {clarifai-11.2.4rc2.dist-info → clarifai-11.2.4rc3.dist-info}/WHEEL +1 -1
- {clarifai-11.2.4rc2.dist-info → clarifai-11.2.4rc3.dist-info}/LICENSE +0 -0
- {clarifai-11.2.4rc2.dist-info → clarifai-11.2.4rc3.dist-info}/entry_points.txt +0 -0
- {clarifai-11.2.4rc2.dist-info → clarifai-11.2.4rc3.dist-info}/top_level.txt +0 -0
clarifai/__init__.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "11.2.
|
1
|
+
__version__ = "11.2.4rc3"
|
@@ -23,7 +23,6 @@ from clarifai.runners.utils.const import (
|
|
23
23
|
DEFAULT_DOWNLOAD_CHECKPOINT_WHEN, DEFAULT_PYTHON_VERSION, DEFAULT_RUNTIME_DOWNLOAD_PATH,
|
24
24
|
PYTHON_BASE_IMAGE, TORCH_BASE_IMAGE)
|
25
25
|
from clarifai.runners.utils.loader import HuggingFaceLoader
|
26
|
-
from clarifai.runners.utils import data_utils
|
27
26
|
from clarifai.runners.utils.method_signatures import signatures_to_yaml
|
28
27
|
from clarifai.urls.helper import ClarifaiUrlHelper
|
29
28
|
from clarifai.utils.logging import logger
|
@@ -337,16 +336,6 @@ class ModelBuilder:
|
|
337
336
|
method_info = model_class._get_method_info()
|
338
337
|
signatures = [method.signature for method in method_info.values()]
|
339
338
|
return signatures
|
340
|
-
|
341
|
-
def get_methods_defaults(self):
|
342
|
-
"""
|
343
|
-
Returns the inference parameters for the model class.
|
344
|
-
"""
|
345
|
-
model_class = self.load_model_class(mocking=True)
|
346
|
-
method_info = model_class._get_method_info()
|
347
|
-
python_param_defaults = [method.python_param_types for method in method_info.values()]
|
348
|
-
return python_param_defaults
|
349
|
-
|
350
339
|
|
351
340
|
@property
|
352
341
|
def client(self):
|
@@ -633,58 +622,14 @@ class ModelBuilder:
|
|
633
622
|
concepts = config.get('concepts')
|
634
623
|
logger.info(f"Updated config.yaml with {len(concepts)} concepts.")
|
635
624
|
|
636
|
-
def filled_params_specs_with_inference_params(self, method_signatures: list[resources_pb2.MethodSignature], methods_defaults) -> list[resources_pb2.ModelTypeField]:
|
637
|
-
"""
|
638
|
-
Fills the params_specs with the inference params.
|
639
|
-
"""
|
640
|
-
inference_params = set()
|
641
|
-
for i, method_defaults in enumerate(methods_defaults):
|
642
|
-
for name, default in method_defaults.items():
|
643
|
-
if isinstance(default, data_utils.InputField):
|
644
|
-
if i==0:
|
645
|
-
inference_params.add(name)
|
646
|
-
else:
|
647
|
-
# if field.name not in inference_params then remove from inference_params
|
648
|
-
if name not in inference_params:
|
649
|
-
inference_params.remove(field.name)
|
650
|
-
output=[]
|
651
|
-
for signature in method_signatures:
|
652
|
-
for field in signature.input_fields:
|
653
|
-
if field.name in inference_params:
|
654
|
-
field.path = field.name
|
655
|
-
if field.type == resources_pb2.ModelTypeField.DataType.STR:
|
656
|
-
field.default_value= str(field.default)
|
657
|
-
field.field_type = resources_pb2.ModelTypeField.ModelTypeFieldType.STRING
|
658
|
-
elif field.type == resources_pb2.ModelTypeField.DataType.INT:
|
659
|
-
field.default_value= int(field.default)
|
660
|
-
field.field_type = resources_pb2.ModelTypeField.ModelTypeFieldType.NUMBER
|
661
|
-
elif field.type == resources_pb2.ModelTypeField.DataType.FLOAT:
|
662
|
-
field.default_value= float(field.default)
|
663
|
-
field.field_type = resources_pb2.ModelTypeField.ModelTypeFieldType.NUMBER
|
664
|
-
elif field.type == resources_pb2.ModelTypeField.DataType.BOOL:
|
665
|
-
field.default_value= bool(field.default)
|
666
|
-
field.field_type = resources_pb2.ModelTypeField.ModelTypeFieldType.BOOLEAN
|
667
|
-
else:
|
668
|
-
field.default_value= field.default
|
669
|
-
field.field_type = resources_pb2.ModelTypeField.ModelTypeFieldType.STRING
|
670
|
-
output.append(field)
|
671
|
-
return output
|
672
|
-
|
673
|
-
|
674
625
|
def get_model_version_proto(self):
|
675
626
|
signatures = self.get_method_signatures()
|
676
|
-
methods_defaults = self.get_methods_defaults()
|
677
|
-
|
678
627
|
model_version_proto = resources_pb2.ModelVersion(
|
679
628
|
pretrained_model_config=resources_pb2.PretrainedModelConfig(),
|
680
629
|
inference_compute_info=self.inference_compute_info,
|
681
630
|
method_signatures=signatures,
|
682
|
-
output_info= resources_pb2.OutputInfo(
|
683
|
-
params_specs=self.filled_params_specs_with_inference_params(signatures, methods_defaults),
|
684
|
-
)
|
685
631
|
)
|
686
632
|
|
687
|
-
|
688
633
|
model_type_id = self.config.get('model').get('model_type_id')
|
689
634
|
if model_type_id in CONCEPTS_REQUIRED_MODEL_TYPE:
|
690
635
|
|
@@ -354,9 +354,4 @@ class _MethodInfo:
|
|
354
354
|
for p in inspect.signature(method).parameters.values()
|
355
355
|
if p.annotation != inspect.Parameter.empty
|
356
356
|
}
|
357
|
-
self.python_param_defaults = {
|
358
|
-
p.name: p.default
|
359
|
-
for p in inspect.signature(method).parameters.values()
|
360
|
-
if p.default != inspect.Parameter.empty
|
361
|
-
}
|
362
357
|
self.python_param_types.pop('self', None)
|
@@ -180,42 +180,40 @@ class InputField(MessageData):
|
|
180
180
|
|
181
181
|
@classmethod
|
182
182
|
def get_default(cls, proto):
|
183
|
-
|
184
|
-
|
185
|
-
|
183
|
+
default_str = proto.default
|
184
|
+
default = None
|
185
|
+
import json
|
186
|
+
try:
|
187
|
+
# Attempt to parse as JSON first (for complex types)
|
188
|
+
return json.loads(default_str)
|
189
|
+
except json.JSONDecodeError:
|
190
|
+
pass
|
191
|
+
# Check for boolean values stored as "True" or "False"
|
192
|
+
if proto.type == resources_pb2.ModelTypeField.DataType.BOOL:
|
186
193
|
try:
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
pass
|
197
|
-
# Try to parse as integer
|
198
|
-
elif proto.type == resources_pb2.ModelTypeField.DataType.INT:
|
199
|
-
try:
|
200
|
-
default = int(default_str)
|
201
|
-
except ValueError:
|
202
|
-
pass
|
203
|
-
|
204
|
-
# Try to parse as float
|
205
|
-
elif proto.type == resources_pb2.ModelTypeField.DataType.FLOAT:
|
206
|
-
try:
|
207
|
-
default = float(default_str)
|
208
|
-
except ValueError:
|
209
|
-
pass
|
210
|
-
elif proto.type == resources_pb2.ModelTypeField.DataType.STR:
|
211
|
-
default = default_str
|
212
|
-
|
213
|
-
if default is None:
|
214
|
-
# If all parsing fails, return the string value
|
215
|
-
default = default_str
|
216
|
-
return default
|
217
|
-
|
194
|
+
default = bool(default_str)
|
195
|
+
except ValueError:
|
196
|
+
pass
|
197
|
+
# Try to parse as integer
|
198
|
+
elif proto.type == resources_pb2.ModelTypeField.DataType.INT:
|
199
|
+
try:
|
200
|
+
default = int(default_str)
|
201
|
+
except ValueError:
|
202
|
+
pass
|
218
203
|
|
204
|
+
# Try to parse as float
|
205
|
+
elif proto.type == resources_pb2.ModelTypeField.DataType.FLOAT:
|
206
|
+
try:
|
207
|
+
default = float(default_str)
|
208
|
+
except ValueError:
|
209
|
+
pass
|
210
|
+
elif proto.type == resources_pb2.ModelTypeField.DataType.STR:
|
211
|
+
default = default_str
|
212
|
+
|
213
|
+
if default is None:
|
214
|
+
# If all parsing fails, return the string value
|
215
|
+
default = default_str
|
216
|
+
return default
|
219
217
|
|
220
218
|
|
221
219
|
class DataConverter:
|
@@ -1,44 +1,54 @@
|
|
1
1
|
import time
|
2
2
|
import uuid
|
3
3
|
|
4
|
+
|
4
5
|
def generate_id():
|
5
|
-
|
6
|
+
return f"chatcmpl-{uuid.uuid4().hex}"
|
7
|
+
|
6
8
|
|
7
9
|
def _format_non_streaming_response(
|
8
10
|
generated_text,
|
9
11
|
model="custom-model",
|
10
12
|
id=None,
|
11
13
|
created=None,
|
12
|
-
|
14
|
+
prompt_tokens=None,
|
15
|
+
completion_tokens=None,
|
13
16
|
finish_reason="stop",
|
14
17
|
):
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
18
|
+
if id is None:
|
19
|
+
id = generate_id()
|
20
|
+
if created is None:
|
21
|
+
created = int(time.time())
|
22
|
+
|
23
|
+
response = {
|
24
|
+
"id":
|
25
|
+
id,
|
26
|
+
"object":
|
27
|
+
"chat.completion",
|
28
|
+
"created":
|
29
|
+
created,
|
30
|
+
"model":
|
31
|
+
model,
|
32
|
+
"choices": [{
|
33
|
+
"index": 0,
|
34
|
+
"message": {
|
35
|
+
"role": "assistant",
|
36
|
+
"content": generated_text,
|
37
|
+
},
|
38
|
+
"finish_reason": finish_reason,
|
39
|
+
"logprobs": None,
|
40
|
+
}],
|
41
|
+
}
|
42
|
+
|
43
|
+
if prompt_tokens is not None and completion_tokens is not None:
|
44
|
+
response["usage"] = {
|
45
|
+
"prompt_tokens": prompt_tokens,
|
46
|
+
"completion_tokens": completion_tokens,
|
47
|
+
"total_tokens": prompt_tokens + completion_tokens,
|
36
48
|
}
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
return response
|
49
|
+
|
50
|
+
return response
|
51
|
+
|
42
52
|
|
43
53
|
def _format_streaming_response(
|
44
54
|
generated_chunks,
|
@@ -47,181 +57,111 @@ def _format_streaming_response(
|
|
47
57
|
created=None,
|
48
58
|
finish_reason="stop",
|
49
59
|
):
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
yield {
|
57
|
-
"id": id,
|
58
|
-
"object": "chat.completion.chunk",
|
59
|
-
"created": created,
|
60
|
-
"model": model,
|
61
|
-
"choices": [
|
62
|
-
{
|
63
|
-
"index": 0,
|
64
|
-
"delta": {
|
65
|
-
"content": chunk,
|
66
|
-
},
|
67
|
-
"finish_reason": None,
|
68
|
-
"logprobs": None,
|
69
|
-
}
|
70
|
-
],
|
71
|
-
}
|
72
|
-
|
73
|
-
# Final chunk indicating completion
|
60
|
+
if id is None:
|
61
|
+
id = generate_id()
|
62
|
+
if created is None:
|
63
|
+
created = int(time.time())
|
64
|
+
|
65
|
+
for chunk in generated_chunks:
|
74
66
|
yield {
|
75
|
-
"id":
|
76
|
-
|
77
|
-
"
|
78
|
-
|
79
|
-
"
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
67
|
+
"id":
|
68
|
+
id,
|
69
|
+
"object":
|
70
|
+
"chat.completion.chunk",
|
71
|
+
"created":
|
72
|
+
created,
|
73
|
+
"model":
|
74
|
+
model,
|
75
|
+
"choices": [{
|
76
|
+
"index": 0,
|
77
|
+
"delta": {
|
78
|
+
"content": chunk,
|
79
|
+
},
|
80
|
+
"finish_reason": None,
|
81
|
+
"logprobs": None,
|
82
|
+
}],
|
87
83
|
}
|
88
84
|
|
89
|
-
|
85
|
+
# Final chunk indicating completion
|
86
|
+
yield {
|
87
|
+
"id": id,
|
88
|
+
"object": "chat.completion.chunk",
|
89
|
+
"created": created,
|
90
|
+
"model": model,
|
91
|
+
"choices": [{
|
92
|
+
"index": 0,
|
93
|
+
"delta": {},
|
94
|
+
"finish_reason": finish_reason,
|
95
|
+
"logprobs": None,
|
96
|
+
}],
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
def openai_response(
|
90
101
|
generated_text,
|
91
102
|
model="custom-model",
|
92
103
|
id=None,
|
93
104
|
created=None,
|
94
|
-
|
105
|
+
prompt_tokens=None,
|
106
|
+
completion_tokens=None,
|
95
107
|
finish_reason="stop",
|
96
108
|
stream=True,
|
97
109
|
):
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
)
|
106
|
-
|
107
|
-
import base64
|
108
|
-
from PIL import Image
|
109
|
-
import io
|
110
|
-
|
111
|
-
def openai_to_hf_chat_messages(
|
112
|
-
messages: List[Dict[str, str]],
|
113
|
-
tokenizer: Optional[object] = None
|
114
|
-
) -> List[Dict[str, Union[str, Dict]]]:
|
115
|
-
"""
|
116
|
-
Converts OpenAI-style chat messages into Hugging Face chat template format.
|
117
|
-
|
118
|
-
Args:
|
119
|
-
messages: List of OpenAI-style messages (e.g., [{"role": "user", "content": "Hello"}]).
|
120
|
-
model_family: Optional model family (e.g., "llava", "llama") for special handling.
|
121
|
-
tokenizer: Optional tokenizer to check for chat template support.
|
122
|
-
|
123
|
-
Returns:
|
124
|
-
List of messages in Hugging Face chat format.
|
125
|
-
"""
|
126
|
-
hf_messages = []
|
127
|
-
|
128
|
-
for msg in messages:
|
129
|
-
role = msg["role"]
|
130
|
-
content = msg["content"]
|
131
|
-
|
132
|
-
# Handle multimodal content (e.g., images in OpenAI format)
|
133
|
-
if isinstance(content, list):
|
134
|
-
# OpenAI-style multimodal: [{"type": "text", "text": "..."}, {"type": "image_url", "image_url": "..."}]
|
135
|
-
new_content = []
|
136
|
-
for item in content:
|
137
|
-
if item["type"] == "text":
|
138
|
-
new_content.append(item["text"])
|
139
|
-
elif item["type"] == "image_url":
|
140
|
-
# Handle image (extract base64 or URL)
|
141
|
-
image_url = item["image_url"]["url"]
|
142
|
-
if image_url.startswith("data:image"):
|
143
|
-
# Base64-encoded image
|
144
|
-
image_data = image_url.split(",")[1]
|
145
|
-
image_bytes = base64.b64decode(image_data)
|
146
|
-
image = Image.open(io.BytesIO(image_bytes))
|
147
|
-
new_content.append({"image": image})
|
148
|
-
else:
|
149
|
-
# URL (model must handle downloads)
|
150
|
-
new_content.append({"url": image_url})
|
151
|
-
content = " ".join(new_content) if all(isinstance(c, str) for c in new_content) else new_content
|
152
|
-
elif not isinstance(content, str):
|
153
|
-
raise ValueError(f"Unsupported content type: {type(content)}")
|
154
|
-
|
155
|
-
# Add to HF messages
|
156
|
-
hf_messages.append({"role": role, "content": content})
|
157
|
-
|
158
|
-
# Apply model-specific adjustments
|
159
|
-
if tokenizer is not None and hasattr(tokenizer, "apply_chat_template"):
|
160
|
-
# Let Hugging Face tokenizer handle further formatting if needed
|
161
|
-
try:
|
162
|
-
return tokenizer.apply_chat_template(hf_messages, tokenize=False)
|
163
|
-
except:
|
164
|
-
pass # Fall back to manual formatting
|
165
|
-
|
166
|
-
return hf_messages
|
167
|
-
|
168
|
-
def convert_openai_to_hf_messages(openai_messages):
|
169
|
-
"""
|
110
|
+
if stream:
|
111
|
+
return _format_streaming_response(generated_text, model, id, created, finish_reason)
|
112
|
+
else:
|
113
|
+
return _format_non_streaming_response(generated_text, model, id, created, prompt_tokens,
|
114
|
+
completion_tokens, finish_reason)
|
115
|
+
|
116
|
+
|
117
|
+
def openai_to_hf_messages(openai_messages):
|
118
|
+
"""
|
170
119
|
Converts OpenAI-style chat messages into a format compatible with Hugging Face's
|
171
120
|
`tokenizer.apply_chat_template()` function, supporting all modalities (text, images, etc.).
|
172
|
-
|
121
|
+
|
173
122
|
Args:
|
174
123
|
openai_messages (list): List of OpenAI-style messages, where each message is a dict with
|
175
124
|
'role' (str) and 'content' (str or list of parts).
|
176
|
-
|
125
|
+
|
177
126
|
Returns:
|
178
127
|
list: Hugging Face-compatible messages. Each message is a dict with 'role' and 'content'.
|
179
128
|
Content is a string (text-only) or a list of parts (multimodal).
|
180
129
|
"""
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
video_url = part["video_url"]["url"]
|
210
|
-
if video_url.startswith("data:video"):
|
211
|
-
ValueError("Base64 video data is not supported in HF format.")
|
212
|
-
else:
|
213
|
-
# URL (model must handle downloads)
|
214
|
-
converted_content.append({
|
215
|
-
'type': 'video',
|
216
|
-
'url': video_url
|
217
|
-
})
|
218
|
-
else:
|
219
|
-
raise ValueError(f"Unsupported content type: {part['type']} for conversion.")
|
220
|
-
hf_content = converted_content
|
130
|
+
hf_messages = []
|
131
|
+
for msg in openai_messages:
|
132
|
+
role = msg['role']
|
133
|
+
content = msg['content']
|
134
|
+
|
135
|
+
if isinstance(content, list):
|
136
|
+
# Handle multimodal content (e.g., text + images)
|
137
|
+
converted_content = []
|
138
|
+
for part in content:
|
139
|
+
if part['type'] == 'text':
|
140
|
+
converted_content.append({'type': 'text', 'text': part['text']})
|
141
|
+
elif part['type'] == 'image_url':
|
142
|
+
# Handle image (extract base64 or URL)
|
143
|
+
image_url = part["image_url"]["url"]
|
144
|
+
if image_url.startswith("data:image"):
|
145
|
+
# Base64-encoded image
|
146
|
+
b64_img = image_url.split(",")[1]
|
147
|
+
converted_content.append({'type': 'image', 'base64': b64_img})
|
148
|
+
else:
|
149
|
+
# URL (model must handle downloads)
|
150
|
+
converted_content.append({'type': 'image', 'url': image_url})
|
151
|
+
elif part['type'] == 'video_url':
|
152
|
+
video_url = part["video_url"]["url"]
|
153
|
+
if video_url.startswith("data:video"):
|
154
|
+
ValueError("Base64 video data is not supported in HF format.")
|
155
|
+
else:
|
156
|
+
# URL (model must handle downloads)
|
157
|
+
converted_content.append({'type': 'video', 'url': video_url})
|
221
158
|
else:
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
159
|
+
raise ValueError(f"Unsupported content type: {part['type']} for conversion.")
|
160
|
+
hf_content = converted_content
|
161
|
+
else:
|
162
|
+
# Text-only content (string)
|
163
|
+
hf_content = content
|
164
|
+
|
165
|
+
hf_messages.append({'role': role, 'content': hf_content})
|
166
|
+
|
167
|
+
return hf_messages
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.1
|
2
2
|
Name: clarifai
|
3
|
-
Version: 11.2.
|
3
|
+
Version: 11.2.4rc3
|
4
4
|
Summary: Clarifai Python SDK
|
5
5
|
Home-page: https://github.com/Clarifai/clarifai-python
|
6
6
|
Author: Clarifai
|
@@ -35,17 +35,6 @@ Requires-Dist: requests>=2.32.3
|
|
35
35
|
Requires-Dist: aiohttp>=3.10.0
|
36
36
|
Provides-Extra: all
|
37
37
|
Requires-Dist: pycocotools==2.0.6; extra == "all"
|
38
|
-
Dynamic: author
|
39
|
-
Dynamic: author-email
|
40
|
-
Dynamic: classifier
|
41
|
-
Dynamic: description
|
42
|
-
Dynamic: description-content-type
|
43
|
-
Dynamic: home-page
|
44
|
-
Dynamic: license
|
45
|
-
Dynamic: provides-extra
|
46
|
-
Dynamic: requires-dist
|
47
|
-
Dynamic: requires-python
|
48
|
-
Dynamic: summary
|
49
38
|
|
50
39
|
<h1 align="center">
|
51
40
|
<a href="https://www.clarifai.com/"><img alt="Clarifai" title="Clarifai" src="https://github.com/user-attachments/assets/623b883b-7fe5-4b95-bbfa-8691f5779af4"></a>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
clarifai/__init__.py,sha256=
|
1
|
+
clarifai/__init__.py,sha256=JujgM2t-mATi_SX1natNHTB73fM8G_c1vcI4bMKtqWs,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
|
@@ -138,8 +138,8 @@ clarifai/runners/dockerfile_template/Dockerfile.nim,sha256=CSdUAehj3uOwminioLnT5
|
|
138
138
|
clarifai/runners/dockerfile_template/Dockerfile.template,sha256=5cjv7U8PmWa3DB_5B1CqSYh_6GE0E0np52TIAa7EIDE,2312
|
139
139
|
clarifai/runners/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
140
140
|
clarifai/runners/models/base_typed_model.py,sha256=0QCWxch8CcyJSKvE1D4PILd2RSnQZHTmx4DXlQQ6dpo,7856
|
141
|
-
clarifai/runners/models/model_builder.py,sha256=
|
142
|
-
clarifai/runners/models/model_class.py,sha256=
|
141
|
+
clarifai/runners/models/model_builder.py,sha256=vIUZII9n5wL0SGV4xR6wfsdRvrMv4pSHr6P-KdYpikI,36343
|
142
|
+
clarifai/runners/models/model_class.py,sha256=2l7AZ2MrwR8tMIIV7KQSagZIzSwydyIFUOu0uFo-4gI,14742
|
143
143
|
clarifai/runners/models/model_class_refract.py,sha256=HxuozxSW7ag5yWCPxjNwgLArQ6dORhyGXlnpPaZz2-c,3211
|
144
144
|
clarifai/runners/models/model_run_locally.py,sha256=H7FKUBzZ_EPPj1b6P59qbOYr3mUJjJTlD5gavH5e80o,17746
|
145
145
|
clarifai/runners/models/model_runner.py,sha256=T4Qn_x0vky7XdeS54bvipzEmKZMra1tQdAu_u01yyjc,6503
|
@@ -161,11 +161,11 @@ clarifai/runners/utils/const.py,sha256=9qnOC1Bt6SGLQ9XCQEQ6519XhW4gzcztsV1Rgej67
|
|
161
161
|
clarifai/runners/utils/data_handler.py,sha256=b7k6MWYPXSgjrfw6wsDf82xFYa0D7UjYmjE4mw5HzHM,8499
|
162
162
|
clarifai/runners/utils/data_handler_refract.py,sha256=3M-V4hkOoF-9Ix4hE6ocXWiTJPc9dewtu6FMtddd-jQ,6343
|
163
163
|
clarifai/runners/utils/data_types.py,sha256=CtcYoW4EFE1EG6JkcP2rcRast9Eac8hFoYRHHCuwl2w,12432
|
164
|
-
clarifai/runners/utils/data_utils.py,sha256=
|
164
|
+
clarifai/runners/utils/data_utils.py,sha256=ODlBS3USrQM52ZARpoST7yK-CQnxV_myIruAy0oOxS8,12797
|
165
165
|
clarifai/runners/utils/loader.py,sha256=Sl0m29RDtMPx2cIiSbbDFtKHQj2ktXQ5CnkvaHi-zDc,8804
|
166
166
|
clarifai/runners/utils/logger.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
167
|
-
clarifai/runners/utils/method_signatures.py,sha256=
|
168
|
-
clarifai/runners/utils/openai_convertor.py,sha256=
|
167
|
+
clarifai/runners/utils/method_signatures.py,sha256=aMf6CNhrZ48Gy0mbjg3sz7o3kVmIbPiEtKZk8S5D06Q,18509
|
168
|
+
clarifai/runners/utils/openai_convertor.py,sha256=qRhq_nGacaLFD_-8oAbPaDhGZJVMtKbgb2A4X7FlhD0,4564
|
169
169
|
clarifai/runners/utils/openai_format.py,sha256=vOrpgqVWmQZGGFANZf0hmR_ksZXsr2-S9WUxvkG5lZs,1980
|
170
170
|
clarifai/runners/utils/serializers.py,sha256=S4sRsOVvH191vAGTRTAAdwLlQwlK4T5QVRDGPptg9nQ,7191
|
171
171
|
clarifai/runners/utils/url_fetcher.py,sha256=v_8JOWmkyFAzsBulsieKX7Nfjy1Yg7wGSZeqfEvw2cg,1640
|
@@ -233,9 +233,9 @@ clarifai/workflows/__pycache__/__init__.cpython-39.pyc,sha256=9nA--jULSW7OFrYOcs
|
|
233
233
|
clarifai/workflows/__pycache__/export.cpython-310.pyc,sha256=phEGwi2gAojCUhRTqjZVeTDn7Gk6LCVBeSTjAj4m9iY,2418
|
234
234
|
clarifai/workflows/__pycache__/utils.cpython-310.pyc,sha256=M9_KTM7GOOS5SPrWwAzqHDqyGvgKi3xuSGvyw6MNf-I,1925
|
235
235
|
clarifai/workflows/__pycache__/validate.cpython-310.pyc,sha256=c18Jgp_-CAm8RD_tmUpDCPoqZeexaoWELG0yBzb9rjw,2149
|
236
|
-
clarifai-11.2.
|
237
|
-
clarifai-11.2.
|
238
|
-
clarifai-11.2.
|
239
|
-
clarifai-11.2.
|
240
|
-
clarifai-11.2.
|
241
|
-
clarifai-11.2.
|
236
|
+
clarifai-11.2.4rc3.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
|
237
|
+
clarifai-11.2.4rc3.dist-info/METADATA,sha256=rHJD6tV9a8RvcifQFuQAfGWKLD-m_6A45Yc9796WRfI,22215
|
238
|
+
clarifai-11.2.4rc3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
239
|
+
clarifai-11.2.4rc3.dist-info/entry_points.txt,sha256=X9FZ4Z-i_r2Ud1RpZ9sNIFYuu_-9fogzCMCRUD9hyX0,51
|
240
|
+
clarifai-11.2.4rc3.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
|
241
|
+
clarifai-11.2.4rc3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|