clarifai 9.8.1__tar.gz → 9.9.0__tar.gz

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 (420) hide show
  1. {clarifai-9.8.1/clarifai.egg-info → clarifai-9.9.0}/PKG-INFO +18 -2
  2. {clarifai-9.8.1 → clarifai-9.9.0}/README.md +17 -1
  3. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/app.py +115 -14
  4. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/client/base.py +11 -4
  5. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/client/dataset.py +8 -3
  6. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/input.py +34 -28
  7. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/client/model.py +71 -2
  8. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/client/module.py +4 -2
  9. clarifai-9.9.0/clarifai/client/runner.py +161 -0
  10. clarifai-9.9.0/clarifai/client/search.py +173 -0
  11. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/user.py +110 -4
  12. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/client/workflow.py +27 -2
  13. clarifai-9.9.0/clarifai/constants/search.py +2 -0
  14. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/datasets/upload/loaders/xview_detection.py +1 -1
  15. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/models/model_serving/README.md +3 -3
  16. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/cli/deploy_cli.py +2 -3
  17. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/cli/repository.py +3 -5
  18. clarifai-9.9.0/clarifai/models/model_serving/constants.py +1 -0
  19. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/docs/custom_config.md +5 -6
  20. clarifai-9.9.0/clarifai/models/model_serving/docs/dependencies.md +11 -0
  21. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/requirements.txt +1 -0
  22. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/requirements.txt +1 -0
  23. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_image/sd-v1.5/requirements.txt +1 -0
  24. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/models/model_serving/examples/text_to_text/bart-summarize/requirements.txt +1 -0
  25. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_detection/yolov5x/requirements.txt +1 -1
  26. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_embedding/vit-base/requirements.txt +1 -0
  27. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/requirements.txt +1 -0
  28. clarifai-9.9.0/clarifai/models/model_serving/model_config/__init__.py +14 -0
  29. clarifai-9.9.0/clarifai/models/model_serving/model_config/config.py +298 -0
  30. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/text-classifier.yaml +18 -0
  31. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/text-embedder.yaml +18 -0
  32. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/text-to-image.yaml +18 -0
  33. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/text-to-text.yaml +18 -0
  34. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/visual-classifier.yaml +18 -0
  35. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/visual-detector.yaml +28 -0
  36. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/visual-embedder.yaml +18 -0
  37. clarifai-9.9.0/clarifai/models/model_serving/model_config/model_types_config/visual-segmenter.yaml +18 -0
  38. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/models/model_serving/model_config/serializer.py +1 -1
  39. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/models/model_serving/models/default_test.py +22 -21
  40. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/models/model_serving/models/output.py +2 -2
  41. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/pb_model_repository.py +2 -5
  42. clarifai-9.9.0/clarifai/runners/example.py +33 -0
  43. clarifai-9.9.0/clarifai/schema/search.py +60 -0
  44. clarifai-9.9.0/clarifai/utils/logging.py +90 -0
  45. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai}/versions.py +1 -1
  46. clarifai-9.9.0/clarifai/workflows/export.py +68 -0
  47. clarifai-9.9.0/clarifai/workflows/utils.py +59 -0
  48. clarifai-9.9.0/clarifai/workflows/validate.py +67 -0
  49. {clarifai-9.8.1 → clarifai-9.9.0/clarifai.egg-info}/PKG-INFO +18 -2
  50. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai.egg-info/SOURCES.txt +41 -24
  51. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai.egg-info/requires.txt +2 -0
  52. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/app.py +115 -14
  53. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/client/base.py +11 -4
  54. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/client/dataset.py +8 -3
  55. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/input.py +34 -28
  56. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/client/model.py +71 -2
  57. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/client/module.py +4 -2
  58. clarifai-9.9.0/clarifai_utils/client/runner.py +161 -0
  59. clarifai-9.9.0/clarifai_utils/client/search.py +173 -0
  60. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/user.py +110 -4
  61. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/client/workflow.py +27 -2
  62. clarifai-9.9.0/clarifai_utils/constants/search.py +2 -0
  63. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/datasets/upload/loaders/xview_detection.py +1 -1
  64. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/models/model_serving/README.md +3 -3
  65. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/cli/deploy_cli.py +2 -3
  66. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/cli/repository.py +3 -5
  67. clarifai-9.9.0/clarifai_utils/models/model_serving/constants.py +1 -0
  68. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/docs/custom_config.md +5 -6
  69. clarifai-9.9.0/clarifai_utils/models/model_serving/docs/dependencies.md +11 -0
  70. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/image_classification/age_vit}/requirements.txt +1 -0
  71. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/image_classification/age_vit → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta}/requirements.txt +1 -0
  72. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/requirements.txt +1 -0
  73. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/models/model_serving/examples/text_to_text/bart-summarize/requirements.txt +1 -0
  74. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/requirements.txt +1 -1
  75. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/requirements.txt +1 -0
  76. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/requirements.txt +1 -0
  77. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/__init__.py +14 -0
  78. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/config.py +298 -0
  79. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/text-classifier.yaml +18 -0
  80. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/text-embedder.yaml +18 -0
  81. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/text-to-image.yaml +18 -0
  82. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/text-to-text.yaml +18 -0
  83. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/visual-classifier.yaml +18 -0
  84. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/visual-detector.yaml +28 -0
  85. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/visual-embedder.yaml +18 -0
  86. clarifai-9.9.0/clarifai_utils/models/model_serving/model_config/model_types_config/visual-segmenter.yaml +18 -0
  87. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/models/model_serving/model_config/serializer.py +1 -1
  88. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/models/model_serving/models/default_test.py +22 -21
  89. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/models/model_serving/models/output.py +2 -2
  90. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/pb_model_repository.py +2 -5
  91. clarifai-9.9.0/clarifai_utils/modules/__init__.py +0 -0
  92. clarifai-9.9.0/clarifai_utils/runners/__init__.py +0 -0
  93. clarifai-9.9.0/clarifai_utils/runners/example.py +33 -0
  94. clarifai-9.9.0/clarifai_utils/schema/search.py +60 -0
  95. clarifai-9.9.0/clarifai_utils/utils/__init__.py +0 -0
  96. clarifai-9.9.0/clarifai_utils/utils/logging.py +90 -0
  97. {clarifai-9.8.1/clarifai → clarifai-9.9.0/clarifai_utils}/versions.py +1 -1
  98. clarifai-9.9.0/clarifai_utils/workflows/__init__.py +0 -0
  99. clarifai-9.9.0/clarifai_utils/workflows/export.py +68 -0
  100. clarifai-9.9.0/clarifai_utils/workflows/utils.py +59 -0
  101. clarifai-9.9.0/clarifai_utils/workflows/validate.py +67 -0
  102. {clarifai-9.8.1 → clarifai-9.9.0}/setup.py +3 -2
  103. {clarifai-9.8.1 → clarifai-9.9.0}/tests/test_app.py +18 -10
  104. clarifai-9.9.0/tests/test_data_upload.py +122 -0
  105. {clarifai-9.8.1 → clarifai-9.9.0}/tests/test_model_predict.py +16 -0
  106. clarifai-9.9.0/tests/test_search.py +132 -0
  107. clarifai-9.8.1/clarifai/models/model_serving/constants.py +0 -5
  108. clarifai-9.8.1/clarifai/models/model_serving/docs/dependencies.md +0 -16
  109. clarifai-9.8.1/clarifai/models/model_serving/envs/triton_conda-cp3.8-torch1.13.1-19f97078.yaml +0 -35
  110. clarifai-9.8.1/clarifai/models/model_serving/envs/triton_conda-cp3.8-torch2.0.0-ce980f28.yaml +0 -51
  111. clarifai-9.8.1/clarifai/models/model_serving/examples/image_classification/age_vit/triton_conda.yaml +0 -1
  112. clarifai-9.8.1/clarifai/models/model_serving/examples/text_classification/xlm-roberta/triton_conda.yaml +0 -1
  113. clarifai-9.8.1/clarifai/models/model_serving/examples/text_to_image/sd-v1.5/triton_conda.yaml +0 -1
  114. clarifai-9.8.1/clarifai/models/model_serving/examples/text_to_text/bart-summarize/triton_conda.yaml +0 -1
  115. clarifai-9.8.1/clarifai/models/model_serving/examples/visual_detection/yolov5x/triton_conda.yaml +0 -1
  116. clarifai-9.8.1/clarifai/models/model_serving/examples/visual_embedding/vit-base/triton_conda.yaml +0 -1
  117. clarifai-9.8.1/clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/triton_conda.yaml +0 -1
  118. clarifai-9.8.1/clarifai/models/model_serving/model_config/deploy.py +0 -75
  119. clarifai-9.8.1/clarifai/models/model_serving/model_config/triton_config.py +0 -226
  120. clarifai-9.8.1/clarifai/utils/logging.py +0 -40
  121. clarifai-9.8.1/clarifai_utils/models/model_serving/constants.py +0 -5
  122. clarifai-9.8.1/clarifai_utils/models/model_serving/docs/dependencies.md +0 -16
  123. clarifai-9.8.1/clarifai_utils/models/model_serving/envs/triton_conda-cp3.8-torch1.13.1-19f97078.yaml +0 -35
  124. clarifai-9.8.1/clarifai_utils/models/model_serving/envs/triton_conda-cp3.8-torch2.0.0-ce980f28.yaml +0 -51
  125. clarifai-9.8.1/clarifai_utils/models/model_serving/examples/image_classification/age_vit/triton_conda.yaml +0 -1
  126. clarifai-9.8.1/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/triton_conda.yaml +0 -1
  127. clarifai-9.8.1/clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/triton_conda.yaml +0 -1
  128. clarifai-9.8.1/clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/triton_conda.yaml +0 -1
  129. clarifai-9.8.1/clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/triton_conda.yaml +0 -1
  130. clarifai-9.8.1/clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/triton_conda.yaml +0 -1
  131. clarifai-9.8.1/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/triton_conda.yaml +0 -1
  132. clarifai-9.8.1/clarifai_utils/models/model_serving/model_config/__init__.py +0 -12
  133. clarifai-9.8.1/clarifai_utils/models/model_serving/model_config/deploy.py +0 -75
  134. clarifai-9.8.1/clarifai_utils/models/model_serving/model_config/triton_config.py +0 -226
  135. clarifai-9.8.1/clarifai_utils/models/model_serving/models/__init__.py +0 -12
  136. clarifai-9.8.1/clarifai_utils/utils/logging.py +0 -40
  137. clarifai-9.8.1/tests/test_workflow_predict.py +0 -49
  138. {clarifai-9.8.1 → clarifai-9.9.0}/LICENSE +0 -0
  139. {clarifai-9.8.1 → clarifai-9.9.0}/MANIFEST.in +0 -0
  140. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/__init__.py +0 -0
  141. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/auth/__init__.py +0 -0
  142. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/auth/helper.py +0 -0
  143. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/auth/register.py +0 -0
  144. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/auth/stub.py +0 -0
  145. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/cli.py +0 -0
  146. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/__init__.py +0 -0
  147. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/auth/__init__.py +0 -0
  148. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/auth/helper.py +0 -0
  149. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/auth/register.py +0 -0
  150. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/auth/stub.py +0 -0
  151. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/client/lister.py +0 -0
  152. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/__init__.py +0 -0
  153. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/export/__init__.py +0 -0
  154. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/export/dataset_inputs.py +0 -0
  155. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/__init__.py +0 -0
  156. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/base.py +0 -0
  157. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/README.md +0 -0
  158. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/__init__.py +0 -0
  159. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/__init__.py +0 -0
  160. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
  161. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
  162. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/dataset.py +0 -0
  163. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  164. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  165. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  166. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  167. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  168. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  169. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  170. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  171. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  172. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  173. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/__init__.py +0 -0
  174. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/dataset.py +0 -0
  175. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  176. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  177. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  178. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  179. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  180. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  181. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  182. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  183. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  184. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  185. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  186. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  187. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  188. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  189. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  190. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  191. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  192. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  193. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  194. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  195. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/text_classification/__init__.py +0 -0
  196. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/text_classification/imdb_dataset/__init__.py +0 -0
  197. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +0 -0
  198. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/text_classification/imdb_dataset/test.csv +0 -0
  199. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/examples/text_classification/imdb_dataset/train.csv +0 -0
  200. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/features.py +0 -0
  201. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/image.py +0 -0
  202. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/loaders/README.md +0 -0
  203. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/loaders/__init__.py +0 -0
  204. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/loaders/coco_captions.py +0 -0
  205. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/loaders/coco_detection.py +0 -0
  206. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/loaders/coco_segmentation.py +0 -0
  207. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/loaders/imagenet_classification.py +0 -0
  208. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/text.py +0 -0
  209. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/datasets/upload/utils.py +0 -0
  210. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/errors.py +0 -0
  211. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/__init__.py +0 -0
  212. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/api.py +0 -0
  213. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/__init__.py +0 -0
  214. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/cli/__init__.py +0 -0
  215. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/cli/model_zip.py +0 -0
  216. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/docs/model_types.md +0 -0
  217. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/docs/output.md +0 -0
  218. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/README.md +0 -0
  219. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/README.md +0 -0
  220. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/1/__init__.py +0 -0
  221. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/1/inference.py +0 -0
  222. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/1/model.py +0 -0
  223. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/README.md +0 -0
  224. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/config.json +0 -0
  225. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/preprocessor_config.json +0 -0
  226. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/config.pbtxt +0 -0
  227. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/image_classification/age_vit/labels.txt +0 -0
  228. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/README.md +0 -0
  229. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/__init__.py +0 -0
  230. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/inference.py +0 -0
  231. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/model.py +0 -0
  232. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/README.md +0 -0
  233. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/config.json +0 -0
  234. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/special_tokens_map.json +0 -0
  235. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/config.pbtxt +0 -0
  236. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_classification/xlm-roberta/labels.txt +0 -0
  237. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_embedding/README.md +0 -0
  238. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_image/README.md +0 -0
  239. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_image/sd-v1.5/1/__init__.py +0 -0
  240. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_image/sd-v1.5/1/inference.py +0 -0
  241. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_image/sd-v1.5/1/model.py +0 -0
  242. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_image/sd-v1.5/config.pbtxt +0 -0
  243. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_text/README.md +0 -0
  244. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_text/bart-summarize/1/__init__.py +0 -0
  245. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_text/bart-summarize/1/inference.py +0 -0
  246. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_text/bart-summarize/1/model.py +0 -0
  247. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/text_to_text/bart-summarize/config.pbtxt +0 -0
  248. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_detection/README.md +0 -0
  249. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_detection/yolov5x/1/inference.py +0 -0
  250. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_detection/yolov5x/1/model.py +0 -0
  251. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_detection/yolov5x/config.pbtxt +0 -0
  252. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_detection/yolov5x/labels.txt +0 -0
  253. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_embedding/README.md +0 -0
  254. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_embedding/vit-base/1/__init__.py +0 -0
  255. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_embedding/vit-base/1/inference.py +0 -0
  256. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_embedding/vit-base/1/model.py +0 -0
  257. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_embedding/vit-base/config.pbtxt +0 -0
  258. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_segmentation/README.md +0 -0
  259. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/1/__init__.py +0 -0
  260. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/1/inference.py +0 -0
  261. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/1/model.py +0 -0
  262. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/config.pbtxt +0 -0
  263. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/labels.txt +0 -0
  264. {clarifai-9.8.1/clarifai/models/model_serving/model_config → clarifai-9.9.0/clarifai/models/model_serving/models}/__init__.py +0 -0
  265. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/models/inference.py +0 -0
  266. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/models/model_types.py +0 -0
  267. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/models/pb_model.py +0 -0
  268. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/models/model_serving/models/test.py +0 -0
  269. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/modules/README.md +0 -0
  270. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/modules/__init__.py +0 -0
  271. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/modules/css.py +0 -0
  272. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/modules/pages.py +0 -0
  273. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/modules/style.css +0 -0
  274. {clarifai-9.8.1/clarifai/utils → clarifai-9.9.0/clarifai/runners}/__init__.py +0 -0
  275. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/urls/helper.py +0 -0
  276. {clarifai-9.8.1/clarifai_utils → clarifai-9.9.0/clarifai/utils}/__init__.py +0 -0
  277. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai/utils/misc.py +0 -0
  278. {clarifai-9.8.1/clarifai_utils/datasets → clarifai-9.9.0/clarifai/workflows}/__init__.py +0 -0
  279. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai.egg-info/dependency_links.txt +0 -0
  280. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai.egg-info/entry_points.txt +0 -0
  281. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai.egg-info/top_level.txt +0 -0
  282. {clarifai-9.8.1/clarifai_utils/datasets/export → clarifai-9.9.0/clarifai_utils}/__init__.py +0 -0
  283. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/auth/__init__.py +0 -0
  284. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/auth/helper.py +0 -0
  285. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/auth/register.py +0 -0
  286. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/auth/stub.py +0 -0
  287. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/cli.py +0 -0
  288. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/__init__.py +0 -0
  289. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/auth/__init__.py +0 -0
  290. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/auth/helper.py +0 -0
  291. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/auth/register.py +0 -0
  292. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/auth/stub.py +0 -0
  293. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/client/lister.py +0 -0
  294. {clarifai-9.8.1/clarifai_utils/datasets/upload → clarifai-9.9.0/clarifai_utils/datasets}/__init__.py +0 -0
  295. {clarifai-9.8.1/clarifai_utils/datasets/upload/examples/image_classification → clarifai-9.9.0/clarifai_utils/datasets/export}/__init__.py +0 -0
  296. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/export/dataset_inputs.py +0 -0
  297. {clarifai-9.8.1/clarifai_utils/datasets/upload/examples/image_classification/cifar10 → clarifai-9.9.0/clarifai_utils/datasets/upload}/__init__.py +0 -0
  298. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/base.py +0 -0
  299. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/README.md +0 -0
  300. {clarifai-9.8.1/clarifai_utils/datasets/upload/examples/image_classification/food-101 → clarifai-9.9.0/clarifai_utils/datasets/upload/examples/image_classification}/__init__.py +0 -0
  301. {clarifai-9.8.1/clarifai_utils/datasets/upload/examples/text_classification → clarifai-9.9.0/clarifai_utils/datasets/upload/examples/image_classification/cifar10}/__init__.py +0 -0
  302. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
  303. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
  304. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/dataset.py +0 -0
  305. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  306. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  307. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  308. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  309. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  310. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  311. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  312. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  313. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  314. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  315. {clarifai-9.8.1/clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset → clarifai-9.9.0/clarifai_utils/datasets/upload/examples/image_classification/food-101}/__init__.py +0 -0
  316. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/dataset.py +0 -0
  317. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  318. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  319. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  320. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  321. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  322. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  323. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  324. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  325. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  326. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  327. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  328. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  329. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  330. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  331. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  332. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  333. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  334. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  335. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  336. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  337. {clarifai-9.8.1/clarifai_utils/datasets/upload/loaders → clarifai-9.9.0/clarifai_utils/datasets/upload/examples/text_classification}/__init__.py +0 -0
  338. {clarifai-9.8.1/clarifai_utils/models → clarifai-9.9.0/clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset}/__init__.py +0 -0
  339. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +0 -0
  340. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/test.csv +0 -0
  341. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/train.csv +0 -0
  342. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/features.py +0 -0
  343. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/image.py +0 -0
  344. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/loaders/README.md +0 -0
  345. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/image_classification/age_vit/1 → clarifai-9.9.0/clarifai_utils/datasets/upload/loaders}/__init__.py +0 -0
  346. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/loaders/coco_captions.py +0 -0
  347. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/loaders/coco_detection.py +0 -0
  348. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/loaders/coco_segmentation.py +0 -0
  349. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/loaders/imagenet_classification.py +0 -0
  350. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/text.py +0 -0
  351. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/datasets/upload/utils.py +0 -0
  352. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/errors.py +0 -0
  353. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1 → clarifai-9.9.0/clarifai_utils/models}/__init__.py +0 -0
  354. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/api.py +0 -0
  355. {clarifai-9.8.1/clarifai/models/model_serving/models → clarifai-9.9.0/clarifai_utils/models/model_serving}/__init__.py +0 -0
  356. {clarifai-9.8.1/clarifai_utils/models/model_serving → clarifai-9.9.0/clarifai_utils/models/model_serving/cli}/__init__.py +0 -0
  357. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/cli/model_zip.py +0 -0
  358. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/docs/model_types.md +0 -0
  359. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/docs/output.md +0 -0
  360. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/README.md +0 -0
  361. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/README.md +0 -0
  362. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5 → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/image_classification/age_vit}/1/__init__.py +0 -0
  363. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/inference.py +0 -0
  364. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/model.py +0 -0
  365. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/README.md +0 -0
  366. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/config.json +0 -0
  367. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/preprocessor_config.json +0 -0
  368. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/age_vit/config.pbtxt +0 -0
  369. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/image_classification/age_vit/labels.txt +0 -0
  370. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/README.md +0 -0
  371. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta}/1/__init__.py +0 -0
  372. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/inference.py +0 -0
  373. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/model.py +0 -0
  374. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/README.md +0 -0
  375. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/config.json +0 -0
  376. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/special_tokens_map.json +0 -0
  377. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/config.pbtxt +0 -0
  378. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/labels.txt +0 -0
  379. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_embedding/README.md +0 -0
  380. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_image/README.md +0 -0
  381. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/visual_embedding/vit-base → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5}/1/__init__.py +0 -0
  382. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/1/inference.py +0 -0
  383. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/1/model.py +0 -0
  384. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/config.pbtxt +0 -0
  385. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_text/README.md +0 -0
  386. {clarifai-9.8.1/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2 → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize}/1/__init__.py +0 -0
  387. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/1/inference.py +0 -0
  388. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/1/model.py +0 -0
  389. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/config.pbtxt +0 -0
  390. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_detection/README.md +0 -0
  391. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/1/inference.py +0 -0
  392. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/1/model.py +0 -0
  393. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/config.pbtxt +0 -0
  394. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/labels.txt +0 -0
  395. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_embedding/README.md +0 -0
  396. {clarifai-9.8.1/clarifai_utils/modules → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/1}/__init__.py +0 -0
  397. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/1/inference.py +0 -0
  398. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/1/model.py +0 -0
  399. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/config.pbtxt +0 -0
  400. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_segmentation/README.md +0 -0
  401. {clarifai-9.8.1/clarifai_utils/utils → clarifai-9.9.0/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/1}/__init__.py +0 -0
  402. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/1/inference.py +0 -0
  403. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/1/model.py +0 -0
  404. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/config.pbtxt +0 -0
  405. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/labels.txt +0 -0
  406. {clarifai-9.8.1/clarifai_utils/models/model_serving/cli → clarifai-9.9.0/clarifai_utils/models/model_serving/models}/__init__.py +0 -0
  407. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/models/inference.py +0 -0
  408. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/models/model_types.py +0 -0
  409. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/models/pb_model.py +0 -0
  410. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/models/model_serving/models/test.py +0 -0
  411. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/modules/README.md +0 -0
  412. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/modules/css.py +0 -0
  413. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/modules/pages.py +0 -0
  414. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/modules/style.css +0 -0
  415. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/urls/helper.py +0 -0
  416. {clarifai-9.8.1 → clarifai-9.9.0}/clarifai_utils/utils/misc.py +0 -0
  417. {clarifai-9.8.1 → clarifai-9.9.0}/setup.cfg +0 -0
  418. {clarifai-9.8.1 → clarifai-9.9.0}/tests/test_auth.py +0 -0
  419. {clarifai-9.8.1 → clarifai-9.9.0}/tests/test_modules.py +0 -0
  420. {clarifai-9.8.1 → clarifai-9.9.0}/tests/test_stub.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: clarifai
3
- Version: 9.8.1
3
+ Version: 9.9.0
4
4
  Summary: Clarifai Python SDK
5
5
  Home-page: https://github.com/Clarifai/clarifai-python
6
6
  Author: Clarifai
@@ -46,7 +46,7 @@ This is the official Python client for interacting with our powerful [API](https
46
46
 
47
47
  **Clarifai Community**: [https://clarifai.com/explore](https://clarifai.com/explore)
48
48
 
49
- **Python SDK Docs**: [https://clarifai-python.readthedocs.io/en/latest/index.html](https://clarifai-python.readthedocs.io/en/latest/index.html)
49
+ **Python SDK Docs**: [https://docs.clarifai.com/python-sdk/api-reference](https://docs.clarifai.com/python-sdk/api-reference)
50
50
 
51
51
 
52
52
  ---
@@ -211,7 +211,23 @@ all_workflow = app.list_workflow()
211
211
  # List all workflow in community filtered by description
212
212
  all_face_community_workflows = App().list_workflows(filter_by={"query": "face"}, only_in_app=False) # Get all face related workflows
213
213
  ```
214
+ #### Workflow Create
215
+ Create a new workflow specified by a yaml config file.
216
+ ```python
217
+ # Note: CLARIFAI_PAT must be set as env variable.
218
+ from clarifai.client.app import App
219
+ app = App(app_id="app_id", user_id="user_id")
220
+ workflow = app.create_workflow(config_filepath="config.yml")
221
+ ```
214
222
 
223
+ #### Workflow Export
224
+ Export an existing workflow from Clarifai as a local yaml file.
225
+ ```python
226
+ # Note: CLARIFAI_PAT must be set as env variable.
227
+ from clarifai.client.workflow import Workflow
228
+ workflow = Workflow("https://clarifai.com/clarifai/main/workflows/Demographics")
229
+ workflow.export('demographics_workflow.yml')
230
+ ```
215
231
 
216
232
  ## More Examples
217
233
  See many more code examples in this [repo](https://github.com/Clarifai/examples).
@@ -30,7 +30,7 @@ This is the official Python client for interacting with our powerful [API](https
30
30
 
31
31
  **Clarifai Community**: [https://clarifai.com/explore](https://clarifai.com/explore)
32
32
 
33
- **Python SDK Docs**: [https://clarifai-python.readthedocs.io/en/latest/index.html](https://clarifai-python.readthedocs.io/en/latest/index.html)
33
+ **Python SDK Docs**: [https://docs.clarifai.com/python-sdk/api-reference](https://docs.clarifai.com/python-sdk/api-reference)
34
34
 
35
35
 
36
36
  ---
@@ -195,7 +195,23 @@ all_workflow = app.list_workflow()
195
195
  # List all workflow in community filtered by description
196
196
  all_face_community_workflows = App().list_workflows(filter_by={"query": "face"}, only_in_app=False) # Get all face related workflows
197
197
  ```
198
+ #### Workflow Create
199
+ Create a new workflow specified by a yaml config file.
200
+ ```python
201
+ # Note: CLARIFAI_PAT must be set as env variable.
202
+ from clarifai.client.app import App
203
+ app = App(app_id="app_id", user_id="user_id")
204
+ workflow = app.create_workflow(config_filepath="config.yml")
205
+ ```
198
206
 
207
+ #### Workflow Export
208
+ Export an existing workflow from Clarifai as a local yaml file.
209
+ ```python
210
+ # Note: CLARIFAI_PAT must be set as env variable.
211
+ from clarifai.client.workflow import Workflow
212
+ workflow = Workflow("https://clarifai.com/clarifai/main/workflows/Demographics")
213
+ workflow.export('demographics_workflow.yml')
214
+ ```
199
215
 
200
216
  ## More Examples
201
217
  See many more code examples in this [repo](https://github.com/Clarifai/examples).
@@ -1,5 +1,8 @@
1
+ import os
2
+ import uuid
1
3
  from typing import Any, Dict, List
2
4
 
5
+ import yaml
3
6
  from clarifai_grpc.grpc.api import resources_pb2, service_pb2
4
7
  from clarifai_grpc.grpc.api.status import status_code_pb2
5
8
  from google.protobuf.json_format import MessageToDict
@@ -10,22 +13,30 @@ from clarifai.client.input import Inputs
10
13
  from clarifai.client.lister import Lister
11
14
  from clarifai.client.model import Model
12
15
  from clarifai.client.module import Module
16
+ from clarifai.client.search import Search
13
17
  from clarifai.client.workflow import Workflow
14
18
  from clarifai.errors import UserError
15
19
  from clarifai.urls.helper import ClarifaiUrlHelper
16
- from clarifai.utils.logging import get_logger
20
+ from clarifai.utils.logging import display_workflow_tree, get_logger
21
+ from clarifai.workflows.utils import get_yaml_output_info_proto, is_same_yaml_model
22
+ from clarifai.workflows.validate import validate
17
23
 
18
24
 
19
25
  class App(Lister, BaseClient):
20
26
  """App is a class that provides access to Clarifai API endpoints related to App information."""
21
27
 
22
- def __init__(self, url_init: str = "", app_id: str = "", **kwargs):
28
+ def __init__(self,
29
+ url_init: str = "",
30
+ app_id: str = "",
31
+ base_url: str = "https://api.clarifai.com",
32
+ **kwargs):
23
33
  """Initializes an App object.
24
34
 
25
35
  Args:
26
36
  url_init (str): The URL to initialize the app object.
27
37
  app_id (str): The App ID for the App to interact with.
28
- **kwargs: Additional keyword arguments to be passed to the ClarifaiAuthHelper.
38
+ base_url (str): Base API url. Default "https://api.clarifai.com"
39
+ **kwargs: Additional keyword arguments to be passed to the App.
29
40
  - name (str): The name of the app.
30
41
  - description (str): The description of the app.
31
42
  """
@@ -37,7 +48,7 @@ class App(Lister, BaseClient):
37
48
  self.kwargs = {**kwargs, 'id': app_id}
38
49
  self.app_info = resources_pb2.App(**self.kwargs)
39
50
  self.logger = get_logger(logger_level="INFO", name=__name__)
40
- BaseClient.__init__(self, user_id=self.user_id, app_id=self.id)
51
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.id, base=base_url)
41
52
  Lister.__init__(self)
42
53
 
43
54
  def list_datasets(self) -> List[Dataset]:
@@ -236,30 +247,96 @@ class App(Lister, BaseClient):
236
247
 
237
248
  return Model(model_id=model_id, **kwargs)
238
249
 
239
- def create_workflow(self, workflow_id: str, **kwargs) -> Workflow:
250
+ def create_workflow(self,
251
+ config_filepath: str,
252
+ generate_new_id: bool = False,
253
+ display: bool = True) -> Workflow:
240
254
  """Creates a workflow for the app.
241
255
 
242
256
  Args:
243
- workflow_id (str): The workflow ID for the workflow to create.
244
- **kwargs: Additional keyword arguments to be passed to the workflow.
257
+ config_filepath (str): The path to the yaml workflow config file.
258
+ generate_new_id (bool): If True, generate a new workflow ID.
259
+ display (bool): If True, display the workflow nodes tree.
245
260
 
246
261
  Returns:
247
- Workflow: A Workflow object for the specified workflow ID.
262
+ Workflow: A Workflow object for the specified workflow config.
248
263
 
249
264
  Example:
250
265
  >>> from clarifai.client.app import App
251
266
  >>> app = App(app_id="app_id", user_id="user_id")
252
- >>> workflow = app.create_workflow(workflow_id="workflow_id")
267
+ >>> workflow = app.create_workflow(config_filepath="config.yml")
253
268
  """
269
+ if not os.path.exists(config_filepath):
270
+ raise UserError(f"Workflow config file not found at {config_filepath}")
271
+
272
+ with open(config_filepath, 'r') as file:
273
+ data = yaml.safe_load(file)
274
+
275
+ data = validate(data)
276
+ workflow = data['workflow']
277
+
278
+ # Get all model objects from the workflow nodes.
279
+ all_models = []
280
+ for node in workflow['nodes']:
281
+ output_info = get_yaml_output_info_proto(node['model'].get('output_info', None))
282
+ try:
283
+ model = self.model(
284
+ node['model']['model_id'],
285
+ node['model'].get('model_version_id', ""),
286
+ user_id=node['model'].get('user_id', ""),
287
+ app_id=node['model'].get('app_id', ""))
288
+ except Exception as e:
289
+ if "Model does not exist" in str(e):
290
+ model = self.create_model(
291
+ **{k: v
292
+ for k, v in node['model'].items() if k != 'output_info'})
293
+ model_version = model.create_model_version(output_info=output_info)
294
+ all_models.append(model_version.model_info)
295
+ continue
296
+
297
+ # If the model version ID is specified, or if the yaml model is the same as the one in the api
298
+ if node["model"].get("model_version_id", "") or is_same_yaml_model(
299
+ model.model_info, node["model"]):
300
+ all_models.append(model.model_info)
301
+ else: # Create a new model version
302
+ model = model.create_model_version(output_info=output_info)
303
+ all_models.append(model.model_info)
304
+
305
+ # Convert nodes to resources_pb2.WorkflowNodes.
306
+ nodes = []
307
+ for i, yml_node in enumerate(workflow['nodes']):
308
+ node = resources_pb2.WorkflowNode(
309
+ id=yml_node['id'],
310
+ model=all_models[i],
311
+ )
312
+ # Add node inputs if they exist, i.e. if these nodes do not connect directly to the input.
313
+ if yml_node.get("node_inputs"):
314
+ for ni in yml_node.get("node_inputs"):
315
+ node.node_inputs.append(resources_pb2.NodeInput(node_id=ni['node_id']))
316
+ nodes.append(node)
317
+
318
+ workflow_id = workflow['id']
319
+ if generate_new_id:
320
+ workflow_id = str(uuid.uuid4())
321
+
322
+ # Create the workflow.
254
323
  request = service_pb2.PostWorkflowsRequest(
255
- user_app_id=self.user_app_id, workflows=[resources_pb2.Workflow(id=workflow_id, **kwargs)])
324
+ user_app_id=self.user_app_id,
325
+ workflows=[resources_pb2.Workflow(id=workflow_id, nodes=nodes)])
326
+
256
327
  response = self._grpc_request(self.STUB.PostWorkflows, request)
257
328
  if response.status.code != status_code_pb2.SUCCESS:
258
329
  raise Exception(response.status)
259
330
  self.logger.info("\nWorkflow created\n%s", response.status)
260
- kwargs.update({'app_id': self.id, 'user_id': self.user_id})
261
331
 
262
- return Workflow(workflow_id=workflow_id, **kwargs)
332
+ dict_response = MessageToDict(response, preserving_proto_field_name=True)
333
+ # Display the workflow nodes tree.
334
+ if display:
335
+ display_workflow_tree(dict_response["workflows"][0]["nodes"])
336
+ kwargs = self.process_response_keys(dict_response[list(dict_response.keys())[1]][0],
337
+ "workflow")
338
+
339
+ return Workflow(**kwargs)
263
340
 
264
341
  def create_module(self, module_id: str, description: str, **kwargs) -> Module:
265
342
  """Creates a module for the app.
@@ -329,8 +406,16 @@ class App(Lister, BaseClient):
329
406
  >>> app = App(app_id="app_id", user_id="user_id")
330
407
  >>> model_v1 = app.model(model_id="model_id", model_version_id="model_version_id")
331
408
  """
332
- request = service_pb2.GetModelRequest(
333
- user_app_id=self.user_app_id, model_id=model_id, version_id=model_version_id)
409
+ # Change user_app_id based on whether user_id or app_id is specified.
410
+ if kwargs.get("user_id") or kwargs.get("app_id"):
411
+ request = service_pb2.GetModelRequest(
412
+ user_app_id=self.auth_helper.get_user_app_id_proto(
413
+ kwargs.get("user_id"), kwargs.get("app_id")),
414
+ model_id=model_id,
415
+ version_id=model_version_id)
416
+ else:
417
+ request = service_pb2.GetModelRequest(
418
+ user_app_id=self.user_app_id, model_id=model_id, version_id=model_version_id)
334
419
  response = self._grpc_request(self.STUB.GetModel, request)
335
420
 
336
421
  if response.status.code != status_code_pb2.SUCCESS:
@@ -471,6 +556,22 @@ class App(Lister, BaseClient):
471
556
  raise Exception(response.status)
472
557
  self.logger.info("\nModule Deleted\n%s", response.status)
473
558
 
559
+ def search(self, **kwargs) -> Model:
560
+ """Returns a Search object for the user and app ID.
561
+
562
+ Args:
563
+ see the Search class in clarifai.client.search for kwargs.
564
+
565
+ Returns:
566
+ Search: A Search object for the user and app ID.
567
+
568
+ Example:
569
+ >>> from clarifai.client.app import App
570
+ >>> app = App(app_id="app_id", user_id="user_id")
571
+ >>> search_client = app.search(top_k=12, metric="euclidean")
572
+ """
573
+ return Search(**kwargs)
574
+
474
575
  def __getattr__(self, name):
475
576
  return getattr(self.app_info, name)
476
577
 
@@ -2,7 +2,7 @@ import os
2
2
  from datetime import datetime
3
3
  from typing import Any, Callable
4
4
 
5
- from google.protobuf.json_format import MessageToDict # noqa
5
+ from google.protobuf import struct_pb2
6
6
  from google.protobuf.timestamp_pb2 import Timestamp
7
7
  from google.protobuf.wrappers_pb2 import BoolValue
8
8
 
@@ -71,7 +71,10 @@ class BaseClient:
71
71
  try:
72
72
  datetime_obj = datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S.%fZ')
73
73
  except ValueError:
74
- datetime_obj = datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%SZ')
74
+ try:
75
+ datetime_obj = datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%SZ')
76
+ except ValueError:
77
+ return Timestamp()
75
78
 
76
79
  # Convert the datetime object to a Timestamp object
77
80
  timestamp_obj = Timestamp()
@@ -99,8 +102,12 @@ class BaseClient:
99
102
  value = self.convert_string_to_timestamp(value)
100
103
  elif key in ['workflow_recommended']:
101
104
  value = BoolValue(value=True)
102
- elif key in ['metadata', 'fields_map', 'params']:
103
- continue # TODO Fix "app_duplication",proto struct
105
+ elif key in ['fields_map', 'params']:
106
+ value_s = struct_pb2.Struct()
107
+ value_s.update(value)
108
+ value = value_s
109
+ elif key in ['metadata']:
110
+ continue # TODO Fix "app_duplication"
104
111
  new_item[key] = convert_recursive(value)
105
112
  return new_item
106
113
  elif isinstance(item, list):
@@ -29,13 +29,18 @@ ClarifaiDatasetType = TypeVar('ClarifaiDatasetType', VisualClassificationDataset
29
29
  class Dataset(Lister, BaseClient):
30
30
  """Dataset is a class that provides access to Clarifai API endpoints related to Dataset information."""
31
31
 
32
- def __init__(self, url_init: str = "", dataset_id: str = "", **kwargs):
32
+ def __init__(self,
33
+ url_init: str = "",
34
+ dataset_id: str = "",
35
+ base_url: str = "https://api.clarifai.com",
36
+ **kwargs):
33
37
  """Initializes a Dataset object.
34
38
 
35
39
  Args:
36
40
  url_init (str): The URL to initialize the dataset object.
37
41
  dataset_id (str): The Dataset ID within the App to interact with.
38
- **kwargs: Additional keyword arguments to be passed to the ClarifaiAuthHelper.
42
+ base_url (str): Base API url. Default "https://api.clarifai.com"
43
+ **kwargs: Additional keyword arguments to be passed to the Dataset.
39
44
  """
40
45
  if url_init != "" and dataset_id != "":
41
46
  raise UserError("You can only specify one of url_init or dataset_id.")
@@ -51,7 +56,7 @@ class Dataset(Lister, BaseClient):
51
56
  self.chunk_size = 128 # limit max protos in a req
52
57
  self.task = None # Upload dataset type
53
58
  self.input_object = Inputs(user_id=self.user_id, app_id=self.app_id)
54
- BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id)
59
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id, base=base_url)
55
60
  Lister.__init__(self)
56
61
 
57
62
  def _concurrent_annot_upload(self, annots: List[List[resources_pb2.Annotation]]
@@ -23,12 +23,18 @@ from clarifai.utils.misc import BackoffIterator, Chunker
23
23
  class Inputs(Lister, BaseClient):
24
24
  """Inputs is a class that provides access to Clarifai API endpoints related to Input information."""
25
25
 
26
- def __init__(self, user_id: str = "", app_id: str = "", logger_level: str = "INFO", **kwargs):
26
+ def __init__(self,
27
+ user_id: str = "",
28
+ app_id: str = "",
29
+ logger_level: str = "INFO",
30
+ base_url: str = "https://api.clarifai.com",
31
+ **kwargs):
27
32
  """Initializes an Input object.
28
33
 
29
34
  Args:
30
35
  user_id (str): A user ID for authentication.
31
36
  app_id (str): An app ID for the application to interact with.
37
+ base_url (str): Base API url. Default "https://api.clarifai.com"
32
38
  **kwargs: Additional keyword arguments to be passed to the Input
33
39
  """
34
40
  self.user_id = user_id
@@ -36,7 +42,7 @@ class Inputs(Lister, BaseClient):
36
42
  self.kwargs = {**kwargs}
37
43
  self.input_info = resources_pb2.Input(**self.kwargs)
38
44
  self.logger = get_logger(logger_level=logger_level, name=__name__)
39
- BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id)
45
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id, base=base_url)
40
46
  Lister.__init__(self)
41
47
 
42
48
  def _get_proto(self,
@@ -121,8 +127,8 @@ class Inputs(Lister, BaseClient):
121
127
  Input: An Input object for the specified input ID.
122
128
 
123
129
  Example:
124
- >>> from clarifai.client.input import Input
125
- >>> input_obj = Input()
130
+ >>> from clarifai.client.input import Inputs
131
+ >>> input_obj = Inputs()
126
132
  >>> input_proto = input_obj.get_input_from_url(input_id = 'demo', image_url='https://samples.clarifai.com/metro-north.jpg')
127
133
  """
128
134
  if not any((image_url, video_url, audio_url, text_url)):
@@ -163,8 +169,8 @@ class Inputs(Lister, BaseClient):
163
169
  Input: An Input object for the specified input ID.
164
170
 
165
171
  Example:
166
- >>> from clarifai.client.input import Input
167
- >>> input_obj = Input()
172
+ >>> from clarifai.client.input import Inputs
173
+ >>> input_obj = Inputs()
168
174
  >>> input_proto = input_obj.get_input_from_file(input_id = 'demo', video_file='file_path')
169
175
  """
170
176
  if not any((image_file, video_file, audio_file, text_file)):
@@ -205,8 +211,8 @@ class Inputs(Lister, BaseClient):
205
211
  Input: An Input object for the specified input ID.
206
212
 
207
213
  Example:
208
- >>> from clarifai.client.input import Input
209
- >>> input_obj = Input()
214
+ >>> from clarifai.client.input import Inputs
215
+ >>> input_obj = Inputs()
210
216
  >>> image = open('demo.jpg', 'rb').read()
211
217
  >>> video = open('demo.mp4', 'rb').read()
212
218
  >>> input_proto = input_obj.get_input_from_bytes(input_id = 'demo',image_bytes =image, video_bytes=video)
@@ -240,8 +246,8 @@ class Inputs(Lister, BaseClient):
240
246
  list of Input: A list of Input objects for the specified folder.
241
247
 
242
248
  Example:
243
- >>> from clarifai.client.input import Input
244
- >>> input_obj = Input()
249
+ >>> from clarifai.client.input import Inputs
250
+ >>> input_obj = Inputs()
245
251
  >>> input_protos = input_obj.get_image_inputs_from_folder(folder_path='demo_folder')
246
252
  """
247
253
  input_protos = []
@@ -270,8 +276,8 @@ class Inputs(Lister, BaseClient):
270
276
  Text: An Input object for the specified input ID.
271
277
 
272
278
  Example:
273
- >>> from clarifai.client.input import Input
274
- >>> input_obj = Input()
279
+ >>> from clarifai.client.input import Inputs
280
+ >>> input_obj = Inputs()
275
281
  >>> input_protos = input_obj.get_text_input(input_id = 'demo', raw_text = 'This is a test')
276
282
  """
277
283
  text_pb = resources_pb2.Text(raw=raw_text)
@@ -296,8 +302,8 @@ class Inputs(Lister, BaseClient):
296
302
  inputs: List of inputs
297
303
 
298
304
  Example:
299
- >>> from clarifai.client.input import Input
300
- >>> input_obj = Input()
305
+ >>> from clarifai.client.input import Inputs
306
+ >>> input_obj = Inputs()
301
307
  >>> input_protos = input_obj.get_inputs_from_csv(csv_path='filepath', input_type='text', csv_type='raw')
302
308
  """
303
309
  input_protos = []
@@ -357,8 +363,8 @@ class Inputs(Lister, BaseClient):
357
363
  list of Input: A list of Input objects for the specified folder.
358
364
 
359
365
  Example:
360
- >>> from clarifai.client.input import Input
361
- >>> input_obj = Input()
366
+ >>> from clarifai.client.input import Inputs
367
+ >>> input_obj = Inputs()
362
368
  >>> input_protos = input_obj.get_text_inputs_from_folder(folder_path='demo_folder')
363
369
  """
364
370
  input_protos = []
@@ -385,8 +391,8 @@ class Inputs(Lister, BaseClient):
385
391
  An annotation object for the specified input ID.
386
392
 
387
393
  Example:
388
- >>> from clarifai.client.input import Input
389
- >>> input_obj = Input()
394
+ >>> from clarifai.client.input import Inputs
395
+ >>> input_obj = Inputs()
390
396
  >>> input_obj.get_annotation_proto(input_id='demo', label='demo', annotations=[x_min, y_min, x_max, y_max])
391
397
  """
392
398
  if not isinstance(annotations, list):
@@ -424,8 +430,8 @@ class Inputs(Lister, BaseClient):
424
430
  An annotation object for the specified input ID.
425
431
 
426
432
  Example:
427
- >>> from clarifai.client.input import Input
428
- >>> input_obj = Input()
433
+ >>> from clarifai.client.input import Inputs
434
+ >>> input_obj = Inputs()
429
435
  >>> input_obj.get_mask_proto(input_id='demo', label='demo', polygons=[[[x,y],...,[x,y]],...])
430
436
  """
431
437
  if not isinstance(polygons, list):
@@ -471,8 +477,8 @@ class Inputs(Lister, BaseClient):
471
477
  input_job_id: job id for the upload request.
472
478
 
473
479
  Example:
474
- >>> from clarifai.client.input import Input
475
- >>> input_obj = Input(user_id = 'user_id', app_id = 'demo_app')
480
+ >>> from clarifai.client.input import Inputs
481
+ >>> input_obj = Inputs(user_id = 'user_id', app_id = 'demo_app')
476
482
  >>> input_obj.upload_from_url(input_id='demo', image_url='https://samples.clarifai.com/metro-north.jpg')
477
483
  """
478
484
  input_pb = self.get_input_from_url(input_id, image_url, video_url, audio_url, text_url,
@@ -501,8 +507,8 @@ class Inputs(Lister, BaseClient):
501
507
  input_job_id: job id for the upload request.
502
508
 
503
509
  Example:
504
- >>> from clarifai.client.input import Input
505
- >>> input_obj = Input(user_id = 'user_id', app_id = 'demo_app')
510
+ >>> from clarifai.client.input import Inputs
511
+ >>> input_obj = Inputs(user_id = 'user_id', app_id = 'demo_app')
506
512
  >>> input_obj.upload_from_file(input_id='demo', audio_file='demo.mp3')
507
513
  """
508
514
  input_pb = self.get_input_from_file(input_id, image_file, video_file, audio_file, text_file,
@@ -531,8 +537,8 @@ class Inputs(Lister, BaseClient):
531
537
  input_job_id: job id for the upload request.
532
538
 
533
539
  Example:
534
- >>> from clarifai.client.input import Input
535
- >>> input_obj = Input(user_id = 'user_id', app_id = 'demo_app')
540
+ >>> from clarifai.client.input import Inputs
541
+ >>> input_obj = Inputs(user_id = 'user_id', app_id = 'demo_app')
536
542
  >>> image = open('demo.jpg', 'rb').read()
537
543
  >>> input_obj.upload_from_bytes(input_id='demo', image_bytes=image)
538
544
  """
@@ -553,8 +559,8 @@ class Inputs(Lister, BaseClient):
553
559
  input_job_id (str): job id for the upload request.
554
560
 
555
561
  Example:
556
- >>> from clarifai.client.input import Input
557
- >>> input_obj = Input(user_id = 'user_id', app_id = 'demo_app')
562
+ >>> from clarifai.client.input import Inputs
563
+ >>> input_obj = Inputs(user_id = 'user_id', app_id = 'demo_app')
558
564
  >>> input_obj.upload_text(input_id = 'demo', raw_text = 'This is a test')
559
565
  """
560
566
  input_pb = self._get_proto(
@@ -5,6 +5,7 @@ from typing import Dict, List
5
5
  from clarifai_grpc.grpc.api import resources_pb2, service_pb2
6
6
  from clarifai_grpc.grpc.api.resources_pb2 import Input
7
7
  from clarifai_grpc.grpc.api.status import status_code_pb2
8
+ from google.protobuf.json_format import MessageToDict
8
9
 
9
10
  from clarifai.client.base import BaseClient
10
11
  from clarifai.client.lister import Lister
@@ -22,6 +23,7 @@ class Model(Lister, BaseClient):
22
23
  model_id: str = "",
23
24
  model_version: Dict = {'id': ""},
24
25
  output_config: Dict = {'min_value': 0},
26
+ base_url: str = "https://api.clarifai.com",
25
27
  **kwargs):
26
28
  """Initializes a Model object.
27
29
 
@@ -34,7 +36,8 @@ class Model(Lister, BaseClient):
34
36
  max_concepts (int): The maximum number of concepts to return.
35
37
  select_concepts (list[Concept]): The concepts to select.
36
38
  sample_ms (int): The number of milliseconds to sample.
37
- **kwargs: Additional keyword arguments to be passed to the ClarifaiAuthHelper.
39
+ base_url (str): Base API url. Default "https://api.clarifai.com"
40
+ **kwargs: Additional keyword arguments to be passed to the Model.
38
41
  """
39
42
  if url_init != "" and model_id != "":
40
43
  raise UserError("You can only specify one of url_init or model_id.")
@@ -49,9 +52,75 @@ class Model(Lister, BaseClient):
49
52
  'output_info': {'output_config': output_config}}
50
53
  self.model_info = resources_pb2.Model(**self.kwargs)
51
54
  self.logger = get_logger(logger_level="INFO")
52
- BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id)
55
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id, base=base_url)
53
56
  Lister.__init__(self)
54
57
 
58
+ def create_model_version(self, **kwargs) -> 'Model':
59
+ """Creates a model version for the Model.
60
+
61
+ Args:
62
+ **kwargs: Additional keyword arguments to be passed to Model Version.
63
+ - description (str): The description of the model version.
64
+ - concepts (list[Concept]): The concepts to associate with the model version.
65
+ - output_info (resources_pb2.OutputInfo(): The output info to associate with the model version.
66
+
67
+ Returns:
68
+ Model: A Model object for the specified model ID.
69
+
70
+ Example:
71
+ >>> from clarifai.client.model import Model
72
+ >>> model = Model("model_url")
73
+ or
74
+ >>> model = Model(model_id='model_id', user_id='user_id', app_id='app_id')
75
+ >>> model_version = model.create_model_version(description='model_version_description')
76
+ """
77
+ request = service_pb2.PostModelVersionsRequest(
78
+ user_app_id=self.user_app_id,
79
+ model_id=self.id,
80
+ model_versions=[resources_pb2.ModelVersion(**kwargs)])
81
+
82
+ response = self._grpc_request(self.STUB.PostModelVersions, request)
83
+ if response.status.code != status_code_pb2.SUCCESS:
84
+ raise Exception(response.status)
85
+ self.logger.info("\nModel Version created\n%s", response.status)
86
+
87
+ kwargs.update({'app_id': self.app_id, 'user_id': self.user_id})
88
+ dict_response = MessageToDict(response, preserving_proto_field_name=True)
89
+ kwargs = self.process_response_keys(dict_response['model'], 'model')
90
+
91
+ return Model(**kwargs)
92
+
93
+ def list_versions(self) -> List['Model']:
94
+ """Lists all the versions for the model.
95
+
96
+ Returns:
97
+ List[Model]: A list of Model objects for the versions of the model.
98
+
99
+ Example:
100
+ >>> from clarifai.client.model import Model
101
+ >>> model = Model("model_url") # Example URL: https://clarifai.com/clarifai/main/models/general-image-recognition
102
+ or
103
+ >>> model = Model(model_id='model_id', user_id='user_id', app_id='app_id')
104
+ >>> all_model_versions = model.list_versions()
105
+ """
106
+ request_data = dict(
107
+ user_app_id=self.user_app_id,
108
+ model_id=self.id,
109
+ per_page=self.default_page_size,
110
+ )
111
+ all_model_versions_info = list(
112
+ self.list_all_pages_generator(self.STUB.ListModelVersions,
113
+ service_pb2.ListModelVersionsRequest, request_data))
114
+
115
+ for model_version_info in all_model_versions_info:
116
+ model_version_info['id'] = model_version_info['model_version_id']
117
+ del model_version_info['model_version_id']
118
+
119
+ return [
120
+ Model(model_id=self.id, **dict(self.kwargs, model_version=model_version_info))
121
+ for model_version_info in all_model_versions_info
122
+ ]
123
+
55
124
  def predict(self, inputs: List[Input]):
56
125
  """Predicts the model based on the given inputs.
57
126
 
@@ -16,6 +16,7 @@ class Module(Lister, BaseClient):
16
16
  url_init: str = "",
17
17
  module_id: str = "",
18
18
  module_version: Dict = {'id': ""},
19
+ base_url: str = "https://api.clarifai.com",
19
20
  **kwargs):
20
21
  """Initializes a Module object.
21
22
 
@@ -23,7 +24,8 @@ class Module(Lister, BaseClient):
23
24
  url_init (str): The URL to initialize the module object.
24
25
  module_id (str): The Module ID to interact with.
25
26
  module_version (dict): The Module Version to interact with.
26
- **kwargs: Additional keyword arguments to be passed to the ClarifaiAuthHelper.
27
+ base_url (str): Base API url. Default "https://api.clarifai.com"
28
+ **kwargs: Additional keyword arguments to be passed to the Module.
27
29
  """
28
30
  if url_init != "" and module_id != "":
29
31
  raise UserError("You can only specify one of url_init or module_id.")
@@ -38,7 +40,7 @@ class Module(Lister, BaseClient):
38
40
  self.kwargs = {**kwargs, 'id': module_id, 'module_version': module_version}
39
41
  self.module_info = resources_pb2.Module(**self.kwargs)
40
42
  self.logger = get_logger(logger_level="INFO")
41
- BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id)
43
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id, base=base_url)
42
44
  Lister.__init__(self)
43
45
 
44
46
  def list_versions(self) -> List['Module']: