clarifai 11.5.3rc2__py3-none-any.whl → 11.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.
Files changed (174) hide show
  1. clarifai/__init__.py +1 -1
  2. clarifai/runners/models/model_runner.py +31 -5
  3. clarifai/runners/models/model_servicer.py +26 -3
  4. clarifai/runners/utils/data_types/data_types.py +5 -22
  5. clarifai/runners/utils/url_fetcher.py +55 -10
  6. {clarifai-11.5.3rc2.dist-info → clarifai-11.5.4.dist-info}/METADATA +1 -1
  7. clarifai-11.5.4.dist-info/RECORD +126 -0
  8. clarifai/__pycache__/__init__.cpython-312.pyc +0 -0
  9. clarifai/__pycache__/__init__.cpython-38.pyc +0 -0
  10. clarifai/__pycache__/__init__.cpython-39.pyc +0 -0
  11. clarifai/__pycache__/errors.cpython-312.pyc +0 -0
  12. clarifai/__pycache__/errors.cpython-38.pyc +0 -0
  13. clarifai/__pycache__/errors.cpython-39.pyc +0 -0
  14. clarifai/__pycache__/versions.cpython-312.pyc +0 -0
  15. clarifai/__pycache__/versions.cpython-38.pyc +0 -0
  16. clarifai/__pycache__/versions.cpython-39.pyc +0 -0
  17. clarifai/client/__pycache__/__init__.cpython-312.pyc +0 -0
  18. clarifai/client/__pycache__/__init__.cpython-38.pyc +0 -0
  19. clarifai/client/__pycache__/__init__.cpython-39.pyc +0 -0
  20. clarifai/client/__pycache__/app.cpython-312.pyc +0 -0
  21. clarifai/client/__pycache__/app.cpython-38.pyc +0 -0
  22. clarifai/client/__pycache__/app.cpython-39.pyc +0 -0
  23. clarifai/client/__pycache__/base.cpython-312.pyc +0 -0
  24. clarifai/client/__pycache__/base.cpython-38.pyc +0 -0
  25. clarifai/client/__pycache__/base.cpython-39.pyc +0 -0
  26. clarifai/client/__pycache__/compute_cluster.cpython-312.pyc +0 -0
  27. clarifai/client/__pycache__/compute_cluster.cpython-38.pyc +0 -0
  28. clarifai/client/__pycache__/compute_cluster.cpython-39.pyc +0 -0
  29. clarifai/client/__pycache__/dataset.cpython-312.pyc +0 -0
  30. clarifai/client/__pycache__/dataset.cpython-38.pyc +0 -0
  31. clarifai/client/__pycache__/dataset.cpython-39.pyc +0 -0
  32. clarifai/client/__pycache__/deployment.cpython-312.pyc +0 -0
  33. clarifai/client/__pycache__/deployment.cpython-38.pyc +0 -0
  34. clarifai/client/__pycache__/deployment.cpython-39.pyc +0 -0
  35. clarifai/client/__pycache__/input.cpython-312.pyc +0 -0
  36. clarifai/client/__pycache__/input.cpython-38.pyc +0 -0
  37. clarifai/client/__pycache__/input.cpython-39.pyc +0 -0
  38. clarifai/client/__pycache__/lister.cpython-312.pyc +0 -0
  39. clarifai/client/__pycache__/lister.cpython-38.pyc +0 -0
  40. clarifai/client/__pycache__/lister.cpython-39.pyc +0 -0
  41. clarifai/client/__pycache__/model.cpython-312.pyc +0 -0
  42. clarifai/client/__pycache__/model.cpython-38.pyc +0 -0
  43. clarifai/client/__pycache__/model.cpython-39.pyc +0 -0
  44. clarifai/client/__pycache__/model_client.cpython-39.pyc +0 -0
  45. clarifai/client/__pycache__/module.cpython-312.pyc +0 -0
  46. clarifai/client/__pycache__/module.cpython-38.pyc +0 -0
  47. clarifai/client/__pycache__/module.cpython-39.pyc +0 -0
  48. clarifai/client/__pycache__/nodepool.cpython-312.pyc +0 -0
  49. clarifai/client/__pycache__/nodepool.cpython-38.pyc +0 -0
  50. clarifai/client/__pycache__/nodepool.cpython-39.pyc +0 -0
  51. clarifai/client/__pycache__/runner.cpython-39.pyc +0 -0
  52. clarifai/client/__pycache__/search.cpython-312.pyc +0 -0
  53. clarifai/client/__pycache__/search.cpython-38.pyc +0 -0
  54. clarifai/client/__pycache__/search.cpython-39.pyc +0 -0
  55. clarifai/client/__pycache__/user.cpython-312.pyc +0 -0
  56. clarifai/client/__pycache__/user.cpython-38.pyc +0 -0
  57. clarifai/client/__pycache__/user.cpython-39.pyc +0 -0
  58. clarifai/client/__pycache__/workflow.cpython-312.pyc +0 -0
  59. clarifai/client/__pycache__/workflow.cpython-38.pyc +0 -0
  60. clarifai/client/__pycache__/workflow.cpython-39.pyc +0 -0
  61. clarifai/client/auth/__pycache__/__init__.cpython-312.pyc +0 -0
  62. clarifai/client/auth/__pycache__/__init__.cpython-38.pyc +0 -0
  63. clarifai/client/auth/__pycache__/__init__.cpython-39.pyc +0 -0
  64. clarifai/client/auth/__pycache__/helper.cpython-312.pyc +0 -0
  65. clarifai/client/auth/__pycache__/helper.cpython-38.pyc +0 -0
  66. clarifai/client/auth/__pycache__/helper.cpython-39.pyc +0 -0
  67. clarifai/client/auth/__pycache__/register.cpython-312.pyc +0 -0
  68. clarifai/client/auth/__pycache__/register.cpython-38.pyc +0 -0
  69. clarifai/client/auth/__pycache__/register.cpython-39.pyc +0 -0
  70. clarifai/client/auth/__pycache__/stub.cpython-312.pyc +0 -0
  71. clarifai/client/auth/__pycache__/stub.cpython-38.pyc +0 -0
  72. clarifai/client/auth/__pycache__/stub.cpython-39.pyc +0 -0
  73. clarifai/constants/__pycache__/base.cpython-312.pyc +0 -0
  74. clarifai/constants/__pycache__/base.cpython-38.pyc +0 -0
  75. clarifai/constants/__pycache__/base.cpython-39.pyc +0 -0
  76. clarifai/constants/__pycache__/dataset.cpython-312.pyc +0 -0
  77. clarifai/constants/__pycache__/dataset.cpython-38.pyc +0 -0
  78. clarifai/constants/__pycache__/dataset.cpython-39.pyc +0 -0
  79. clarifai/constants/__pycache__/input.cpython-312.pyc +0 -0
  80. clarifai/constants/__pycache__/input.cpython-38.pyc +0 -0
  81. clarifai/constants/__pycache__/input.cpython-39.pyc +0 -0
  82. clarifai/constants/__pycache__/model.cpython-312.pyc +0 -0
  83. clarifai/constants/__pycache__/model.cpython-38.pyc +0 -0
  84. clarifai/constants/__pycache__/model.cpython-39.pyc +0 -0
  85. clarifai/constants/__pycache__/search.cpython-312.pyc +0 -0
  86. clarifai/constants/__pycache__/search.cpython-38.pyc +0 -0
  87. clarifai/constants/__pycache__/search.cpython-39.pyc +0 -0
  88. clarifai/constants/__pycache__/workflow.cpython-312.pyc +0 -0
  89. clarifai/constants/__pycache__/workflow.cpython-38.pyc +0 -0
  90. clarifai/constants/__pycache__/workflow.cpython-39.pyc +0 -0
  91. clarifai/datasets/__pycache__/__init__.cpython-312.pyc +0 -0
  92. clarifai/datasets/__pycache__/__init__.cpython-38.pyc +0 -0
  93. clarifai/datasets/__pycache__/__init__.cpython-39.pyc +0 -0
  94. clarifai/datasets/export/__pycache__/__init__.cpython-312.pyc +0 -0
  95. clarifai/datasets/export/__pycache__/__init__.cpython-38.pyc +0 -0
  96. clarifai/datasets/export/__pycache__/__init__.cpython-39.pyc +0 -0
  97. clarifai/datasets/export/__pycache__/inputs_annotations.cpython-312.pyc +0 -0
  98. clarifai/datasets/export/__pycache__/inputs_annotations.cpython-38.pyc +0 -0
  99. clarifai/datasets/export/__pycache__/inputs_annotations.cpython-39.pyc +0 -0
  100. clarifai/datasets/upload/__pycache__/__init__.cpython-312.pyc +0 -0
  101. clarifai/datasets/upload/__pycache__/__init__.cpython-38.pyc +0 -0
  102. clarifai/datasets/upload/__pycache__/__init__.cpython-39.pyc +0 -0
  103. clarifai/datasets/upload/__pycache__/base.cpython-312.pyc +0 -0
  104. clarifai/datasets/upload/__pycache__/base.cpython-38.pyc +0 -0
  105. clarifai/datasets/upload/__pycache__/base.cpython-39.pyc +0 -0
  106. clarifai/datasets/upload/__pycache__/features.cpython-312.pyc +0 -0
  107. clarifai/datasets/upload/__pycache__/features.cpython-38.pyc +0 -0
  108. clarifai/datasets/upload/__pycache__/features.cpython-39.pyc +0 -0
  109. clarifai/datasets/upload/__pycache__/image.cpython-312.pyc +0 -0
  110. clarifai/datasets/upload/__pycache__/image.cpython-38.pyc +0 -0
  111. clarifai/datasets/upload/__pycache__/image.cpython-39.pyc +0 -0
  112. clarifai/datasets/upload/__pycache__/multimodal.cpython-312.pyc +0 -0
  113. clarifai/datasets/upload/__pycache__/multimodal.cpython-38.pyc +0 -0
  114. clarifai/datasets/upload/__pycache__/multimodal.cpython-39.pyc +0 -0
  115. clarifai/datasets/upload/__pycache__/text.cpython-312.pyc +0 -0
  116. clarifai/datasets/upload/__pycache__/text.cpython-38.pyc +0 -0
  117. clarifai/datasets/upload/__pycache__/text.cpython-39.pyc +0 -0
  118. clarifai/datasets/upload/__pycache__/utils.cpython-312.pyc +0 -0
  119. clarifai/datasets/upload/__pycache__/utils.cpython-38.pyc +0 -0
  120. clarifai/datasets/upload/__pycache__/utils.cpython-39.pyc +0 -0
  121. clarifai/runners/__pycache__/__init__.cpython-39.pyc +0 -0
  122. clarifai/runners/models/__pycache__/__init__.cpython-39.pyc +0 -0
  123. clarifai/runners/models/__pycache__/mcp_class.cpython-39.pyc +0 -0
  124. clarifai/runners/models/__pycache__/model_class.cpython-39.pyc +0 -0
  125. clarifai/runners/models/__pycache__/model_runner.cpython-39.pyc +0 -0
  126. clarifai/runners/models/__pycache__/openai_class.cpython-39.pyc +0 -0
  127. clarifai/runners/utils/__pycache__/__init__.cpython-39.pyc +0 -0
  128. clarifai/runners/utils/__pycache__/code_script.cpython-39.pyc +0 -0
  129. clarifai/runners/utils/__pycache__/data_utils.cpython-39.pyc +0 -0
  130. clarifai/runners/utils/__pycache__/method_signatures.cpython-39.pyc +0 -0
  131. clarifai/runners/utils/__pycache__/openai_convertor.cpython-39.pyc +0 -0
  132. clarifai/runners/utils/__pycache__/serializers.cpython-39.pyc +0 -0
  133. clarifai/runners/utils/__pycache__/url_fetcher.cpython-39.pyc +0 -0
  134. clarifai/runners/utils/data_types/__pycache__/__init__.cpython-39.pyc +0 -0
  135. clarifai/runners/utils/data_types/__pycache__/data_types.cpython-39.pyc +0 -0
  136. clarifai/schema/__pycache__/search.cpython-312.pyc +0 -0
  137. clarifai/schema/__pycache__/search.cpython-38.pyc +0 -0
  138. clarifai/schema/__pycache__/search.cpython-39.pyc +0 -0
  139. clarifai/urls/__pycache__/helper.cpython-312.pyc +0 -0
  140. clarifai/urls/__pycache__/helper.cpython-38.pyc +0 -0
  141. clarifai/urls/__pycache__/helper.cpython-39.pyc +0 -0
  142. clarifai/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  143. clarifai/utils/__pycache__/__init__.cpython-38.pyc +0 -0
  144. clarifai/utils/__pycache__/__init__.cpython-39.pyc +0 -0
  145. clarifai/utils/__pycache__/constants.cpython-312.pyc +0 -0
  146. clarifai/utils/__pycache__/constants.cpython-38.pyc +0 -0
  147. clarifai/utils/__pycache__/constants.cpython-39.pyc +0 -0
  148. clarifai/utils/__pycache__/logging.cpython-312.pyc +0 -0
  149. clarifai/utils/__pycache__/logging.cpython-38.pyc +0 -0
  150. clarifai/utils/__pycache__/logging.cpython-39.pyc +0 -0
  151. clarifai/utils/__pycache__/misc.cpython-312.pyc +0 -0
  152. clarifai/utils/__pycache__/misc.cpython-38.pyc +0 -0
  153. clarifai/utils/__pycache__/misc.cpython-39.pyc +0 -0
  154. clarifai/utils/__pycache__/model_train.cpython-312.pyc +0 -0
  155. clarifai/utils/__pycache__/model_train.cpython-38.pyc +0 -0
  156. clarifai/utils/__pycache__/model_train.cpython-39.pyc +0 -0
  157. clarifai/utils/__pycache__/protobuf.cpython-39.pyc +0 -0
  158. clarifai/workflows/__pycache__/__init__.cpython-312.pyc +0 -0
  159. clarifai/workflows/__pycache__/__init__.cpython-38.pyc +0 -0
  160. clarifai/workflows/__pycache__/__init__.cpython-39.pyc +0 -0
  161. clarifai/workflows/__pycache__/export.cpython-312.pyc +0 -0
  162. clarifai/workflows/__pycache__/export.cpython-38.pyc +0 -0
  163. clarifai/workflows/__pycache__/export.cpython-39.pyc +0 -0
  164. clarifai/workflows/__pycache__/utils.cpython-312.pyc +0 -0
  165. clarifai/workflows/__pycache__/utils.cpython-38.pyc +0 -0
  166. clarifai/workflows/__pycache__/utils.cpython-39.pyc +0 -0
  167. clarifai/workflows/__pycache__/validate.cpython-312.pyc +0 -0
  168. clarifai/workflows/__pycache__/validate.cpython-38.pyc +0 -0
  169. clarifai/workflows/__pycache__/validate.cpython-39.pyc +0 -0
  170. clarifai-11.5.3rc2.dist-info/RECORD +0 -288
  171. {clarifai-11.5.3rc2.dist-info → clarifai-11.5.4.dist-info}/WHEEL +0 -0
  172. {clarifai-11.5.3rc2.dist-info → clarifai-11.5.4.dist-info}/entry_points.txt +0 -0
  173. {clarifai-11.5.3rc2.dist-info → clarifai-11.5.4.dist-info}/licenses/LICENSE +0 -0
  174. {clarifai-11.5.3rc2.dist-info → clarifai-11.5.4.dist-info}/top_level.txt +0 -0
clarifai/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "11.5.3rc2"
1
+ __version__ = "11.5.4"
@@ -5,6 +5,8 @@ from clarifai_grpc.grpc.api.status import status_code_pb2, status_pb2
5
5
  from clarifai_protocol import BaseRunner
6
6
  from clarifai_protocol.utils.health import HealthProbeRequestHandler
7
7
 
8
+ from clarifai.client.auth.helper import ClarifaiAuthHelper
9
+
8
10
  from ..utils.url_fetcher import ensure_urls_downloaded
9
11
  from .model_class import ModelClass
10
12
 
@@ -42,6 +44,28 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
42
44
  )
43
45
  self.model = model
44
46
 
47
+ # Store authentication parameters for URL fetching
48
+ self._user_id = user_id
49
+ self._pat = pat
50
+ self._token = token
51
+ self._base_url = base_url
52
+
53
+ # Create auth helper if we have sufficient authentication information
54
+ self._auth_helper = None
55
+ if self._user_id and (self._pat or self._token):
56
+ try:
57
+ self._auth_helper = ClarifaiAuthHelper(
58
+ user_id=self._user_id,
59
+ app_id="", # app_id not needed for URL fetching
60
+ pat=self._pat or "",
61
+ token=self._token or "",
62
+ base=self._base_url,
63
+ validate=False, # Don't validate since app_id is empty
64
+ )
65
+ except Exception:
66
+ # If auth helper creation fails, proceed without authentication
67
+ self._auth_helper = None
68
+
45
69
  # After model load successfully set the health probe to ready and startup
