clarifai 10.3.1__py3-none-any.whl → 10.3.3__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/client/input.py CHANGED
@@ -72,6 +72,7 @@ class Inputs(Lister, BaseClient):
72
72
  text_pb: Text = None,
73
73
  geo_info: List = None,
74
74
  labels: List = None,
75
+ label_ids: List = None,
75
76
  metadata: Struct = None) -> Input:
76
77
  """Create input proto for image data type.
77
78
  Args:
@@ -82,7 +83,8 @@ class Inputs(Lister, BaseClient):
82
83
  audio_pb (Audio): The audio proto to be used for the input.
83
84
  text_pb (Text): The text proto to be used for the input.
84
85
  geo_info (list): A list of longitude and latitude for the geo point.
85
- labels (list): A list of labels for the input.
86
+ labels (list): A list of label names for the input.
87
+ label_ids (list): A list of label ids for the input.
86
88
  metadata (Struct): A Struct of metadata for the input.
87
89
  Returns:
88
90
  Input: An Input object for the specified input ID.
@@ -90,14 +92,26 @@ class Inputs(Lister, BaseClient):
90
92
  assert geo_info is None or isinstance(
91
93
  geo_info, list), "geo_info must be a list of longitude and latitude"
92
94
  assert labels is None or isinstance(labels, list), "labels must be a list of strings"
95
+ assert label_ids is None or isinstance(label_ids, list), "label_ids must be a list of strings"
93
96
  assert metadata is None or isinstance(metadata, Struct), "metadata must be a Struct"
94
97
  geo_pb = resources_pb2.Geo(geo_point=resources_pb2.GeoPoint(
95
98
  longitude=geo_info[0], latitude=geo_info[1])) if geo_info else None
96
- concepts=[
99
+ if labels:
100
+ if not label_ids:
101
+ concepts=[
97
102
  resources_pb2.Concept(
98
103
  id=f"id-{''.join(_label.split(' '))}", name=_label, value=1.)\
99
104
  for _label in labels
100
- ]if labels else None
105
+ ]
106
+ else:
107
+ assert len(labels) == len(label_ids), "labels and label_ids must be of the same length"
108
+ concepts=[
109
+ resources_pb2.Concept(
110
+ id=label_id, name=_label, value=1.)\
111
+ for label_id, _label in zip(label_ids, labels)
112
+ ]
113
+ else:
114
+ concepts = None
101
115
 
102
116
  if dataset_id:
103
117
  return resources_pb2.Input(
@@ -467,13 +481,14 @@ class Inputs(Lister, BaseClient):
467
481
  return input_protos
468
482
 
469
483
  @staticmethod
470
- def get_bbox_proto(input_id: str, label: str, bbox: List) -> Annotation:
484
+ def get_bbox_proto(input_id: str, label: str, bbox: List, label_id: str = None) -> Annotation:
471
485
  """Create an annotation proto for each bounding box, label input pair.
472
486
 
473
487
  Args:
474
488
  input_id (str): The input ID for the annotation to create.
475
- label (str): annotation label
489
+ label (str): annotation label name
476
490
  bbox (List): a list of a single bbox's coordinates. # bbox ordering: [xmin, ymin, xmax, ymax]
491
+ label_id (str): annotation label ID
477
492
 
478
493
  Returns:
479
494
  An annotation object for the specified input ID.
@@ -500,19 +515,22 @@ class Inputs(Lister, BaseClient):
500
515
  data=resources_pb2.Data(concepts=[
501
516
  resources_pb2.Concept(
502
517
  id=f"id-{''.join(label.split(' '))}", name=label, value=1.)
518
+ if not label_id else resources_pb2.Concept(id=label_id, name=label, value=1.)
503
519
  ]))
504
520
  ]))
505
521
 
506
522
  return input_annot_proto
507
523
 
508
524
  @staticmethod
509
- def get_mask_proto(input_id: str, label: str, polygons: List[List[float]]) -> Annotation:
525
+ def get_mask_proto(input_id: str, label: str, polygons: List[List[float]],
526
+ label_id: str = None) -> Annotation:
510
527
  """Create an annotation proto for each polygon box, label input pair.
511
528
 
512
529
  Args:
513
530
  input_id (str): The input ID for the annotation to create.
514
- label (str): annotation label
531
+ label (str): annotation label name
515
532
  polygons (List): Polygon x,y points iterable
533
+ label_id (str): annotation label ID
516
534
 
517
535
  Returns:
518
536
  An annotation object for the specified input ID.
@@ -537,6 +555,7 @@ class Inputs(Lister, BaseClient):
537
555
  data=resources_pb2.Data(concepts=[
538
556
  resources_pb2.Concept(
539
557
  id=f"id-{''.join(label.split(' '))}", name=label, value=1.)
558
+ if not label_id else resources_pb2.Concept(id=label_id, name=label, value=1.)
540
559
  ]))
541
560
  ]))
542
561
 
@@ -726,16 +745,20 @@ class Inputs(Lister, BaseClient):
726
745
  request = service_pb2.PostAnnotationsRequest(
727
746
  user_app_id=self.user_app_id, annotations=batch_annot)
728
747
  response = self._grpc_request(self.STUB.PostAnnotations, request)
748
+ response_dict = MessageToDict(response)
729
749
  if response.status.code != status_code_pb2.SUCCESS:
730
750
  try:
731
- self.logger.warning(f"Post annotations failed, status: {response.annotations[0].status}")
751
+ for annot in response_dict["annotations"]:
752
+ if annot['status']['code'] != status_code_pb2.ANNOTATION_SUCCESS:
753
+ self.logger.warning(f"Post annotations failed, status: {annot['status']}")
732
754
  except Exception:
733
- self.logger.warning(f"Post annotations failed, status: {response.status.details}")
755
+ self.logger.warning(f"Post annotations failed due to {response.status}")
734
756
  finally:
735
757
  retry_upload.extend(batch_annot)
736
758
  else:
737
759
  if show_log:
738
760
  self.logger.info("\nAnnotations Uploaded\n%s", response.status)
761
+
739
762
  return retry_upload
740
763
 
741
764
  def _upload_batch(self, inputs: List[Input]) -> List[Input]:
clarifai/client/model.py CHANGED
@@ -17,7 +17,8 @@ from clarifai.client.base import BaseClient
17
17
  from clarifai.client.dataset import Dataset
18
18
  from clarifai.client.input import Inputs
19
19
  from clarifai.client.lister import Lister
20
- from clarifai.constants.model import MAX_MODEL_PREDICT_INPUTS, TRAINABLE_MODEL_TYPES
20
+ from clarifai.constants.model import (MAX_MODEL_PREDICT_INPUTS, MODEL_EXPORT_TIMEOUT,
21
+ TRAINABLE_MODEL_TYPES)
21
22
  from clarifai.errors import UserError
22
23
  from clarifai.urls.helper import ClarifaiUrlHelper
23
24
  from clarifai.utils.logging import get_logger
@@ -949,19 +950,22 @@ class Model(Lister, BaseClient):
949
950
  """Export the model, stores the exported model as model.tar file
950
951
 
951
952
  Args:
952
- export_dir (str): The directory to save the exported model.
953
+ export_dir (str, optional): If provided, the exported model will be saved in the specified directory else export status will be shown. Defaults to None.
953
954
 
954
955
  Example:
955
956
  >>> from clarifai.client.model import Model
956
957
  >>> model = Model("url")
958
+ >>> model.export()
959
+ or
957
960
  >>> model.export('/path/to/export_model_dir')
