clarifai 10.5.2__py3-none-any.whl → 10.5.4__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.
@@ -5,6 +5,7 @@ from urllib.parse import urlparse
5
5
 
6
6
  from clarifai_grpc.channel.clarifai_channel import ClarifaiChannel
7
7
  from clarifai_grpc.grpc.api import resources_pb2, service_pb2_grpc
8
+ from clarifai.utils.constants import CLARIFAI_PAT_ENV_VAR, CLARIFAI_SESSION_TOKEN_ENV_VAR
8
9
 
9
10
  DEFAULT_BASE = "https://api.clarifai.com"
10
11
  DEFAULT_UI = "https://clarifai.com"
@@ -237,8 +238,8 @@ Additionally, these optional params are supported:
237
238
  """
238
239
  user_id = os.environ.get("CLARIFAI_USER_ID", "")
239
240
  app_id = os.environ.get("CLARIFAI_APP_ID", "")
240
- token = os.environ.get("CLARIFAI_SESSION_TOKEN", "")
241
- pat = os.environ.get("CLARIFAI_PAT", "")
241
+ token = os.environ.get(CLARIFAI_SESSION_TOKEN_ENV_VAR, "")
242
+ pat = os.environ.get(CLARIFAI_PAT_ENV_VAR, "")
242
243
  base = os.environ.get("CLARIFAI_API_BASE", DEFAULT_BASE)
243
244
  ui = os.environ.get("CLARIFAI_UI", DEFAULT_UI)
244
245
  root_certificates_path = os.environ.get("CLARIFAI_ROOT_CERTIFICATES_PATH", None)
clarifai/client/input.py CHANGED
@@ -65,7 +65,7 @@ class Inputs(Lister, BaseClient):
65
65
 
66
66
  @staticmethod
67
67
  def _get_proto(input_id: str,
68
- dataset_id: Union[str, None],
68
+ dataset_id: str = None,
69
69
  imagepb: Image = None,
70
70
  video_pb: Video = None,
71
71
  audio_pb: Audio = None,
@@ -481,7 +481,11 @@ class Inputs(Lister, BaseClient):
481
481
  return input_protos
482
482
 
483
483
  @staticmethod
484
- def get_bbox_proto(input_id: str, label: str, bbox: List, label_id: str = None) -> Annotation:
484
+ def get_bbox_proto(input_id: str,
485
+ label: str,
486
+ bbox: List,
487
+ label_id: str = None,
488
+ annot_id: str = None) -> Annotation:
485
489
  """Create an annotation proto for each bounding box, label input pair.
486
490
 
487
491
  Args:
@@ -489,6 +493,7 @@ class Inputs(Lister, BaseClient):
489
493
  label (str): annotation label name
490
494
  bbox (List): a list of a single bbox's coordinates. # bbox ordering: [xmin, ymin, xmax, ymax]
491
495
  label_id (str): annotation label ID
496
+ annot_id (str): annotation ID
492
497
 
493
498
  Returns:
494
499
  An annotation object for the specified input ID.
