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 +32 -9
 - clarifai/client/model.py +42 -27
 - clarifai/constants/model.py +1 -0
 - clarifai/datasets/upload/features.py +4 -0
 - clarifai/datasets/upload/image.py +25 -2
 - clarifai/datasets/upload/loaders/coco_captions.py +7 -2
 - clarifai/datasets/upload/loaders/coco_detection.py +7 -2
 - clarifai/datasets/upload/text.py +2 -0
 - clarifai/rag/rag.py +1 -2
 - clarifai/rag/utils.py +1 -1
 - clarifai/versions.py +1 -1
 - {clarifai-10.3.1.dist-info → clarifai-10.3.3.dist-info}/METADATA +5 -5
 - {clarifai-10.3.1.dist-info → clarifai-10.3.3.dist-info}/RECORD +17 -17
 - {clarifai-10.3.1.dist-info → clarifai-10.3.3.dist-info}/LICENSE +0 -0
 - {clarifai-10.3.1.dist-info → clarifai-10.3.3.dist-info}/WHEEL +0 -0
 - {clarifai-10.3.1.dist-info → clarifai-10.3.3.dist-info}/entry_points.txt +0 -0
 - {clarifai-10.3.1.dist-info → clarifai-10.3.3.dist-info}/top_level.txt +0 -0
 
    
        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  
     | 
| 
      
 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 
     | 
    
         
            -
                 
     | 
| 
      
 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 
     | 
    
         
            -
                    ] 
     | 
| 
      
 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]] 
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
      
 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 
     | 
| 
      
 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,  
     | 
| 
      
 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):  
     | 
| 
      
 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 
     | 
    
         
            -
                 
     | 
| 
       961 
     | 
    
         
            -
                   
     | 
| 
       962 
     | 
    
         
            -
                    os. 
     | 
| 
       963 
     | 
    
         
            -
             
     | 
| 
       964 
     | 
    
         
            -
                   
     | 
| 
      
 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}  
     | 
| 
      
 1017 
     | 
    
         
            +
                      f"Export process has started for Model ID {self.id}, Version {self.model_info.model_version.id}"
         
     | 
| 
       1014 
1018 
     | 
    
         
             
                  )
         
     | 
| 
       1015 
     | 
    
         
            -
                   
     | 
| 
       1016 
     | 
    
         
            -
             
     | 
| 
       1017 
     | 
    
         
            -
             
     | 
| 
       1018 
     | 
    
         
            -
             
     | 
| 
       1019 
     | 
    
         
            -
             
     | 
| 
       1020 
     | 
    
         
            -
             
     | 
| 
       1021 
     | 
    
         
            -
                             
     | 
| 
       1022 
     | 
    
         
            -
             
     | 
| 
       1023 
     | 
    
         
            -
             
     | 
| 
       1024 
     | 
    
         
            -
             
     | 
| 
       1025 
     | 
    
         
            -
             
     | 
| 
       1026 
     | 
    
         
            -
             
     | 
| 
       1027 
     | 
    
         
            -
                       
     | 
| 
       1028 
     | 
    
         
            -
             
     | 
| 
       1029 
     | 
    
         
            -
             
     | 
| 
       1030 
     | 
    
         
            -
                       
     | 
| 
       1031 
     | 
    
         
            -
             
     | 
| 
       1032 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
            -
                   
     | 
| 
      
 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,
         
     | 
    
        clarifai/constants/model.py
    CHANGED
    
    
| 
         @@ -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( 
     | 
| 
      
 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( 
     | 
| 
      
 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 
     | 
    
         | 
    
        clarifai/datasets/upload/text.py
    CHANGED
    
    | 
         @@ -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 =  
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
    
         
             
            Metadata-Version: 2.1
         
     | 
| 
       2 
2 
     | 
    
         
             
            Name: clarifai
         
     | 
| 
       3 
     | 
    
         
            -
            Version: 10.3. 
     | 
| 
      
 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. 
     | 
| 
      
 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  
     | 
| 
      
 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 
     | 
| 
      
 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,  
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
       32 
     | 
    
         
            -
            clarifai/datasets/upload/image.py,sha256= 
     | 
| 
       33 
     | 
    
         
            -
            clarifai/datasets/upload/text.py,sha256= 
     | 
| 
      
 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= 
     | 
| 
       38 
     | 
    
         
            -
            clarifai/datasets/upload/loaders/coco_detection.py,sha256= 
     | 
| 
      
 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= 
     | 
| 
       94 
     | 
    
         
            -
            clarifai/rag/utils.py,sha256= 
     | 
| 
      
 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. 
     | 
| 
       110 
     | 
    
         
            -
            clarifai-10.3. 
     | 
| 
       111 
     | 
    
         
            -
            clarifai-10.3. 
     | 
| 
       112 
     | 
    
         
            -
            clarifai-10.3. 
     | 
| 
       113 
     | 
    
         
            -
            clarifai-10.3. 
     | 
| 
       114 
     | 
    
         
            -
            clarifai-10.3. 
     | 
| 
      
 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,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |