clarifai 11.2.2__tar.gz → 11.2.3rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. {clarifai-11.2.2/clarifai.egg-info → clarifai-11.2.3rc1}/PKG-INFO +3 -15
  2. clarifai-11.2.3rc1/clarifai/__init__.py +1 -0
  3. clarifai-11.2.3rc1/clarifai/__pycache__/__init__.cpython-312.pyc +0 -0
  4. clarifai-11.2.3rc1/clarifai/__pycache__/errors.cpython-312.pyc +0 -0
  5. clarifai-11.2.3rc1/clarifai/__pycache__/versions.cpython-312.pyc +0 -0
  6. clarifai-11.2.3rc1/clarifai/cli/__pycache__/__init__.cpython-312.pyc +0 -0
  7. clarifai-11.2.3rc1/clarifai/cli/__pycache__/base.cpython-312.pyc +0 -0
  8. clarifai-11.2.3rc1/clarifai/cli/__pycache__/compute_cluster.cpython-312.pyc +0 -0
  9. clarifai-11.2.3rc1/clarifai/cli/__pycache__/deployment.cpython-312.pyc +0 -0
  10. clarifai-11.2.3rc1/clarifai/cli/__pycache__/model.cpython-312.pyc +0 -0
  11. clarifai-11.2.3rc1/clarifai/cli/__pycache__/nodepool.cpython-312.pyc +0 -0
  12. clarifai-11.2.3rc1/clarifai/cli/base.py +260 -0
  13. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/cli/compute_cluster.py +21 -20
  14. clarifai-11.2.3rc1/clarifai/cli/deployment.py +110 -0
  15. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/cli/model.py +1 -1
  16. clarifai-11.2.3rc1/clarifai/cli/nodepool.py +110 -0
  17. clarifai-11.2.3rc1/clarifai/client/__pycache__/__init__.cpython-312.pyc +0 -0
  18. clarifai-11.2.3rc1/clarifai/client/__pycache__/app.cpython-312.pyc +0 -0
  19. clarifai-11.2.3rc1/clarifai/client/__pycache__/base.cpython-312.pyc +0 -0
  20. clarifai-11.2.3rc1/clarifai/client/__pycache__/compute_cluster.cpython-312.pyc +0 -0
  21. clarifai-11.2.3rc1/clarifai/client/__pycache__/dataset.cpython-312.pyc +0 -0
  22. clarifai-11.2.3rc1/clarifai/client/__pycache__/deployment.cpython-312.pyc +0 -0
  23. clarifai-11.2.3rc1/clarifai/client/__pycache__/input.cpython-312.pyc +0 -0
  24. clarifai-11.2.3rc1/clarifai/client/__pycache__/lister.cpython-312.pyc +0 -0
  25. clarifai-11.2.3rc1/clarifai/client/__pycache__/model.cpython-312.pyc +0 -0
  26. clarifai-11.2.3rc1/clarifai/client/__pycache__/model_client.cpython-312.pyc +0 -0
  27. clarifai-11.2.3rc1/clarifai/client/__pycache__/module.cpython-312.pyc +0 -0
  28. clarifai-11.2.3rc1/clarifai/client/__pycache__/nodepool.cpython-312.pyc +0 -0
  29. clarifai-11.2.3rc1/clarifai/client/__pycache__/search.cpython-312.pyc +0 -0
  30. clarifai-11.2.3rc1/clarifai/client/__pycache__/user.cpython-312.pyc +0 -0
  31. clarifai-11.2.3rc1/clarifai/client/__pycache__/workflow.cpython-312.pyc +0 -0
  32. clarifai-11.2.3rc1/clarifai/client/auth/__pycache__/__init__.cpython-312.pyc +0 -0
  33. clarifai-11.2.3rc1/clarifai/client/auth/__pycache__/helper.cpython-312.pyc +0 -0
  34. clarifai-11.2.3rc1/clarifai/client/auth/__pycache__/register.cpython-312.pyc +0 -0
  35. clarifai-11.2.3rc1/clarifai/client/auth/__pycache__/stub.cpython-312.pyc +0 -0
  36. clarifai-11.2.3rc1/clarifai/constants/__pycache__/base.cpython-312.pyc +0 -0
  37. clarifai-11.2.3rc1/clarifai/constants/__pycache__/dataset.cpython-312.pyc +0 -0
  38. clarifai-11.2.3rc1/clarifai/constants/__pycache__/input.cpython-312.pyc +0 -0
  39. clarifai-11.2.3rc1/clarifai/constants/__pycache__/model.cpython-312.pyc +0 -0
  40. clarifai-11.2.3rc1/clarifai/constants/__pycache__/search.cpython-312.pyc +0 -0
  41. clarifai-11.2.3rc1/clarifai/constants/__pycache__/workflow.cpython-312.pyc +0 -0
  42. clarifai-11.2.3rc1/clarifai/datasets/__pycache__/__init__.cpython-312.pyc +0 -0
  43. clarifai-11.2.3rc1/clarifai/datasets/export/__pycache__/__init__.cpython-312.pyc +0 -0
  44. clarifai-11.2.3rc1/clarifai/datasets/export/__pycache__/inputs_annotations.cpython-312.pyc +0 -0
  45. clarifai-11.2.3rc1/clarifai/datasets/upload/__pycache__/__init__.cpython-312.pyc +0 -0
  46. clarifai-11.2.3rc1/clarifai/datasets/upload/__pycache__/base.cpython-312.pyc +0 -0
  47. clarifai-11.2.3rc1/clarifai/datasets/upload/__pycache__/features.cpython-312.pyc +0 -0
  48. clarifai-11.2.3rc1/clarifai/datasets/upload/__pycache__/image.cpython-312.pyc +0 -0
  49. clarifai-11.2.3rc1/clarifai/datasets/upload/__pycache__/multimodal.cpython-312.pyc +0 -0
  50. clarifai-11.2.3rc1/clarifai/datasets/upload/__pycache__/text.cpython-312.pyc +0 -0
  51. clarifai-11.2.3rc1/clarifai/datasets/upload/__pycache__/utils.cpython-312.pyc +0 -0
  52. clarifai-11.2.3rc1/clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-312.pyc +0 -0
  53. clarifai-11.2.3rc1/clarifai/datasets/upload/loaders/__pycache__/coco_detection.cpython-312.pyc +0 -0
  54. clarifai-11.2.3rc1/clarifai/modules/__pycache__/__init__.cpython-312.pyc +0 -0
  55. clarifai-11.2.3rc1/clarifai/modules/__pycache__/css.cpython-312.pyc +0 -0
  56. clarifai-11.2.3rc1/clarifai/runners/__pycache__/__init__.cpython-312.pyc +0 -0
  57. clarifai-11.2.3rc1/clarifai/runners/__pycache__/server.cpython-312.pyc +0 -0
  58. clarifai-11.2.3rc1/clarifai/runners/models/__pycache__/__init__.cpython-312.pyc +0 -0
  59. clarifai-11.2.3rc1/clarifai/runners/models/__pycache__/base_typed_model.cpython-312.pyc +0 -0
  60. clarifai-11.2.3rc1/clarifai/runners/models/__pycache__/model_builder.cpython-312.pyc +0 -0
  61. clarifai-11.2.3rc1/clarifai/runners/models/__pycache__/model_class.cpython-312.pyc +0 -0
  62. clarifai-11.2.3rc1/clarifai/runners/models/__pycache__/model_run_locally.cpython-312.pyc +0 -0
  63. clarifai-11.2.3rc1/clarifai/runners/models/__pycache__/model_runner.cpython-312.pyc +0 -0
  64. clarifai-11.2.3rc1/clarifai/runners/models/__pycache__/model_servicer.cpython-312.pyc +0 -0
  65. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/models/model_builder.py +17 -7
  66. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/models/model_run_locally.py +1 -0
  67. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  68. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/const.cpython-312.pyc +0 -0
  69. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/data_handler.cpython-312.pyc +0 -0
  70. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/data_types.cpython-312.pyc +0 -0
  71. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/data_utils.cpython-312.pyc +0 -0
  72. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/loader.cpython-312.pyc +0 -0
  73. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/method_signatures.cpython-312.pyc +0 -0
  74. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/serializers.cpython-312.pyc +0 -0
  75. clarifai-11.2.3rc1/clarifai/runners/utils/__pycache__/url_fetcher.cpython-312.pyc +0 -0
  76. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/utils/const.py +9 -8
  77. clarifai-11.2.3rc1/clarifai/schema/__pycache__/search.cpython-312.pyc +0 -0
  78. clarifai-11.2.3rc1/clarifai/urls/__pycache__/helper.cpython-312.pyc +0 -0
  79. clarifai-11.2.3rc1/clarifai/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  80. clarifai-11.2.3rc1/clarifai/utils/__pycache__/cli.cpython-312.pyc +0 -0
  81. clarifai-11.2.3rc1/clarifai/utils/__pycache__/config.cpython-312.pyc +0 -0
  82. clarifai-11.2.3rc1/clarifai/utils/__pycache__/constants.cpython-312.pyc +0 -0
  83. clarifai-11.2.3rc1/clarifai/utils/__pycache__/logging.cpython-312.pyc +0 -0
  84. clarifai-11.2.3rc1/clarifai/utils/__pycache__/misc.cpython-312.pyc +0 -0
  85. clarifai-11.2.3rc1/clarifai/utils/__pycache__/model_train.cpython-312.pyc +0 -0
  86. clarifai-11.2.3rc1/clarifai/utils/cli.py +169 -0
  87. clarifai-11.2.3rc1/clarifai/utils/config.py +105 -0
  88. clarifai-11.2.3rc1/clarifai/utils/config.py~ +145 -0
  89. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/constants.py +4 -0
  90. clarifai-11.2.3rc1/clarifai/utils/evaluation/__pycache__/__init__.cpython-312.pyc +0 -0
  91. clarifai-11.2.3rc1/clarifai/utils/evaluation/__pycache__/helpers.cpython-312.pyc +0 -0
  92. clarifai-11.2.3rc1/clarifai/utils/evaluation/__pycache__/main.cpython-312.pyc +0 -0
  93. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/misc.py +2 -0
  94. clarifai-11.2.3rc1/clarifai/workflows/__pycache__/__init__.cpython-312.pyc +0 -0
  95. clarifai-11.2.3rc1/clarifai/workflows/__pycache__/export.cpython-312.pyc +0 -0
  96. clarifai-11.2.3rc1/clarifai/workflows/__pycache__/utils.cpython-312.pyc +0 -0
  97. clarifai-11.2.3rc1/clarifai/workflows/__pycache__/validate.cpython-312.pyc +0 -0
  98. {clarifai-11.2.2 → clarifai-11.2.3rc1/clarifai.egg-info}/PKG-INFO +3 -15
  99. clarifai-11.2.3rc1/clarifai.egg-info/SOURCES.txt +202 -0
  100. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai.egg-info/requires.txt +1 -1
  101. {clarifai-11.2.2 → clarifai-11.2.3rc1}/requirements.txt +1 -1
  102. clarifai-11.2.2/clarifai/__init__.py +0 -1
  103. clarifai-11.2.2/clarifai/cli/base.py +0 -124
  104. clarifai-11.2.2/clarifai/cli/deployment.py +0 -88
  105. clarifai-11.2.2/clarifai/cli/nodepool.py +0 -94
  106. clarifai-11.2.2/clarifai/utils/cli.py +0 -79
  107. clarifai-11.2.2/clarifai.egg-info/SOURCES.txt +0 -118
  108. {clarifai-11.2.2 → clarifai-11.2.3rc1}/LICENSE +0 -0
  109. {clarifai-11.2.2 → clarifai-11.2.3rc1}/MANIFEST.in +0 -0
  110. {clarifai-11.2.2 → clarifai-11.2.3rc1}/README.md +0 -0
  111. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/cli/README.md +0 -0
  112. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/cli/__init__.py +0 -0
  113. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/cli/__main__.py +0 -0
  114. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/cli.py +0 -0
  115. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/__init__.py +0 -0
  116. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/app.py +0 -0
  117. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/auth/__init__.py +0 -0
  118. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/auth/helper.py +0 -0
  119. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/auth/register.py +0 -0
  120. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/auth/stub.py +0 -0
  121. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/base.py +0 -0
  122. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/compute_cluster.py +0 -0
  123. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/dataset.py +0 -0
  124. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/deployment.py +0 -0
  125. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/input.py +0 -0
  126. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/lister.py +0 -0
  127. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/model.py +0 -0
  128. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/module.py +0 -0
  129. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/nodepool.py +0 -0
  130. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/search.py +0 -0
  131. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/user.py +0 -0
  132. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/client/workflow.py +0 -0
  133. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/constants/base.py +0 -0
  134. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/constants/dataset.py +0 -0
  135. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/constants/input.py +0 -0
  136. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/constants/model.py +0 -0
  137. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/constants/rag.py +0 -0
  138. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/constants/search.py +0 -0
  139. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/constants/workflow.py +0 -0
  140. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/__init__.py +0 -0
  141. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/export/__init__.py +0 -0
  142. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/export/inputs_annotations.py +0 -0
  143. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/__init__.py +0 -0
  144. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/base.py +0 -0
  145. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/features.py +0 -0
  146. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/image.py +0 -0
  147. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/loaders/README.md +0 -0
  148. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/loaders/__init__.py +0 -0
  149. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/loaders/coco_captions.py +0 -0
  150. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/loaders/coco_detection.py +0 -0
  151. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/loaders/imagenet_classification.py +0 -0
  152. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/loaders/xview_detection.py +0 -0
  153. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/multimodal.py +0 -0
  154. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/text.py +0 -0
  155. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/datasets/upload/utils.py +0 -0
  156. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/errors.py +0 -0
  157. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/models/__init__.py +0 -0
  158. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/models/api.py +0 -0
  159. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/modules/README.md +0 -0
  160. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/modules/__init__.py +0 -0
  161. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/modules/css.py +0 -0
  162. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/modules/pages.py +0 -0
  163. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/modules/style.css +0 -0
  164. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/rag/__init__.py +0 -0
  165. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/rag/rag.py +0 -0
  166. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/rag/utils.py +0 -0
  167. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/__init__.py +0 -0
  168. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/dockerfile_template/Dockerfile.template +0 -0
  169. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/models/__init__.py +0 -0
  170. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/models/base_typed_model.py +0 -0
  171. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/models/model_class.py +0 -0
  172. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/models/model_runner.py +0 -0
  173. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/models/model_servicer.py +0 -0
  174. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/server.py +0 -0
  175. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/utils/__init__.py +0 -0
  176. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/utils/data_handler.py +0 -0
  177. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/utils/data_utils.py +0 -0
  178. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/utils/loader.py +0 -0
  179. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/runners/utils/url_fetcher.py +0 -0
  180. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/schema/search.py +0 -0
  181. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/urls/helper.py +0 -0
  182. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/__init__.py +0 -0
  183. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/evaluation/__init__.py +0 -0
  184. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/evaluation/helpers.py +0 -0
  185. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/evaluation/main.py +0 -0
  186. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/evaluation/testset_annotation_parser.py +0 -0
  187. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/logging.py +0 -0
  188. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/utils/model_train.py +0 -0
  189. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/versions.py +0 -0
  190. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/workflows/__init__.py +0 -0
  191. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/workflows/export.py +0 -0
  192. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/workflows/utils.py +0 -0
  193. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai/workflows/validate.py +0 -0
  194. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai.egg-info/dependency_links.txt +0 -0
  195. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai.egg-info/entry_points.txt +0 -0
  196. {clarifai-11.2.2 → clarifai-11.2.3rc1}/clarifai.egg-info/top_level.txt +0 -0
  197. {clarifai-11.2.2 → clarifai-11.2.3rc1}/pyproject.toml +0 -0
  198. {clarifai-11.2.2 → clarifai-11.2.3rc1}/setup.cfg +0 -0
  199. {clarifai-11.2.2 → clarifai-11.2.3rc1}/setup.py +0 -0
  200. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_app.py +0 -0
  201. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_auth.py +0 -0
  202. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_data_upload.py +0 -0
  203. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_eval.py +0 -0
  204. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_misc.py +0 -0
  205. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_model_predict.py +0 -0
  206. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_model_train.py +0 -0
  207. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_modules.py +0 -0
  208. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_rag.py +0 -0
  209. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_search.py +0 -0
  210. {clarifai-11.2.2 → clarifai-11.2.3rc1}/tests/test_stub.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.1
2
2
  Name: clarifai
3
- Version: 11.2.2
3
+ Version: 11.2.3rc1
4
4
  Summary: Clarifai Python SDK
5
5
  Home-page: https://github.com/Clarifai/clarifai-python
6
6
  Author: Clarifai
@@ -21,7 +21,7 @@ Requires-Python: >=3.8
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
23
  Requires-Dist: clarifai-grpc>=11.2.6
24
- Requires-Dist: clarifai-protocol>=0.0.20
24
+ Requires-Dist: clarifai-protocol>=0.0.21
25
25
  Requires-Dist: numpy>=1.22.0
26
26
  Requires-Dist: tqdm>=4.65.0
27
27
  Requires-Dist: rich>=13.4.2
@@ -35,18 +35,6 @@ Requires-Dist: requests>=2.32.3
35
35
  Requires-Dist: aiohttp>=3.10.0
36
36
  Provides-Extra: all
37
37
  Requires-Dist: pycocotools==2.0.6; extra == "all"
38
- Dynamic: author
39
- Dynamic: author-email
40
- Dynamic: classifier
41
- Dynamic: description
42
- Dynamic: description-content-type
43
- Dynamic: home-page
44
- Dynamic: license
45
- Dynamic: license-file
46
- Dynamic: provides-extra
47
- Dynamic: requires-dist
48
- Dynamic: requires-python
49
- Dynamic: summary
50
38
 