@@ -499,31 +504,35 @@ class Inputs(Lister, BaseClient):
499
504
  """
500
505
  if not isinstance(bbox, list):
501
506
  raise UserError("must be a list of bbox cooridnates")
502
- input_annot_proto = resources_pb2.Annotation(
503
- input_id=input_id,
504
- data=resources_pb2.Data(regions=[
505
- resources_pb2.Region(
506
- region_info=resources_pb2.RegionInfo(bounding_box=resources_pb2.BoundingBox(
507
- # bbox ordering: [xmin, ymin, xmax, ymax]
508
- # top_row must be less than bottom row
509
- # left_col must be less than right col
510
- top_row=bbox[1], #y_min
511
- left_col=bbox[0], #x_min
512
- bottom_row=bbox[3], #y_max
513
- right_col=bbox[2] #x_max
514
- )),
515
- data=resources_pb2.Data(concepts=[
516
- resources_pb2.Concept(
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.)
519
- ]))
520
- ]))
507
+ annot_data = resources_pb2.Data(regions=[
508
+ resources_pb2.Region(
509
+ region_info=resources_pb2.RegionInfo(bounding_box=resources_pb2.BoundingBox(
510
+ # bbox ordering: [xmin, ymin, xmax, ymax]
511
+ # top_row must be less than bottom row
512
+ # left_col must be less than right col
513
+ top_row=bbox[1], #y_min
514
+ left_col=bbox[0], #x_min
515
+ bottom_row=bbox[3], #y_max
516
+ right_col=bbox[2] #x_max
517
+ )),
518
+ data=resources_pb2.Data(concepts=[
519
+ resources_pb2.Concept(id=f"id-{''.join(label.split(' '))}", name=label, value=1.)
520
+ if not label_id else resources_pb2.Concept(id=label_id, name=label, value=1.)
521
+ ]))
522
+ ])
523
+ if annot_id:
524
+ input_annot_proto = resources_pb2.Annotation(id=annot_id, input_id=input_id, data=annot_data)
525
+ else:
526
+ input_annot_proto = resources_pb2.Annotation(input_id=input_id, data=annot_data)
521
527
 
522
528
  return input_annot_proto
523
529
 
524
530
  @staticmethod
525
- def get_mask_proto(input_id: str, label: str, polygons: List[List[float]],
526
- label_id: str = None) -> Annotation:
531
+ def get_mask_proto(input_id: str,
532
+ label: str,
533
+ polygons: List[List[float]],
534
+ label_id: str = None,
535
+ annot_id: str = None) -> Annotation:
527
536
  """Create an annotation proto for each polygon box, label input pair.
528
537
 
529
538
  Args:
@@ -531,6 +540,7 @@ class Inputs(Lister, BaseClient):
531
540
  label (str): annotation label name
532
541
  polygons (List): Polygon x,y points iterable
533
542
  label_id (str): annotation label ID
543
+ annot_id (str): annotation ID
534
544
 
535
545
  Returns:
536
546
  An annotation object for the specified input ID.
@@ -541,23 +551,24 @@ class Inputs(Lister, BaseClient):
541
551
  """
542
552
  if not isinstance(polygons, list):
543
553
  raise UserError("polygons must be a list of points")
544
- input_mask_proto = resources_pb2.Annotation(
545
- input_id=input_id,
546
- data=resources_pb2.Data(regions=[
547
- resources_pb2.Region(
548
- region_info=resources_pb2.RegionInfo(polygon=resources_pb2.Polygon(
549
- points=[
550
- resources_pb2.Point(
551
- row=_point[1], # row is y point
552
- col=_point[0], # col is x point
553
- visibility="VISIBLE") for _point in polygons
554
- ])),
555
- data=resources_pb2.Data(concepts=[
556
- resources_pb2.Concept(
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.)
559
- ]))
560
- ]))
554
+ annot_data = resources_pb2.Data(regions=[
555
+ resources_pb2.Region(
556
+ region_info=resources_pb2.RegionInfo(polygon=resources_pb2.Polygon(
557
+ points=[
558
+ resources_pb2.Point(
559
+ row=_point[1], # row is y point
560
+ col=_point[0], # col is x point
561
+ visibility="VISIBLE") for _point in polygons
562
+ ])),
563
+ data=resources_pb2.Data(concepts=[
564
+ resources_pb2.Concept(id=f"id-{''.join(label.split(' '))}", name=label, value=1.)
565
+ if not label_id else resources_pb2.Concept(id=label_id, name=label, value=1.)
566
+ ]))
567
+ ])
568
+ if annot_id:
569
+ input_mask_proto = resources_pb2.Annotation(id=annot_id, input_id=input_id, data=annot_data)
570
+ else:
571
+ input_mask_proto = resources_pb2.Annotation(input_id=input_id, data=annot_data)
561
572
 
562
573
  return input_mask_proto
563
574
 
@@ -707,7 +718,7 @@ class Inputs(Lister, BaseClient):
707
718
 
708
719
  return input_job_id, response
709
720
 
710
- def patch_inputs(self, inputs: List[Input], action: str = 'merge') -> str:
721
+ def patch_inputs(self, inputs: List[Input], action: str = 'merge') -> None:
711
722
  """Patch list of input objects to the app.
712
723
 
713
724
  Args:
@@ -719,7 +730,6 @@ class Inputs(Lister, BaseClient):
719
730
  """
720
731
  if not isinstance(inputs, list):
721
732
  raise UserError("inputs must be a list of Input objects")
722
- uuid.uuid4().hex # generate a unique id for this job
723
733
  request = service_pb2.PatchInputsRequest(
724
734
  user_app_id=self.user_app_id, inputs=inputs, action=action)
725
735
  response = self._grpc_request(self.STUB.PatchInputs, request)
@@ -727,9 +737,9 @@ class Inputs(Lister, BaseClient):
727
737
  try:
728
738
  self.logger.warning(f"Patch inputs failed, status: {response.annotations[0].status}")
729
739
  except Exception:
730
- self.logger.warning(f"Patch inputs failed, status: {response.status.details}")
731
-
732
- self.logger.info("\nPatch Inputs Successful\n%s", response.status)
740
+ self.logger.warning(f"Patch inputs failed, status: {response.status}")
741
+ else:
742
+ self.logger.info("\nPatch Inputs Successful\n%s", response.status)
733
743
 
734
744
  def upload_annotations(self, batch_annot: List[resources_pb2.Annotation], show_log: bool = True
735
745
  ) -> Union[List[resources_pb2.Annotation], List[None]]:
@@ -761,6 +771,67 @@ class Inputs(Lister, BaseClient):
761
771
 
762
772
  return retry_upload
763
773
 
774
+ def patch_annotations(self, batch_annot: List[resources_pb2.Annotation],
775
+ action: str = 'merge') -> None:
776
+ """Patch image annotations to app.
777
+
778
+ Args:
779
+ batch_annot: annot batch protos
780
+ action (str): Action to perform on the input. Options: 'merge', 'overwrite', 'remove'.
781
+
782
+ """
783
+ if not isinstance(batch_annot, list):
784
+ raise UserError("batch_annot must be a list of Annotation objects")
785
+ request = service_pb2.PatchAnnotationsRequest(
786
+ user_app_id=self.user_app_id, annotations=batch_annot, action=action)
787
+ response = self._grpc_request(self.STUB.PatchAnnotations, request)
788
+ response_dict = MessageToDict(response)
789
+ if response.status.code != status_code_pb2.SUCCESS:
790
+ try:
791
+ for annot in response_dict["annotations"]:
792
+ if annot['status']['code'] != status_code_pb2.ANNOTATION_SUCCESS:
793
+ self.logger.warning(f"Patch annotations failed, status: {annot['status']}")
794
+ except Exception:
795
+ self.logger.warning(f"Patch annotations failed due to {response.status}")
796
+ else:
797
+ self.logger.info("\nPatch Annotations Uploaded Successful\n%s", response.status)
798
+
799
+ def patch_concepts(self,
800
+ concept_ids: List[str],
801
+ labels: List[str] = [],
802
+ values: List[float] = [],
803
+ action: str = 'overwrite') -> None:
804
+ """Patch concepts to app.
805
+
806
+ Args:
807
+ concept_ids: A list of concept
808
+ labels: A list of label names
809
+ values: concept value
810
+ action (str): Action to perform on the input. Options: 'overwrite'.
811
+
812
+ """
813
+ if not labels:
814
+ labels = list(concept_ids)
815
+ if values:
816
+ concepts=[
817
+ resources_pb2.Concept(
818
+ id=concept_id, name=label, value=value)\
819
+ for concept_id, label, value in zip(concept_ids, labels, values)
820
+ ]
821
+ else:
822
+ concepts=[
823
+ resources_pb2.Concept(
824
+ id=concept_id, name=label, value=1.)\
825
+ for concept_id, label in zip(concept_ids, labels)
826
+ ]
827
+ request = service_pb2.PatchConceptsRequest(
828
+ user_app_id=self.user_app_id, concepts=concepts, action=action)
829
+ response = self._grpc_request(self.STUB.PatchConcepts, request)
830
+ if response.status.code != status_code_pb2.SUCCESS:
831
+ self.logger.warning(f"Patch Concepts failed, status: {response.status.details}")
832
+ else:
833
+ self.logger.info("\nPatch Concepts Successful\n%s", response.status)
834
+
764
835
  def _upload_batch(self, inputs: List[Input]) -> List[Input]:
765
836
  """Upload a batch of input objects to the app.
766
837
 
@@ -22,3 +22,5 @@ TASK_TO_ANNOTATION_TYPE = {
22
22
  }
23
23
 
24
24
  MAX_RETRIES = 2
25
+
26
+ CONTENT_TYPE = {"json": "application/json", "zip": "application/zip"}
@@ -12,6 +12,7 @@ from google.protobuf.json_format import MessageToDict
12
12
  from PIL import ImageFile
13
13
  from tqdm import tqdm
14
14
 
15
+ from clarifai.constants.dataset import CONTENT_TYPE
15
16
  from clarifai.errors import UserError
16
17
  from clarifai.utils.logging import get_logger
17
18
 
@@ -61,8 +62,11 @@ class DatasetExportReader:
61
62
  def _download_temp_archive(self, archive_url: str,
62
63
  chunk_size: int = 128) -> tempfile.TemporaryFile:
63
64
  """Downloads the temp archive of InputBatches."""
64
- session = requests.Session()
65
- r = session.get(archive_url, stream=True)
65
+ r = self.session.get(archive_url, stream=True)
66
+ if r.headers['content-type'] == CONTENT_TYPE['json']:
67
+ raise Exception("File is a json file :\n {}".format(r.json()))
68
+ elif r.headers['content-type'] != CONTENT_TYPE['zip']:
69
+ raise Exception('File is not a zip file')
66
70
  temp_file = tempfile.TemporaryFile()
67
71
  for chunk in r.iter_content(chunk_size=chunk_size):
68
72
  temp_file.write(chunk)
@@ -1,6 +1,6 @@
1
1
  import argparse
2
2
 
3
- from clarifai.utils.constants import CLARIFAI_PAT_PATH
3
+ from clarifai.models.model_serving.constants import CLARIFAI_PAT_PATH
4
4
  from ..utils import _persist_pat
5
5
  from .base import BaseClarifaiCli
6
6
 
@@ -1,13 +1,20 @@
1
1
  import os
2
2
 
3
- from clarifai.utils.constants import CLARIFAI_HOME
4
-
5
3
  MAX_HW_DIM = 1024
6
4
  IMAGE_TENSOR_NAME = "image"
7
5
  TEXT_TENSOR_NAME = "text"
8
6
 
9
7
  BUILT_MODEL_EXT = ".clarifai"
10
8
 
9
+ USER_CACHE_DIR = os.path.join(os.path.expanduser("~"), ".cache")
10
+ CLARIFAI_HOME = os.path.expanduser(
11
+ os.getenv(
12
+ "CLARIFAI_HOME",
13
+ os.path.join(os.getenv("XDG_CACHE_HOME", USER_CACHE_DIR), "clarifai"),
14
+ ))
15
+ os.makedirs(CLARIFAI_HOME, exist_ok=True)
16
+ CLARIFAI_PAT_PATH = os.path.join(CLARIFAI_HOME, "pat")
17
+
11
18
  CLARIFAI_EXAMPLES_REPO = "https://github.com/Clarifai/examples.git"
12
19
  repo_name = CLARIFAI_EXAMPLES_REPO.split("/")[-1].replace(".git", "")
13
20
  CLARIFAI_EXAMPLES_REPO_PATH = os.path.join(CLARIFAI_HOME, repo_name)
@@ -1,6 +1,7 @@
1
1
  import os
2
2
 
3
- from clarifai.utils.constants import CLARIFAI_PAT_ENV_VAR, CLARIFAI_PAT_PATH
3
+ from clarifai.models.model_serving.constants import CLARIFAI_PAT_PATH
4
+ from clarifai.utils.constants import CLARIFAI_PAT_ENV_VAR
4
5
 
5
6
 
6
7
  def _persist_pat(pat: str):
clarifai/rag/rag.py CHANGED
@@ -14,7 +14,9 @@ from clarifai.constants.rag import MAX_UPLOAD_BATCH_SIZE
14
14
  from clarifai.errors import UserError
15
15
  from clarifai.rag.utils import (convert_messages_to_str, format_assistant_message, load_documents,
16
16
  split_document)
17
+ from clarifai.utils.constants import CLARIFAI_USER_ID_ENV_VAR
17
18
  from clarifai.utils.logging import get_logger
19
+ from clarifai.utils.misc import get_from_dict_or_env
18
20
 
19
21
  DEFAULT_RAG_PROMPT_TEMPLATE = "Context information is below:\n{data.hits}\nGiven the context information and not prior knowledge, answer the query.\nQuery: {data.text.raw}\nAnswer: "
20
22
 
@@ -75,6 +77,12 @@ class RAG:
75
77
  >>> rag_agent = RAG.setup(app_url=YOUR_APP_URL)
76
78
  >>> rag_agent.chat(messages=[{"role":"human", "content":"What is Clarifai"}])
77
79
  """
80
+ if not app_url:
81
+ try:
82
+ user_id = get_from_dict_or_env(key="user_id", env_key=CLARIFAI_USER_ID_ENV_VAR, **kwargs)
83
+ except Exception:
84
+ pass
85
+
78
86
  now_ts = uuid.uuid4().hex[:10]
79
87
  if user_id and not app_url:
80
88
  user = User(user_id=user_id, base_url=base_url, pat=pat)
@@ -1,12 +1,3 @@
1
- import os
2
-
3
- USER_CACHE_DIR = os.path.join(os.path.expanduser("~"), ".cache")
4
- CLARIFAI_HOME = os.path.expanduser(
5
- os.getenv(
6
- "CLARIFAI_HOME",
7
- os.path.join(os.getenv("XDG_CACHE_HOME", USER_CACHE_DIR), "clarifai"),
8
- ))
9
- os.makedirs(CLARIFAI_HOME, exist_ok=True)
10
- CLARIFAI_PAT_PATH = os.path.join(CLARIFAI_HOME, "pat")
11
1
  CLARIFAI_PAT_ENV_VAR = "CLARIFAI_PAT"
12
2
  CLARIFAI_SESSION_TOKEN_ENV_VAR = "CLARIFAI_SESSION_TOKEN"
3
+ CLARIFAI_USER_ID_ENV_VAR = "CLARIFAI_USER_ID"
clarifai/utils/logging.py CHANGED
@@ -3,6 +3,7 @@ from collections import defaultdict
3
3
  from typing import Dict, List, Optional, Union
4
4
 
5
5
  from rich import print as rprint
6
+ from rich.console import Console
6
7
  from rich.logging import RichHandler
7
8
  from rich.table import Table
8
9
  from rich.traceback import install
@@ -84,7 +85,8 @@ def _configure_logger(name: str, logger_level: Union[int, str] = logging.NOTSET)
84
85
  logger.removeHandler(handler)
85
86
 
86
87
  # Add the new rich handler and formatter
87
- handler = RichHandler(rich_tracebacks=True, log_time_format="%Y-%m-%d %H:%M:%S")
88
+ handler = RichHandler(
89
+ rich_tracebacks=True, log_time_format="%Y-%m-%d %H:%M:%S", console=Console(width=255))
88
90
  formatter = logging.Formatter('%(name)s: %(message)s')
89
91
  handler.setFormatter(formatter)
90
92
  logger.addHandler(handler)
clarifai/versions.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import os
2
2
 
3
- CLIENT_VERSION = "10.5.2"
3
+ CLIENT_VERSION = "10.5.4"
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.5.2
3
+ Version: 10.5.4
4
4
  Summary: Clarifai Python SDK
5
5
  Home-page: https://github.com/Clarifai/clarifai-python
6
6
  Author: Clarifai
@@ -1,12 +1,12 @@
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=hU44Ye7EVL3OtGN9PTs5iRbil8Q1X1QEAAPiQD1QOao,186
4
+ clarifai/versions.py,sha256=_ce_y-64EmSRIfWAk92G7sa7D3E2Wk4HRM5Sh2iBBTo,186
5
5
  clarifai/client/__init__.py,sha256=xI1U0l5AZdRThvQAXCLsd9axxyFzXXJ22m8LHqVjQRU,662
6
6
  clarifai/client/app.py,sha256=br3C2paGmWzKu4eG0kUN1m8kDPKqpGPq28f7Xiy2v54,27329
7
7
  clarifai/client/base.py,sha256=wStnn_gS6sYo36OlYRzEkOFShXOQg3DKUp8i6DomAxQ,7178
8
8
  clarifai/client/dataset.py,sha256=XX-J-9Ict1CQrEycq-JbdxUTuucSgLeDSvnlHE1ucQY,29903
9
- clarifai/client/input.py,sha256=Av_gPrmwa1vorDs5Pz9jUbY1MwXHYFb3NyF_a1S1aII,41630
9
+ clarifai/client/input.py,sha256=ZLqa1jGx4NgCbunOTpJxCq4lDQ5xAf4GQ0rsZY8AHCM,44456
10
10
  clarifai/client/lister.py,sha256=03KGMvs5RVyYqxLsSrWhNc34I8kiF1Ph0NeyEwu7nMU,2082
11
11
  clarifai/client/model.py,sha256=Q0XEOWaZvSFPx7cLp4xJcwV5SVD1iU_6-DdDJmF-Hfk,72623
12
12
  clarifai/client/module.py,sha256=360JaOasX0DZCNE_Trj0LNTr-T_tUDZLfGpz0CdIi78,4248
@@ -14,10 +14,10 @@ clarifai/client/search.py,sha256=iwZqwuEodbjIOEPMIjpic8caFGg3u51RK816pr-574o,149
14
14
  clarifai/client/user.py,sha256=EQTeotfYTNedGcbTICYOUJqKgWhfVHvaMRTJ1hdoIdQ,10372
15
15
  clarifai/client/workflow.py,sha256=e3axkhU6c6WcxK9P5tgmnV464k-afslSzsSXx6nSMgA,10560
16
16
  clarifai/client/auth/__init__.py,sha256=7EwR0NrozkAUwpUnCsqXvE_p0wqx_SelXlSpKShKJK0,136
17
- clarifai/client/auth/helper.py,sha256=5aH2OjiWyuJk2K-1mfvXaD_OxEC014JEilUCpTwzCuY,14081
17
+ clarifai/client/auth/helper.py,sha256=hqwI7Zlsvivc-O9aAdtxyJT3zkpuMvbxjRaiCTsWYGk,14183
18
18
  clarifai/client/auth/register.py,sha256=2CMdBsoVLoTfjyksE6j7BM2tiEc73WKYvxnwDDgNn1k,536
19
19
  clarifai/client/auth/stub.py,sha256=xy4-fV0W8keCgXld4eOVzFQEIKxOktNwtL5bLztReug,4940
20
- clarifai/constants/dataset.py,sha256=OXYirr0iaoN_47V6wxO0H6ptV81y8zNGapPBz9qqD8o,516
20
+ clarifai/constants/dataset.py,sha256=Puz6_FfTm30G5FVBb1GJsobMkNtbg0Y2Soy7eyHjvtI,587
21
21
  clarifai/constants/input.py,sha256=WcHwToUVIK9ItAhDefaSohQHCLNeR55PSjZ0BFnoZ3U,28
22
22
  clarifai/constants/model.py,sha256=oTad43ncskVHfQ9vEbL2yy0Fac666dXr7QuO8zZXHAE,245
23
23
  clarifai/constants/rag.py,sha256=WcHwToUVIK9ItAhDefaSohQHCLNeR55PSjZ0BFnoZ3U,28
@@ -25,7 +25,7 @@ clarifai/constants/search.py,sha256=yYEqTaFg-KdnpJE_Ytp-EPVHIIC395iNtZrpVlLIf4o,
25
25
  clarifai/constants/workflow.py,sha256=cECq1xdvf44MCdtK2AbkiuuwhyL-6OWZdQfYbsLKy_o,33
26
26
  clarifai/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  clarifai/datasets/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- clarifai/datasets/export/inputs_annotations.py,sha256=3Bv6JsPzSeGEEJlkF1KR8qDHc_QyHF0ddvHfSiB5Pjc,9479
28
+ clarifai/datasets/export/inputs_annotations.py,sha256=Mzo7UMoxuOvgLSmkU9e6WvSCGLPIa6NXKuQHyesVLG8,9737
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
31
  clarifai/datasets/upload/features.py,sha256=oq0PGpAw8LEafiSkdMMl0yn-NJeZ7K_CKzpJ71b0H40,1731
@@ -42,8 +42,8 @@ clarifai/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  clarifai/models/api.py,sha256=d3FQQlG0mNDLrfEvchqaVcq4Tgb_TqryNnJtwp3c7sE,10961
43
43
  clarifai/models/model_serving/README.md,sha256=zXnKybVoIF_LYHKKY2vijTCaGcb2-GJ5kef2uB1WFrs,4241
44
44
  clarifai/models/model_serving/__init__.py,sha256=78fiK9LvdGvpMxICmZWqSIyS6BFATjW2s5R6_GgtbPA,645
45
- clarifai/models/model_serving/constants.py,sha256=VeSkzXijU9E0axBUbGs4pQG9V7lA-G8bYVVfxrPgB9U,419
46
- clarifai/models/model_serving/utils.py,sha256=zbFKpQ3Xom-zvNP9bqobIxXFdlCbxBRuGr7RFlg334Y,1038
45
+ clarifai/models/model_serving/constants.py,sha256=8eVT6iYGRF4s4SKoHFUmDwCX6C2EiEiCOP1MIgtcc6A,692
46
+ clarifai/models/model_serving/utils.py,sha256=vdFLyxvcDJhgFdw2jaOsVNVmLlw87ymGTgQachVleOU,1089
47
47
  clarifai/models/model_serving/cli/__init__.py,sha256=Nls28G-fedNw2oQZIkPQSN__TgjJXbG9RDzzuHIM0VI,575
48
48
  clarifai/models/model_serving/cli/_utils.py,sha256=CZTKKiaoO1Mg5MKQS2Qhgy4JRjnkEHqy8zY5U6b6C0w,1734
49
49
  clarifai/models/model_serving/cli/base.py,sha256=k4ARNU1koNzGAi9ach6Vpk7hpISZySiYHyKjkBLuHLg,283
@@ -51,7 +51,7 @@ clarifai/models/model_serving/cli/build.py,sha256=-C4PBt-9xO9YsyUagz3kF4J0_PsYb6
51
51
  clarifai/models/model_serving/cli/clarifai_clis.py,sha256=sGDDj7MrlU3goWLQm4H9dCf4lPD2Ojx50_jdIoxb5QM,663
52
52
  clarifai/models/model_serving/cli/create.py,sha256=wtKcVi8XSPN-Fx0RrSUxEwH1hm5TbZ_FrCEMIS9yszM,5598
53
53
  clarifai/models/model_serving/cli/example_cli.py,sha256=tCm0J4EI0kuuSRhEiPTuraSA-bUYwtEFEHcL1eOXzRI,1039
54
- clarifai/models/model_serving/cli/login.py,sha256=yNHedXKqqw_fxECaEDrWKPLCvOgGdHjNQv3MuRZpMSg,756
54
+ clarifai/models/model_serving/cli/login.py,sha256=IQHL3SdERThnCTGPp5HnI41B0-BTzzGb2wx0P8-KIIA,771
55
55
  clarifai/models/model_serving/cli/upload.py,sha256=kOz8OOEobo6sLUkS1xg0672PTmMkx0aWxjKMhSRlMwM,7013
56
56
  clarifai/models/model_serving/docs/cli.md,sha256=fLgyY8sYMPjYQW_q8Q9yJYB_ryDVGbzj2VouJgvkEFw,4564
57
57
  clarifai/models/model_serving/docs/concepts.md,sha256=ppQADibKQInf9JpfcH7wIpcMndTZ3618or5yzMhGNOE,9376
@@ -90,13 +90,13 @@ 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=ySKI4ChHTJSj3nOL9gfOuZ-0hZTfHFZXVJaO6pX0KkM,12356
93
+ clarifai/rag/rag.py,sha256=0udYyWVzBML-5-E05QuxBz7rNLxu7aMlist5uP7zPIY,12638
94
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
98
- clarifai/utils/constants.py,sha256=SJ6FzfvtA2Pe3QxKtNnnxxAbvetbh7v3wGCTXip7z_0,431
99
- clarifai/utils/logging.py,sha256=xJTteoUodQ7RfsbO676QgidKa5EVPbdUu89Xlwwso2s,4533
98
+ clarifai/utils/constants.py,sha256=MG_iHnSwNEyUZOpvsrTicNwaT4CIjmlK_Ixk_qqEX8g,142
99
+ clarifai/utils/logging.py,sha256=sR_pRfSHZvHb08KcduAGz9oFrzioWqqCDZ3mHB8rpUY,4601
100
100
  clarifai/utils/misc.py,sha256=GznzquXXFt8J9qzMWtTJPFWCSc5QTs_ZBldW1mXCZzE,1285
101
101
  clarifai/utils/model_train.py,sha256=Mndqy5GNu7kjQHjDyNVyamL0hQFLGSHcWhOuPyOvr1w,8005
102
102
  clarifai/utils/evaluation/__init__.py,sha256=PYkurUrXrGevByj7RFb6CoU1iC7fllyQSfnnlo9WnY8,69
@@ -107,9 +107,9 @@ clarifai/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
107
107
  clarifai/workflows/export.py,sha256=vICRhIreqDSShxLKjHNM2JwzKsf1B4fdXB0ciMcA70k,1945
108
108
  clarifai/workflows/utils.py,sha256=nGeB_yjVgUO9kOeKTg4OBBaBz-AwXI3m-huSVj-9W18,1924
109
109
  clarifai/workflows/validate.py,sha256=yJq03MaJqi5AK3alKGJJBR89xmmjAQ31sVufJUiOqY8,2556
110
- clarifai-10.5.2.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
111
- clarifai-10.5.2.dist-info/METADATA,sha256=RIMcaWWVBuSnUnDaI-90KK6evsB2aFrQy1IiZn60G0k,19372
112
- clarifai-10.5.2.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
113
- clarifai-10.5.2.dist-info/entry_points.txt,sha256=qZOr_MIPG0dBBE1zringDJS_wXNGTAA_SQ-zcbmDHOw,82
114
- clarifai-10.5.2.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
115
- clarifai-10.5.2.dist-info/RECORD,,
110
+ clarifai-10.5.4.dist-info/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
111
+ clarifai-10.5.4.dist-info/METADATA,sha256=y6nmwxvlO3GuzTeIyHPpEPagkFL_lOr_v_ztEIwc1Pg,19372
112
+ clarifai-10.5.4.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
113
+ clarifai-10.5.4.dist-info/entry_points.txt,sha256=qZOr_MIPG0dBBE1zringDJS_wXNGTAA_SQ-zcbmDHOw,82
114
+ clarifai-10.5.4.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
115
+ clarifai-10.5.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5