clarifai 9.10.1__py3-none-any.whl → 9.10.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. clarifai/client/__init__.py +3 -2
  2. clarifai/client/app.py +39 -23
  3. clarifai/client/base.py +6 -6
  4. clarifai/client/dataset.py +113 -55
  5. clarifai/client/input.py +47 -55
  6. clarifai/client/model.py +27 -25
  7. clarifai/client/module.py +13 -11
  8. clarifai/client/runner.py +5 -3
  9. clarifai/client/search.py +29 -10
  10. clarifai/client/user.py +14 -8
  11. clarifai/client/workflow.py +22 -20
  12. clarifai/constants/dataset.py +22 -0
  13. clarifai/datasets/upload/base.py +9 -7
  14. clarifai/datasets/upload/features.py +3 -3
  15. clarifai/datasets/upload/image.py +49 -50
  16. clarifai/datasets/upload/loaders/coco_captions.py +26 -80
  17. clarifai/datasets/upload/loaders/coco_detection.py +56 -115
  18. clarifai/datasets/upload/loaders/coco_segmentation.py +69 -137
  19. clarifai/datasets/upload/loaders/imagenet_classification.py +2 -3
  20. clarifai/datasets/upload/loaders/xview_detection.py +3 -3
  21. clarifai/datasets/upload/text.py +16 -16
  22. clarifai/datasets/upload/utils.py +196 -21
  23. clarifai/utils/misc.py +21 -0
  24. clarifai/versions.py +1 -1
  25. {clarifai-9.10.1.dist-info → clarifai-9.10.3.dist-info}/METADATA +3 -3
  26. clarifai-9.10.3.dist-info/RECORD +96 -0
  27. clarifai-9.10.3.dist-info/top_level.txt +1 -0
  28. clarifai/auth/__init__.py +0 -6
  29. clarifai/auth/helper.py +0 -367
  30. clarifai/auth/register.py +0 -23
  31. clarifai/auth/stub.py +0 -127
  32. clarifai/datasets/upload/examples/README.md +0 -31
  33. clarifai/datasets/upload/examples/image_classification/__init__.py +0 -0
  34. clarifai/datasets/upload/examples/image_classification/cifar10/__init__.py +0 -0
  35. clarifai/datasets/upload/examples/image_classification/cifar10/cifar_small_test.csv +0 -10
  36. clarifai/datasets/upload/examples/image_classification/cifar10/cifar_small_train.csv +0 -10
  37. clarifai/datasets/upload/examples/image_classification/cifar10/dataset.py +0 -46
  38. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  39. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  40. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  41. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  42. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  43. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  44. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  45. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  46. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  47. clarifai/datasets/upload/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  48. clarifai/datasets/upload/examples/image_classification/food-101/__init__.py +0 -0
  49. clarifai/datasets/upload/examples/image_classification/food-101/dataset.py +0 -39
  50. clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  51. clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  52. clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  53. clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  54. clarifai/datasets/upload/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  55. clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  56. clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  57. clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  58. clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  59. clarifai/datasets/upload/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  60. clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  61. clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  62. clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  63. clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  64. clarifai/datasets/upload/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  65. clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  66. clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  67. clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  68. clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  69. clarifai/datasets/upload/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  70. clarifai/datasets/upload/examples/text_classification/__init__.py +0 -0
  71. clarifai/datasets/upload/examples/text_classification/imdb_dataset/__init__.py +0 -0
  72. clarifai/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +0 -42
  73. clarifai/datasets/upload/examples/text_classification/imdb_dataset/test.csv +0 -201
  74. clarifai/datasets/upload/examples/text_classification/imdb_dataset/train.csv +0 -201
  75. clarifai/datasets/upload/loaders/README.md +0 -49
  76. clarifai/models/model_serving/README.md +0 -155
  77. clarifai/models/model_serving/docs/custom_config.md +0 -33
  78. clarifai/models/model_serving/docs/dependencies.md +0 -11
  79. clarifai/models/model_serving/docs/inference_parameters.md +0 -134
  80. clarifai/models/model_serving/docs/model_types.md +0 -20
  81. clarifai/models/model_serving/docs/output.md +0 -28
  82. clarifai/models/model_serving/examples/README.md +0 -7
  83. clarifai/models/model_serving/examples/image_classification/README.md +0 -9
  84. clarifai/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/README.md +0 -11
  85. clarifai/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/config.json +0 -42
  86. clarifai/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/preprocessor_config.json +0 -15
  87. clarifai/models/model_serving/examples/image_classification/age_vit/config.pbtxt +0 -23
  88. clarifai/models/model_serving/examples/image_classification/age_vit/labels.txt +0 -9
  89. clarifai/models/model_serving/examples/image_classification/age_vit/requirements.txt +0 -7
  90. clarifai/models/model_serving/examples/text_classification/README.md +0 -9
  91. clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/README.md +0 -12
  92. clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/config.json +0 -34
  93. clarifai/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/special_tokens_map.json +0 -1
  94. clarifai/models/model_serving/examples/text_classification/xlm-roberta/config.pbtxt +0 -21
  95. clarifai/models/model_serving/examples/text_classification/xlm-roberta/labels.txt +0 -3
  96. clarifai/models/model_serving/examples/text_classification/xlm-roberta/requirements.txt +0 -7
  97. clarifai/models/model_serving/examples/text_embedding/README.md +0 -9
  98. clarifai/models/model_serving/examples/text_to_image/README.md +0 -9
  99. clarifai/models/model_serving/examples/text_to_image/sd-v1.5/1/__init__.py +0 -0
  100. clarifai/models/model_serving/examples/text_to_image/sd-v1.5/1/inference.py +0 -52
  101. clarifai/models/model_serving/examples/text_to_image/sd-v1.5/1/model.py +0 -60
  102. clarifai/models/model_serving/examples/text_to_image/sd-v1.5/config.pbtxt +0 -22
  103. clarifai/models/model_serving/examples/text_to_image/sd-v1.5/requirements.txt +0 -6
  104. clarifai/models/model_serving/examples/text_to_text/README.md +0 -10
  105. clarifai/models/model_serving/examples/text_to_text/bart-summarize/config.pbtxt +0 -20
  106. clarifai/models/model_serving/examples/text_to_text/bart-summarize/requirements.txt +0 -4
  107. clarifai/models/model_serving/examples/visual_detection/README.md +0 -11
  108. clarifai/models/model_serving/examples/visual_detection/yolov5x/config.pbtxt +0 -36
  109. clarifai/models/model_serving/examples/visual_detection/yolov5x/labels.txt +0 -80
  110. clarifai/models/model_serving/examples/visual_detection/yolov5x/requirements.txt +0 -12
  111. clarifai/models/model_serving/examples/visual_embedding/README.md +0 -9
  112. clarifai/models/model_serving/examples/visual_embedding/vit-base/config.pbtxt +0 -22
  113. clarifai/models/model_serving/examples/visual_embedding/vit-base/requirements.txt +0 -5
  114. clarifai/models/model_serving/examples/visual_segmentation/README.md +0 -9
  115. clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/config.pbtxt +0 -24
  116. clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/labels.txt +0 -18
  117. clarifai/models/model_serving/examples/visual_segmentation/segformer-b2/requirements.txt +0 -5
  118. clarifai/models/model_serving/model_config/model_types_config/multimodal-embedder.yaml +0 -24
  119. clarifai/models/model_serving/model_config/model_types_config/text-classifier.yaml +0 -18
  120. clarifai/models/model_serving/model_config/model_types_config/text-embedder.yaml +0 -18
  121. clarifai/models/model_serving/model_config/model_types_config/text-to-image.yaml +0 -18
  122. clarifai/models/model_serving/model_config/model_types_config/text-to-text.yaml +0 -18
  123. clarifai/models/model_serving/model_config/model_types_config/visual-classifier.yaml +0 -18
  124. clarifai/models/model_serving/model_config/model_types_config/visual-detector.yaml +0 -28
  125. clarifai/models/model_serving/model_config/model_types_config/visual-embedder.yaml +0 -18
  126. clarifai/models/model_serving/model_config/model_types_config/visual-segmenter.yaml +0 -18
  127. clarifai/modules/README.md +0 -5
  128. clarifai/modules/style.css +0 -217
  129. clarifai-9.10.1.dist-info/RECORD +0 -386
  130. clarifai-9.10.1.dist-info/top_level.txt +0 -2
  131. clarifai_utils/__init__.py +0 -0
  132. clarifai_utils/auth/__init__.py +0 -6
  133. clarifai_utils/auth/helper.py +0 -367
  134. clarifai_utils/auth/register.py +0 -23
  135. clarifai_utils/auth/stub.py +0 -127
  136. clarifai_utils/cli.py +0 -0
  137. clarifai_utils/client/__init__.py +0 -16
  138. clarifai_utils/client/app.py +0 -684
  139. clarifai_utils/client/auth/__init__.py +0 -4
  140. clarifai_utils/client/auth/helper.py +0 -367
  141. clarifai_utils/client/auth/register.py +0 -23
  142. clarifai_utils/client/auth/stub.py +0 -127
  143. clarifai_utils/client/base.py +0 -131
  144. clarifai_utils/client/dataset.py +0 -442
  145. clarifai_utils/client/input.py +0 -892
  146. clarifai_utils/client/lister.py +0 -54
  147. clarifai_utils/client/model.py +0 -575
  148. clarifai_utils/client/module.py +0 -94
  149. clarifai_utils/client/runner.py +0 -161
  150. clarifai_utils/client/search.py +0 -239
  151. clarifai_utils/client/user.py +0 -253
  152. clarifai_utils/client/workflow.py +0 -223
  153. clarifai_utils/constants/model.py +0 -4
  154. clarifai_utils/constants/search.py +0 -2
  155. clarifai_utils/datasets/__init__.py +0 -0
  156. clarifai_utils/datasets/export/__init__.py +0 -0
  157. clarifai_utils/datasets/export/inputs_annotations.py +0 -222
  158. clarifai_utils/datasets/upload/__init__.py +0 -0
  159. clarifai_utils/datasets/upload/base.py +0 -66
  160. clarifai_utils/datasets/upload/examples/README.md +0 -31
  161. clarifai_utils/datasets/upload/examples/image_classification/__init__.py +0 -0
  162. clarifai_utils/datasets/upload/examples/image_classification/cifar10/__init__.py +0 -0
  163. clarifai_utils/datasets/upload/examples/image_classification/cifar10/cifar_small_test.csv +0 -10
  164. clarifai_utils/datasets/upload/examples/image_classification/cifar10/cifar_small_train.csv +0 -10
  165. clarifai_utils/datasets/upload/examples/image_classification/cifar10/dataset.py +0 -46
  166. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  167. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  168. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  169. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  170. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  171. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  172. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  173. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  174. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  175. clarifai_utils/datasets/upload/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  176. clarifai_utils/datasets/upload/examples/image_classification/food-101/__init__.py +0 -0
  177. clarifai_utils/datasets/upload/examples/image_classification/food-101/dataset.py +0 -39
  178. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  179. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  180. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  181. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  182. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  183. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  184. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  185. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  186. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  187. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  188. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  189. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  190. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  191. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  192. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  193. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  194. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  195. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  196. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  197. clarifai_utils/datasets/upload/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  198. clarifai_utils/datasets/upload/examples/text_classification/__init__.py +0 -0
  199. clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/__init__.py +0 -0
  200. clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +0 -42
  201. clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/test.csv +0 -201
  202. clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/train.csv +0 -201
  203. clarifai_utils/datasets/upload/features.py +0 -44
  204. clarifai_utils/datasets/upload/image.py +0 -165
  205. clarifai_utils/datasets/upload/loaders/README.md +0 -49
  206. clarifai_utils/datasets/upload/loaders/__init__.py +0 -0
  207. clarifai_utils/datasets/upload/loaders/coco_captions.py +0 -103
  208. clarifai_utils/datasets/upload/loaders/coco_detection.py +0 -134
  209. clarifai_utils/datasets/upload/loaders/coco_segmentation.py +0 -166
  210. clarifai_utils/datasets/upload/loaders/imagenet_classification.py +0 -59
  211. clarifai_utils/datasets/upload/loaders/xview_detection.py +0 -148
  212. clarifai_utils/datasets/upload/text.py +0 -53
  213. clarifai_utils/datasets/upload/utils.py +0 -63
  214. clarifai_utils/errors.py +0 -89
  215. clarifai_utils/models/__init__.py +0 -0
  216. clarifai_utils/models/api.py +0 -283
  217. clarifai_utils/models/model_serving/README.md +0 -155
  218. clarifai_utils/models/model_serving/__init__.py +0 -12
  219. clarifai_utils/models/model_serving/cli/__init__.py +0 -12
  220. clarifai_utils/models/model_serving/cli/deploy_cli.py +0 -123
  221. clarifai_utils/models/model_serving/cli/model_zip.py +0 -61
  222. clarifai_utils/models/model_serving/cli/repository.py +0 -87
  223. clarifai_utils/models/model_serving/constants.py +0 -1
  224. clarifai_utils/models/model_serving/docs/custom_config.md +0 -33
  225. clarifai_utils/models/model_serving/docs/dependencies.md +0 -11
  226. clarifai_utils/models/model_serving/docs/inference_parameters.md +0 -134
  227. clarifai_utils/models/model_serving/docs/model_types.md +0 -20
  228. clarifai_utils/models/model_serving/docs/output.md +0 -28
  229. clarifai_utils/models/model_serving/examples/README.md +0 -7
  230. clarifai_utils/models/model_serving/examples/image_classification/README.md +0 -9
  231. clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/__init__.py +0 -0
  232. clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/inference.py +0 -56
  233. clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/model.py +0 -61
  234. clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/README.md +0 -11
  235. clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/config.json +0 -42
  236. clarifai_utils/models/model_serving/examples/image_classification/age_vit/1/vit-age-classifier/preprocessor_config.json +0 -15
  237. clarifai_utils/models/model_serving/examples/image_classification/age_vit/config.pbtxt +0 -23
  238. clarifai_utils/models/model_serving/examples/image_classification/age_vit/labels.txt +0 -9
  239. clarifai_utils/models/model_serving/examples/image_classification/age_vit/requirements.txt +0 -7
  240. clarifai_utils/models/model_serving/examples/text_classification/README.md +0 -9
  241. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/__init__.py +0 -0
  242. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/inference.py +0 -55
  243. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/model.py +0 -61
  244. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/README.md +0 -12
  245. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/config.json +0 -34
  246. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/1/twitter-xlm-roberta-base-sentiment/special_tokens_map.json +0 -1
  247. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/config.pbtxt +0 -21
  248. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/labels.txt +0 -3
  249. clarifai_utils/models/model_serving/examples/text_classification/xlm-roberta/requirements.txt +0 -7
  250. clarifai_utils/models/model_serving/examples/text_embedding/README.md +0 -9
  251. clarifai_utils/models/model_serving/examples/text_to_image/README.md +0 -9
  252. clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/1/__init__.py +0 -0
  253. clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/1/inference.py +0 -52
  254. clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/1/model.py +0 -60
  255. clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/config.pbtxt +0 -22
  256. clarifai_utils/models/model_serving/examples/text_to_image/sd-v1.5/requirements.txt +0 -6
  257. clarifai_utils/models/model_serving/examples/text_to_text/README.md +0 -10
  258. clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/1/__init__.py +0 -0
  259. clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/1/inference.py +0 -47
  260. clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/1/model.py +0 -60
  261. clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/config.pbtxt +0 -20
  262. clarifai_utils/models/model_serving/examples/text_to_text/bart-summarize/requirements.txt +0 -4
  263. clarifai_utils/models/model_serving/examples/visual_detection/README.md +0 -11
  264. clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/1/inference.py +0 -72
  265. clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/1/model.py +0 -61
  266. clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/config.pbtxt +0 -36
  267. clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/labels.txt +0 -80
  268. clarifai_utils/models/model_serving/examples/visual_detection/yolov5x/requirements.txt +0 -12
  269. clarifai_utils/models/model_serving/examples/visual_embedding/README.md +0 -9
  270. clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/1/__init__.py +0 -0
  271. clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/1/inference.py +0 -51
  272. clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/1/model.py +0 -60
  273. clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/config.pbtxt +0 -22
  274. clarifai_utils/models/model_serving/examples/visual_embedding/vit-base/requirements.txt +0 -5
  275. clarifai_utils/models/model_serving/examples/visual_segmentation/README.md +0 -9
  276. clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/1/__init__.py +0 -0
  277. clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/1/inference.py +0 -55
  278. clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/1/model.py +0 -60
  279. clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/config.pbtxt +0 -24
  280. clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/labels.txt +0 -18
  281. clarifai_utils/models/model_serving/examples/visual_segmentation/segformer-b2/requirements.txt +0 -5
  282. clarifai_utils/models/model_serving/model_config/__init__.py +0 -14
  283. clarifai_utils/models/model_serving/model_config/config.py +0 -302
  284. clarifai_utils/models/model_serving/model_config/inference_parameter.py +0 -124
  285. clarifai_utils/models/model_serving/model_config/model_types_config/multimodal-embedder.yaml +0 -24
  286. clarifai_utils/models/model_serving/model_config/model_types_config/text-classifier.yaml +0 -18
  287. clarifai_utils/models/model_serving/model_config/model_types_config/text-embedder.yaml +0 -18
  288. clarifai_utils/models/model_serving/model_config/model_types_config/text-to-image.yaml +0 -18
  289. clarifai_utils/models/model_serving/model_config/model_types_config/text-to-text.yaml +0 -18
  290. clarifai_utils/models/model_serving/model_config/model_types_config/visual-classifier.yaml +0 -18
  291. clarifai_utils/models/model_serving/model_config/model_types_config/visual-detector.yaml +0 -28
  292. clarifai_utils/models/model_serving/model_config/model_types_config/visual-embedder.yaml +0 -18
  293. clarifai_utils/models/model_serving/model_config/model_types_config/visual-segmenter.yaml +0 -18
  294. clarifai_utils/models/model_serving/model_config/serializer.py +0 -134
  295. clarifai_utils/models/model_serving/models/__init__.py +0 -12
  296. clarifai_utils/models/model_serving/models/default_test.py +0 -275
  297. clarifai_utils/models/model_serving/models/inference.py +0 -42
  298. clarifai_utils/models/model_serving/models/model_types.py +0 -265
  299. clarifai_utils/models/model_serving/models/output.py +0 -124
  300. clarifai_utils/models/model_serving/models/pb_model.py +0 -74
  301. clarifai_utils/models/model_serving/models/test.py +0 -64
  302. clarifai_utils/models/model_serving/pb_model_repository.py +0 -101
  303. clarifai_utils/modules/README.md +0 -5
  304. clarifai_utils/modules/__init__.py +0 -0
  305. clarifai_utils/modules/css.py +0 -60
  306. clarifai_utils/modules/pages.py +0 -42
  307. clarifai_utils/modules/style.css +0 -217
  308. clarifai_utils/runners/__init__.py +0 -0
  309. clarifai_utils/runners/example.py +0 -33
  310. clarifai_utils/schema/search.py +0 -69
  311. clarifai_utils/urls/helper.py +0 -103
  312. clarifai_utils/utils/__init__.py +0 -0
  313. clarifai_utils/utils/logging.py +0 -90
  314. clarifai_utils/utils/misc.py +0 -33
  315. clarifai_utils/utils/model_train.py +0 -157
  316. clarifai_utils/versions.py +0 -6
  317. clarifai_utils/workflows/__init__.py +0 -0
  318. clarifai_utils/workflows/export.py +0 -68
  319. clarifai_utils/workflows/utils.py +0 -59
  320. clarifai_utils/workflows/validate.py +0 -67
  321. {clarifai-9.10.1.dist-info → clarifai-9.10.3.dist-info}/LICENSE +0 -0
  322. {clarifai-9.10.1.dist-info → clarifai-9.10.3.dist-info}/WHEEL +0 -0
  323. {clarifai-9.10.1.dist-info → clarifai-9.10.3.dist-info}/entry_points.txt +0 -0
@@ -1,16 +1,17 @@
1
- # Note: V2Stub, create_stub is just added for backwards compatibility. It will be removed in the future.
2
1
  from clarifai.client.app import App
3
2
  from clarifai.client.auth.register import V2Stub
4
3
  from clarifai.client.auth.stub import create_stub
5
4
  from clarifai.client.base import BaseClient
6
5
  from clarifai.client.dataset import Dataset
6
+ from clarifai.client.input import Inputs
7
7
  from clarifai.client.lister import Lister
8
8
  from clarifai.client.model import Model
9
9
  from clarifai.client.module import Module
10
+ from clarifai.client.search import Search
10
11
  from clarifai.client.user import User
11
12
  from clarifai.client.workflow import Workflow
12
13
 
13
14
  __all__ = [
14
15
  'V2Stub', 'create_stub', 'User', 'App', 'Model', 'Workflow', 'Module', 'Lister', 'Dataset',
15
- 'BaseClient'
16
+ 'Inputs', 'BaseClient', 'Search'
16
17
  ]
clarifai/client/app.py CHANGED
@@ -28,29 +28,31 @@ class App(Lister, BaseClient):
28
28
  """App is a class that provides access to Clarifai API endpoints related to App information."""
29
29
 
30
30
  def __init__(self,
31
- url_init: str = "",
32
- app_id: str = "",
31
+ url: str = None,
32
+ app_id: str = None,
33
33
  base_url: str = "https://api.clarifai.com",
34
+ pat: str = None,
34
35
  **kwargs):
35
36
  """Initializes an App object.
36
37
 
37
38
  Args:
38
- url_init (str): The URL to initialize the app object.
39
+ url (str): The URL to initialize the app object.
39
40
  app_id (str): The App ID for the App to interact with.
40
41
  base_url (str): Base API url. Default "https://api.clarifai.com"
42
+ pat (str): A personal access token for authentication. Can be set as env var CLARIFAI_PAT
41
43
  **kwargs: Additional keyword arguments to be passed to the App.
42
44
  - name (str): The name of the app.
43
45
  - description (str): The description of the app.
44
46
  """
45
- if url_init != "" and app_id != "":
46
- raise UserError("You can only specify one of url_init or app_id.")
47
- if url_init != "":
48
- user_id, app_id, _, _, _ = ClarifaiUrlHelper.split_clarifai_url(url_init)
47
+ if url and app_id:
48
+ raise UserError("You can only specify one of url or app_id.")
49
+ if url:
50
+ user_id, app_id, _, _, _ = ClarifaiUrlHelper.split_clarifai_url(url)
49
51
  kwargs = {'user_id': user_id}
50
52
  self.kwargs = {**kwargs, 'id': app_id}
51
53
  self.app_info = resources_pb2.App(**self.kwargs)
52
54
  self.logger = get_logger(logger_level="INFO", name=__name__)
53
- BaseClient.__init__(self, user_id=self.user_id, app_id=self.id, base=base_url)
55
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.id, base=base_url, pat=pat)
54
56
  Lister.__init__(self)
55
57
 
56
58
  def list_datasets(self, page_no: int = None,
@@ -83,7 +85,7 @@ class App(Lister, BaseClient):
83
85
  for dataset_info in all_datasets_info:
84
86
  if 'version' in list(dataset_info.keys()):
85
87
  del dataset_info['version']['metrics']
86
- yield Dataset(base_url=self.base, **dataset_info)
88
+ yield Dataset(base_url=self.base, pat=self.pat, **dataset_info)
87
89
 
88
90
  def list_models(self,
89
91
  filter_by: Dict[str, Any] = {},
@@ -124,7 +126,7 @@ class App(Lister, BaseClient):
124
126
  if only_in_app:
125
127
  if model_info['app_id'] != self.id:
126
128
  continue
127
- yield Model(base_url=self.base, **model_info)
129
+ yield Model(base_url=self.base, pat=self.pat, **model_info)
128
130
 
129
131
  def list_workflows(self,
130
132
  filter_by: Dict[str, Any] = {},
@@ -163,7 +165,7 @@ class App(Lister, BaseClient):
163
165
  if only_in_app:
164
166
  if workflow_info['app_id'] != self.id:
165
167
  continue
166
- yield Workflow(base_url=self.base, **workflow_info)
168
+ yield Workflow(base_url=self.base, pat=self.pat, **workflow_info)
167
169
 
168
170
  def list_modules(self,
169
171
  filter_by: Dict[str, Any] = {},
@@ -202,7 +204,7 @@ class App(Lister, BaseClient):
202
204
  if only_in_app:
203
205
  if module_info['app_id'] != self.id:
204
206
  continue
205
- yield Module(base_url=self.base, **module_info)
207
+ yield Module(base_url=self.base, pat=self.pat, **module_info)
206
208
 
207
209
  def list_installed_module_versions(self,
208
210
  filter_by: Dict[str, Any] = {},
@@ -238,7 +240,10 @@ class App(Lister, BaseClient):
238
240
  del imv_info['deploy_url']
239
241
  del imv_info['installed_module_version_id'] # TODO: remove this after the backend fix
240
242
  yield Module(
241
- module_id=imv_info['module_version']['module_id'], base_url=self.base, **imv_info)
243
+ module_id=imv_info['module_version']['module_id'],
244
+ base_url=self.base,
245
+ pat=self.pat,
246
+ **imv_info)
242
247
 
243
248
  def list_concepts(self, page_no: int = None,
244
249
  per_page: int = None) -> Generator[Concept, None, None]:
@@ -303,7 +308,12 @@ class App(Lister, BaseClient):
303
308
  if response.status.code != status_code_pb2.SUCCESS:
304
309
  raise Exception(response.status)
305
310
  self.logger.info("\nDataset created\n%s", response.status)
306
- kwargs.update({'app_id': self.id, 'user_id': self.user_id, 'base_url': self.base})
311
+ kwargs.update({
312
+ 'app_id': self.id,
313
+ 'user_id': self.user_id,
314
+ 'base_url': self.base,
315
+ 'pat': self.pat
316
+ })
307
317
 
308
318
  return Dataset(dataset_id=dataset_id, **kwargs)
309
319
 
@@ -332,7 +342,8 @@ class App(Lister, BaseClient):
332
342
  'app_id': self.id,
333
343
  'user_id': self.user_id,
334
344
  'model_type_id': response.model.model_type_id,
335
- 'base_url': self.base
345
+ 'base_url': self.base,
346
+ 'pat': self.pat
336
347
  })
337
348
 
338
349
  return Model(model_id=model_id, **kwargs)
@@ -425,7 +436,7 @@ class App(Lister, BaseClient):
425
436
  display_workflow_tree(dict_response["workflows"][0]["nodes"])
426
437
  kwargs = self.process_response_keys(dict_response[list(dict_response.keys())[1]][0],
427
438
  "workflow")
428
- kwargs.update({'base_url': self.base})
439
+ kwargs.update({'base_url': self.base, 'pat': self.pat})
429
440
 
430
441
  return Workflow(**kwargs)
431
442
 
@@ -453,7 +464,12 @@ class App(Lister, BaseClient):
453
464
  if response.status.code != status_code_pb2.SUCCESS:
454
465
  raise Exception(response.status)
455
466
  self.logger.info("\nModule created\n%s", response.status)
456
- kwargs.update({'app_id': self.id, 'user_id': self.user_id, 'base_url': self.base})
467
+ kwargs.update({
468
+ 'app_id': self.id,
469
+ 'user_id': self.user_id,
470
+ 'base_url': self.base,
471
+ 'pat': self.pat
472
+ })
457
473
 
458
474
  return Module(module_id=module_id, **kwargs)
459
475
 
@@ -480,7 +496,7 @@ class App(Lister, BaseClient):
480
496
  kwargs = self.process_response_keys(dict_response[list(dict_response.keys())[1]],
481
497
  list(dict_response.keys())[1])
482
498
  kwargs['version'] = response.dataset.version if response.dataset.version else None
483
- kwargs.update({'base_url': self.base})
499
+ kwargs.update({'base_url': self.base, 'pat': self.pat})
484
500
  return Dataset(**kwargs)
485
501
 
486
502
  def model(self, model_id: str, model_version_id: str = "", **kwargs) -> Model:
@@ -516,7 +532,7 @@ class App(Lister, BaseClient):
516
532
  kwargs = self.process_response_keys(dict_response['model'], 'model')
517
533
  kwargs[
518
534
  'model_version'] = response.model.model_version if response.model.model_version else None
519
- kwargs.update({'base_url': self.base})
535
+ kwargs.update({'base_url': self.base, 'pat': self.pat})
520
536
 
521
537
  return Model(**kwargs)
522
538
 
@@ -542,7 +558,7 @@ class App(Lister, BaseClient):
542
558
  dict_response = MessageToDict(response, preserving_proto_field_name=True)
543
559
  kwargs = self.process_response_keys(dict_response[list(dict_response.keys())[1]],
544
560
  list(dict_response.keys())[1])
545
- kwargs.update({'base_url': self.base})
561
+ kwargs.update({'base_url': self.base, 'pat': self.pat})
546
562
 
547
563
  return Workflow(**kwargs)
548
564
 
@@ -569,7 +585,7 @@ class App(Lister, BaseClient):
569
585
  raise Exception(response.status)
570
586
  dict_response = MessageToDict(response, preserving_proto_field_name=True)
571
587
  kwargs = self.process_response_keys(dict_response['module'], 'module')
572
- kwargs.update({'base_url': self.base})
588
+ kwargs.update({'base_url': self.base, 'pat': self.pat})
573
589
 
574
590
  return Module(**kwargs)
575
591
 
@@ -579,7 +595,7 @@ class App(Lister, BaseClient):
579
595
  Returns:
580
596
  Inputs: An input object.
581
597
  """
582
- return Inputs(self.user_id, self.id, base_url=self.base)
598
+ return Inputs(self.user_id, self.id, base_url=self.base, pat=self.pat)
583
599
 
584
600
  def delete_dataset(self, dataset_id: str) -> None:
585
601
  """Deletes an dataset for the user.
@@ -670,7 +686,7 @@ class App(Lister, BaseClient):
670
686
  """
671
687
  user_id = kwargs.get("user_id", self.user_app_id.user_id)
672
688
  app_id = kwargs.get("app_id", self.user_app_id.app_id)
673
- return Search(user_id=user_id, app_id=app_id, **kwargs)
689
+ return Search(user_id=user_id, app_id=app_id, base_url=self.base, pat=self.pat, **kwargs)
674
690
 
675
691
  def __getattr__(self, name):
676
692
  return getattr(self.app_info, name)
clarifai/client/base.py CHANGED
@@ -1,4 +1,3 @@
1
- import os
2
1
  from datetime import datetime
3
2
  from typing import Any, Callable
4
3
 
@@ -8,7 +7,8 @@ from google.protobuf.wrappers_pb2 import BoolValue
8
7
 
9
8
  from clarifai.client.auth import create_stub
10
9
  from clarifai.client.auth.helper import ClarifaiAuthHelper
11
- from clarifai.errors import ApiError, UserError
10
+ from clarifai.errors import ApiError
11
+ from clarifai.utils.misc import get_from_dict_or_env
12
12
 
13
13
 
14
14
  class BaseClient:
@@ -31,12 +31,12 @@ class BaseClient:
31
31
  """
32
32
 
33
33
  def __init__(self, **kwargs):
34
- pat = os.environ.get('CLARIFAI_PAT', "")
35
- if pat == "":
36
- raise UserError("CLARIFAI_PAT must be set as env vars")
37
- self.auth_helper = ClarifaiAuthHelper(**kwargs, pat=pat, validate=False)
34
+ pat = get_from_dict_or_env(key="pat", env_key="CLARIFAI_PAT", **kwargs)
35
+ kwargs.update({'pat': pat})
36
+ self.auth_helper = ClarifaiAuthHelper(**kwargs, validate=False)
38
37
  self.STUB = create_stub(self.auth_helper)
39
38
  self.metadata = self.auth_helper.metadata
39
+ self.pat = self.auth_helper.pat
40
40
  self.user_app_id = self.auth_helper.get_user_app_id_proto()
41
41
  self.base = self.auth_helper.base
42
42
 
@@ -1,7 +1,9 @@
1
1
  import os
2
+ import time
3
+ import uuid
2
4
  from concurrent.futures import ThreadPoolExecutor, as_completed
3
5
  from multiprocessing import cpu_count
4
- from typing import Generator, List, Tuple, TypeVar, Union
6
+ from typing import Generator, List, Tuple, Type, TypeVar, Union
5
7
 
6
8
  import requests
7
9
  from clarifai_grpc.grpc.api import resources_pb2, service_pb2
@@ -13,16 +15,18 @@ from tqdm import tqdm
13
15
  from clarifai.client.base import BaseClient
14
16
  from clarifai.client.input import Inputs
15
17
  from clarifai.client.lister import Lister
18
+ from clarifai.constants.dataset import DATASET_UPLOAD_TASKS
16
19
  from clarifai.datasets.export.inputs_annotations import (DatasetExportReader,
17
20
  InputAnnotationDownloader)
21
+ from clarifai.datasets.upload.base import ClarifaiDataLoader
18
22
  from clarifai.datasets.upload.image import (VisualClassificationDataset, VisualDetectionDataset,
19
23
  VisualSegmentationDataset)
20
24
  from clarifai.datasets.upload.text import TextClassificationDataset
21
- from clarifai.datasets.upload.utils import load_dataloader, load_module_dataloader
25
+ from clarifai.datasets.upload.utils import DisplayUploadStatus
22
26
  from clarifai.errors import UserError
23
27
  from clarifai.urls.helper import ClarifaiUrlHelper
24
28
  from clarifai.utils.logging import get_logger
25
- from clarifai.utils.misc import Chunker
29
+ from clarifai.utils.misc import BackoffIterator, Chunker
26
30
 
27
31
  ClarifaiDatasetType = TypeVar('ClarifaiDatasetType', VisualClassificationDataset,
28
32
  VisualDetectionDataset, VisualSegmentationDataset,
@@ -33,22 +37,24 @@ class Dataset(Lister, BaseClient):
33
37
  """Dataset is a class that provides access to Clarifai API endpoints related to Dataset information."""
34
38
 
35
39
  def __init__(self,
36
- url_init: str = "",
37
- dataset_id: str = "",
40
+ url: str = None,
41
+ dataset_id: str = None,
38
42
  base_url: str = "https://api.clarifai.com",
43
+ pat: str = None,
39
44
  **kwargs):
40
45
  """Initializes a Dataset object.
41
46
 
42
47
  Args:
43
- url_init (str): The URL to initialize the dataset object.
48
+ url (str): The URL to initialize the dataset object.
44
49
  dataset_id (str): The Dataset ID within the App to interact with.
45
50
  base_url (str): Base API url. Default "https://api.clarifai.com"
51
+ pat (str): A personal access token for authentication. Can be set as env var CLARIFAI_PAT
46
52
  **kwargs: Additional keyword arguments to be passed to the Dataset.
47
53
  """
48
- if url_init != "" and dataset_id != "":
49
- raise UserError("You can only specify one of url_init or dataset_id.")
50
- if url_init != "":
51
- user_id, app_id, _, dataset_id, _ = ClarifaiUrlHelper.split_clarifai_url(url_init)
54
+ if url and dataset_id:
55
+ raise UserError("You can only specify one of url or dataset_id.")
56
+ if url:
57
+ user_id, app_id, _, dataset_id, _ = ClarifaiUrlHelper.split_clarifai_url(url)
52
58
  kwargs = {'user_id': user_id, 'app_id': app_id}
53
59
  self.kwargs = {**kwargs, 'id': dataset_id}
54
60
  self.dataset_info = resources_pb2.Dataset(**self.kwargs)
@@ -56,11 +62,11 @@ class Dataset(Lister, BaseClient):
56
62
  self.num_workers: int = min(10, cpu_count()) #15 req/sec rate limit
57
63
  self.annot_num_workers = 4
58
64
  self.max_retires = 10
59
- self.chunk_size = 128 # limit max protos in a req
65
+ self.batch_size = 128 # limit max protos in a req
60
66
  self.task = None # Upload dataset type
61
- self.input_object = Inputs(user_id=self.user_id, app_id=self.app_id)
67
+ self.input_object = Inputs(user_id=self.user_id, app_id=self.app_id, pat=pat)
62
68
  self.logger = get_logger(logger_level="INFO")
63
- BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id, base=base_url)
69
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.app_id, base=base_url, pat=pat)
64
70
  Lister.__init__(self)
65
71
 
66
72
  def create_version(self, **kwargs) -> 'Dataset':
@@ -93,7 +99,8 @@ class Dataset(Lister, BaseClient):
93
99
  'app_id': self.app_id,
94
100
  'user_id': self.user_id,
95
101
  'version': response.dataset_versions[0],
96
- 'base_url': self.base
102
+ 'base_url': self.base,
103
+ 'pat': self.pat
97
104
  })
98
105
  return Dataset(**kwargs)
99
106
 
@@ -156,7 +163,8 @@ class Dataset(Lister, BaseClient):
156
163
  'app_id': self.app_id,
157
164
  'user_id': self.user_id,
158
165
  'version': resources_pb2.DatasetVersion(**dataset_version_info),
159
- 'base_url': self.base
166
+ 'base_url': self.base,
167
+ 'pat': self.pat
160
168
  }
161
169
  yield Dataset(**kwargs)
162
170
 
@@ -241,7 +249,7 @@ class Dataset(Lister, BaseClient):
241
249
 
242
250
  if self.task in ["visual_detection", "visual_segmentation"]:
243
251
  _, annotation_protos = dataset_obj.get_protos(success_input_ids)
244
- chunked_annotation_protos = Chunker(annotation_protos, self.chunk_size).chunk()
252
+ chunked_annotation_protos = Chunker(annotation_protos, self.batch_size).chunk()
245
253
  retry_annot_protos.extend(self._concurrent_annot_upload(chunked_annotation_protos))
246
254
 
247
255
  return failed_input_ids, retry_annot_protos
@@ -259,7 +267,7 @@ class Dataset(Lister, BaseClient):
259
267
  if failed_input_ids:
260
268
  self._upload_inputs_annotations(failed_input_ids, dataset_obj)
261
269
  if retry_annot_protos:
262
- chunked_annotation_protos = Chunker(retry_annot_protos, self.chunk_size).chunk()
270
+ chunked_annotation_protos = Chunker(retry_annot_protos, self.batch_size).chunk()
263
271
  _ = self._concurrent_annot_upload(chunked_annotation_protos)
264
272
 
265
273
  def _data_upload(self, dataset_obj: ClarifaiDatasetType) -> None:
@@ -269,7 +277,7 @@ class Dataset(Lister, BaseClient):
269
277
  dataset_obj: ClarifaiDataset object
270
278
  """
271
279
  input_ids = list(range(len(dataset_obj)))
272
- chunk_input_ids = Chunker(input_ids, self.chunk_size).chunk()
280
+ chunk_input_ids = Chunker(input_ids, self.batch_size).chunk()
273
281
  with ThreadPoolExecutor(max_workers=self.num_workers) as executor:
274
282
  with tqdm(total=len(chunk_input_ids), desc='Uploading Dataset') as progress:
275
283
  # Submit all jobs to the executor and store the returned futures
@@ -284,55 +292,46 @@ class Dataset(Lister, BaseClient):
284
292
  progress.update()
285
293
 
286
294
  def upload_dataset(self,
287
- task: str,
288
- split: str,
289
- module_dir: str = None,
290
- dataset_loader: str = None,
291
- chunk_size: int = 128) -> None:
295
+ dataloader: Type[ClarifaiDataLoader],
296
+ batch_size: int = 32,
297
+ get_upload_status: bool = False) -> None:
292
298
  """Uploads a dataset to the app.
293
299
 
294
300
  Args:
295
- task (str): task type(text_clf, visual-classification, visual_detection, visual_segmentation, visual-captioning)
296
- split (str): split type(train, test, val)
297
- module_dir (str): path to the module directory
298
- dataset_loader (str): name of the dataset loader
299
- chunk_size (int): chunk size for concurrent upload of inputs and annotations
301
+ dataloader (Type[ClarifaiDataLoader]): ClarifaiDataLoader object
302
+ batch_size (int): batch size for concurrent upload of inputs and annotations (max: 128)
303
+ get_upload_status (bool): True if you want to get the upload status of the dataset
300
304
  """
301
- self.chunk_size = min(self.chunk_size, chunk_size)
302
- self.task = task
303
- datagen_object = None
304
-
305
- if module_dir is None and dataset_loader is None:
306
- raise UserError("One of `from_module` and `dataset_loader` must be \
307
- specified. Both can't be None or defined at the same time.")
308
- elif module_dir is not None and dataset_loader is not None:
309
- raise UserError("Use either of `from_module` or `dataset_loader` \
310
- but NOT both.")
311
- elif module_dir is not None:
312
- datagen_object = load_module_dataloader(module_dir, split)
313
- else:
314
- datagen_object = load_dataloader(dataset_loader, split)
315
-
316
- if self.task == "text_clf":
317
- dataset_obj = TextClassificationDataset(datagen_object, self.id, split)
305
+ self.batch_size = min(self.batch_size, batch_size)
306
+ self.task = dataloader.task
307
+ if self.task not in DATASET_UPLOAD_TASKS:
308
+ raise UserError("Task should be one of \
309
+ 'text_classification', 'visual_classification', \
310
+ 'visual_detection', 'visual_segmentation', 'visual_captioning'")
311
+
312
+ if self.task == "text_classification":
313
+ dataset_obj = TextClassificationDataset(dataloader, self.id)
318
314
 
319
315
  elif self.task == "visual_detection":
320
- dataset_obj = VisualDetectionDataset(datagen_object, self.id, split)
316
+ dataset_obj = VisualDetectionDataset(dataloader, self.id)
321
317
 
322
318
  elif self.task == "visual_segmentation":
323
- dataset_obj = VisualSegmentationDataset(datagen_object, self.id, split)
319
+ dataset_obj = VisualSegmentationDataset(dataloader, self.id)
324
320
 
325
321
  else: # visual_classification & visual_captioning
326
- dataset_obj = VisualClassificationDataset(datagen_object, self.id, split)
322
+ dataset_obj = VisualClassificationDataset(dataloader, self.id)
327
323
 
328
324
  self._data_upload(dataset_obj)
329
325
 
326
+ if get_upload_status:
327
+ self.get_upload_status(dataloader)
328
+
330
329
  def upload_from_csv(self,
331
330
  csv_path: str,
332
331
  input_type: str = 'text',
333
332
  csv_type: str = None,
334
333
  labels: bool = True,
335
- chunk_size: int = 128) -> None:
334
+ batch_size: int = 128) -> None:
336
335
  """Uploads dataset from a csv file.
337
336
 
338
337
  Args:
@@ -340,7 +339,7 @@ class Dataset(Lister, BaseClient):
340
339
  input_type (str): type of the dataset(text, image)
341
340
  csv_type (str): type of the csv file(raw, url, file_path)
342
341
  labels (bool): True if csv file has labels column
343
- chunk_size (int): chunk size for concurrent upload of inputs and annotations
342
+ batch_size (int): batch size for concurrent upload of inputs and annotations
344
343
 
345
344
  Example:
346
345
  >>> from clarifai.client.dataset import Dataset
@@ -360,27 +359,27 @@ class Dataset(Lister, BaseClient):
360
359
  assert csv_path.endswith('.csv'), 'csv_path should be a csv file'
361
360
  if csv_type == 'raw' and input_type != 'text':
362
361
  raise UserError('Only text input type is supported for raw csv type')
363
- chunk_size = min(128, chunk_size)
362
+ batch_size = min(128, batch_size)
364
363
  input_protos = self.input_object.get_inputs_from_csv(
365
364
  csv_path=csv_path,
366
365
  input_type=input_type,
367
366
  csv_type=csv_type,
368
367
  dataset_id=self.id,
369
368
  labels=labels)
370
- self.input_object._bulk_upload(inputs=input_protos, chunk_size=chunk_size)
369
+ self.input_object._bulk_upload(inputs=input_protos, batch_size=batch_size)
371
370
 
372
371
  def upload_from_folder(self,
373
372
  folder_path: str,
374
373
  input_type: str,
375
374
  labels: bool = False,
376
- chunk_size: int = 128) -> None:
375
+ batch_size: int = 128) -> None:
377
376
  """Upload dataset from folder.
378
377
 
379
378
  Args:
380
379
  folder_path (str): Path to the folder containing images.
381
380
  input_type (str): type of the dataset(text, image)
382
381
  labels (bool): True if folder name is the label for the inputs
383
- chunk_size (int): chunk size for concurrent upload of inputs and annotations
382
+ batch_size (int): batch size for concurrent upload of inputs and annotations
384
383
 
385
384
  Example:
386
385
  >>> from clarifai.client.dataset import Dataset
@@ -397,7 +396,66 @@ class Dataset(Lister, BaseClient):
397
396
  if input_type == 'text':
398
397
  input_protos = self.input_object.get_text_inputs_from_folder(
399
398
  folder_path=folder_path, dataset_id=self.id, labels=labels)
400
- self.input_object._bulk_upload(inputs=input_protos, chunk_size=chunk_size)
399
+ self.input_object._bulk_upload(inputs=input_protos, batch_size=batch_size)
400
+
401
+ def get_upload_status(self,
402
+ dataloader: Type[ClarifaiDataLoader],
403
+ delete_version: bool = False,
404
+ timeout: int = 600) -> None:
405
+ """Creates a new dataset version and displays the upload status of the dataset.
406
+
407
+ Args:
408
+ dataloader (Type[ClarifaiDataLoader]): ClarifaiDataLoader object
409
+ delete_version (bool): True if you want to delete the version after getting the upload status
410
+ timeout (int): Timeout in seconds for getting the upload status. Default is 600 seconds.
411
+
412
+ Example:
413
+ >>> from clarifai.client.dataset import Dataset
414
+ >>> dataset = Dataset(dataset_id='dataset_id', user_id='user_id', app_id='app_id')
415
+ >>> dataset.get_upload_status(dataloader)
416
+
417
+ Note:
418
+ This is a beta feature and is subject to change.
419
+ """
420
+ self.logger.info("Getting dataset upload status...")
421
+ dataset_version_id = uuid.uuid4().hex
422
+ _ = self.create_version(id=dataset_version_id, description="SDK Upload Status")
423
+
424
+ request_data = dict(
425
+ user_app_id=self.user_app_id,
426
+ dataset_id=self.id,
427
+ dataset_version_id=dataset_version_id,
428
+ )
429
+
430
+ start_time = time.time()
431
+ backoff_iterator = BackoffIterator()
432
+ while (True):
433
+ dataset_metrics_response = self._grpc_request(
434
+ self.STUB.ListDatasetVersionMetricsGroups,
435
+ service_pb2.ListDatasetVersionMetricsGroupsRequest(**request_data),
436
+ )
437
+
438
+ if dataset_metrics_response.status.code != status_code_pb2.SUCCESS:
439
+ self.delete_version(dataset_version_id)
440
+ raise Exception("Failed to get dataset metrics {}".format(dataset_metrics_response.status))
441
+
442
+ dict_response = MessageToDict(dataset_metrics_response)
443
+ if len(dict_response.keys()) == 1 and time.time() - start_time < timeout:
444
+ self.logger.info("Crunching the dataset metrics. Please wait...")
445
+ time.sleep(next(backoff_iterator))
446
+ continue
447
+ else:
448
+ if time.time() - start_time > timeout:
449
+ self.delete_version(dataset_version_id)
450
+ raise UserError(
451
+ "Dataset metrics are taking too long to process. Please try again later.")
452
+ break
453
+
454
+ dataset_info_dict = dict(user_id=self.user_id, app_id=self.app_id, dataset_id=self.id)
455
+ DisplayUploadStatus(dataloader, dataset_metrics_response, dataset_info_dict)
456
+
457
+ if delete_version:
458
+ self.delete_version(dataset_version_id)
401
459
 
402
460
  def export(self,
403
461
  save_path: str,