clarifai 9.7.1__py3-none-any.whl → 9.7.2__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 (336) hide show
  1. clarifai/auth/__init__.py +6 -0
  2. clarifai/auth/helper.py +35 -36
  3. clarifai/auth/register.py +23 -0
  4. clarifai/{client → auth}/stub.py +10 -10
  5. clarifai/client/__init__.py +1 -4
  6. clarifai/client/app.py +483 -0
  7. clarifai/client/auth/__init__.py +4 -0
  8. clarifai/client/{abc.py → auth/abc.py} +2 -2
  9. clarifai/client/auth/helper.py +377 -0
  10. clarifai/client/auth/register.py +23 -0
  11. {clarifai_utils/client → clarifai/client/auth}/stub.py +10 -10
  12. clarifai/client/base.py +112 -0
  13. clarifai/client/dataset.py +290 -0
  14. clarifai/client/input.py +730 -0
  15. clarifai/client/lister.py +41 -0
  16. clarifai/client/model.py +218 -0
  17. clarifai/client/module.py +82 -0
  18. clarifai/client/user.py +125 -0
  19. clarifai/client/workflow.py +194 -0
  20. clarifai/datasets/upload/base.py +66 -0
  21. clarifai/datasets/upload/examples/README.md +31 -0
  22. clarifai/datasets/upload/examples/image_classification/cifar10/dataset.py +42 -0
  23. clarifai/datasets/upload/examples/image_classification/food-101/dataset.py +39 -0
  24. clarifai/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +37 -0
  25. clarifai/{data_upload/datasets → datasets/upload}/features.py +4 -12
  26. clarifai/datasets/upload/image.py +156 -0
  27. clarifai/datasets/upload/loaders/README.md +49 -0
  28. clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/coco_captions.py +24 -21
  29. {clarifai_utils/data_upload/datasets/zoo → clarifai/datasets/upload/loaders}/coco_detection.py +46 -42
  30. clarifai/datasets/upload/loaders/coco_segmentation.py +166 -0
  31. clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/imagenet_classification.py +22 -12
  32. clarifai/{data_upload/datasets/zoo → datasets/upload/loaders}/xview_detection.py +44 -53
  33. clarifai/datasets/upload/text.py +50 -0
  34. clarifai/datasets/upload/utils.py +62 -0
  35. clarifai/errors.py +90 -0
  36. clarifai/urls/helper.py +16 -17
  37. clarifai/utils/logging.py +40 -0
  38. clarifai/utils/misc.py +33 -0
  39. clarifai/versions.py +6 -0
  40. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/LICENSE +1 -1
  41. clarifai-9.7.2.dist-info/METADATA +179 -0
  42. clarifai-9.7.2.dist-info/RECORD +350 -0
  43. clarifai_utils/auth/__init__.py +6 -0
  44. clarifai_utils/auth/helper.py +35 -36
  45. clarifai_utils/auth/register.py +23 -0
  46. clarifai_utils/auth/stub.py +127 -0
  47. clarifai_utils/client/__init__.py +1 -4
  48. clarifai_utils/client/app.py +483 -0
  49. clarifai_utils/client/auth/__init__.py +4 -0
  50. clarifai_utils/client/{abc.py → auth/abc.py} +2 -2
  51. clarifai_utils/client/auth/helper.py +377 -0
  52. clarifai_utils/client/auth/register.py +23 -0
  53. clarifai_utils/client/auth/stub.py +127 -0
  54. clarifai_utils/client/base.py +112 -0
  55. clarifai_utils/client/dataset.py +290 -0
  56. clarifai_utils/client/input.py +730 -0
  57. clarifai_utils/client/lister.py +41 -0
  58. clarifai_utils/client/model.py +218 -0
  59. clarifai_utils/client/module.py +82 -0
  60. clarifai_utils/client/user.py +125 -0
  61. clarifai_utils/client/workflow.py +194 -0
  62. clarifai_utils/datasets/upload/base.py +66 -0
  63. clarifai_utils/datasets/upload/examples/README.md +31 -0
  64. clarifai_utils/datasets/upload/examples/image_classification/cifar10/dataset.py +42 -0
  65. clarifai_utils/datasets/upload/examples/image_classification/food-101/dataset.py +39 -0
  66. clarifai_utils/datasets/upload/examples/text_classification/imdb_dataset/dataset.py +37 -0
  67. clarifai_utils/{data_upload/datasets → datasets/upload}/features.py +4 -12
  68. clarifai_utils/datasets/upload/image.py +156 -0
  69. clarifai_utils/datasets/upload/loaders/README.md +49 -0
  70. clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/coco_captions.py +24 -21
  71. {clarifai/data_upload/datasets/zoo → clarifai_utils/datasets/upload/loaders}/coco_detection.py +46 -42
  72. clarifai_utils/datasets/upload/loaders/coco_segmentation.py +166 -0
  73. clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/imagenet_classification.py +22 -12
  74. clarifai_utils/{data_upload/datasets/zoo → datasets/upload/loaders}/xview_detection.py +44 -53
  75. clarifai_utils/datasets/upload/text.py +50 -0
  76. clarifai_utils/datasets/upload/utils.py +62 -0
  77. clarifai_utils/errors.py +90 -0
  78. clarifai_utils/urls/helper.py +16 -17
  79. clarifai_utils/utils/logging.py +40 -0
  80. clarifai_utils/utils/misc.py +33 -0
  81. clarifai_utils/versions.py +6 -0
  82. clarifai/data_upload/README.md +0 -63
  83. clarifai/data_upload/convert_csv.py +0 -182
  84. clarifai/data_upload/datasets/base.py +0 -87
  85. clarifai/data_upload/datasets/image.py +0 -253
  86. clarifai/data_upload/datasets/text.py +0 -60
  87. clarifai/data_upload/datasets/zoo/README.md +0 -55
  88. clarifai/data_upload/datasets/zoo/coco_segmentation.py +0 -160
  89. clarifai/data_upload/examples/README.md +0 -5
  90. clarifai/data_upload/examples/image_classification/cifar10/dataset.py +0 -40
  91. clarifai/data_upload/examples/image_classification/food-101/dataset.py +0 -39
  92. clarifai/data_upload/examples/image_classification/food-101/images/beignets/1036242.jpg +0 -0
  93. clarifai/data_upload/examples/image_classification/food-101/images/beignets/1114182.jpg +0 -0
  94. clarifai/data_upload/examples/image_classification/food-101/images/beignets/2012944.jpg +0 -0
  95. clarifai/data_upload/examples/image_classification/food-101/images/beignets/2464389.jpg +0 -0
  96. clarifai/data_upload/examples/image_classification/food-101/images/beignets/478632.jpg +0 -0
  97. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1061270.jpg +0 -0
  98. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1202261.jpg +0 -0
  99. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/1381751.jpg +0 -0
  100. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/3289634.jpg +0 -0
  101. clarifai/data_upload/examples/image_classification/food-101/images/hamburger/862025.jpg +0 -0
  102. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/102197.jpg +0 -0
  103. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/2749372.jpg +0 -0
  104. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/2938268.jpg +0 -0
  105. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/3590861.jpg +0 -0
  106. clarifai/data_upload/examples/image_classification/food-101/images/prime_rib/746716.jpg +0 -0
  107. clarifai/data_upload/examples/image_classification/food-101/images/ramen/2955110.jpg +0 -0
  108. clarifai/data_upload/examples/image_classification/food-101/images/ramen/3208966.jpg +0 -0
  109. clarifai/data_upload/examples/image_classification/food-101/images/ramen/3270629.jpg +0 -0
  110. clarifai/data_upload/examples/image_classification/food-101/images/ramen/3424562.jpg +0 -0
  111. clarifai/data_upload/examples/image_classification/food-101/images/ramen/544680.jpg +0 -0
  112. clarifai/data_upload/examples/image_detection/voc/annotations/2007_000464.xml +0 -39
  113. clarifai/data_upload/examples/image_detection/voc/annotations/2008_000853.xml +0 -28
  114. clarifai/data_upload/examples/image_detection/voc/annotations/2008_003182.xml +0 -54
  115. clarifai/data_upload/examples/image_detection/voc/annotations/2008_008526.xml +0 -67
  116. clarifai/data_upload/examples/image_detection/voc/annotations/2009_004315.xml +0 -28
  117. clarifai/data_upload/examples/image_detection/voc/annotations/2009_004382.xml +0 -28
  118. clarifai/data_upload/examples/image_detection/voc/annotations/2011_000430.xml +0 -28
  119. clarifai/data_upload/examples/image_detection/voc/annotations/2011_001610.xml +0 -46
  120. clarifai/data_upload/examples/image_detection/voc/annotations/2011_006412.xml +0 -99
  121. clarifai/data_upload/examples/image_detection/voc/annotations/2012_000690.xml +0 -43
  122. clarifai/data_upload/examples/image_detection/voc/dataset.py +0 -76
  123. clarifai/data_upload/examples/image_detection/voc/images/2007_000464.jpg +0 -0
  124. clarifai/data_upload/examples/image_detection/voc/images/2008_000853.jpg +0 -0
  125. clarifai/data_upload/examples/image_detection/voc/images/2008_003182.jpg +0 -0
  126. clarifai/data_upload/examples/image_detection/voc/images/2008_008526.jpg +0 -0
  127. clarifai/data_upload/examples/image_detection/voc/images/2009_004315.jpg +0 -0
  128. clarifai/data_upload/examples/image_detection/voc/images/2009_004382.jpg +0 -0
  129. clarifai/data_upload/examples/image_detection/voc/images/2011_000430.jpg +0 -0
  130. clarifai/data_upload/examples/image_detection/voc/images/2011_001610.jpg +0 -0
  131. clarifai/data_upload/examples/image_detection/voc/images/2011_006412.jpg +0 -0
  132. clarifai/data_upload/examples/image_detection/voc/images/2012_000690.jpg +0 -0
  133. clarifai/data_upload/examples/image_segmentation/coco/annotations/instances_val2017_subset.json +0 -5342
  134. clarifai/data_upload/examples/image_segmentation/coco/dataset.py +0 -107
  135. clarifai/data_upload/examples/image_segmentation/coco/images/000000074646.jpg +0 -0
  136. clarifai/data_upload/examples/image_segmentation/coco/images/000000086956.jpg +0 -0
  137. clarifai/data_upload/examples/image_segmentation/coco/images/000000166563.jpg +0 -0
  138. clarifai/data_upload/examples/image_segmentation/coco/images/000000176857.jpg +0 -0
  139. clarifai/data_upload/examples/image_segmentation/coco/images/000000182202.jpg +0 -0
  140. clarifai/data_upload/examples/image_segmentation/coco/images/000000193245.jpg +0 -0
  141. clarifai/data_upload/examples/image_segmentation/coco/images/000000384850.jpg +0 -0
  142. clarifai/data_upload/examples/image_segmentation/coco/images/000000409630.jpg +0 -0
  143. clarifai/data_upload/examples/image_segmentation/coco/images/000000424349.jpg +0 -0
  144. clarifai/data_upload/examples/image_segmentation/coco/images/000000573008.jpg +0 -0
  145. clarifai/data_upload/examples/text_classification/imdb_dataset/dataset.py +0 -40
  146. clarifai/data_upload/examples.py +0 -17
  147. clarifai/data_upload/upload.py +0 -356
  148. clarifai/dataset_export/dataset_export_inputs.py +0 -205
  149. clarifai/listing/concepts.py +0 -37
  150. clarifai/listing/datasets.py +0 -37
  151. clarifai/listing/inputs.py +0 -111
  152. clarifai/listing/installed_module_versions.py +0 -40
  153. clarifai/listing/lister.py +0 -200
  154. clarifai/listing/models.py +0 -46
  155. clarifai/listing/module_versions.py +0 -42
  156. clarifai/listing/modules.py +0 -36
  157. clarifai/runners/base.py +0 -140
  158. clarifai/runners/example.py +0 -36
  159. clarifai-9.7.1.dist-info/METADATA +0 -99
  160. clarifai-9.7.1.dist-info/RECORD +0 -456
  161. clarifai_utils/data_upload/README.md +0 -63
  162. clarifai_utils/data_upload/convert_csv.py +0 -182
  163. clarifai_utils/data_upload/datasets/base.py +0 -87
  164. clarifai_utils/data_upload/datasets/image.py +0 -253
  165. clarifai_utils/data_upload/datasets/text.py +0 -60
  166. clarifai_utils/data_upload/datasets/zoo/README.md +0 -55
  167. clarifai_utils/data_upload/datasets/zoo/coco_segmentation.py +0 -160
  168. clarifai_utils/data_upload/examples/README.md +0 -5
  169. clarifai_utils/data_upload/examples/image_classification/cifar10/dataset.py +0 -40
  170. clarifai_utils/data_upload/examples/image_classification/food-101/dataset.py +0 -39
  171. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/1036242.jpg +0 -0
  172. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/1114182.jpg +0 -0
  173. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/2012944.jpg +0 -0
  174. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/2464389.jpg +0 -0
  175. clarifai_utils/data_upload/examples/image_classification/food-101/images/beignets/478632.jpg +0 -0
  176. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1061270.jpg +0 -0
  177. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1202261.jpg +0 -0
  178. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/1381751.jpg +0 -0
  179. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/3289634.jpg +0 -0
  180. clarifai_utils/data_upload/examples/image_classification/food-101/images/hamburger/862025.jpg +0 -0
  181. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/102197.jpg +0 -0
  182. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/2749372.jpg +0 -0
  183. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/2938268.jpg +0 -0
  184. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/3590861.jpg +0 -0
  185. clarifai_utils/data_upload/examples/image_classification/food-101/images/prime_rib/746716.jpg +0 -0
  186. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/2955110.jpg +0 -0
  187. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3208966.jpg +0 -0
  188. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3270629.jpg +0 -0
  189. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/3424562.jpg +0 -0
  190. clarifai_utils/data_upload/examples/image_classification/food-101/images/ramen/544680.jpg +0 -0
  191. clarifai_utils/data_upload/examples/image_detection/__init__.py +0 -0
  192. clarifai_utils/data_upload/examples/image_detection/voc/__init__.py +0 -0
  193. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2007_000464.xml +0 -39
  194. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_000853.xml +0 -28
  195. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_003182.xml +0 -54
  196. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2008_008526.xml +0 -67
  197. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2009_004315.xml +0 -28
  198. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2009_004382.xml +0 -28
  199. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_000430.xml +0 -28
  200. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_001610.xml +0 -46
  201. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2011_006412.xml +0 -99
  202. clarifai_utils/data_upload/examples/image_detection/voc/annotations/2012_000690.xml +0 -43
  203. clarifai_utils/data_upload/examples/image_detection/voc/dataset.py +0 -76
  204. clarifai_utils/data_upload/examples/image_detection/voc/images/2007_000464.jpg +0 -0
  205. clarifai_utils/data_upload/examples/image_detection/voc/images/2008_000853.jpg +0 -0
  206. clarifai_utils/data_upload/examples/image_detection/voc/images/2008_003182.jpg +0 -0
  207. clarifai_utils/data_upload/examples/image_detection/voc/images/2008_008526.jpg +0 -0
  208. clarifai_utils/data_upload/examples/image_detection/voc/images/2009_004315.jpg +0 -0
  209. clarifai_utils/data_upload/examples/image_detection/voc/images/2009_004382.jpg +0 -0
  210. clarifai_utils/data_upload/examples/image_detection/voc/images/2011_000430.jpg +0 -0
  211. clarifai_utils/data_upload/examples/image_detection/voc/images/2011_001610.jpg +0 -0
  212. clarifai_utils/data_upload/examples/image_detection/voc/images/2011_006412.jpg +0 -0
  213. clarifai_utils/data_upload/examples/image_detection/voc/images/2012_000690.jpg +0 -0
  214. clarifai_utils/data_upload/examples/image_segmentation/__init__.py +0 -0
  215. clarifai_utils/data_upload/examples/image_segmentation/coco/__init__.py +0 -0
  216. clarifai_utils/data_upload/examples/image_segmentation/coco/annotations/instances_val2017_subset.json +0 -5342
  217. clarifai_utils/data_upload/examples/image_segmentation/coco/dataset.py +0 -107
  218. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000074646.jpg +0 -0
  219. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000086956.jpg +0 -0
  220. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000166563.jpg +0 -0
  221. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000176857.jpg +0 -0
  222. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000182202.jpg +0 -0
  223. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000193245.jpg +0 -0
  224. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000384850.jpg +0 -0
  225. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000409630.jpg +0 -0
  226. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000424349.jpg +0 -0
  227. clarifai_utils/data_upload/examples/image_segmentation/coco/images/000000573008.jpg +0 -0
  228. clarifai_utils/data_upload/examples/text_classification/__init__.py +0 -0
  229. clarifai_utils/data_upload/examples/text_classification/imdb_dataset/__init__.py +0 -0
  230. clarifai_utils/data_upload/examples/text_classification/imdb_dataset/dataset.py +0 -40
  231. clarifai_utils/data_upload/examples.py +0 -17
  232. clarifai_utils/data_upload/upload.py +0 -356
  233. clarifai_utils/dataset_export/dataset_export_inputs.py +0 -205
  234. clarifai_utils/listing/__init__.py +0 -0
  235. clarifai_utils/listing/concepts.py +0 -37
  236. clarifai_utils/listing/datasets.py +0 -37
  237. clarifai_utils/listing/inputs.py +0 -111
  238. clarifai_utils/listing/installed_module_versions.py +0 -40
  239. clarifai_utils/listing/lister.py +0 -200
  240. clarifai_utils/listing/models.py +0 -46
  241. clarifai_utils/listing/module_versions.py +0 -42
  242. clarifai_utils/listing/modules.py +0 -36
  243. clarifai_utils/runners/__init__.py +0 -0
  244. clarifai_utils/runners/base.py +0 -140
  245. clarifai_utils/runners/example.py +0 -36
  246. /clarifai/{data_upload/__init__.py → cli.py} +0 -0
  247. /clarifai/{data_upload/datasets → datasets}/__init__.py +0 -0
  248. /clarifai/{data_upload/datasets/zoo → datasets/upload}/__init__.py +0 -0
  249. /clarifai/{data_upload → datasets/upload}/examples/image_classification/__init__.py +0 -0
  250. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/__init__.py +0 -0
  251. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
  252. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
  253. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  254. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  255. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  256. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  257. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  258. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  259. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  260. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  261. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  262. /clarifai/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  263. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/__init__.py +0 -0
  264. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  265. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  266. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  267. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  268. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  269. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  270. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  271. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  272. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  273. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  274. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  275. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  276. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  277. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  278. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  279. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  280. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  281. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  282. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  283. /clarifai/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  284. /clarifai/{data_upload/examples/image_detection → datasets/upload/examples/text_classification}/__init__.py +0 -0
  285. /clarifai/{data_upload/examples/image_detection/voc → datasets/upload/examples/text_classification/imdb_dataset}/__init__.py +0 -0
  286. /clarifai/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/test.csv +0 -0
  287. /clarifai/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/train.csv +0 -0
  288. /clarifai/{data_upload/examples/image_segmentation → datasets/upload/loaders}/__init__.py +0 -0
  289. /clarifai/{data_upload/examples/image_segmentation/coco → utils}/__init__.py +0 -0
  290. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/WHEEL +0 -0
  291. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/entry_points.txt +0 -0
  292. {clarifai-9.7.1.dist-info → clarifai-9.7.2.dist-info}/top_level.txt +0 -0
  293. /clarifai/data_upload/examples/text_classification/__init__.py → /clarifai_utils/cli.py +0 -0
  294. {clarifai/data_upload/examples/text_classification/imdb_dataset → clarifai_utils/datasets}/__init__.py +0 -0
  295. {clarifai/listing → clarifai_utils/datasets/upload}/__init__.py +0 -0
  296. {clarifai/runners → clarifai_utils/datasets/upload/examples/image_classification}/__init__.py +0 -0
  297. /clarifai_utils/{data_upload → datasets/upload/examples/image_classification/cifar10}/__init__.py +0 -0
  298. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_test.csv +0 -0
  299. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/cifar_small_train.csv +0 -0
  300. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_700.jpg +0 -0
  301. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_701.jpg +0 -0
  302. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_702.jpg +0 -0
  303. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_703.jpg +0 -0
  304. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_704.jpg +0 -0
  305. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_705.jpg +0 -0
  306. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_706.jpg +0 -0
  307. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_707.jpg +0 -0
  308. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_708.jpg +0 -0
  309. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/cifar10/images/test_batch_709.jpg +0 -0
  310. /clarifai_utils/{data_upload/datasets → datasets/upload/examples/image_classification/food-101}/__init__.py +0 -0
  311. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/1420783.jpg +0 -0
  312. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3287885.jpg +0 -0
  313. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/3617075.jpg +0 -0
  314. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/38052.jpg +0 -0
  315. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/beignets/39147.jpg +0 -0
  316. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/139558.jpg +0 -0
  317. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/1636096.jpg +0 -0
  318. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/2480925.jpg +0 -0
  319. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3385808.jpg +0 -0
  320. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/hamburger/3647386.jpg +0 -0
  321. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/1826869.jpg +0 -0
  322. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2243245.jpg +0 -0
  323. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/259212.jpg +0 -0
  324. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/2842688.jpg +0 -0
  325. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/prime_rib/3035414.jpg +0 -0
  326. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/1545393.jpg +0 -0
  327. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/2427642.jpg +0 -0
  328. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/3520891.jpg +0 -0
  329. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/377566.jpg +0 -0
  330. /clarifai_utils/{data_upload → datasets/upload}/examples/image_classification/food-101/images/ramen/503504.jpg +0 -0
  331. /clarifai_utils/{data_upload/datasets/zoo → datasets/upload/examples/text_classification}/__init__.py +0 -0
  332. /clarifai_utils/{data_upload/examples/image_classification → datasets/upload/examples/text_classification/imdb_dataset}/__init__.py +0 -0
  333. /clarifai_utils/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/test.csv +0 -0
  334. /clarifai_utils/{data_upload → datasets/upload}/examples/text_classification/imdb_dataset/train.csv +0 -0
  335. /clarifai_utils/{data_upload/examples/image_classification/cifar10 → datasets/upload/loaders}/__init__.py +0 -0
  336. /clarifai_utils/{data_upload/examples/image_classification/food-101 → utils}/__init__.py +0 -0
@@ -0,0 +1,127 @@
1
+ import logging
2
+ import time
3
+ from concurrent.futures import ThreadPoolExecutor
4
+
5
+ import grpc
6
+ from clarifai_grpc.grpc.api.status import status_code_pb2
7
+
8
+ from clarifai.client.auth.helper import ClarifaiAuthHelper
9
+ from clarifai.client.auth.register import RpcCallable, V2Stub
10
+
11
+ throttle_status_codes = {
12
+ status_code_pb2.CONN_THROTTLED,
13
+ status_code_pb2.CONN_EXCEED_HOURLY_LIMIT,
14
+ }
15
+
16
+ retry_codes_grpc = {
17
+ grpc.StatusCode.UNAVAILABLE,
18
+ }
19
+
20
+ _threadpool = ThreadPoolExecutor(100)
21
+
22
+
23
+ def create_stub(auth_helper: ClarifaiAuthHelper = None, max_retry_attempts: int = 10) -> V2Stub:
24
+ """
25
+ Create client stub that handles authorization and basic retries for
26
+ unavailable or throttled connections.
27
+
28
+ Args:
29
+ auth_helper: ClarifaiAuthHelper to use for auth metadata (default: from env)
30
+ max_retry_attempts: max attempts to retry rpcs with retryable failures
31
+ """
32
+ stub = AuthorizedStub(auth_helper)
33
+ if max_retry_attempts > 0:
34
+ return RetryStub(stub, max_retry_attempts)
35
+ return stub
36
+
37
+
38
+ class AuthorizedStub(V2Stub):
39
+ """V2Stub proxy that inserts metadata authorization in rpc calls."""
40
+
41
+ def __init__(self, auth_helper: ClarifaiAuthHelper = None):
42
+ if auth_helper is None:
43
+ auth_helper = ClarifaiAuthHelper.from_env()
44
+ self.stub = auth_helper.get_stub()
45
+ self.metadata = auth_helper.metadata
46
+
47
+ def __getattr__(self, name):
48
+ value = getattr(self.stub, name)
49
+ if isinstance(value, RpcCallable):
50
+ value = _AuthorizedRpcCallable(value, self.metadata)
51
+ return value
52
+
53
+
54
+ class _AuthorizedRpcCallable(RpcCallable):
55
+ """Adds metadata(authorization header) to rpc calls"""
56
+
57
+ def __init__(self, func, metadata):
58
+ self.f = func
59
+ self.metadata = metadata
60
+
61
+ def __repr__(self):
62
+ return repr(self.f)
63
+
64
+ def __call__(self, *args, **kwargs):
65
+ metadata = kwargs.pop('metadata', self.metadata)
66
+ return self.f(*args, **kwargs, metadata=metadata)
67
+
68
+ def future(self, *args, **kwargs):
69
+ metadata = kwargs.pop('metadata', self.metadata)
70
+ return self.f.future(*args, **kwargs, metadata=metadata)
71
+
72
+ def __getattr__(self, name):
73
+ return getattr(self.f, name)
74
+
75
+
76
+ class RetryStub(V2Stub):
77
+ """
78
+ V2Stub proxy that retries requests (currently on unavailable server or throttle codes)
79
+ """
80
+
81
+ def __init__(self, stub, max_attempts=10, backoff_time=5):
82
+ self.stub = stub
83
+ self.max_attempts = max_attempts
84
+ self.backoff_time = backoff_time
85
+
86
+ def __getattr__(self, name):
87
+ value = getattr(self.stub, name)
88
+ if isinstance(value, RpcCallable):
89
+ value = _RetryRpcCallable(value, self.max_attempts, self.backoff_time)
90
+ return value
91
+
92
+
93
+ class _RetryRpcCallable(RpcCallable):
94
+ """Retries rpc calls on unavailable server or throttle codes"""
95
+
96
+ def __init__(self, func, max_attempts, backoff_time):
97
+ self.f = func
98
+ self.max_attempts = max_attempts
99
+ self.backoff_time = backoff_time
100
+
101
+ def __repr__(self):
102
+ return repr(self.f)
103
+
104
+ def __call__(self, *args, **kwargs):
105
+ attempt = 0
106
+ while attempt < self.max_attempts:
107
+ attempt += 1
108
+ if attempt != 1:
109
+ time.sleep(self.backoff_time) # TODO better backoff between attempts
110
+ try:
111
+ response = self.f(*args, **kwargs)
112
+ if (response.status.code in throttle_status_codes) and attempt < self.max_attempts:
113
+ logging.debug('Retrying with status %s' % str(response.status))
114
+ else:
115
+ return response
116
+ except grpc.RpcError as e:
117
+ if (e.code() in retry_codes_grpc) and attempt < self.max_attempts:
118
+ logging.debug('Retrying with status %s' % e.code())
119
+ else:
120
+ raise
121
+
122
+ def future(self, *args, **kwargs):
123
+ # TODO use single result event loop thread with asyncio
124
+ return _threadpool.submit(self, *args, **kwargs)
125
+
126
+ def __getattr__(self, name):
127
+ return getattr(self.f, name)
@@ -1,4 +1 @@
1
- from clarifai.client.abc import V2Stub
2
- from clarifai.client.stub import create_stub
3
-
4
- __all__ = ('V2Stub', 'create_stub')
1
+ # Note: This is just added for backwards compatibility. It will be removed in the future.
@@ -0,0 +1,483 @@
1
+ from typing import Any, Dict, List
2
+
3
+ from clarifai_grpc.grpc.api import resources_pb2, service_pb2
4
+ from clarifai_grpc.grpc.api.status import status_code_pb2
5
+ from google.protobuf.json_format import MessageToDict
6
+
7
+ from clarifai.client.base import BaseClient
8
+ from clarifai.client.dataset import Dataset
9
+ from clarifai.client.input import Inputs
10
+ from clarifai.client.lister import Lister
11
+ from clarifai.client.model import Model
12
+ from clarifai.client.module import Module
13
+ from clarifai.client.workflow import Workflow
14
+ from clarifai.errors import UserError
15
+ from clarifai.urls.helper import ClarifaiUrlHelper
16
+ from clarifai.utils.logging import get_logger
17
+
18
+
19
+ class App(Lister, BaseClient):
20
+ """App is a class that provides access to Clarifai API endpoints related to App information."""
21
+
22
+ def __init__(self, url_init: str = "", app_id: str = "", **kwargs):
23
+ """Initializes an App object.
24
+
25
+ Args:
26
+ url_init (str): The URL to initialize the app object.
27
+ app_id (str): The App ID for the App to interact with.
28
+ **kwargs: Additional keyword arguments to be passed to the ClarifaiAuthHelper.
29
+ - name (str): The name of the app.
30
+ - description (str): The description of the app.
31
+ """
32
+ if url_init != "" and app_id != "":
33
+ raise UserError("You can only specify one of url_init or app_id.")
34
+ if url_init != "":
35
+ user_id, app_id, _, _, _ = ClarifaiUrlHelper.split_clarifai_url(url_init)
36
+ kwargs = {'user_id': user_id}
37
+ self.kwargs = {**kwargs, 'id': app_id}
38
+ self.app_info = resources_pb2.App(**self.kwargs)
39
+ self.logger = get_logger(logger_level="INFO", name=__name__)
40
+ BaseClient.__init__(self, user_id=self.user_id, app_id=self.id)
41
+ Lister.__init__(self)
42
+
43
+ def list_datasets(self) -> List[Dataset]:
44
+ """Lists all the datasets for the app.
45
+
46
+ Returns:
47
+ List[Dataset]: A list of Dataset objects for the datasets in the app.
48
+
49
+ Example:
50
+ >>> from clarifai.client.app import App
51
+ >>> app = App(app_id="app_id", user_id="user_id")
52
+ >>> all_datasets = app.list_datasets()
53
+ """
54
+ request_data = dict(
55
+ user_app_id=self.user_app_id,
56
+ per_page=self.default_page_size,
57
+ )
58
+ all_datasets_info = list(
59
+ self.list_all_pages_generator(self.STUB.ListDatasets, service_pb2.ListDatasetsRequest,
60
+ request_data))
61
+ for dataset_info in all_datasets_info:
62
+ if 'version' in list(dataset_info.keys()):
63
+ del dataset_info['version']['metrics']
64
+
65
+ return [Dataset(**dataset_info) for dataset_info in all_datasets_info]
66
+
67
+ def list_models(self, filter_by: Dict[str, Any] = {}, only_in_app: bool = True) -> List[Model]:
68
+ """Lists all the available models for the user.
69
+
70
+ Args:
71
+ filter_by (dict): A dictionary of filters to apply to the list of models.
72
+ only_in_app (bool): If True, only return models that are in the app.
73
+
74
+ Returns:
75
+ List[Model]: A list of Model objects for the models in the app.
76
+
77
+ Example:
78
+ >>> from clarifai.client.user import User
79
+ >>> app = User(user_id="user_id").app(app_id="app_id")
80
+ >>> all_models = app.list_models()
81
+ """
82
+ request_data = dict(user_app_id=self.user_app_id, per_page=self.default_page_size, **filter_by)
83
+ all_models_info = list(
84
+ self.list_all_pages_generator(self.STUB.ListModels, service_pb2.ListModelsRequest,
85
+ request_data))
86
+
87
+ filtered_models_info = []
88
+ for model_info in all_models_info:
89
+ if 'model_version' not in list(model_info.keys()):
90
+ continue
91
+ if only_in_app:
92
+ if model_info['app_id'] != self.id:
93
+ continue
94
+ filtered_models_info.append(model_info)
95
+
96
+ return [Model(**model_info) for model_info in filtered_models_info]
97
+
98
+ def list_workflows(self, filter_by: Dict[str, Any] = {},
99
+ only_in_app: bool = True) -> List[Workflow]:
100
+ """Lists all the available workflows for the user.
101
+
102
+ Args:
103
+ filter_by (dict): A dictionary of filters to apply to the list of workflows.
104
+ only_in_app (bool): If True, only return workflows that are in the app.
105
+
106
+ Returns:
107
+ List[Workflow]: A list of Workflow objects for the workflows in the app.
108
+
109
+ Example:
110
+ >>> from clarifai.client.app import App
111
+ >>> app = App(app_id="app_id", user_id="user_id")
112
+ >>> all_workflows = app.list_workflows()
113
+ """
114
+ request_data = dict(user_app_id=self.user_app_id, per_page=self.default_page_size, **filter_by)
115
+ all_workflows_info = list(
116
+ self.list_all_pages_generator(self.STUB.ListWorkflows, service_pb2.ListWorkflowsRequest,
117
+ request_data))
118
+
119
+ filtered_workflows_info = []
120
+ for workflow_info in all_workflows_info:
121
+ if only_in_app:
122
+ if workflow_info['app_id'] != self.id:
123
+ continue
124
+ filtered_workflows_info.append(workflow_info)
125
+
126
+ return [Workflow(**workflow_info) for workflow_info in all_workflows_info]
127
+
128
+ def list_modules(self, filter_by: Dict[str, Any] = {}, only_in_app: bool = True) -> List[Module]:
129
+ """Lists all the available modules for the user.
130
+
131
+ Args:
132
+ filter_by (dict): A dictionary of filters to apply to the list of modules.
133
+ only_in_app (bool): If True, only return modules that are in the app.
134
+
135
+ Returns:
136
+ List[Module]: A list of Module objects for the modules in the app.
137
+
138
+ Example:
139
+ >>> from clarifai.client.app import App
140
+ >>> app = App(app_id="app_id", user_id="user_id")
141
+ >>> all_modules = app.list_modules()
142
+ """
143
+ request_data = dict(user_app_id=self.user_app_id, per_page=self.default_page_size, **filter_by)
144
+ all_modules_info = list(
145
+ self.list_all_pages_generator(self.STUB.ListModules, service_pb2.ListModulesRequest,
146
+ request_data))
147
+
148
+ filtered_modules_info = []
149
+ for module_info in all_modules_info:
150
+ if only_in_app:
151
+ if module_info['app_id'] != self.id:
152
+ continue
153
+ filtered_modules_info.append(module_info)
154
+
155
+ return [Module(**module_info) for module_info in filtered_modules_info]
156
+
157
+ def list_installed_module_versions(self, filter_by: Dict[str, Any] = {}) -> List[Module]:
158
+ """Lists all installed module versions in the app.
159
+
160
+ Args:
161
+ filter_by (dict): A dictionary of filters to apply to the list of installed module versions.
162
+
163
+ Returns:
164
+ List[Module]: A list of Module objects for the installed module versions in the app.
165
+
166
+ Example:
167
+ >>> from clarifai.client.app import App
168
+ >>> app = App(app_id="app_id", user_id="user_id")
169
+ >>> all_installed_module_versions = app.list_installed_module_versions()
170
+ """
171
+ request_data = dict(user_app_id=self.user_app_id, per_page=self.default_page_size, **filter_by)
172
+ all_imv_infos = list(
173
+ self.list_all_pages_generator(self.STUB.ListInstalledModuleVersions,
174
+ service_pb2.ListInstalledModuleVersionsRequest,
175
+ request_data))
176
+ for imv_info in all_imv_infos:
177
+ del imv_info['deploy_url']
178
+ del imv_info['installed_module_version_id'] # TODO: remove this after the backend fix
179
+
180
+ return [
181
+ Module(module_id=imv_info['module_version']['module_id'], **imv_info)
182
+ for imv_info in all_imv_infos
183
+ ]
184
+
185
+ def list_concepts(self):
186
+ """Lists all the concepts for the app."""
187
+ pass # TODO
188
+
189
+ def create_dataset(self, dataset_id: str, **kwargs) -> Dataset:
190
+ """Creates a dataset for the app.
191
+
192
+ Args:
193
+ dataset_id (str): The dataset ID for the dataset to create.
194
+ **kwargs: Additional keyword arguments to be passed to the Dataset.
195
+
196
+ Returns:
197
+ Dataset: A Dataset object for the specified dataset ID.
198
+
199
+ Example:
200
+ >>> from clarifai.client.app import App
201
+ >>> app = App(app_id="app_id", user_id="user_id")
202
+ >>> dataset = app.create_dataset(dataset_id="dataset_id")
203
+ """
204
+ request = service_pb2.PostDatasetsRequest(
205
+ user_app_id=self.user_app_id, datasets=[resources_pb2.Dataset(id=dataset_id, **kwargs)])
206
+ response = self._grpc_request(self.STUB.PostDatasets, request)
207
+ if response.status.code != status_code_pb2.SUCCESS:
208
+ raise Exception(response.status)
209
+ self.logger.info("\nDataset created\n%s", response.status)
210
+ kwargs.update({'app_id': self.id, 'user_id': self.user_id})
211
+
212
+ return Dataset(dataset_id=dataset_id, **kwargs)
213
+
214
+ def create_model(self, model_id: str, **kwargs) -> Model:
215
+ """Creates a model for the app.
216
+
217
+ Args:
218
+ model_id (str): The model ID for the model to create.
219
+ **kwargs: Additional keyword arguments to be passed to the Model.
220
+
221
+ Returns:
222
+ Model: A Model object for the specified model ID.
223
+
224
+ Example:
225
+ >>> from clarifai.client.app import App
226
+ >>> app = App(app_id="app_id", user_id="user_id")
227
+ >>> model = app.create_model(model_id="model_id")
228
+ """
229
+ request = service_pb2.PostModelsRequest(
230
+ user_app_id=self.user_app_id, models=[resources_pb2.Model(id=model_id, **kwargs)])
231
+ response = self._grpc_request(self.STUB.PostModels, request)
232
+ if response.status.code != status_code_pb2.SUCCESS:
233
+ raise Exception(response.status)
234
+ self.logger.info("\nModel created\n%s", response.status)
235
+ kwargs.update({'app_id': self.id, 'user_id': self.user_id})
236
+
237
+ return Model(model_id=model_id, **kwargs)
238
+
239
+ def create_workflow(self, workflow_id: str, **kwargs) -> Workflow:
240
+ """Creates a workflow for the app.
241
+
242
+ Args:
243
+ workflow_id (str): The workflow ID for the workflow to create.
244
+ **kwargs: Additional keyword arguments to be passed to the workflow.
245
+
246
+ Returns:
247
+ Workflow: A Workflow object for the specified workflow ID.
248
+
249
+ Example:
250
+ >>> from clarifai.client.app import App
251
+ >>> app = App(app_id="app_id", user_id="user_id")
252
+ >>> workflow = app.create_workflow(workflow_id="workflow_id")
253
+ """
254
+ request = service_pb2.PostWorkflowsRequest(
255
+ user_app_id=self.user_app_id, workflows=[resources_pb2.Workflow(id=workflow_id, **kwargs)])
256
+ response = self._grpc_request(self.STUB.PostWorkflows, request)
257
+ if response.status.code != status_code_pb2.SUCCESS:
258
+ raise Exception(response.status)
259
+ self.logger.info("\nWorkflow created\n%s", response.status)
260
+ kwargs.update({'app_id': self.id, 'user_id': self.user_id})
261
+
262
+ return Workflow(workflow_id=workflow_id, **kwargs)
263
+
264
+ def create_module(self, module_id: str, description: str, **kwargs) -> Module:
265
+ """Creates a module for the app.
266
+
267
+ Args:
268
+ module_id (str): The module ID for the module to create.
269
+ description (str): The description of the module to create.
270
+ **kwargs: Additional keyword arguments to be passed to the module.
271
+
272
+ Returns:
273
+ Module: A Module object for the specified module ID.
274
+
275
+ Example:
276
+ >>> from clarifai.client.app import App
277
+ >>> app = App(app_id="app_id", user_id="user_id")
278
+ >>> module = app.create_module(module_id="module_id")
279
+ """
280
+ request = service_pb2.PostModulesRequest(
281
+ user_app_id=self.user_app_id,
282
+ modules=[resources_pb2.Module(id=module_id, description=description, **kwargs)])
283
+ response = self._grpc_request(self.STUB.PostModules, request)
284
+
285
+ if response.status.code != status_code_pb2.SUCCESS:
286
+ raise Exception(response.status)
287
+ self.logger.info("\nModule created\n%s", response.status)
288
+ kwargs.update({'app_id': self.id, 'user_id': self.user_id})
289
+
290
+ return Module(module_id=module_id, **kwargs)
291
+
292
+ def dataset(self, dataset_id: str, **kwargs) -> Dataset:
293
+ """Returns a Dataset object for the existing dataset ID.
294
+
295
+ Args:
296
+ dataset_id (str): The dataset ID for the dataset to interact with.
297
+
298
+ Returns:
299
+ Dataset: A Dataset object for the existing dataset ID.
300
+
301
+ Example:
302
+ >>> from clarifai.client.app import App
303
+ >>> app = App(app_id="app_id", user_id="user_id")
304
+ >>> dataset = app.dataset(dataset_id="dataset_id")
305
+ """
306
+ request = service_pb2.GetDatasetRequest(user_app_id=self.user_app_id, dataset_id=dataset_id)
307
+ response = self._grpc_request(self.STUB.GetDataset, request)
308
+
309
+ if response.status.code != status_code_pb2.SUCCESS:
310
+ raise Exception(response.status)
311
+ dict_response = MessageToDict(response, preserving_proto_field_name=True)
312
+ kwargs = self.process_response_keys(dict_response[list(dict_response.keys())[1]],
313
+ list(dict_response.keys())[1])
314
+
315
+ return Dataset(**kwargs)
316
+
317
+ def model(self, model_id: str, model_version_id: str = "", **kwargs) -> Model:
318
+ """Returns a Model object for the existing model ID.
319
+
320
+ Args:
321
+ model_id (str): The model ID for the model to interact with.
322
+ model_version_id (str): The model version ID for the model version to interact with.
323
+
324
+ Returns:
325
+ Model: A Model object for the existing model ID.
326
+
327
+ Example:
328
+ >>> from clarifai.client.app import App
329
+ >>> app = App(app_id="app_id", user_id="user_id")
330
+ >>> model_v1 = app.model(model_id="model_id", model_version_id="model_version_id")
331
+ """
332
+ request = service_pb2.GetModelRequest(
333
+ user_app_id=self.user_app_id, model_id=model_id, version_id=model_version_id)
334
+ response = self._grpc_request(self.STUB.GetModel, request)
335
+
336
+ if response.status.code != status_code_pb2.SUCCESS:
337
+ raise Exception(response.status)
338
+ dict_response = MessageToDict(response, preserving_proto_field_name=True)
339
+ kwargs = self.process_response_keys(dict_response['model'], 'model')
340
+ return Model(**kwargs)
341
+
342
+ def workflow(self, workflow_id: str, **kwargs) -> Workflow:
343
+ """Returns a workflow object for the existing workflow ID.
344
+
345
+ Args:
346
+ workflow_id (str): The workflow ID for the workflow to interact with.
347
+
348
+ Returns:
349
+ Workflow: A Workflow object for the existing workflow ID.
350
+
351
+ Example:
352
+ >>> from clarifai.client.app import App
353
+ >>> app = App(app_id="app_id", user_id="user_id")
354
+ >>> workflow = app.workflow(workflow_id="workflow_id")
355
+ """
356
+ request = service_pb2.GetWorkflowRequest(user_app_id=self.user_app_id, workflow_id=workflow_id)
357
+ response = self._grpc_request(self.STUB.GetWorkflow, request)
358
+
359
+ if response.status.code != status_code_pb2.SUCCESS:
360
+ raise Exception(response.status)
361
+ dict_response = MessageToDict(response, preserving_proto_field_name=True)
362
+ kwargs = self.process_response_keys(dict_response[list(dict_response.keys())[1]],
363
+ list(dict_response.keys())[1])
364
+
365
+ return Workflow(**kwargs)
366
+
367
+ def module(self, module_id: str, module_version_id: str = "", **kwargs) -> Module:
368
+ """Returns a Module object for the existing module ID.
369
+
370
+ Args:
371
+ module_id (str): The module ID for the module to interact with.
372
+ module_version_id (str): The module version ID for the module version to interact with.
373
+
374
+ Returns:
375
+ Module: A Module object for the existing module ID.
376
+
377
+ Example:
378
+ >>> from clarifai.client.app import App
379
+ >>> app = App(app_id="app_id", user_id="user_id")
380
+ >>> module = app.module(module_id="module_id", module_version_id="module_version_id")
381
+ """
382
+ request = service_pb2.GetModuleRequest(
383
+ user_app_id=self.user_app_id, module_id=module_id, version_id=module_version_id)
384
+ response = self._grpc_request(self.STUB.GetModule, request)
385
+
386
+ if response.status.code != status_code_pb2.SUCCESS:
387
+ raise Exception(response.status)
388
+ dict_response = MessageToDict(response, preserving_proto_field_name=True)
389
+ kwargs = self.process_response_keys(dict_response['module'], 'module')
390
+
391
+ return Module(**kwargs)
392
+
393
+ def inputs(self,):
394
+ """Returns an Input object.
395
+
396
+ Returns:
397
+ Inputs: An input object.
398
+ """
399
+ return Inputs(self.user_id, self.id)
400
+
401
+ def delete_dataset(self, dataset_id: str) -> None:
402
+ """Deletes an dataset for the user.
403
+
404
+ Args:
405
+ dataset_id (str): The dataset ID for the app to delete.
406
+
407
+ Example:
408
+ >>> from clarifai.client.app import App
409
+ >>> app = App(app_id="app_id", user_id="user_id")
410
+ >>> app.delete_dataset(dataset_id="dataset_id")
411
+ """
412
+ request = service_pb2.DeleteDatasetsRequest(
413
+ user_app_id=self.user_app_id, dataset_ids=[dataset_id])
414
+ response = self._grpc_request(self.STUB.DeleteDatasets, request)
415
+
416
+ if response.status.code != status_code_pb2.SUCCESS:
417
+ raise Exception(response.status)
418
+ self.logger.info("\nDataset Deleted\n%s", response.status)
419
+
420
+ def delete_model(self, model_id: str) -> None:
421
+ """Deletes an model for the user.
422
+
423
+ Args:
424
+ model_id (str): The model ID for the app to delete.
425
+
426
+ Example:
427
+ >>> from clarifai.client.app import App
428
+ >>> app = App(app_id="app_id", user_id="user_id")
429
+ >>> app.delete_model(model_id="model_id")
430
+ """
431
+ request = service_pb2.DeleteModelsRequest(user_app_id=self.user_app_id, ids=[model_id])
432
+ response = self._grpc_request(self.STUB.DeleteModels, request)
433
+
434
+ if response.status.code != status_code_pb2.SUCCESS:
435
+ raise Exception(response.status)
436
+ self.logger.info("\nModel Deleted\n%s", response.status)
437
+
438
+ def delete_workflow(self, workflow_id: str) -> None:
439
+ """Deletes an workflow for the user.
440
+
441
+ Args:
442
+ workflow_id (str): The workflow ID for the app to delete.
443
+
444
+ Example:
445
+ >>> from clarifai.client.app import App
446
+ >>> app = App(app_id="app_id", user_id="user_id")
447
+ >>> app.delete_workflow(workflow_id="workflow_id")
448
+ """
449
+ request = service_pb2.DeleteWorkflowsRequest(user_app_id=self.user_app_id, ids=[workflow_id])
450
+ response = self._grpc_request(self.STUB.DeleteWorkflows, request)
451
+
452
+ if response.status.code != status_code_pb2.SUCCESS:
453
+ raise Exception(response.status)
454
+ self.logger.info("\nWorkflow Deleted\n%s", response.status)
455
+
456
+ def delete_module(self, module_id: str) -> None:
457
+ """Deletes an module for the user.
458
+
459
+ Args:
460
+ module_id (str): The module ID for the app to delete.
461
+
462
+ Example:
463
+ >>> from clarifai.client.app import App
464
+ >>> app = App(app_id="app_id", user_id="user_id")
465
+ >>> app.delete_module(module_id="module_id")
466
+ """
467
+ request = service_pb2.DeleteModulesRequest(user_app_id=self.user_app_id, ids=[module_id])
468
+ response = self._grpc_request(self.STUB.DeleteModules, request)
469
+
470
+ if response.status.code != status_code_pb2.SUCCESS:
471
+ raise Exception(response.status)
472
+ self.logger.info("\nModule Deleted\n%s", response.status)
473
+
474
+ def __getattr__(self, name):
475
+ return getattr(self.app_info, name)
476
+
477
+ def __str__(self):
478
+ init_params = [param for param in self.kwargs.keys()]
479
+ attribute_strings = [
480
+ f"{param}={getattr(self.app_info, param)}" for param in init_params
481
+ if hasattr(self.app_info, param)
482
+ ]
483
+ return f"Clarifai App Details: \n{', '.join(attribute_strings)}\n"
@@ -0,0 +1,4 @@
1
+ from clarifai.client.auth.register import V2Stub
2
+ from clarifai.client.auth.stub import create_stub
3
+
4
+ __all__ = ('V2Stub', 'create_stub')
@@ -5,11 +5,11 @@ from clarifai_grpc.grpc.api import service_pb2_grpc
5
5
 
6
6
 
7
7
  class V2Stub(abc.ABC):
8
- '''Abstract base class of clarifai api rpc client stubs'''
8
+ """Abstract base class of clarifai api rpc client stubs"""
9
9
 
10
10
 
11
11
  class RpcCallable(abc.ABC):
12
- '''Abstract base class of clarifai api rpc callables'''
12
+ """Abstract base class of clarifai api rpc callables"""
13
13
 
14
14
 
15
15
  # add grpc classes as subclasses of the abcs, so they also succeed in isinstance calls