51
39
  <h1 align="center">
52
40
  <a href="https://www.clarifai.com/"><img alt="Clarifai" title="Clarifai" src="https://github.com/user-attachments/assets/623b883b-7fe5-4b95-bbfa-8691f5779af4"></a>
@@ -0,0 +1 @@
1
+ __version__ = "11.2.3rc1"
@@ -0,0 +1,260 @@
1
+ import json
2
+ import os
3
+ import sys
4
+
5
+ import click
6
+ import yaml
7
+
8
+ from clarifai.utils.cli import AliasedGroup, TableFormatter, load_command_modules
9
+ from clarifai.utils.config import Config, Context
10
+ from clarifai.utils.constants import DEFAULT_CONFIG
11
+ from clarifai.utils.logging import logger
12
+
13
+
14
+ #@click.group(cls=CustomMultiGroup)
15
+ @click.group(cls=AliasedGroup)
16
+ @click.option('--config', default=DEFAULT_CONFIG)
17
+ @click.pass_context
18
+ def cli(ctx, config):
19
+ """Clarifai CLI"""
20
+ ctx.ensure_object(dict)
21
+ if os.path.exists(config):
22
+ cfg = Config.from_yaml(filename=config)
23
+ ctx.obj = cfg
24
+ else:
25
+ cfg = Config(
26
+ filename=config,
27
+ current_context='default',
28
+ contexts={
29
+ 'default':
30
+ Context(
31
+ 'default',
32
+ CLARIFAI_PAT=os.environ.get('CLARIFAI_PAT', ''),
33
+ CLARIFAI_USER_ID=os.environ.get('CLARIFAI_USER_ID', ''),
34
+ CLARIFAI_API_BASE=os.environ.get('CLARIFAI_API_BASE', 'api.clarifai.com'),
35
+ )
36
+ })
37
+ try:
38
+ cfg.to_yaml(config)
39
+ except Exception:
40
+ logger.warning("Could not write configuration to disk. Could be a read only file system.")
41
+ ctx.obj = cfg # still have the default config even if couldn't write.
42
+
43
+
44
+ @cli.command()
45
+ @click.argument('shell', type=click.Choice(['bash', 'zsh']))
46
+ def shell_completion(shell):
47
+ """Shell completion script"""
48
+ os.system(f"_CLARIFAI_COMPLETE={shell}_source clarifai")
49
+
50
+
51
+ @cli.group(['cfg'], cls=AliasedGroup)
52
+ def config():
53
+ """Manage CLI configuration"""
54
+
55
+
56
+ @config.command(['e'])
57
+ @click.pass_context
58
+ def edit(ctx):
59
+ """Edit the configuration file"""
60
+ os.system(f'{os.environ.get("EDITOR", "vi")} {ctx.obj.filename}')
61
+
62
+
63
+ @config.command(['current'])
64
+ @click.option('-o', '--output-format', default='name', type=click.Choice(['name', 'json', 'yaml']))
65
+ @click.pass_context
66
+ def current_context(ctx, output_format):
67
+ """Get the current context"""
68
+ if output_format == 'name':
69
+ print(ctx.obj.current_context)
70
+ else:
71
+ if output_format == 'json':
72
+ print(json.dumps(ctx.obj.contexts[ctx.obj.current_context].to_serializable_dict()))
73
+ else:
74
+ print(yaml.safe_dump(ctx.obj.contexts[ctx.obj.current_context].to_serializable_dict()))
75
+
76
+
77
+ @config.command(['list', 'ls'])
78
+ @click.option(
79
+ '-o', '--output-format', default='wide', type=click.Choice(['wide', 'name', 'json', 'yaml']))
80
+ @click.pass_context
81
+ def get_contexts(ctx, output_format):
82
+ """Get all contexts"""
83
+ if output_format == 'wide':
84
+ formatter = TableFormatter(custom_columns={
85
+ '': lambda c: '*' if c.name == ctx.obj.current_context else '',
86
+ 'NAME': lambda c: c.name,
87
+ 'USER_ID': lambda c: c.user_id,
88
+ 'API_BASE': lambda c: c.api_base,
89
+ 'PAT': lambda c: pat_display(c.pat),
90
+ })
91
+ print(formatter.format(ctx.obj.contexts.values(), fmt="plain"))
92
+ elif output_format == 'name':
93
+ print('\n'.join(ctx.obj.contexts))
94
+ elif output_format in ('json', 'yaml'):
95
+ dicts = [v.__dict__ for c, v in ctx.obj.contexts.items()]
96
+ for d in dicts:
97
+ d.pop('pat')
98
+ if output_format == 'json':
99
+ print(json.dumps(dicts))
100
+ elif output_format == 'yaml':
101
+ print(yaml.safe_dump(dicts))
102
+
103
+
104
+ @config.command(['use'])
105
+ @click.argument('context-name', type=str)
106
+ @click.pass_context
107
+ def use_context(ctx, context_name):
108
+ """Set the current context"""
109
+ if context_name not in ctx.obj.contexts:
110
+ raise click.UsageError('Context not found')
111
+ ctx.obj.current_context = context_name
112
+ ctx.obj.to_yaml()
113
+ print(f'Set {context_name} as the current context')
114
+
115
+
116
+ @config.command(['cat'])
117
+ @click.option('-o', '--output-format', default='yaml', type=click.Choice(['yaml', 'json']))
118
+ @click.pass_obj
119
+ def dump(ctx_obj, output_format):
120
+ """Dump the configuration to stdout"""
121
+ if output_format == 'yaml':
122
+ yaml.safe_dump(ctx_obj.to_dict(), sys.stdout)
123
+ else:
124
+ json.dump(ctx_obj.to_dict(), sys.stdout, indent=2)
125
+
126
+
127
+ @cli.command()
128
+ @click.argument('api_url', default="https://api.clarifai.com")
129
+ @click.option('--user_id', required=False, help='User ID')
130
+ @click.pass_context
131
+ def login(ctx, api_url, user_id):
132
+ """Login command to set PAT and other configurations."""
133
+
134
+ name = input('context name (default: "default"): ')
135
+ user_id = user_id if user_id is not None else input('user id: ')
136
+ pat = input_or_default(
137
+ 'personal access token value (default: "ENVVAR" to get our of env var rather than config): ',
138
+ 'ENVVAR')
139
+
140
+ context = Context(
141
+ name,
142
+ CLARIFAI_API_BASE=api_url,
143
+ CLARIFAI_USER_ID=user_id,
144
+ CLARIFAI_PAT=pat,
145
+ )
146
+
147
+ if context.name == '':
148
+ context.name = 'default'
149
+
150
+ ctx.obj.contexts[context.name] = context
151
+ ctx.obj.current_context = context.name
152
+
153
+ ctx.obj.to_yaml()
154
+
155
+
156
+ @cli.group(cls=AliasedGroup)
157
+ def context():
158
+ """Manage contexts"""
159
+
160
+
161
+ def pat_display(pat):
162
+ return pat[:5] + "****"
163
+
164
+
165
+ @context.command(['ls'])
166
+ @click.pass_context
167
+ def list(ctx):
168
+ """List available contexts"""
169
+ formatter = TableFormatter(custom_columns={
170
+ '': lambda c: '*' if c.name == ctx.obj.current_context else '',
171
+ 'NAME': lambda c: c.name,
172
+ 'USER_ID': lambda c: c.user_id,
173
+ 'API_BASE': lambda c: c.api_base,
174
+ 'PAT': lambda c: pat_display(c.pat)
175
+ })
176
+ print(formatter.format(ctx.obj.contexts.values(), fmt="plain"))
177
+
178
+
179
+ def input_or_default(prompt, default):
180
+ value = input(prompt)
181
+ return value if value else default
182
+
183
+
184
+ @context.command()
185
+ @click.argument('name')
186
+ @click.option('--user-id', required=False, help='User ID')
187
+ @click.option('--base-url', required=False, help='Base URL')
188
+ @click.option('--pat', required=False, help='Personal access token')
189
+ @click.pass_context
190
+ def create(
191
+ ctx,
192
+ name,
193
+ user_id=None,
194
+ base_url=None,
195
+ pat=None,
196
+ ):
197
+ """Create a new context"""
198
+ if name in ctx.obj.contexts:
199
+ print(f'{name} already exists')
200
+ exit(1)
201
+ if not user_id:
202
+ user_id = input('user id: ')
203
+ if not base_url:
204
+ base_url = input_or_default('base url (default: https://api.clarifai.com): ',
205
+ 'https://api.clarifai.com')
206
+ if not pat:
207
+ pat = input_or_default(
208
+ 'personal access token value (default: "ENVVAR" to get our of env var rather than config): ',
209
+ 'ENVVAR')
210
+
211
+ context = Context(name, CLARIFAI_USER_ID=user_id, CLARIFAI_API_BASE=base_url, CLARIFAI_PAT=pat)
212
+ ctx.obj.contexts[context.name] = context
213
+ ctx.obj.to_yaml()
214
+
215
+
216
+ # write a click command to delete a context
217
+ @context.command(['rm'])
218
+ @click.argument('name')
219
+ @click.pass_context
220
+ def delete(ctx, name):
221
+ """Delete a context"""
222
+ if name not in ctx.obj.contexts:
223
+ print(f'{name} is not a valid context')
224
+ exit(1)
225
+ ctx.obj.contexts.pop(name)
226
+ ctx.obj.to_yaml()
227
+ print(f'{name} deleted')
228
+
229
+
230
+ @context.command()
231
+ @click.argument('name', type=str)
232
+ @click.pass_context
233
+ def use(ctx, name):
234
+ """Set the current context"""
235
+ if name not in ctx.obj.contexts:
236
+ raise click.UsageError('Context not found')
237
+ ctx.obj.current_context = name
238
+ ctx.obj.to_yaml()
239
+ print(f'Set {name} as the current context')
240
+
241
+
242
+ @cli.command()
243
+ @click.argument('script', type=str)
244
+ @click.option('--context', type=str, help='Context to use')
245
+ @click.pass_context
246
+ def run(ctx, script, context=None):
247
+ """Execute a script with the current context's environment"""
248
+ context = ctx.obj.current if not context else context
249
+ cmd = f'CLARIFAI_USER_ID={context.user_id} CLARIFAI_API_BASE={context.base_url} CLARIFAI_PAT={context.pat} '
250
+ cmd += ' '.join([f'{k}={v}' for k, v in context.env.items()])
251
+ cmd += f' {script}'
252
+ os.system(cmd)
253
+
254
+
255
+ # Import the CLI commands to register them
256
+ load_command_modules()
257
+
258
+
259
+ def main():
260
+ cli()
@@ -2,57 +2,58 @@ import click
2
2
 
3
3
  from clarifai.cli.base import cli
4
4
  from clarifai.client.user import User
5
- from clarifai.utils.cli import display_co_resources, validate_context
5
+ from clarifai.utils.cli import AliasedGroup, display_co_resources, validate_context
6
6
 
7
7
 
8
- @cli.group(['computecluster', 'cc'])
8
+ @cli.group(['computecluster', 'cc'], cls=AliasedGroup)
9
9
  def computecluster():
10
10
  """Manage Compute Clusters: create, delete, list"""
11
- pass
12
11
 
13
12
 
14
- @computecluster.command()
13
+ @computecluster.command(['c'])
14
+ @click.argument('compute_cluster_id')
15
15
  @click.option(
16
16
  '--config',
17
17
  type=click.Path(exists=True),
18
18
  required=True,
19
19
  help='Path to the compute cluster config file.')
20
- @click.option(
21
- '-cc_id',
22
- '--compute_cluster_id',
23
- required=False,
24
- help='New Compute Cluster ID for the compute cluster to create.')
25
20
  @click.pass_context
26
- def create(ctx, config, compute_cluster_id):
21
+ def create(ctx, compute_cluster_id, config):
27
22
  """Create a new Compute Cluster with the given config file."""
28
-
29
23
  validate_context(ctx)
30
- user = User(user_id=ctx.obj['user_id'], pat=ctx.obj['pat'], base_url=ctx.obj['base_url'])
24
+ user = User(
25
+ user_id=ctx.obj.current.user_id, pat=ctx.obj.current.pat, base_url=ctx.obj.current.api_base)
31
26
  if compute_cluster_id:
32
27
  user.create_compute_cluster(config, compute_cluster_id=compute_cluster_id)
33
28
  else:
34
29
  user.create_compute_cluster(config)
35
30
 
36
31
 
37
- @computecluster.command()
32
+ @computecluster.command(['ls'])
38
33
  @click.option('--page_no', required=False, help='Page number to list.', default=1)
39
34
  @click.option('--per_page', required=False, help='Number of items per page.', default=16)
40
35
  @click.pass_context
41
36
  def list(ctx, page_no, per_page):
42
37
  """List all compute clusters for the user."""
43
-
44
38
  validate_context(ctx)
45
- user = User(user_id=ctx.obj['user_id'], pat=ctx.obj['pat'], base_url=ctx.obj['base_url'])
39
+ user = User(
40
+ user_id=ctx.obj.current.user_id, pat=ctx.obj.current.pat, base_url=ctx.obj.current.api_base)
46
41
  response = user.list_compute_clusters(page_no, per_page)
47
- display_co_resources(response, "Compute Cluster")
42
+ display_co_resources(
43
+ response,
44
+ custom_columns={
45
+ 'ID': lambda c: c.id,
46
+ 'USER_ID': lambda c: c.user_id,
47
+ 'DESCRIPTION': lambda c: c.description,
48
+ })
48
49
 
49
50
 
50
- @computecluster.command()
51
- @click.option('-cc_id', '--compute_cluster_id', help='Compute Cluster ID of the user to delete.')
51
+ @computecluster.command(['rm'])
52
+ @click.argument('compute_cluster_id')
52
53
  @click.pass_context
53
54
  def delete(ctx, compute_cluster_id):
54
55
  """Deletes a compute cluster for the user."""
55
-
56
56
  validate_context(ctx)
57
- user = User(user_id=ctx.obj['user_id'], pat=ctx.obj['pat'], base_url=ctx.obj['base_url'])
57
+ user = User(
58
+ user_id=ctx.obj.current.user_id, pat=ctx.obj.current.pat, base_url=ctx.obj.current.api_base)
58
59
  user.delete_compute_clusters([compute_cluster_id])
@@ -0,0 +1,110 @@
1
+ import click
2
+
3
+ from clarifai.cli.base import cli
4
+ from clarifai.client.compute_cluster import ComputeCluster
5
+ from clarifai.client.nodepool import Nodepool
6
+ from clarifai.client.user import User
7
+ from clarifai.utils.cli import AliasedGroup, display_co_resources, from_yaml, validate_context
8
+
9
+
10
+ @cli.group(['deployment', 'dp'], cls=AliasedGroup)
11
+ def deployment():
12
+ """Manage Deployments: create, delete, list"""
13
+
14
+
15
+ @deployment.command(['c'])
16
+ @click.argument('nodepool_id')
17
+ @click.argument('deployment_id')
18
+ @click.option(
19
+ '--config',
20
+ type=click.Path(exists=True),
21
+ required=True,
22
+ help='Path to the deployment config file.')
23
+ @click.pass_context
24
+ def create(ctx, nodepool_id, deployment_id, config):
25
+ """Create a new Deployment with the given config file."""
26
+
27
+ validate_context(ctx)
28
+ if not nodepool_id:
29
+ deployment_config = from_yaml(config)
30
+ nodepool_id = deployment_config['deployment']['nodepools'][0]['id']
31
+
32
+ nodepool = Nodepool(
33
+ nodepool_id=nodepool_id,
34
+ user_id=ctx.obj.current.user_id,
35
+ pat=ctx.obj.current.pat,
36
+ base_url=ctx.obj.current.api_base)
37
+ if deployment_id:
38
+ nodepool.create_deployment(config, deployment_id=deployment_id)
39
+ else:
40
+ nodepool.create_deployment(config)
41
+
42
+
43
+ @deployment.command(['ls'])
44
+ @click.argument('nodepool_id', default="")
45
+ @click.option('--page_no', required=False, help='Page number to list.', default=1)
46
+ @click.option('--per_page', required=False, help='Number of items per page.', default=16)
47
+ @click.pass_context
48
+ def list(ctx, nodepool_id, page_no, per_page):
49
+ """List all deployments for the nodepool."""
50
+
51
+ validate_context(ctx)
52
+ if nodepool_id:
53
+ nodepool = Nodepool(
54
+ nodepool_id=nodepool_id,
55
+ user_id=ctx.obj.current.user_id,
56
+ pat=ctx.obj.current.pat,
57
+ base_url=ctx.obj.current.api_base)
58
+ response = nodepool.list_deployments(page_no=page_no, per_page=per_page)
59
+ else:
60
+ user = User(
61
+ user_id=ctx.obj.current.user_id,
62
+ pat=ctx.obj.current.pat,
63
+ base_url=ctx.obj.current.api_base)
64
+ ccs = user.list_compute_clusters(page_no, per_page)
65
+ nps = []
66
+ for cc in ccs:
67
+ compute_cluster = ComputeCluster(
68
+ compute_cluster_id=cc.id,
69
+ user_id=ctx.obj.current.user_id,
70
+ pat=ctx.obj.current.pat,
71
+ base_url=ctx.obj.current.api_base)
72
+ nps.extend([i for i in compute_cluster.list_nodepools(page_no, per_page)])
73
+ response = []
74
+ for np in nps:
75
+ nodepool = Nodepool(
76
+ nodepool_id=np.id,
77
+ user_id=ctx.obj.current.user_id,
78
+ pat=ctx.obj.current.pat,
79
+ base_url=ctx.obj.current.api_base)
80
+ response.extend([i for i in nodepool.list_deployments(page_no=page_no, per_page=per_page)])
81
+
82
+ display_co_resources(
83
+ response,
84
+ custom_columns={
85
+ 'ID': lambda c: c.id,
86
+ 'USER_ID': lambda c: c.user_id,
87
+ 'COMPUTE_CLUSTER_ID': lambda c: c.nodepools[0].compute_cluster.id,
88
+ 'NODEPOOL_ID': lambda c: c.nodepools[0].id,
89
+ 'MODEL_USER_ID': lambda c: c.worker.model.user_id,
90
+ 'MODEL_APP_ID': lambda c: c.worker.model.app_id,
91
+ 'MODEL_ID': lambda c: c.worker.model.id,
92
+ 'MODEL_VERSION_ID': lambda c: c.worker.model.model_version.id,
93
+ 'DESCRIPTION': lambda c: c.description,
94
+ })
95
+
96
+
97
+ @deployment.command(['rm'])
98
+ @click.argument('nodepool_id')
99
+ @click.argument('deployment_id')
100
+ @click.pass_context
101
+ def delete(ctx, nodepool_id, deployment_id):
102
+ """Deletes a deployment for the nodepool."""
103
+
104
+ validate_context(ctx)
105
+ nodepool = Nodepool(
106
+ nodepool_id=nodepool_id,
107
+ user_id=ctx.obj.current.user_id,
108
+ pat=ctx.obj.current.pat,
109
+ base_url=ctx.obj.current.api_base)
110
+ nodepool.delete_deployments([deployment_id])
@@ -5,7 +5,7 @@ from clarifai.cli.base import cli
5
5
 
6
6
  @cli.group(['model'])
7
7
  def model():
8
- """Manage models: upload, test locally, run locally, predict, and more"""
8
+ """Manage models: upload, test, local dev, predict, etc"""
9
9
 
10
10
 
11
11
  @model.command()
@@ -0,0 +1,110 @@
1
+ import click
2
+
3
+ from clarifai.cli.base import cli
4
+ from clarifai.client.compute_cluster import ComputeCluster
5
+ from clarifai.client.user import User
6
+ from clarifai.utils.cli import (AliasedGroup, display_co_resources, dump_yaml, from_yaml,
7
+ validate_context)
8
+
9
+
10
+ @cli.group(['nodepool', 'np'], cls=AliasedGroup)
11
+ def nodepool():
12
+ """Manage Nodepools: create, delete, list"""
13
+
14
+
15
+ @nodepool.command(['c'])
16
+ @click.argument('compute_cluster_id')
17
+ @click.argument('nodepool_id')
18
+ @click.option(
19
+ '--config',
20
+ type=click.Path(exists=True),
21
+ required=True,
22
+ help='Path to the nodepool config file.')
23
+ @click.pass_context
24
+ def create(ctx, compute_cluster_id, nodepool_id, config):
25
+ """Create a new Nodepool with the given config file."""
26
+
27
+ validate_context(ctx)
28
+ nodepool_config = from_yaml(config)
29
+ if not compute_cluster_id:
30
+ if 'compute_cluster' not in nodepool_config['nodepool']:
31
+ click.echo(
32
+ "Please provide a compute cluster ID either in the config file or using --compute_cluster_id flag",
33
+ err=True)
34
+ return
35
+ compute_cluster_id = nodepool_config['nodepool']['compute_cluster']['id']
36
+ else:
37
+ if 'compute_cluster' not in nodepool_config['nodepool']:
38
+ nodepool_config['nodepool']['compute_cluster']['id'] = compute_cluster_id
39
+ dump_yaml(config, nodepool_config)
40
+
41
+ compute_cluster = ComputeCluster(
42
+ compute_cluster_id=compute_cluster_id,
43
+ user_id=ctx.obj.current.user_id,
44
+ pat=ctx.obj.current.pat,
45
+ base_url=ctx.obj.current.api_base)
46
+ if nodepool_id:
47
+ compute_cluster.create_nodepool(config, nodepool_id=nodepool_id)
48
+ else:
49
+ compute_cluster.create_nodepool(config)
50
+
51
+
52
+ @nodepool.command(['ls'])
53
+ @click.argument('compute_cluster_id', default="")
54
+ @click.option('--page_no', required=False, help='Page number to list.', default=1)
55
+ @click.option('--per_page', required=False, help='Number of items per page.', default=128)
56
+ @click.pass_context
57
+ def list(ctx, compute_cluster_id, page_no, per_page):
58
+ """List all nodepools for the user across all compute clusters. If compute_cluster_id is provided
59
+ it will list only within that compute cluster. """
60
+
61
+ validate_context(ctx)
62
+
63
+ cc_id = compute_cluster_id
64
+
65
+ if cc_id:
66
+ compute_cluster = ComputeCluster(
67
+ compute_cluster_id=cc_id,
68
+ user_id=ctx.obj.current.user_id,
69
+ pat=ctx.obj.current.pat,
70
+ base_url=ctx.obj.current.api_base)
71
+ response = compute_cluster.list_nodepools(page_no, per_page)
72
+ else:
73
+ user = User(
74
+ user_id=ctx.obj.current.user_id,
75
+ pat=ctx.obj.current.pat,
76
+ base_url=ctx.obj.current.api_base)
77
+ ccs = user.list_compute_clusters(page_no, per_page)
78
+ response = []
79
+ for cc in ccs:
80
+ compute_cluster = ComputeCluster(
81
+ compute_cluster_id=cc.id,
82
+ user_id=ctx.obj.current.user_id,
83
+ pat=ctx.obj.current.pat,
84
+ base_url=ctx.obj.current.api_base)
85
+ response.extend([i for i in compute_cluster.list_nodepools(page_no, per_page)])
86
+
87
+ display_co_resources(
88
+ response,
89
+ custom_columns={
90
+ 'ID': lambda c: c.id,
91
+ 'USER_ID': lambda c: c.compute_cluster.user_id,
92
+ 'COMPUTE_CLUSTER_ID': lambda c: c.compute_cluster.id,
93
+ 'DESCRIPTION': lambda c: c.description,
94
+ })
95
+
96
+
97
+ @nodepool.command(['rm'])
98
+ @click.argument('compute_cluster_id')
99
+ @click.argument('nodepool_id')
100
+ @click.pass_context
101
+ def delete(ctx, compute_cluster_id, nodepool_id):
102
+ """Deletes a nodepool for the user."""
103
+
104
+ validate_context(ctx)
105
+ compute_cluster = ComputeCluster(
106
+ compute_cluster_id=compute_cluster_id,
107
+ user_id=ctx.obj.current.user_id,
108
+ pat=ctx.obj.current.pat,
109
+ base_url=ctx.obj.current.api_base)
110
+ compute_cluster.delete_nodepools([nodepool_id])