46
70
  HealthProbeRequestHandler.is_ready = True
47
71
  HealthProbeRequestHandler.is_startup = True
@@ -81,7 +105,7 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
81
105
  if not runner_item.HasField('post_model_outputs_request'):
82
106
  raise Exception("Unexpected work item type: {}".format(runner_item))
83
107
  request = runner_item.post_model_outputs_request
84
- ensure_urls_downloaded(request)
108
+ ensure_urls_downloaded(request, auth_helper=self._auth_helper)
85
109
 
86
110
  resp = self.model.predict_wrapper(request)
87
111
  if resp.status.code != status_code_pb2.SUCCESS:
@@ -114,7 +138,7 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
114
138
  if not runner_item.HasField('post_model_outputs_request'):
115
139
  raise Exception("Unexpected work item type: {}".format(runner_item))
116
140
  request = runner_item.post_model_outputs_request
117
- ensure_urls_downloaded(request)
141
+ ensure_urls_downloaded(request, auth_helper=self._auth_helper)
118
142
 
119
143
  for resp in self.model.generate_wrapper(request):
120
144
  if resp.status.code != status_code_pb2.SUCCESS:
@@ -150,7 +174,9 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
150
174
  self, runner_item_iterator: Iterator[service_pb2.RunnerItem]
151
175
  ) -> Iterator[service_pb2.RunnerItemOutput]:
152
176
  # Call the generate() method the underlying model implements.
153
- for resp in self.model.stream_wrapper(pmo_iterator(runner_item_iterator)):
177
+ for resp in self.model.stream_wrapper(
178
+ pmo_iterator(runner_item_iterator, self._auth_helper)
179
+ ):
154
180
  if resp.status.code != status_code_pb2.SUCCESS:
155
181
  yield service_pb2.RunnerItemOutput(multi_output_response=resp)
156
182
  continue
@@ -181,9 +207,9 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
181
207
  yield service_pb2.RunnerItemOutput(multi_output_response=resp)
182
208
 
183
209
 
184
- def pmo_iterator(runner_item_iterator):
210
+ def pmo_iterator(runner_item_iterator, auth_helper=None):
185
211
  for runner_item in runner_item_iterator:
186
212
  if not runner_item.HasField('post_model_outputs_request'):
187
213
  raise Exception("Unexpected work item type: {}".format(runner_item))
188
- ensure_urls_downloaded(runner_item.post_model_outputs_request)
214
+ ensure_urls_downloaded(runner_item.post_model_outputs_request, auth_helper=auth_helper)
189
215
  yield runner_item.post_model_outputs_request
@@ -5,6 +5,8 @@ from typing import Iterator
5
5
  from clarifai_grpc.grpc.api import service_pb2, service_pb2_grpc
6
6
  from clarifai_grpc.grpc.api.status import status_code_pb2, status_pb2
7
7
 
8
+ from clarifai.client.auth.helper import ClarifaiAuthHelper
9
+
8
10
  from ..utils.url_fetcher import ensure_urls_downloaded
9
11
 
10
12
  _RAISE_EXCEPTIONS = os.getenv("RAISE_EXCEPTIONS", "false").lower() in ("true", "1")
@@ -23,6 +25,27 @@ class ModelServicer(service_pb2_grpc.V2Servicer):
23
25
  """
24
26
  self.model = model
25
27
 
28
+ # Try to create auth helper from environment variables if available
29
+ self._auth_helper = None
30
+ try:
31
+ user_id = os.environ.get("CLARIFAI_USER_ID")
32
+ pat = os.environ.get("CLARIFAI_PAT")
33
+ token = os.environ.get("CLARIFAI_SESSION_TOKEN")
34
+ base_url = os.environ.get("CLARIFAI_API_BASE", "https://api.clarifai.com")
35
+
36
+ if user_id and (pat or token):
37
+ self._auth_helper = ClarifaiAuthHelper(
38
+ user_id=user_id,
39
+ app_id="", # app_id not needed for URL fetching
40
+ pat=pat or "",
41
+ token=token or "",
42
+ base=base_url,
43
+ validate=False, # Don't validate since app_id is empty
44
+ )
45
+ except Exception:
46
+ # If auth helper creation fails, proceed without authentication
47
+ self._auth_helper = None
48
+
26
49
  def PostModelOutputs(
27
50
  self, request: service_pb2.PostModelOutputsRequest, context=None
28
51
  ) -> service_pb2.MultiOutputResponse:
@@ -32,7 +55,7 @@ class ModelServicer(service_pb2_grpc.V2Servicer):
32
55
  """
33
56
 
34
57
  # Download any urls that are not already bytes.
35
- ensure_urls_downloaded(request)
58
+ ensure_urls_downloaded(request, auth_helper=self._auth_helper)
36
59
 
37
60
  try:
38
61
  return self.model.predict_wrapper(request)
@@ -56,7 +79,7 @@ class ModelServicer(service_pb2_grpc.V2Servicer):
56
79
  returns an output.
57
80
  """
58
81
  # Download any urls that are not already bytes.
59
- ensure_urls_downloaded(request)
82
+ ensure_urls_downloaded(request, auth_helper=self._auth_helper)
60
83
 
61
84
  try:
62
85
  yield from self.model.generate_wrapper(request)
@@ -84,7 +107,7 @@ class ModelServicer(service_pb2_grpc.V2Servicer):
84
107
 
85
108
  # Download any urls that are not already bytes.
86
109
  for req in request:
87
- ensure_urls_downloaded(req)
110
+ ensure_urls_downloaded(req, auth_helper=self._auth_helper)
88
111
 
89
112
  try:
90
113
  yield from self.model.stream_wrapper(request_copy)
@@ -174,13 +174,10 @@ class Text(MessageData):
174
174
 
175
175
 
176
176
  class Concept(MessageData):
177
- def __init__(self, name: str, value: float = 1.0, id: str = None,
178
- user_id: str = None, app_id: str = None):
177
+ def __init__(self, name: str, value: float = 1.0, id: str = None):
179
178
  self.name = name
180
179
  self.value = value
181
180
  self.id = id or Concept._concept_name_to_id(name)
182
- self.user_id = user_id
183
- self.app_id = app_id
184
181
 
185
182
  @staticmethod
186
183
  def _concept_name_to_id(name: str):
@@ -189,14 +186,14 @@ class Concept(MessageData):
189
186
  return _name
190
187
 
191
188
  def __repr__(self) -> str:
192
- return f"Concept(id={self.id!r}, name={self.name!r}, value={self.value!r}, user_id={self.user_id!r}, app_id={self.app_id!r})"
189
+ return f"Concept(id={self.id!r}, name={self.name!r}, value={self.value})"
193
190
 
194
191
  def to_proto(self):
195
- return ConceptProto(id=self.id, name=self.name, value=self.value, user_id=self.user_id, app_id=self.app_id)
192
+ return ConceptProto(id=self.id, name=self.name, value=self.value)
196
193
 
197
194
  @classmethod
198
195
  def from_proto(cls, proto: ConceptProto) -> "Concept":
199
- return cls(id=proto.id, name=proto.name, value=proto.value, user_id=proto.user_id, app_id=proto.app_id)
196
+ return cls(id=proto.id, name=proto.name, value=proto.value)
200
197
 
201
198
 
202
199
  class Region(MessageData):
@@ -210,7 +207,6 @@ class Region(MessageData):
210
207
  track_id: str = None,
211
208
  text: str = None,
212
209
  id: str = None,
213
- value: float = None,
214
210
  ):
215
211
  if proto_region is None:
216
212
  self.proto = RegionProto()
@@ -227,8 +223,6 @@ class Region(MessageData):
227
223
  self.track_id = track_id
228
224
  if text:
229
225
  self.text = text
230
- if value:
231
- self.value = value
232
226
  self.id = id if id is not None else uuid.uuid4().hex
233
227
  elif isinstance(proto_region, RegionProto):
234
228
  self.proto = proto_region
@@ -328,19 +322,8 @@ class Region(MessageData):
328
322
  point_proto = PointProto(col=x, row=y, z=z)
329
323
  self.proto.region_info.point.CopyFrom(point_proto)
330
324
 
331
- @property
332
- def value(self) -> float:
333
- """Value of the region, typically used for confidence scores."""
334
- return self.proto.value
335
-
336
- @value.setter
337
- def value(self, value: float):
338
- if not isinstance(value, (int, float)):
339
- raise TypeError(f"Expected int or float for value, got {type(value).__name__}")
340
- self.proto.value = float(value)
341
-
342
325
  def __repr__(self) -> str:
343
- return f"Region(id={self.id},box={self.box or []}, concepts={self.concepts or None}, point={self.point or None}, mask={self.mask or None}, track_id={self.track_id or None}, value={self.value or None})"
326
+ return f"Region(id={self.id},box={self.box or []}, concepts={self.concepts or None}, point={self.point or None}, mask={self.mask or None}, track_id={self.track_id or None})"
344
327
 
345
328
  def to_proto(self) -> RegionProto:
346
329
  return self.proto
@@ -5,43 +5,88 @@ import fsspec
5
5
  from clarifai.utils.logging import logger
6
6
 
7
7
 
8
- def download_input(input):
9
- _download_input_data(input.data)
8
+ def download_input(input, auth_helper=None):
9
+ _download_input_data(input.data, auth_helper=auth_helper)
10
10
  if input.data.parts:
11
11
  for i in range(len(input.data.parts)):
12
- _download_input_data(input.data.parts[i].data)
12
+ _download_input_data(input.data.parts[i].data, auth_helper=auth_helper)
13
13
 
14
14
 
15
- def _download_input_data(input_data):
15
+ def _download_input_data(input_data, auth_helper=None):
16
16
  """
17
17
  This function will download any urls that are not already bytes.
18
+
19
+ Args:
20
+ input_data: The input data containing URLs to download
21
+ auth_helper: Optional ClarifaiAuthHelper instance for authentication
18
22
  """
23
+ # Get auth headers if auth_helper is provided
24
+ auth_kwargs = {}
25
+ if auth_helper is not None:
26
+ auth_kwargs = _get_auth_kwargs(auth_helper)
27
+
19
28
  if input_data.image.url and not input_data.image.base64:
20
29
  # Download the image
21
- with fsspec.open(input_data.image.url, 'rb') as f:
30
+ with fsspec.open(input_data.image.url, 'rb', **auth_kwargs) as f:
22
31
  input_data.image.base64 = f.read()
23
32
  if input_data.video.url and not input_data.video.base64:
24
33
  # Download the video
25
- with fsspec.open(input_data.video.url, 'rb') as f:
34
+ with fsspec.open(input_data.video.url, 'rb', **auth_kwargs) as f:
26
35
  input_data.video.base64 = f.read()
27
36
  if input_data.audio.url and not input_data.audio.base64:
28
37
  # Download the audio
29
- with fsspec.open(input_data.audio.url, 'rb') as f:
38
+ with fsspec.open(input_data.audio.url, 'rb', **auth_kwargs) as f:
30
39
  input_data.audio.base64 = f.read()
31
40
  if input_data.text.url and not input_data.text.raw:
32
41
  # Download the text
33
- with fsspec.open(input_data.text.url, 'r') as f:
42
+ with fsspec.open(input_data.text.url, 'r', **auth_kwargs) as f:
34
43
  input_data.text.raw = f.read()
35
44
 
36
45
 
37
- def ensure_urls_downloaded(request, max_threads=128):
46
+ def _get_auth_kwargs(auth_helper):
47
+ """
48
+ Convert ClarifaiAuthHelper metadata to fsspec-compatible kwargs.
49
+
50
+ Args:
51
+ auth_helper: ClarifaiAuthHelper instance
52
+
53
+ Returns:
54
+ dict: kwargs to pass to fsspec.open() for authentication
55
+ """
56
+ if auth_helper is None:
57
+ return {}
58
+
59
+ try:
60
+ # Get authentication metadata from the helper
61
+ metadata = auth_helper.metadata
62
+
63
+ # Convert gRPC metadata tuples to HTTP headers dict
64
+ headers = {}
65
+ for key, value in metadata:
66
+ # Skip non-auth headers
67
+ if key in ('authorization', 'x-clarifai-session-token'):
68
+ headers[key] = value
69
+
70
+ # Return fsspec-compatible kwargs
71
+ return {'client_kwargs': {'headers': headers}}
72
+ except Exception as e:
73
+ logger.warning(f"Failed to get authentication headers: {e}")
74
+ return {}
75
+
76
+
77
+ def ensure_urls_downloaded(request, max_threads=128, auth_helper=None):
38
78
  """
39
79
  This function will download any urls that are not already bytes and parallelize with a thread pool.
80
+
81
+ Args:
82
+ request: The request containing inputs with URLs to download
83
+ max_threads: Maximum number of threads to use for parallel downloads
84
+ auth_helper: Optional ClarifaiAuthHelper instance for authentication
40
85
  """
41
86
  with concurrent.futures.ThreadPoolExecutor(max_workers=max_threads) as executor:
42
87
  futures = []
43
88
  for input in request.inputs:
44
- futures.append(executor.submit(download_input, input))
89
+ futures.append(executor.submit(download_input, input, auth_helper))
45
90
  for future in concurrent.futures.as_completed(futures):
46
91
  try:
47
92
  future.result()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clarifai
3
- Version: 11.5.3rc2
3
+ Version: 11.5.4
4
4
  Home-page: https://github.com/Clarifai/clarifai-python
5
5
  Author: Clarifai
6
6
  Author-email: support@clarifai.com
@@ -0,0 +1,126 @@
1
+ clarifai/__init__.py,sha256=dX3Oi94KTZEq35Tm3ca-zFtWYOWbwopKBoxPCzh9NFo,23
2
+ clarifai/cli.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ clarifai/errors.py,sha256=GXa6D4v_L404J83jnRNFPH7s-1V9lk7w6Ws99f1g-AY,2772
4
+ clarifai/versions.py,sha256=ecSuEB_nOL2XSoYHDw2n23XUbm_KPOGjudMXmQrGdS8,224
5
+ clarifai/cli/README.md,sha256=YGApHfeUyu5P0Pdth-mqQCQftWHDxz6bugDlvDXDhOE,1942
6
+ clarifai/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ clarifai/cli/__main__.py,sha256=7nPbLW7Jr2shkgMPvnxpn4xYGMvIcnqluJ69t9w4H_k,74
8
+ clarifai/cli/base.py,sha256=mzfAHRhon6tKntpxk241GD-Sjrb2-V99nAOasElLuuw,8254
9
+ clarifai/cli/compute_cluster.py,sha256=8Xss0Obrp6l1XuxJe0luOqU_pf8vXGDRi6jyIe8qR6k,2282
10
+ clarifai/cli/deployment.py,sha256=9C4I6_kyMxRkWl6h681wc79-3mAtDHtTUaxRv05OZMs,4262
11
+ clarifai/cli/model.py,sha256=71u7JS0xnxQOLp3s9cKGbT1hyhf1CIVxMeFMU2fiLTM,31553
12
+ clarifai/cli/nodepool.py,sha256=H6OIdUW_EiyDUwZogzEDoYmVwEjLMsgoDlPyE7gjIuU,4245
13
+ clarifai/cli/pipeline.py,sha256=M8gW72IB5hx1OIf0pOytZhnw50euPnXxW4vuZ9Fqyqw,5477
14
+ clarifai/cli/pipeline_step.py,sha256=eOxU4MdPBuB01A00Rz6m9THLyTaTLOTKwGwSVyegkyI,3808
15
+ clarifai/cli/templates/__init__.py,sha256=HbMlZuYOMyVJde73ijNAevmSRUpIttGlHdwyO4W-JOs,44
16
+ clarifai/cli/templates/model_templates.py,sha256=_ZonIBnY9KKSJY31KZbUys_uN_k_Txu7Dip12KWfmSU,9633
17
+ clarifai/cli/templates/pipeline_step_templates.py,sha256=HU1BoU7wG71MviQAvyecxT_qo70XhTtPGYtoIQ-U-l0,1663
18
+ clarifai/cli/templates/pipeline_templates.py,sha256=mfHrEoRxICIv00zxfgIct2IpxcMmZ6zjHG8WLF1TPcI,4409
19
+ clarifai/client/__init__.py,sha256=NhpNFRJY6mTi8ca-5hUeTEmYeDKHDNXY48FN63pDuos,703
20
+ clarifai/client/app.py,sha256=1M9XDsPWIEsj0g-mgIeZ9Mvkt85UHSbrv6pEr-QKfNg,41423
21
+ clarifai/client/base.py,sha256=rXQlB0BXbKLOgLVJW_2axYh0Vd_F0BbgJE_DXTQoG4U,9109
22
+ clarifai/client/compute_cluster.py,sha256=ViPyh-FibXL1J0ypsVOTaQnR1ymKohmZEuA13RwA-hc,10254
23
+ clarifai/client/dataset.py,sha256=OgdpZkQ_vYmRxL8-qphcNozpvPV1bWTlte9Jv6UkKb8,35299
24
+ clarifai/client/deployment.py,sha256=QBf0tzkKBEpzNgmOEmWUJMOlVWdFEFc70Y44o8y75Gs,2875
25
+ clarifai/client/input.py,sha256=jpX47qwn7aUBBIEuSSLHF5jk70XaWEh0prD065c9b-E,51205
26
+ clarifai/client/lister.py,sha256=1YEm2suNxPaJO4x9V5szgD_YX6N_00vgSO-7m0HagY8,2208
27
+ clarifai/client/model.py,sha256=Oh2zCa7XA_pBAEx9D8ME81H_BBqD7wJYoeB5CEjlI5E,89989
28
+ clarifai/client/model_client.py,sha256=4gIS0mKBdiNMA1x_6Wo6H7WbfLsmQix64EpONcQjQV4,37129
29
+ clarifai/client/module.py,sha256=jLViQYvVV3FmRN_ivvbk83uwsx7CgYGeEx4dYAr6yD4,4537
30
+ clarifai/client/nodepool.py,sha256=Y5zQ0JLdTjAp2TmVnx7AAOwaB2YUslk3nl7s6BQ90FQ,16415
31
+ clarifai/client/runner.py,sha256=5xCiqByGGscfNm0IjHelhDTx8-9l8G0C3HL-3YZogK8,2253
32
+ clarifai/client/search.py,sha256=3LLfATrdU43a0mRNITmJV-E53bhfafZkYsbwkTtlnyU,15661
33
+ clarifai/client/user.py,sha256=YDAXSOh7ACsvCjVctugiTu8MXFN_TDBoXuEKGXv_uHg,21997
34
+ clarifai/client/workflow.py,sha256=Bqh8lAmJcSbviJebckchTxucYlU11UQEhFSov7elpsk,13417
35
+ clarifai/client/auth/__init__.py,sha256=7EwR0NrozkAUwpUnCsqXvE_p0wqx_SelXlSpKShKJK0,136
36
+ clarifai/client/auth/helper.py,sha256=h6R4zsDEY6C1VmcxjYrIsFPOO_ujEjRR_JtpQ5WVuo4,16117
37
+ clarifai/client/auth/register.py,sha256=xIg1OoZ_GGnc0KQKII-R6q_cKN1JXW3BGcU2eyS-Kkc,871
38
+ clarifai/client/auth/stub.py,sha256=nKod8eNWaBnmsaNZ59dEt42TTcwC9mMgCzEMYPZggxc,9537
39
+ clarifai/constants/base.py,sha256=ogmFSZYoF0YhGjHg5aiOc3MLqPr_poKAls6xaD0_C3U,89
40
+ clarifai/constants/dataset.py,sha256=9saFE_VxCTCMlPTQbOU4KM_SzN_TQjwsrsFnpsc_Epo,556
41
+ clarifai/constants/input.py,sha256=WcHwToUVIK9ItAhDefaSohQHCLNeR55PSjZ0BFnoZ3U,28
42
+ clarifai/constants/model.py,sha256=ghcdvKIbx-g22H9RwxmMfUt1CrKz5Oa-iTExt0VpUVU,463
43
+ clarifai/constants/rag.py,sha256=WcHwToUVIK9ItAhDefaSohQHCLNeR55PSjZ0BFnoZ3U,28
44
+ clarifai/constants/search.py,sha256=yYEqTaFg-KdnpJE_Ytp-EPVHIIC395iNtZrpVlLIf4o,101
45
+ clarifai/constants/workflow.py,sha256=cECq1xdvf44MCdtK2AbkiuuwhyL-6OWZdQfYbsLKy_o,33
46
+ clarifai/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
+ clarifai/datasets/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ clarifai/datasets/export/inputs_annotations.py,sha256=1PFjIw30dRO9NSUa_yvox_07W30tlAnrk4mEAVgfXBY,10980
49
+ clarifai/datasets/upload/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
+ clarifai/datasets/upload/base.py,sha256=8b13tmAokgZVH0d-HRpU-O15Swa46eJy2Fp6zU7jQkU,2441
51
+ clarifai/datasets/upload/features.py,sha256=Yy0MP1F_ev2IbWnEyXDLt5SaEb11bXSUu5ux8tD1oxY,2115
52
+ clarifai/datasets/upload/image.py,sha256=0Fs02KK1WuDE24RAJ2ZOdktva1iOqzE25J9jJJYJUDk,10122
53
+ clarifai/datasets/upload/multimodal.py,sha256=IZYjmyxVJpNjwyNyzptQENZcCKDbdTU_t70QSdK23Ec,2762
54
+ clarifai/datasets/upload/text.py,sha256=L2IEbickNhZcmrhbBfQciCXQf4JPcqWulRWJ7HDpJLc,2482
55
+ clarifai/datasets/upload/utils.py,sha256=VdTn7AqIWB8D60rX9YD4T-4fi-7xMEocHATJvvaPjxQ,10508
56
+ clarifai/datasets/upload/loaders/README.md,sha256=aNRutSCTzLp2ruIZx74ZkN5AxpzwKOxMa7OzabnKpwg,2980
57
+ clarifai/datasets/upload/loaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ clarifai/datasets/upload/loaders/coco_captions.py,sha256=v6e8lh6BCUFOlurnvDfBEY-drl6JhpIE9nt2Qnz7XQ8,1623
59
+ clarifai/datasets/upload/loaders/coco_detection.py,sha256=0FsGV84MT0IkerXoe9hdxQSr9wd96j9cPOne-rhzBPw,3190
60
+ clarifai/datasets/upload/loaders/imagenet_classification.py,sha256=w2Tiot_YK0QYiyAVbWSxoKthZgUsRo9LiWWY2lVzPrQ,2247
61
+ clarifai/datasets/upload/loaders/xview_detection.py,sha256=dukodZRdyVH-s5MtmCDtKwseKGwSCWAK2Uwuwa6kJu4,8035
62
+ clarifai/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ clarifai/models/api.py,sha256=YhbGqZMC5mH_ZqnbaEmgfJdrIhSkLevpWih8ZqC3BL4,12193
64
+ clarifai/modules/README.md,sha256=mx8pVx6cPp-pP4LcFPT_nX3ngGmhygVK0WiXeD3cbIo,367
65
+ clarifai/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ clarifai/modules/css.py,sha256=Jg67jXo2mZoGQp7M-At74ywyk4cN90s-aJTLjfqsaB4,2176
67
+ clarifai/modules/pages.py,sha256=DZVO7YjIjYQdUyHYF-zxLkc5qkYC5KNnUxGiKQGo3Uk,1509
68
+ clarifai/modules/style.css,sha256=j7FNPZVhLPj35vvBksAJ90RuX5sLuqzDR5iM2WIEhiA,6073
69
+ clarifai/rag/__init__.py,sha256=wu3PzAzo7uqgrEzuaC9lY_3gj1HFiR3GU3elZIKTT5g,40
70
+ clarifai/rag/rag.py,sha256=EG3GoFrHFCmA70Tz49_0Jo1-3WIaHSgWGHecPeErcdc,14170
71
+ clarifai/rag/utils.py,sha256=_gVZdABuMnraCKViLruV75x0F3IpgFXN6amYSGE5_xc,4462
72
+ clarifai/runners/__init__.py,sha256=wXLaSljH7qLeJCrZdKEnlQh2tNqTQAIZKWOu2rZ6wGs,279
73
+ clarifai/runners/server.py,sha256=9qVAs8pRHmtyY0RCNIQ1uP8nqDADIFZ03LnkoDt1h4U,4692
74
+ clarifai/runners/dockerfile_template/Dockerfile.template,sha256=DUH7F0-uLOV0LTjnPde-9chSzscAAxBAwjTxi9b_l9g,2425
75
+ clarifai/runners/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ clarifai/runners/models/dummy_openai_model.py,sha256=pcmAVbqTTGG4J3BLVjKfvM_SQ-GET_XexIUdLcr9Zvo,8373
77
+ clarifai/runners/models/mcp_class.py,sha256=RdKn7rW4vYol0VRDZiLTSMfkqjLhO1ijXAQ0Rq0Jfnw,6647
78
+ clarifai/runners/models/model_builder.py,sha256=D47H1zm3_Xr-nlPYb_1dY8dxlMiM93kU4QYGEtyxK88,63403
79
+ clarifai/runners/models/model_class.py,sha256=-euUF-eHUi4KXR_e1pIwvToDZ13CM6TSz2FolzildjM,16069
80
+ clarifai/runners/models/model_run_locally.py,sha256=6-6WjEKc0ba3gAv4wOLdMs2XOzS3b-2bZHJS0wdVqJY,20088
81
+ clarifai/runners/models/model_runner.py,sha256=CE5UkxW8wCm-g8dn_i1TNkZDORpOGRoVwZK-Uk75Xws,8407
82
+ clarifai/runners/models/model_servicer.py,sha256=415RqiXCPH-1WgFHrtZMDH1nb8gaQDpVlrQ_tvtbjOg,4523
83
+ clarifai/runners/models/openai_class.py,sha256=aXlk5W6LWkh-A4eZYi74DeLW0i_86_9DYYGxpJHXI0w,6688
84
+ clarifai/runners/models/visual_classifier_class.py,sha256=1ZoLfCT2crrgRbejjTMAIwpTRgQMiH9N9yflOVpFxSg,2721
85
+ clarifai/runners/models/visual_detector_class.py,sha256=ky4oFAkGCKPpGPdgaOso-n6D3HcmnbKee_8hBsNiV8U,2883
86
+ clarifai/runners/pipeline_steps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ clarifai/runners/pipeline_steps/pipeline_step_builder.py,sha256=E6Ce3b0RolYLMJHaUrKukphD7ndNZafZ8gIsaONiYUk,21047
88
+ clarifai/runners/pipelines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
+ clarifai/runners/pipelines/pipeline_builder.py,sha256=z_bCwjwQPFa_1AYkorhh5r6t6r5hC5K2D8Z1LTEzIpg,12801
90
+ clarifai/runners/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ clarifai/runners/utils/code_script.py,sha256=4wkInN_7MgCvMt9KLJA5_13iF5UFdeQLEhs0T5GvsHQ,13830
92
+ clarifai/runners/utils/const.py,sha256=MK7lTzzJKbOiyiUtG_jlJXfz_xNKMn5LjkQ9vjbttXE,1538
93
+ clarifai/runners/utils/data_utils.py,sha256=HRpMYR2O0OiDpXXhOManLHTeomC4bFnXMHVAiT_12yE,20856
94
+ clarifai/runners/utils/loader.py,sha256=K5Y8MPbIe5STw2gDnrL8KqFgKNxEo7bz-RV0ip1T4PM,10900
95
+ clarifai/runners/utils/method_signatures.py,sha256=qdHaO8ZIgP6BBXXMhMPhcQ46dse-XMP2t4VJCNG7O3Q,18335
96
+ clarifai/runners/utils/model_utils.py,sha256=Cn3_89ZMhIR6f61H-btcK_Luwq0CMAx5fMxPxwngo68,4530
97
+ clarifai/runners/utils/openai_convertor.py,sha256=ZlIrvvfHttD_DavLvmKZdL8gNq_TQvQtZVnYamwdWz4,8248
98
+ clarifai/runners/utils/pipeline_validation.py,sha256=RWWWUA3mNCXHCSNpuofMGfXfWEYe7LrYKwIc-1VFvQs,6444
99
+ clarifai/runners/utils/serializers.py,sha256=pI7GqMTC0T3Lu_X8v8TO4RiplO-gC_49Ns37jYwsPtg,7908
100
+ clarifai/runners/utils/url_fetcher.py,sha256=blKgROquJjZc4e2tLLjM3eUXA6grjdJISHK_8j2Ducs,3379
101
+ clarifai/runners/utils/data_types/__init__.py,sha256=iBtmPkIoLK9ew6ZiXElGt2YBBTDLEA0fmxE_eOYzvhk,478
102
+ clarifai/runners/utils/data_types/data_types.py,sha256=UBHTNPshr94qUs2KqkYis0VlArm23rcSG_EyO_Uetgc,19823
103
+ clarifai/schema/search.py,sha256=o9-ct8ulLZByB3RCVwZWPgaDwdcW7cM5s-g8oyAz89s,2421
104
+ clarifai/urls/helper.py,sha256=z6LnLGgLHxD8scFtyRdxqYIRJNhxqPkfLe53UtTLUBY,11727
105
+ clarifai/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ clarifai/utils/cli.py,sha256=7lHajIsWzyEU7jfgH1nykwYG63wcHCZ3ep7a6amWZH4,5413
107
+ clarifai/utils/config.py,sha256=jMSWYxJfp_D8eoGqz-HTdsngn5bg_1ymjLidYz6rdLA,7073
108
+ clarifai/utils/constants.py,sha256=nvKNAOnfvHza03mYHVLfyOfm_AcFiNKr2CzwyEQgoQI,2110
109
+ clarifai/utils/logging.py,sha256=0we53uTqUvzrulC86whu-oeWNxn1JjJL0OQ98Bwf9vo,15198
110
+ clarifai/utils/misc.py,sha256=x7JP8oxU672Z9yAav47Y1anFiL4RD8WvlKBHMVlbyZM,3137
111
+ clarifai/utils/model_train.py,sha256=0XSAoTkSsrwf4f-W9yw2mkXZtkal7LBLJSoi86CFCn4,9250
112
+ clarifai/utils/protobuf.py,sha256=VMhnNsPuWQ16VarKm8BOr5zccXMe26UlrxdJxIzEZNM,6220
113
+ clarifai/utils/evaluation/__init__.py,sha256=PYkurUrXrGevByj7RFb6CoU1iC7fllyQSfnnlo9WnY8,69
114
+ clarifai/utils/evaluation/helpers.py,sha256=0t6eIDXeZEoiVvnmHTnsIF_-v4BzrQW1hFaqc_psifU,21079
115
+ clarifai/utils/evaluation/main.py,sha256=N_sfRuMjHrUeuWN0Pzms65M1PbkQkgYg3WoQVaDR1Jw,17764
116
+ clarifai/utils/evaluation/testset_annotation_parser.py,sha256=Nmodfi5BYFYEbybWcC8tmU5-wtwRBsWIbnpd3OvKSmA,5414
117
+ clarifai/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
+ clarifai/workflows/export.py,sha256=HvUYG9N_-UZoRR0-_tdGbZ950_AeBqawSppgUxQebR0,1913
119
+ clarifai/workflows/utils.py,sha256=ESL3INcouNcLKCh-nMpfXX-YbtCzX7tz7hT57_RGQ3M,2079
120
+ clarifai/workflows/validate.py,sha256=UhmukyHkfxiMFrPPeBdUTiCOHQT5-shqivlBYEyKTlU,2931
121
+ clarifai-11.5.4.dist-info/licenses/LICENSE,sha256=mUqF_d12-qE2n41g7C5_sq-BMLOcj6CNN-jevr15YHU,555
122
+ clarifai-11.5.4.dist-info/METADATA,sha256=9PlKYam9cZ_1StX7ECiTXQMpS1ci4LjgvKhNi59W-8c,22736
123
+ clarifai-11.5.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
124
+ clarifai-11.5.4.dist-info/entry_points.txt,sha256=X9FZ4Z-i_r2Ud1RpZ9sNIFYuu_-9fogzCMCRUD9hyX0,51
125
+ clarifai-11.5.4.dist-info/top_level.txt,sha256=wUMdCQGjkxaynZ6nZ9FAnvBUCgp5RJUVFSy2j-KYo0s,9
126
+ clarifai-11.5.4.dist-info/RECORD,,
Binary file
Binary file
Binary file