958
961
  """
959
962
  assert self.model_info.model_version.id, "Model version ID is missing. Please provide a `model_version` with a valid `id` as an argument or as a URL in the following format: '{user_id}/{app_id}/models/{your_model_id}/model_version_id/{your_version_model_id}' when initializing."
960
- try:
961
- if not os.path.exists(export_dir):
962
- os.makedirs(export_dir)
963
- except OSError as e:
964
- raise Exception(f"An error occurred while creating the directory: {e}")
963
+ if export_dir:
964
+ try:
965
+ if not os.path.exists(export_dir):
966
+ os.makedirs(export_dir)
967
+ except OSError as e:
968
+ raise Exception(f"An error occurred while creating the directory: {e}")
965
969
 
966
970
  def _get_export_response():
967
971
  get_export_request = service_pb2.GetModelVersionExportRequest(
@@ -1010,28 +1014,39 @@ class Model(Lister, BaseClient):
1010
1014
  raise Exception(response.status)
1011
1015
 
1012
1016
  self.logger.info(
1013
- f"Model ID {self.id} with version {self.model_info.model_version.id} export started, please wait..."
1017
+ f"Export process has started for Model ID {self.id}, Version {self.model_info.model_version.id}"
1014
1018
  )
1015
- time.sleep(5)
1016
- start_time = time.time()
1017
- backoff_iterator = BackoffIterator(10)
1018
- while True:
1019
- get_export_response = _get_export_response()
1020
- if get_export_response.export.status.code == status_code_pb2.MODEL_EXPORTING and \
1021
- time.time() - start_time < 60 * 30: # 30 minutes
1022
- self.logger.info(
1023
- f"Model ID {self.id} with version {self.model_info.model_version.id} is still exporting, please wait..."
1024
- )
1025
- time.sleep(next(backoff_iterator))
1026
- elif get_export_response.export.status.code == status_code_pb2.MODEL_EXPORTED:
1027
- _download_exported_model(get_export_response, os.path.join(export_dir, "model.tar"))
1028
- break
1029
- elif time.time() - start_time > 60 * 30:
1030
- raise Exception(
1031
- f"""Model Export took too long. Please try again or contact support@clarifai.com
1032
- Req ID: {get_export_response.status.req_id}""")
1019
+ if export_dir:
1020
+ start_time = time.time()
1021
+ backoff_iterator = BackoffIterator(10)
1022
+ while True:
1023
+ get_export_response = _get_export_response()
1024
+ if (get_export_response.export.status.code == status_code_pb2.MODEL_EXPORTING or \
1025
+ get_export_response.export.status.code == status_code_pb2.MODEL_EXPORT_PENDING) and \
1026
+ time.time() - start_time < MODEL_EXPORT_TIMEOUT:
1027
+ self.logger.info(
1028
+ f"Export process is ongoing for Model ID {self.id}, Version {self.model_info.model_version.id}. Please wait..."
1029
+ )
1030
+ time.sleep(next(backoff_iterator))
1031
+ elif get_export_response.export.status.code == status_code_pb2.MODEL_EXPORTED:
1032
+ _download_exported_model(get_export_response, os.path.join(export_dir, "model.tar"))
1033
+ break
1034
+ elif time.time() - start_time > MODEL_EXPORT_TIMEOUT:
1035
+ raise Exception(
1036
+ f"""Model Export took too long. Please try again or contact support@clarifai.com
1037
+ Req ID: {get_export_response.status.req_id}""")
1033
1038
  elif get_export_response.export.status.code == status_code_pb2.MODEL_EXPORTED:
1034
- _download_exported_model(get_export_response, os.path.join(export_dir, "model.tar"))
1039
+ if export_dir:
1040
+ _download_exported_model(get_export_response, os.path.join(export_dir, "model.tar"))
1041
+ else:
1042
+ self.logger.info(
1043
+ f"Model ID {self.id} with version {self.model_info.model_version.id} is already exported, you can download it from the following URL: {get_export_response.export.url}"
1044
+ )
1045
+ elif get_export_response.export.status.code == status_code_pb2.MODEL_EXPORTING or \
1046
+ get_export_response.export.status.code == status_code_pb2.MODEL_EXPORT_PENDING:
1047
+ self.logger.info(
1048
+ f"Export process is ongoing for Model ID {self.id}, Version {self.model_info.model_version.id}. Please wait..."
1049
+ )
1035
1050
 
1036
1051
  @staticmethod
1037
1052
  def _make_pretrained_config_proto(input_field_maps: dict,
@@ -3,3 +3,4 @@ TRAINABLE_MODEL_TYPES = [
3
3
  'text-classifier', 'embedding-classifier', 'text-to-text'
4
4
  ]
5
5
  MAX_MODEL_PREDICT_INPUTS = 128
6
+ MODEL_EXPORT_TIMEOUT = 1800
@@ -10,6 +10,7 @@ class TextFeatures:
10
10
  labels: List[Union[str, int]] # List[str or int] to cater for multi-class tasks
11
11
  id: Optional[int] = None # text_id
12
12
  metadata: Optional[dict] = None
13
+ label_ids: Optional[List[str]] = None
13
14
 
14
15
 
15
16
  @dataclass
@@ -21,6 +22,7 @@ class VisualClassificationFeatures:
21
22
  id: Optional[int] = None # image_id
22
23
  metadata: Optional[dict] = None
23
24
  image_bytes: Optional[bytes] = None
25
+ label_ids: Optional[List[str]] = None
24
26
 
25
27
 
26
28
  @dataclass
@@ -33,6 +35,7 @@ class VisualDetectionFeatures:
33
35
  id: Optional[int] = None # image_id
34
36
  metadata: Optional[dict] = None
35
37
  image_bytes: Optional[bytes] = None
38
+ label_ids: Optional[List[str]] = None
36
39
 
37
40
 
38
41
  @dataclass
@@ -45,3 +48,4 @@ class VisualSegmentationFeatures:
45
48
  id: Optional[int] = None # image_id
46
49
  metadata: Optional[dict] = None
47
50
  image_bytes: Optional[bytes] = None
51
+ label_ids: Optional[List[str]] = None
@@ -32,6 +32,7 @@ class VisualClassificationDataset(ClarifaiDataset):
32
32
  image_path = data_item.image_path
33
33
  labels = data_item.labels if isinstance(data_item.labels,
34
34
  list) else [data_item.labels] # clarifai concept
35
+ label_ids = data_item.label_ids
35
36
  input_id = f"{self.dataset_id}-{uuid.uuid4().hex[:8]}" if data_item.id is None else f"{self.dataset_id}-{str(data_item.id)}"
36
37
  geo_info = data_item.geo_info
37
38
  if data_item.metadata is not None:
@@ -49,6 +50,7 @@ class VisualClassificationDataset(ClarifaiDataset):
49
50
  image_bytes=data_item.image_bytes,
50
51
  dataset_id=self.dataset_id,
51
52
  labels=labels,
53
+ label_ids=label_ids,
52
54
  geo_info=geo_info,
53
55
  metadata=metadata))
54
56
  else:
@@ -58,6 +60,7 @@ class VisualClassificationDataset(ClarifaiDataset):
58
60
  image_file=image_path,
59
61
  dataset_id=self.dataset_id,
60
62
  labels=labels,
63
+ label_ids=label_ids,
61
64
  geo_info=geo_info,
62
65
  metadata=metadata))
63
66
 
@@ -91,6 +94,12 @@ class VisualDetectionDataset(ClarifaiDataset):
91
94
  metadata = Struct()
92
95
  image = data_item.image_path
93
96
  labels = data_item.labels # list:[l1,...,ln]
97
+ if data_item.label_ids is not None:
98
+ assert len(labels) == len(
99
+ data_item.label_ids), "Length of labels and label_ids must be equal"
100
+ label_ids = data_item.label_ids
101
+ else:
102
+ label_ids = None
94
103
  bboxes = data_item.bboxes # [[xmin,ymin,xmax,ymax],...,[xmin,ymin,xmax,ymax]]
95
104
  input_id = f"{self.dataset_id}-{uuid.uuid4().hex[:8]}" if data_item.id is None else f"{self.dataset_id}-{str(data_item.id)}"
96
105
  if data_item.metadata is not None:
@@ -120,7 +129,11 @@ class VisualDetectionDataset(ClarifaiDataset):
120
129
  # one id could have more than one bbox and label
121
130
  for i in range(len(bboxes)):
122
131
  annotation_protos.append(
123
- Inputs.get_bbox_proto(input_id=input_id, label=labels[i], bbox=bboxes[i]))
132
+ Inputs.get_bbox_proto(
133
+ input_id=input_id,
134
+ label=labels[i],
135
+ bbox=bboxes[i],
136
+ label_id=label_ids[i] if label_ids else None))
124
137
 
125
138
  with ThreadPoolExecutor(max_workers=4) as executor:
126
139
  futures = [executor.submit(process_data_item, id) for id in batch_input_ids]
@@ -152,6 +165,12 @@ class VisualSegmentationDataset(ClarifaiDataset):
152
165
  metadata = Struct()
153
166
  image = data_item.image_path
154
167
  labels = data_item.labels
168
+ if data_item.label_ids is not None:
169
+ assert len(labels) == len(
170
+ data_item.label_ids), "Length of labels and label_ids must be equal"
171
+ label_ids = data_item.label_ids
172
+ else:
173
+ label_ids = None
155
174
  _polygons = data_item.polygons # list of polygons: [[[x,y],...,[x,y]],...]
156
175
  input_id = f"{self.dataset_id}-{uuid.uuid4().hex[:8]}" if data_item.id is None else f"{self.dataset_id}-{str(data_item.id)}"
157
176
  if data_item.metadata is not None:
@@ -183,7 +202,11 @@ class VisualSegmentationDataset(ClarifaiDataset):
183
202
  for i, _polygon in enumerate(_polygons):
184
203
  try:
185
204
  annotation_protos.append(
186
- Inputs.get_mask_proto(input_id=input_id, label=labels[i], polygons=_polygon))
205
+ Inputs.get_mask_proto(
206
+ input_id=input_id,
207
+ label=labels[i],
208
+ polygons=_polygon,
209
+ label_id=label_ids[i] if label_ids else None))
187
210
  except IndexError:
188
211
  continue
189
212
 
@@ -2,12 +2,17 @@
2
2
 
3
3
  import os
4
4
 
5
- from pycocotools.coco import COCO
6
-
7
5
  from clarifai.datasets.upload.base import ClarifaiDataLoader
8
6
 
9
7
  from ..features import VisualClassificationFeatures
10
8
 
9
+ #pycocotools is a dependency for this loader
10
+ try:
11
+ from pycocotools.coco import COCO
12
+ except ImportError:
13
+ raise ImportError("Could not import pycocotools package. "
14
+ "Please do `pip install 'clarifai[all]'` to import pycocotools.")
15
+
11
16
 
12
17
  class COCOCaptionsDataLoader(ClarifaiDataLoader):
13
18
  """COCO Image Captioning Dataset."""
@@ -2,12 +2,17 @@
2
2
 
3
3
  import os
4
4
 
5
- from pycocotools.coco import COCO
6
-
7
5
  from ..base import ClarifaiDataLoader
8
6
 
9
7
  from ..features import VisualDetectionFeatures
10
8
 
9
+ #pycocotools is a dependency for this loader
10
+ try:
11
+ from pycocotools.coco import COCO
12
+ except ImportError:
13
+ raise ImportError("Could not import pycocotools package. "
14
+ "Please do `pip install 'clarifai[all]'` to import pycocotools.")
15
+
11
16
 
12
17
  class COCODetectionDataLoader(ClarifaiDataLoader):
13
18
 
@@ -32,6 +32,7 @@ class TextClassificationDataset(ClarifaiDataset):
32
32
  text = data_item.text
33
33
  labels = data_item.labels if isinstance(data_item.labels,
34
34
  list) else [data_item.labels] # clarifai concept
35
+ label_ids = data_item.label_ids
35
36
  input_id = f"{self.dataset_id}-{id}" if data_item.id is None else f"{self.dataset_id}-{str(data_item.id)}"
36
37
  if data_item.metadata is not None:
37
38
  metadata.update(data_item.metadata)
@@ -43,6 +44,7 @@ class TextClassificationDataset(ClarifaiDataset):
43
44
  raw_text=text,
44
45
  dataset_id=self.dataset_id,
45
46
  labels=labels,
47
+ label_ids=label_ids,
46
48
  metadata=metadata))
47
49
 
48
50
  with ThreadPoolExecutor(max_workers=4) as executor:
clarifai/rag/rag.py CHANGED
@@ -1,5 +1,4 @@
1
1
  import uuid
2
- from datetime import datetime
3
2
  from typing import List
4
3
 
5
4
  import yaml
@@ -76,7 +75,7 @@ class RAG:
76
75
  >>> rag_agent = RAG.setup(app_url=YOUR_APP_URL)
77
76
  >>> rag_agent.chat(messages=[{"role":"human", "content":"What is Clarifai"}])
78
77
  """
79
- now_ts = str(int(datetime.now().timestamp()))
78
+ now_ts = uuid.uuid4().hex[:10]
80
79
  if user_id and not app_url:
81
80
  user = User(user_id=user_id, base_url=base_url, pat=pat)
82
81
  ## Create an App
clarifai/rag/utils.py CHANGED
@@ -111,7 +111,7 @@ def split_document(text: str, chunk_size: int, chunk_overlap: int, **kwargs) ->
111
111
  from llama_index.core.node_parser.text import SentenceSplitter
112
112
  except ImportError:
113
113
  raise ImportError("Could not import llama index package. "
114
- "Please install it with `pip install llama-index-core==0.10.1`.")
114
+ "Please install it with `pip install llama-index-core==0.10.24`.")
115
115
  #document
116
116
  text_parser = SentenceSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap, **kwargs)
117
117
  text_chunks = text_parser.split_text(text)
clarifai/versions.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import os
2
2
 
3
- CLIENT_VERSION = "10.3.1"
3
+ CLIENT_VERSION = "10.3.3"
4
4
  OS_VER = os.sys.platform
5
5
  PYTHON_VERSION = '.'.join(
6
6
  map(str, [os.sys.version_info.major, os.sys.version_info.minor, os.sys.version_info.micro]))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: clarifai
