clarifai 11.2.3rc1__py3-none-any.whl → 11.2.3rc2__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 (248) hide show
  1. clarifai/__init__.py +1 -1
  2. clarifai/__pycache__/__init__.cpython-310.pyc +0 -0
  3. clarifai/__pycache__/__init__.cpython-39.pyc +0 -0
  4. clarifai/__pycache__/errors.cpython-310.pyc +0 -0
  5. clarifai/__pycache__/versions.cpython-310.pyc +0 -0
  6. clarifai/cli/__pycache__/__init__.cpython-310.pyc +0 -0
  7. clarifai/cli/__pycache__/base.cpython-310.pyc +0 -0
  8. clarifai/cli/__pycache__/base_cli.cpython-310.pyc +0 -0
  9. clarifai/cli/__pycache__/compute_cluster.cpython-310.pyc +0 -0
  10. clarifai/cli/__pycache__/deployment.cpython-310.pyc +0 -0
  11. clarifai/cli/__pycache__/model.cpython-310.pyc +0 -0
  12. clarifai/cli/__pycache__/model_cli.cpython-310.pyc +0 -0
  13. clarifai/cli/__pycache__/nodepool.cpython-310.pyc +0 -0
  14. clarifai/cli/base.py +81 -228
  15. clarifai/cli/compute_cluster.py +17 -25
  16. clarifai/cli/deployment.py +41 -67
  17. clarifai/cli/model.py +39 -26
  18. clarifai/cli/nodepool.py +40 -59
  19. clarifai/client/__pycache__/__init__.cpython-310.pyc +0 -0
  20. clarifai/client/__pycache__/__init__.cpython-39.pyc +0 -0
  21. clarifai/client/__pycache__/app.cpython-310.pyc +0 -0
  22. clarifai/client/__pycache__/app.cpython-39.pyc +0 -0
  23. clarifai/client/__pycache__/base.cpython-310.pyc +0 -0
  24. clarifai/client/__pycache__/compute_cluster.cpython-310.pyc +0 -0
  25. clarifai/client/__pycache__/dataset.cpython-310.pyc +0 -0
  26. clarifai/client/__pycache__/deployment.cpython-310.pyc +0 -0
  27. clarifai/client/__pycache__/input.cpython-310.pyc +0 -0
  28. clarifai/client/__pycache__/lister.cpython-310.pyc +0 -0
  29. clarifai/client/__pycache__/model.cpython-310.pyc +0 -0
  30. clarifai/client/__pycache__/module.cpython-310.pyc +0 -0
  31. clarifai/client/__pycache__/nodepool.cpython-310.pyc +0 -0
  32. clarifai/client/__pycache__/search.cpython-310.pyc +0 -0
  33. clarifai/client/__pycache__/user.cpython-310.pyc +0 -0
  34. clarifai/client/__pycache__/workflow.cpython-310.pyc +0 -0
  35. clarifai/client/app.py +1 -1
  36. clarifai/client/auth/__pycache__/__init__.cpython-310.pyc +0 -0
  37. clarifai/client/auth/__pycache__/helper.cpython-310.pyc +0 -0
  38. clarifai/client/auth/__pycache__/register.cpython-310.pyc +0 -0
  39. clarifai/client/auth/__pycache__/stub.cpython-310.pyc +0 -0
  40. clarifai/client/cli/__init__.py +0 -0
  41. clarifai/client/cli/__pycache__/__init__.cpython-310.pyc +0 -0
  42. clarifai/client/cli/__pycache__/base_cli.cpython-310.pyc +0 -0
  43. clarifai/client/cli/__pycache__/model_cli.cpython-310.pyc +0 -0
  44. clarifai/client/cli/base_cli.py +88 -0
  45. clarifai/client/cli/model_cli.py +29 -0
  46. clarifai/client/model.py +159 -393
  47. clarifai/client/model_client.py +502 -0
  48. clarifai/constants/__pycache__/base.cpython-310.pyc +0 -0
  49. clarifai/constants/__pycache__/dataset.cpython-310.pyc +0 -0
  50. clarifai/constants/__pycache__/input.cpython-310.pyc +0 -0
  51. clarifai/constants/__pycache__/{model.cpython-312.pyc → model.cpython-310.pyc} +0 -0
  52. clarifai/constants/__pycache__/rag.cpython-310.pyc +0 -0
  53. clarifai/constants/__pycache__/search.cpython-310.pyc +0 -0
  54. clarifai/constants/__pycache__/workflow.cpython-310.pyc +0 -0
  55. clarifai/datasets/__pycache__/__init__.cpython-310.pyc +0 -0
  56. clarifai/datasets/__pycache__/__init__.cpython-39.pyc +0 -0
  57. clarifai/datasets/export/__pycache__/__init__.cpython-310.pyc +0 -0
  58. clarifai/datasets/export/__pycache__/__init__.cpython-39.pyc +0 -0
  59. clarifai/datasets/export/__pycache__/inputs_annotations.cpython-310.pyc +0 -0
  60. clarifai/datasets/upload/__pycache__/__init__.cpython-310.pyc +0 -0
  61. clarifai/datasets/upload/__pycache__/__init__.cpython-39.pyc +0 -0
  62. clarifai/datasets/upload/__pycache__/base.cpython-310.pyc +0 -0
  63. clarifai/datasets/upload/__pycache__/features.cpython-310.pyc +0 -0
  64. clarifai/datasets/upload/__pycache__/image.cpython-310.pyc +0 -0
  65. clarifai/datasets/upload/__pycache__/multimodal.cpython-310.pyc +0 -0
  66. clarifai/datasets/upload/__pycache__/text.cpython-310.pyc +0 -0
  67. clarifai/datasets/upload/__pycache__/utils.cpython-310.pyc +0 -0
  68. clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-39.pyc +0 -0
  69. clarifai/models/__pycache__/__init__.cpython-39.pyc +0 -0
  70. clarifai/modules/__pycache__/__init__.cpython-39.pyc +0 -0
  71. clarifai/rag/__pycache__/__init__.cpython-310.pyc +0 -0
  72. clarifai/rag/__pycache__/__init__.cpython-39.pyc +0 -0
  73. clarifai/rag/__pycache__/rag.cpython-310.pyc +0 -0
  74. clarifai/rag/__pycache__/rag.cpython-39.pyc +0 -0
  75. clarifai/rag/__pycache__/utils.cpython-310.pyc +0 -0
  76. clarifai/runners/__init__.py +2 -7
  77. clarifai/runners/__pycache__/__init__.cpython-310.pyc +0 -0
  78. clarifai/runners/__pycache__/__init__.cpython-39.pyc +0 -0
  79. clarifai/runners/dockerfile_template/Dockerfile.cpu.template +31 -0
  80. clarifai/runners/dockerfile_template/Dockerfile.cuda.template +42 -0
  81. clarifai/runners/dockerfile_template/Dockerfile.nim +71 -0
  82. clarifai/runners/models/__pycache__/__init__.cpython-310.pyc +0 -0
  83. clarifai/runners/models/__pycache__/__init__.cpython-39.pyc +0 -0
  84. clarifai/runners/models/__pycache__/base_typed_model.cpython-310.pyc +0 -0
  85. clarifai/runners/models/__pycache__/base_typed_model.cpython-39.pyc +0 -0
  86. clarifai/runners/models/__pycache__/model_class.cpython-310.pyc +0 -0
  87. clarifai/runners/models/__pycache__/model_run_locally.cpython-310-pytest-7.1.2.pyc +0 -0
  88. clarifai/runners/models/__pycache__/model_run_locally.cpython-310.pyc +0 -0
  89. clarifai/runners/models/__pycache__/model_runner.cpython-310.pyc +0 -0
  90. clarifai/runners/models/__pycache__/model_upload.cpython-310.pyc +0 -0
  91. clarifai/runners/models/model_builder.py +138 -51
  92. clarifai/runners/models/model_class.py +441 -28
  93. clarifai/runners/models/model_class_refract.py +80 -0
  94. clarifai/runners/models/model_run_locally.py +25 -89
  95. clarifai/runners/models/model_runner.py +8 -0
  96. clarifai/runners/models/model_servicer.py +11 -2
  97. clarifai/runners/models/model_upload.py +607 -0
  98. clarifai/runners/models/temp.py +25 -0
  99. clarifai/runners/utils/__pycache__/__init__.cpython-310.pyc +0 -0
  100. clarifai/runners/utils/__pycache__/__init__.cpython-38.pyc +0 -0
  101. clarifai/runners/utils/__pycache__/__init__.cpython-39.pyc +0 -0
  102. clarifai/runners/utils/__pycache__/buffered_stream.cpython-310.pyc +0 -0
  103. clarifai/runners/utils/__pycache__/buffered_stream.cpython-38.pyc +0 -0
  104. clarifai/runners/utils/__pycache__/buffered_stream.cpython-39.pyc +0 -0
  105. clarifai/runners/utils/__pycache__/const.cpython-310.pyc +0 -0
  106. clarifai/runners/utils/__pycache__/constants.cpython-310.pyc +0 -0
  107. clarifai/runners/utils/__pycache__/constants.cpython-38.pyc +0 -0
  108. clarifai/runners/utils/__pycache__/constants.cpython-39.pyc +0 -0
  109. clarifai/runners/utils/__pycache__/data_handler.cpython-310.pyc +0 -0
  110. clarifai/runners/utils/__pycache__/data_handler.cpython-38.pyc +0 -0
  111. clarifai/runners/utils/__pycache__/data_handler.cpython-39.pyc +0 -0
  112. clarifai/runners/utils/__pycache__/data_utils.cpython-310.pyc +0 -0
  113. clarifai/runners/utils/__pycache__/data_utils.cpython-38.pyc +0 -0
  114. clarifai/runners/utils/__pycache__/data_utils.cpython-39.pyc +0 -0
  115. clarifai/runners/utils/__pycache__/grpc_server.cpython-310.pyc +0 -0
  116. clarifai/runners/utils/__pycache__/grpc_server.cpython-38.pyc +0 -0
  117. clarifai/runners/utils/__pycache__/grpc_server.cpython-39.pyc +0 -0
  118. clarifai/runners/utils/__pycache__/health.cpython-310.pyc +0 -0
  119. clarifai/runners/utils/__pycache__/health.cpython-38.pyc +0 -0
  120. clarifai/runners/utils/__pycache__/health.cpython-39.pyc +0 -0
  121. clarifai/runners/utils/__pycache__/loader.cpython-310.pyc +0 -0
  122. clarifai/runners/utils/__pycache__/logging.cpython-310.pyc +0 -0
  123. clarifai/runners/utils/__pycache__/logging.cpython-38.pyc +0 -0
  124. clarifai/runners/utils/__pycache__/logging.cpython-39.pyc +0 -0
  125. clarifai/runners/utils/__pycache__/stream_source.cpython-310.pyc +0 -0
  126. clarifai/runners/utils/__pycache__/stream_source.cpython-39.pyc +0 -0
  127. clarifai/runners/utils/__pycache__/url_fetcher.cpython-310.pyc +0 -0
  128. clarifai/runners/utils/__pycache__/url_fetcher.cpython-38.pyc +0 -0
  129. clarifai/runners/utils/__pycache__/url_fetcher.cpython-39.pyc +0 -0
  130. clarifai/runners/utils/code_script.py +217 -0
  131. clarifai/runners/utils/const.py +8 -9
  132. clarifai/runners/utils/data_handler.py +271 -210
  133. clarifai/runners/utils/data_handler_refract.py +213 -0
  134. clarifai/runners/utils/data_types.py +473 -0
  135. clarifai/runners/utils/data_utils.py +165 -0
  136. clarifai/runners/utils/loader.py +6 -36
  137. clarifai/runners/utils/logger.py +0 -0
  138. clarifai/runners/utils/method_signatures.py +518 -0
  139. clarifai/runners/utils/serializers.py +222 -0
  140. clarifai/schema/__pycache__/search.cpython-310.pyc +0 -0
  141. clarifai/urls/__pycache__/helper.cpython-310.pyc +0 -0
  142. clarifai/utils/__pycache__/__init__.cpython-310.pyc +0 -0
  143. clarifai/utils/__pycache__/__init__.cpython-39.pyc +0 -0
  144. clarifai/utils/__pycache__/cli.cpython-310.pyc +0 -0
  145. clarifai/utils/__pycache__/constants.cpython-310.pyc +0 -0
  146. clarifai/utils/__pycache__/logging.cpython-310.pyc +0 -0
  147. clarifai/utils/__pycache__/misc.cpython-310.pyc +0 -0
  148. clarifai/utils/__pycache__/model_train.cpython-310.pyc +0 -0
  149. clarifai/utils/cli.py +33 -132
  150. clarifai/utils/constants.py +0 -4
  151. clarifai/utils/evaluation/__pycache__/__init__.cpython-39.pyc +0 -0
  152. clarifai/utils/evaluation/__pycache__/main.cpython-39.pyc +0 -0
  153. clarifai/utils/misc.py +0 -2
  154. clarifai/workflows/__pycache__/__init__.cpython-310.pyc +0 -0
  155. clarifai/workflows/__pycache__/__init__.cpython-39.pyc +0 -0
  156. clarifai/workflows/__pycache__/export.cpython-310.pyc +0 -0
  157. clarifai/workflows/__pycache__/utils.cpython-310.pyc +0 -0
  158. clarifai/workflows/__pycache__/validate.cpython-310.pyc +0 -0
  159. {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/METADATA +14 -3
  160. clarifai-11.2.3rc2.dist-info/RECORD +238 -0
  161. {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/WHEEL +1 -1
  162. clarifai/__pycache__/__init__.cpython-312.pyc +0 -0
  163. clarifai/__pycache__/errors.cpython-312.pyc +0 -0
  164. clarifai/__pycache__/versions.cpython-312.pyc +0 -0
  165. clarifai/cli/__pycache__/__init__.cpython-312.pyc +0 -0
  166. clarifai/cli/__pycache__/base.cpython-312.pyc +0 -0
  167. clarifai/cli/__pycache__/compute_cluster.cpython-312.pyc +0 -0
  168. clarifai/cli/__pycache__/deployment.cpython-312.pyc +0 -0
  169. clarifai/cli/__pycache__/model.cpython-312.pyc +0 -0
  170. clarifai/cli/__pycache__/nodepool.cpython-312.pyc +0 -0
  171. clarifai/client/__pycache__/__init__.cpython-312.pyc +0 -0
  172. clarifai/client/__pycache__/app.cpython-312.pyc +0 -0
  173. clarifai/client/__pycache__/base.cpython-312.pyc +0 -0
  174. clarifai/client/__pycache__/compute_cluster.cpython-312.pyc +0 -0
  175. clarifai/client/__pycache__/dataset.cpython-312.pyc +0 -0
  176. clarifai/client/__pycache__/deployment.cpython-312.pyc +0 -0
  177. clarifai/client/__pycache__/input.cpython-312.pyc +0 -0
  178. clarifai/client/__pycache__/lister.cpython-312.pyc +0 -0
  179. clarifai/client/__pycache__/model.cpython-312.pyc +0 -0
  180. clarifai/client/__pycache__/model_client.cpython-312.pyc +0 -0
  181. clarifai/client/__pycache__/module.cpython-312.pyc +0 -0
  182. clarifai/client/__pycache__/nodepool.cpython-312.pyc +0 -0
  183. clarifai/client/__pycache__/search.cpython-312.pyc +0 -0
  184. clarifai/client/__pycache__/user.cpython-312.pyc +0 -0
  185. clarifai/client/__pycache__/workflow.cpython-312.pyc +0 -0
  186. clarifai/client/auth/__pycache__/__init__.cpython-312.pyc +0 -0
  187. clarifai/client/auth/__pycache__/helper.cpython-312.pyc +0 -0
  188. clarifai/client/auth/__pycache__/register.cpython-312.pyc +0 -0
  189. clarifai/client/auth/__pycache__/stub.cpython-312.pyc +0 -0
  190. clarifai/constants/__pycache__/base.cpython-312.pyc +0 -0
  191. clarifai/constants/__pycache__/dataset.cpython-312.pyc +0 -0
  192. clarifai/constants/__pycache__/input.cpython-312.pyc +0 -0
  193. clarifai/constants/__pycache__/search.cpython-312.pyc +0 -0
  194. clarifai/constants/__pycache__/workflow.cpython-312.pyc +0 -0
  195. clarifai/datasets/__pycache__/__init__.cpython-312.pyc +0 -0
  196. clarifai/datasets/export/__pycache__/__init__.cpython-312.pyc +0 -0
  197. clarifai/datasets/export/__pycache__/inputs_annotations.cpython-312.pyc +0 -0
  198. clarifai/datasets/upload/__pycache__/__init__.cpython-312.pyc +0 -0
  199. clarifai/datasets/upload/__pycache__/base.cpython-312.pyc +0 -0
  200. clarifai/datasets/upload/__pycache__/features.cpython-312.pyc +0 -0
  201. clarifai/datasets/upload/__pycache__/image.cpython-312.pyc +0 -0
  202. clarifai/datasets/upload/__pycache__/multimodal.cpython-312.pyc +0 -0
  203. clarifai/datasets/upload/__pycache__/text.cpython-312.pyc +0 -0
  204. clarifai/datasets/upload/__pycache__/utils.cpython-312.pyc +0 -0
  205. clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-312.pyc +0 -0
  206. clarifai/datasets/upload/loaders/__pycache__/coco_detection.cpython-312.pyc +0 -0
  207. clarifai/modules/__pycache__/__init__.cpython-312.pyc +0 -0
  208. clarifai/modules/__pycache__/css.cpython-312.pyc +0 -0
  209. clarifai/runners/__pycache__/__init__.cpython-312.pyc +0 -0
  210. clarifai/runners/__pycache__/server.cpython-312.pyc +0 -0
  211. clarifai/runners/models/__pycache__/__init__.cpython-312.pyc +0 -0
  212. clarifai/runners/models/__pycache__/base_typed_model.cpython-312.pyc +0 -0
  213. clarifai/runners/models/__pycache__/model_builder.cpython-312.pyc +0 -0
  214. clarifai/runners/models/__pycache__/model_class.cpython-312.pyc +0 -0
  215. clarifai/runners/models/__pycache__/model_run_locally.cpython-312.pyc +0 -0
  216. clarifai/runners/models/__pycache__/model_runner.cpython-312.pyc +0 -0
  217. clarifai/runners/models/__pycache__/model_servicer.cpython-312.pyc +0 -0
  218. clarifai/runners/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  219. clarifai/runners/utils/__pycache__/const.cpython-312.pyc +0 -0
  220. clarifai/runners/utils/__pycache__/data_handler.cpython-312.pyc +0 -0
  221. clarifai/runners/utils/__pycache__/data_types.cpython-312.pyc +0 -0
  222. clarifai/runners/utils/__pycache__/data_utils.cpython-312.pyc +0 -0
  223. clarifai/runners/utils/__pycache__/loader.cpython-312.pyc +0 -0
  224. clarifai/runners/utils/__pycache__/method_signatures.cpython-312.pyc +0 -0
  225. clarifai/runners/utils/__pycache__/serializers.cpython-312.pyc +0 -0
  226. clarifai/runners/utils/__pycache__/url_fetcher.cpython-312.pyc +0 -0
  227. clarifai/schema/__pycache__/search.cpython-312.pyc +0 -0
  228. clarifai/urls/__pycache__/helper.cpython-312.pyc +0 -0
  229. clarifai/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  230. clarifai/utils/__pycache__/cli.cpython-312.pyc +0 -0
  231. clarifai/utils/__pycache__/config.cpython-312.pyc +0 -0
  232. clarifai/utils/__pycache__/constants.cpython-312.pyc +0 -0
  233. clarifai/utils/__pycache__/logging.cpython-312.pyc +0 -0
  234. clarifai/utils/__pycache__/misc.cpython-312.pyc +0 -0
  235. clarifai/utils/__pycache__/model_train.cpython-312.pyc +0 -0
  236. clarifai/utils/config.py +0 -105
  237. clarifai/utils/config.py~ +0 -145
  238. clarifai/utils/evaluation/__pycache__/__init__.cpython-312.pyc +0 -0
  239. clarifai/utils/evaluation/__pycache__/helpers.cpython-312.pyc +0 -0
  240. clarifai/utils/evaluation/__pycache__/main.cpython-312.pyc +0 -0
  241. clarifai/workflows/__pycache__/__init__.cpython-312.pyc +0 -0
  242. clarifai/workflows/__pycache__/export.cpython-312.pyc +0 -0
  243. clarifai/workflows/__pycache__/utils.cpython-312.pyc +0 -0
  244. clarifai/workflows/__pycache__/validate.cpython-312.pyc +0 -0
  245. clarifai-11.2.3rc1.dist-info/RECORD +0 -185
  246. {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/LICENSE +0 -0
  247. {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/entry_points.txt +0 -0
  248. {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,217 @@
1
+ import json
2
+ from typing import List
3
+ from clarifai_grpc.grpc.api import resources_pb2
4
+ from clarifai.runners.utils import data_types
5
+
6
+
7
+ def generate_client_script(method_signatures: List[resources_pb2.MethodSignature], user_id, app_id,
8
+ model_id) -> str:
9
+ _CLIENT_TEMPLATE = """\
10
+ from clarifai.runners.utils import data_types
11
+ import os
12
+ from clarifai.client import Model
13
+
14
+ model = Model("www.clarifai.com/{user_id}/{app_id}/{model_id}",
15
+ deployment_id = os.environ['CLARIFAI_DEPLOYMENT_ID'], # Only needed for dedicated deployed models
16
+ )
17
+ """
18
+ # Generate client template
19
+ client_template = _CLIENT_TEMPLATE.format(user_id=user_id, app_id=app_id, model_id=model_id)
20
+
21
+ # Generate method signatures
22
+ method_signatures_str = []
23
+ for method_signature in method_signatures:
24
+ method_name = method_signature.name
25
+ if method_signature.method_type in [
26
+ resources_pb2.RunnerMethodType.UNARY_UNARY,
27
+ resources_pb2.RunnerMethodType.UNARY_STREAMING,
28
+ ]:
29
+
30
+ client_script_str = f'response = model.{method_name}('
31
+ annotations = _get_annotations_source(method_signature)
32
+ for param_name, (param_type, default_value) in annotations.items():
33
+ if param_name == "return":
34
+ continue
35
+ if default_value is None:
36
+ default_value = _set_default_value(param_type)
37
+ if param_type == "str":
38
+ default_value = repr(default_value)
39
+
40
+ client_script_str += f"{param_name}={default_value}, "
41
+ client_script_str = client_script_str.rstrip(", ") + ")"
42
+ if method_signature.method_type == resources_pb2.RunnerMethodType.UNARY_UNARY:
43
+ client_script_str += "\nprint(response)"
44
+ elif method_signature.method_type == resources_pb2.RunnerMethodType.UNARY_STREAMING:
45
+ client_script_str += "\nfor res in response:\n print(res)"
46
+ client_script_str += "\n"
47
+ method_signatures_str.append(client_script_str)
48
+
49
+ method_signatures_str = "\n".join(method_signatures_str)
50
+ # Combine all parts
51
+ script_lines = []
52
+ script_lines.append("\n# Clarifai Model Client Script")
53
+ script_lines.append(
54
+ "# Set the environment variables `CLARIFAI_DEPLOYMENT_ID` and `CLARIFAI_PAT` to run this script."
55
+ )
56
+ script_lines.append("# Example usage:")
57
+ script_lines.append(client_template)
58
+ script_lines.append("# Example model prediction from different model methods: \n")
59
+ script_lines.append(method_signatures_str)
60
+ script_lines.append("")
61
+ script = "\n".join(script_lines)
62
+ return script
63
+
64
+
65
+ # get annotations source with default values
66
+ def _get_annotations_source(method_signature: resources_pb2.MethodSignature) -> dict:
67
+ annotations = {}
68
+ for input_field in method_signature.input_fields:
69
+ param_name = input_field.name
70
+ param_type = _get_base_type(input_field)
71
+ if input_field.iterator:
72
+ param_type = f"Iterator[{param_type}]"
73
+ default_value = None
74
+ if input_field.default:
75
+ default_value = _parse_default_value(input_field)
76
+
77
+ annotations[param_name] = (param_type, default_value)
78
+ if not method_signature.output_fields:
79
+ raise ValueError("MethodSignature must have at least one output field")
80
+ for output_field in method_signature.output_fields:
81
+ param_name = output_field.name
82
+ param_type = _get_base_type(output_field)
83
+ if output_field.iterator:
84
+ param_type = f"Iterator[{param_type}]"
85
+ annotations[param_name] = (param_type, None)
86
+ return annotations
87
+
88
+
89
+ def _get_base_type(field: resources_pb2.ModelTypeField) -> str:
90
+ data_type = field.type
91
+ if data_type == resources_pb2.ModelTypeField.DataType.NAMED_FIELDS:
92
+ annotations = {}
93
+ for type_arg in field.type_args:
94
+ field_name = type_arg.name
95
+ field_type = _get_base_type(type_arg)
96
+ annotations[field_name] = field_type
97
+ class_name = f"NamedFields[{', '.join(f'{k}: {v}' for k, v in annotations.items())}]"
98
+ return class_name
99
+ elif data_type == resources_pb2.ModelTypeField.DataType.TUPLE:
100
+ type_args_str = [_get_base_type(ta) for ta in field.type_args]
101
+ return f"Tuple[{', '.join(type_args_str)}]"
102
+ elif data_type == resources_pb2.ModelTypeField.DataType.LIST:
103
+ if len(field.type_args) != 1:
104
+ raise ValueError("List type must have exactly one type argument")
105
+ element_type = _get_base_type(field.type_args[0])
106
+ return f"List[{element_type}]"
107
+ else:
108
+ type_map = {
109
+ resources_pb2.ModelTypeField.DataType.STR: "str",
110
+ resources_pb2.ModelTypeField.DataType.BYTES: "bytes",
111
+ resources_pb2.ModelTypeField.DataType.INT: "int",
112
+ resources_pb2.ModelTypeField.DataType.FLOAT: "float",
113
+ resources_pb2.ModelTypeField.DataType.BOOL: "bool",
114
+ resources_pb2.ModelTypeField.DataType.NDARRAY: "np.ndarray",
115
+ resources_pb2.ModelTypeField.DataType.JSON_DATA: "data_types.JSON",
116
+ resources_pb2.ModelTypeField.DataType.TEXT: "data_types.Text",
117
+ resources_pb2.ModelTypeField.DataType.IMAGE: "data_types.Image",
118
+ resources_pb2.ModelTypeField.DataType.CONCEPT: "data_types.Concept",
119
+ resources_pb2.ModelTypeField.DataType.REGION: "data_types.Region",
120
+ resources_pb2.ModelTypeField.DataType.FRAME: "data_types.Frame",
121
+ resources_pb2.ModelTypeField.DataType.AUDIO: "data_types.Audio",
122
+ resources_pb2.ModelTypeField.DataType.VIDEO: "data_types.Video",
123
+ }
124
+ return type_map.get(data_type, "Any")
125
+
126
+
127
+ def _map_default_value(field_type):
128
+ """
129
+ Map the default value of a field type to a string representation.
130
+ """
131
+ default_value = None
132
+
133
+ if field_type == "str":
134
+ default_value = 'What is the future of AI?'
135
+ elif field_type == "bytes":
136
+ default_value = b""
137
+ elif field_type == "int":
138
+ default_value = 0
139
+ elif field_type == "float":
140
+ default_value = 0.0
141
+ elif field_type == "bool":
142
+ default_value = False
143
+ elif field_type == "data_types.Image":
144
+ default_value = data_types.Image.from_url("https://samples.clarifai.com/metro-north.jpg")
145
+ elif field_type == "data_types.Text":
146
+ default_value = data_types.Text("What's the future of AI?")
147
+ elif field_type == "data_types.Audio":
148
+ default_value = data_types.Audio.from_url("https://samples.clarifai.com/audio.mp3")
149
+ elif field_type == "data_types.Video":
150
+ default_value = data_types.Video.from_url("https://samples.clarifai.com/video.mp4")
151
+ elif field_type == "data_types.Concept":
152
+ default_value = data_types.Concept(id="concept_id", name="dog", value=0.95)
153
+ elif field_type == "data_types.Region":
154
+ default_value = data_types.Region(box=[0.1, 0.1, 0.5, 0.5],)
155
+ elif field_type == "data_types.Frame":
156
+ default_value = data_types.Frame.from_url("https://samples.clarifai.com/video.mp4", 0)
157
+ elif field_type == "data_types.NDArray":
158
+ default_value = data_types.NDArray([1, 2, 3])
159
+ else:
160
+ default_value = None
161
+ return default_value
162
+
163
+
164
+ def _set_default_value(field_type):
165
+ """
166
+ Set the default value of a field if it is not set.
167
+ """
168
+ default_value = None
169
+ default_value = _map_default_value(field_type)
170
+ if field_type.startswith("List["):
171
+ element_type = field_type[5:-1]
172
+ element_type_default_value = _map_default_value(element_type)
173
+ if element_type_default_value is not None:
174
+ default_value = f"[{element_type_default_value}]"
175
+ elif field_type.startswith("Tuple["):
176
+ element_types = field_type[6:-1].split(", ")
177
+ element_type_defaults = [_map_default_value(et) for et in element_types]
178
+ default_value = f"({', '.join([str(et) for et in element_type_defaults])})"
179
+ elif field_type.startswith("NamedFields["):
180
+ element_types = field_type[12:-1].split(", ")
181
+ element_type_defaults = [_map_default_value(et) for et in element_types]
182
+ default_value = f"{{{', '.join([str(et) for et in element_type_defaults])}}}"
183
+
184
+ return default_value
185
+
186
+
187
+ def _parse_default_value(field: resources_pb2.ModelTypeField):
188
+ if not field.default:
189
+ return None
190
+ default_str = field.default
191
+ data_type = field.type
192
+
193
+ try:
194
+ if data_type == resources_pb2.ModelTypeField.DataType.INT:
195
+ return str(int(default_str))
196
+ elif data_type == resources_pb2.ModelTypeField.DataType.FLOAT:
197
+ return str(float(default_str))
198
+ elif data_type == resources_pb2.ModelTypeField.DataType.BOOL:
199
+ return 'True' if default_str.lower() == 'true' else 'False'
200
+ elif data_type == resources_pb2.ModelTypeField.DataType.STR:
201
+ return repr(default_str)
202
+ elif data_type == resources_pb2.ModelTypeField.DataType.BYTES:
203
+ return f"b{repr(default_str.encode('utf-8'))}"
204
+ elif data_type == resources_pb2.ModelTypeField.DataType.JSON_DATA:
205
+ parsed = json.loads(default_str)
206
+ return repr(parsed)
207
+ elif data_type in (
208
+ resources_pb2.ModelTypeField.DataType.LIST,
209
+ resources_pb2.ModelTypeField.DataType.TUPLE,
210
+ resources_pb2.ModelTypeField.DataType.NAMED_FIELDS,
211
+ ):
212
+ parsed = json.loads(default_str)
213
+ return repr(parsed)
214
+ else:
215
+ return repr(default_str)
216
+ except (ValueError, json.JSONDecodeError):
217
+ return repr(default_str)
@@ -2,10 +2,10 @@ import os
2
2
 
3
3
  registry = os.environ.get('CLARIFAI_BASE_IMAGE_REGISTRY', 'public.ecr.aws/clarifai-models')
4
4
 
5
- GIT_SHA = "b8ae56bf3b7c95e686ca002b07ca83d259c716eb"
5
+ GIT_SHA = "df565436eea93efb3e8d1eb558a0a46df29523ec"
6
6
 
7
7
  PYTHON_BASE_IMAGE = registry + '/python-base:{python_version}-' + GIT_SHA
8
- TORCH_BASE_IMAGE = registry + '/torch:{torch_version}-py{python_version}-{gpu_version}-' + GIT_SHA
8
+ TORCH_BASE_IMAGE = registry + '/torch:{torch_version}-py{python_version}-cuda{cuda_version}-' + GIT_SHA
9
9
 
10
10
  # List of available python base images
11
11
  AVAILABLE_PYTHON_IMAGES = ['3.11', '3.12']
@@ -21,13 +21,12 @@ DEFAULT_RUNTIME_DOWNLOAD_PATH = os.path.join(os.sep, "tmp", ".cache")
21
21
  # List of available torch images
22
22
  # Keep sorted by most recent cuda version.
23
23
  AVAILABLE_TORCH_IMAGES = [
24
- '2.4.1-py3.11-cu124',
25
- '2.5.1-py3.11-cu124',
26
- '2.4.1-py3.12-cu124',
27
- '2.5.1-py3.12-cu124',
28
- '2.6.0-py3.12-cu126',
29
- '2.7.0-py3.12-cu128',
30
- '2.7.0-py3.12-rocm6.3',
24
+ '2.4.1-py3.11-cuda124',
25
+ '2.5.1-py3.11-cuda124',
26
+ '2.4.1-py3.12-cuda124',
27
+ '2.5.1-py3.12-cuda124',
28
+ # '2.4.1-py3.13-cuda124',
29
+ # '2.5.1-py3.13-cuda124',
31
30
  ]
32
31
  CONCEPTS_REQUIRED_MODEL_TYPE = [
33
32
  'visual-classifier', 'visual-detector', 'visual-segmenter', 'text-classifier'