3
- Version: 10.3.1
3
+ Version: 10.3.3
4
4
  Summary: Clarifai Python SDK
5
5
  Home-page: https://github.com/Clarifai/clarifai-python
6
6
  Author: Clarifai
@@ -20,13 +20,13 @@ Classifier: Operating System :: OS Independent
20
20
  Requires-Python: >=3.8
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
- Requires-Dist: clarifai-grpc ~=10.2.3
23
+ Requires-Dist: clarifai-grpc ~=10.3.4
24
24
  Requires-Dist: numpy >=1.22.0
25
25
  Requires-Dist: tqdm >=4.65.0
26
26
  Requires-Dist: tritonclient >=2.34.0
27
27
  Requires-Dist: rich >=13.4.2
28
28
  Requires-Dist: PyYAML >=6.0.1
29
- Requires-Dist: schema >=0.7.5
29
+ Requires-Dist: schema ==0.7.5
30
30
  Requires-Dist: Pillow >=9.5.0
31
31
  Requires-Dist: inquirerpy ==0.3.4
32
32
  Requires-Dist: tabulate >=0.9.0
@@ -164,13 +164,13 @@ dataset = app.create_dataset(dataset_id="demo_dataset")
164
164
  # execute data upload to Clarifai app dataset
165
165
  from clarifai.datasets.upload.laoders.coco_detection import COCODetectionDataLoader
166
166
  coco_dataloader = COCODetectionDataLoader("images_dir", "coco_annotation_filepath")
167
- dataset.upload_dataset(dataloader=coco_dataloader, get_upload_status=True, log_warnings =True)
167
+ dataset.upload_dataset(dataloader=coco_dataloader, get_upload_status=True)
168
168
 
169
169
 
170
170
  #Try upload and record the failed outputs in log file.
171
171
  from clarifai.datasets.upload.utils import load_module_dataloader
172
172
  cifar_dataloader = load_module_dataloader('./image_classification/cifar10')
173
- dataset.upload_dataset(dataloader=cifar_dataloader, get_upload_status=True, log_warnings =True)
173
+ dataset.upload_dataset(dataloader=cifar_dataloader, log_warnings =True)
174
174
 
175
175
  #Retry upload from logs for `upload_dataset`
176
176
  dataset.retry_upload_from_logs(dataloader=cifar_dataloader, log_file_path='log_file.log',
@@ -1,14 +1,14 @@
1
1
  clarifai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  clarifai/cli.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  clarifai/errors.py,sha256=RwzTajwds51wLD0MVlMC5kcpBnzRpreDLlazPSBZxrg,2605
4
- clarifai/versions.py,sha256=0DxvOu6Zr5V6gI_9KEuXAjd5zwiAchg1uRPSUFUjwDA,186
4
+ clarifai/versions.py,sha256=o52vXofZC1oBgGfcOiA3rcSbaktIkvy-fWxZsri2mis,186
5
5
  clarifai/client/__init__.py,sha256=xI1U0l5AZdRThvQAXCLsd9axxyFzXXJ22m8LHqVjQRU,662
6
6
  clarifai/client/app.py,sha256=LC3rnuqr97f-S7LsJ9Q7KZnYMBHGDAq4mcFjjcPjpqo,27240
7
7
  clarifai/client/base.py,sha256=FrnSY9tSxjTxhABfBzQz5-PEppWMPbIyvSNnx8mVz8s,6919
8
8
  clarifai/client/dataset.py,sha256=wKDpON8kbOXpbfOkre5EYKXT4zEX-5xu9LgtORNuhog,29903
9
- clarifai/client/input.py,sha256=hPCMj4f2YQhXKz4ziDDoWqMVhN88JprVm0sMhKkStEI,40574
9
+ clarifai/client/input.py,sha256=Av_gPrmwa1vorDs5Pz9jUbY1MwXHYFb3NyF_a1S1aII,41630
10
10
  clarifai/client/lister.py,sha256=03KGMvs5RVyYqxLsSrWhNc34I8kiF1Ph0NeyEwu7nMU,2082
11
- clarifai/client/model.py,sha256=tWk8Q7ZAFI7MM6-L0k0X5e2E2OeYTodHaos_b1miM1Y,57520
11
+ clarifai/client/model.py,sha256=QTVSeR3D3SHh8rK6kWHATy87qS8khYeXIKbs9dn5W4I,58487
12
12
  clarifai/client/module.py,sha256=360JaOasX0DZCNE_Trj0LNTr-T_tUDZLfGpz0CdIi78,4248
13
13
  clarifai/client/search.py,sha256=iwZqwuEodbjIOEPMIjpic8caFGg3u51RK816pr-574o,14964
14
14
  clarifai/client/user.py,sha256=EQTeotfYTNedGcbTICYOUJqKgWhfVHvaMRTJ1hdoIdQ,10372
@@ -19,7 +19,7 @@ clarifai/client/auth/register.py,sha256=2CMdBsoVLoTfjyksE6j7BM2tiEc73WKYvxnwDDgN
19
19
  clarifai/client/auth/stub.py,sha256=KIzJZ8aRB1RzXJeWHDAx19HNdBsblPPHwYLfAkgI3rY,3779
20
20
  clarifai/constants/dataset.py,sha256=OXYirr0iaoN_47V6wxO0H6ptV81y8zNGapPBz9qqD8o,516
21
21
  clarifai/constants/input.py,sha256=WcHwToUVIK9ItAhDefaSohQHCLNeR55PSjZ0BFnoZ3U,28
22
- clarifai/constants/model.py,sha256=LsMkLVkuBpfS4j4yDW9M4O7HxzRpIuSo9qU5T8Wg2Co,217
22
+ clarifai/constants/model.py,sha256=oTad43ncskVHfQ9vEbL2yy0Fac666dXr7QuO8zZXHAE,245
23
23
  clarifai/constants/rag.py,sha256=WcHwToUVIK9ItAhDefaSohQHCLNeR55PSjZ0BFnoZ3U,28
24
24
  clarifai/constants/search.py,sha256=yYEqTaFg-KdnpJE_Ytp-EPVHIIC395iNtZrpVlLIf4o,101
25
25
  clarifai/constants/workflow.py,sha256=cECq1xdvf44MCdtK2AbkiuuwhyL-6OWZdQfYbsLKy_o,33
@@ -28,14 +28,14 @@ clarifai/datasets/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
28
28
  clarifai/datasets/export/inputs_annotations.py,sha256=3Bv6JsPzSeGEEJlkF1KR8qDHc_QyHF0ddvHfSiB5Pjc,9479
29
29
  clarifai/datasets/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
30
  clarifai/datasets/upload/base.py,sha256=IP4sdBRfThk2l0W1rDWciFrAJnKwVsM-gu4zEslJ2_E,2198
31
- clarifai/datasets/upload/features.py,sha256=KeVxO36WrL3uqWCN_-aex1k28C5ZRTm6G8SmTtus6KA,1571
32
- clarifai/datasets/upload/image.py,sha256=Dlt0RM9qWSi4NcbVM1EjS1sp8zfIO3xWZS6TSSLAbVY,7481
33
- clarifai/datasets/upload/text.py,sha256=ek29V18x5LqmHqc-nmAljQcud9uRjZx8IV_lDX78zsY,1980
31
+ clarifai/datasets/upload/features.py,sha256=oq0PGpAw8LEafiSkdMMl0yn-NJeZ7K_CKzpJ71b0H40,1731
32
+ clarifai/datasets/upload/image.py,sha256=pNFTThEVGIK9RNIsUuSSQE59LfO-tKkhsXSR7CONAEg,8293
33
+ clarifai/datasets/upload/text.py,sha256=CeyH0OzxdHzYj-neZzzRCXrcQCtanaKC8B3qH8Sg_gw,2053
34
34
  clarifai/datasets/upload/utils.py,sha256=h7mtN9FZXhQQbf47EXczgb-NTY2uOE9AJlE9u4-hDwI,9627
35
35
  clarifai/datasets/upload/loaders/README.md,sha256=aNRutSCTzLp2ruIZx74ZkN5AxpzwKOxMa7OzabnKpwg,2980
36
36
  clarifai/datasets/upload/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- clarifai/datasets/upload/loaders/coco_captions.py,sha256=t-IaIXukDk1mFdeeqdwe0hLrBLuaF-cZWl2aumGUAls,1297
38
- clarifai/datasets/upload/loaders/coco_detection.py,sha256=dBYl2a1D7e-N1heXbFK0bImJAuq_lPQ8nxZMa1zq-Ts,2612
37
+ clarifai/datasets/upload/loaders/coco_captions.py,sha256=YfuNXplbdoH8N9ph7RyN9MfJTtOcJBG4ie1ow6-mELA,1516
38
+ clarifai/datasets/upload/loaders/coco_detection.py,sha256=_I_yThw435KS9SH7zheBbJDK3zFgjTImBsES__ijjMk,2831
39
39
  clarifai/datasets/upload/loaders/imagenet_classification.py,sha256=LuylazxpI5V8fAPGCUxDirGpYMfxzRxix-MEWaCvwxI,1895
40
40
  clarifai/datasets/upload/loaders/xview_detection.py,sha256=hk8cZdYZimm4KOaZvBjYcC6ikURZMn51xmn7pXZT3HE,6052
41
41
  clarifai/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -90,8 +90,8 @@ clarifai/modules/css.py,sha256=kadCEunmyh5h2yf0-4aysE3ZcZ6qaQcxuAgDXS96yF8,2020
90
90
  clarifai/modules/pages.py,sha256=iOoM3RNRMgXlV0qBqcdQofxoXo2RuRQh0h9c9BIS0-I,1383
91
91
  clarifai/modules/style.css,sha256=j7FNPZVhLPj35vvBksAJ90RuX5sLuqzDR5iM2WIEhiA,6073
92
92
  clarifai/rag/__init__.py,sha256=wu3PzAzo7uqgrEzuaC9lY_3gj1HFiR3GU3elZIKTT5g,40
93
- clarifai/rag/rag.py,sha256=CXhfArp0VmZcOFNTymwWT9JGeKfTKGjD-hcA50w0LgE,12401
94
- clarifai/rag/utils.py,sha256=vzYL088hRAXB5hL7zDIaJsniCmIDdZsBEWObX_CqijM,4069
93
+ clarifai/rag/rag.py,sha256=ySKI4ChHTJSj3nOL9gfOuZ-0hZTfHFZXVJaO6pX0KkM,12356
94
+ clarifai/rag/utils.py,sha256=yr1jAcbpws4vFGBqlAwPPE7v1DRba48g8gixLFw8OhQ,4070
95
95
  clarifai/schema/search.py,sha256=JjTi8ammJgZZ2OGl4K6tIA4zEJ1Fr2ASZARXavI1j5c,2448
96
96
  clarifai/urls/helper.py,sha256=tjoMGGHuWX68DUB0pk4MEjrmFsClUAQj2jmVEM_Sy78,4751
97
97
  clarifai/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -106,9 +106,9 @@ clarifai/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
106
106
  clarifai/workflows/export.py,sha256=vICRhIreqDSShxLKjHNM2JwzKsf1B4fdXB0ciMcA70k,1945
107
107
  clarifai/workflows/utils.py,sha256=nGeB_yjVgUO9kOeKTg4OBBaBz-AwXI3m-huSVj-9W18,1924
108
108
  clarifai/workflows/validate.py,sha256=yJq03MaJqi5AK3alKGJJBR89xmmjAQ31sVufJUiOqY8,2556
109
- clarifai-10.3.1.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
110
- clarifai-10.3.1.dist-info/METADATA,sha256=U_yh7_kWKBwjXYYivX5KHdwFcMwWkqIh307gqP6L25M,19220
111
- clarifai-10.3.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
112
- clarifai-10.3.1.dist-info/entry_points.txt,sha256=qZOr_MIPG0dBBE1zringDJS_wXNGTAA_SQ-zcbmDHOw,82
113
- clarifai-10.3.1.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
114
- clarifai-10.3.1.dist-info/RECORD,,
109
+ clarifai-10.3.3.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
110
+ clarifai-10.3.3.dist-info/METADATA,sha256=_DucjDZoou8UlkC_FT4zhlWZl_emaag4d6jd3ad-IfA,19176
111
+ clarifai-10.3.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
112
+ clarifai-10.3.3.dist-info/entry_points.txt,sha256=qZOr_MIPG0dBBE1zringDJS_wXNGTAA_SQ-zcbmDHOw,82
113
+ clarifai-10.3.3.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
114
+ clarifai-10.3.3.dist-info/RECORD,,