together 2.0.0a16__tar.gz → 2.0.0a18__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 (359) hide show
  1. together-2.0.0a18/.release-please-manifest.json +3 -0
  2. {together-2.0.0a16 → together-2.0.0a18}/CHANGELOG.md +50 -0
  3. {together-2.0.0a16 → together-2.0.0a18}/PKG-INFO +11 -14
  4. {together-2.0.0a16 → together-2.0.0a18}/README.md +10 -13
  5. {together-2.0.0a16 → together-2.0.0a18}/api.md +85 -17
  6. {together-2.0.0a16 → together-2.0.0a18}/pyproject.toml +1 -1
  7. {together-2.0.0a16 → together-2.0.0a18}/src/together/_base_client.py +5 -2
  8. {together-2.0.0a16 → together-2.0.0a18}/src/together/_client.py +1 -39
  9. {together-2.0.0a16 → together-2.0.0a18}/src/together/_compat.py +3 -3
  10. together-2.0.0a18/src/together/_utils/_json.py +35 -0
  11. {together-2.0.0a16 → together-2.0.0a18}/src/together/_version.py +1 -1
  12. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/create.py +14 -8
  13. together-2.0.0a18/src/together/lib/cli/api/endpoints/hardware.py +71 -0
  14. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/models/list.py +18 -14
  15. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/models/upload.py +5 -1
  16. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/__init__.py +0 -14
  17. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/beta/__init__.py +14 -0
  18. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/beta/beta.py +32 -0
  19. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/beta/clusters/clusters.py +12 -12
  20. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/beta/clusters/storage.py +10 -10
  21. together-2.0.0a18/src/together/resources/beta/jig/__init__.py +61 -0
  22. together-2.0.0a18/src/together/resources/beta/jig/jig.py +1024 -0
  23. together-2.0.0a18/src/together/resources/beta/jig/queue.py +482 -0
  24. together-2.0.0a18/src/together/resources/beta/jig/secrets.py +548 -0
  25. together-2.0.0a18/src/together/resources/beta/jig/volumes.py +514 -0
  26. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/chat/completions.py +10 -0
  27. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/endpoints.py +2 -2
  28. together-2.0.0a18/src/together/resources/models/__init__.py +33 -0
  29. {together-2.0.0a16/src/together/resources → together-2.0.0a18/src/together/resources/models}/models.py +41 -9
  30. together-2.0.0a18/src/together/resources/models/uploads.py +163 -0
  31. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/__init__.py +0 -2
  32. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/__init__.py +6 -0
  33. together-2.0.0a18/src/together/types/beta/deployment.py +261 -0
  34. together-2.0.0a18/src/together/types/beta/deployment_logs.py +11 -0
  35. together-2.0.0a18/src/together/types/beta/jig/__init__.py +20 -0
  36. together-2.0.0a18/src/together/types/beta/jig/queue_cancel_params.py +13 -0
  37. together-2.0.0a18/src/together/types/beta/jig/queue_cancel_response.py +11 -0
  38. together-2.0.0a18/src/together/types/beta/jig/queue_metrics_params.py +12 -0
  39. together-2.0.0a18/src/together/types/beta/jig/queue_metrics_response.py +8 -0
  40. together-2.0.0a18/src/together/types/beta/jig/queue_retrieve_params.py +15 -0
  41. together-2.0.0a18/src/together/types/beta/jig/queue_retrieve_response.py +35 -0
  42. together-2.0.0a18/src/together/types/beta/jig/queue_submit_params.py +19 -0
  43. together-2.0.0a18/src/together/types/beta/jig/queue_submit_response.py +25 -0
  44. together-2.0.0a18/src/together/types/beta/jig/secret.py +33 -0
  45. together-2.0.0a18/src/together/types/beta/jig/secret_create_params.py +34 -0
  46. together-2.0.0a18/src/together/types/beta/jig/secret_list_response.py +16 -0
  47. together-2.0.0a18/src/together/types/beta/jig/secret_update_params.py +34 -0
  48. together-2.0.0a18/src/together/types/beta/jig/volume.py +47 -0
  49. together-2.0.0a18/src/together/types/beta/jig/volume_create_params.py +34 -0
  50. together-2.0.0a18/src/together/types/beta/jig/volume_list_response.py +16 -0
  51. together-2.0.0a18/src/together/types/beta/jig/volume_update_params.py +34 -0
  52. together-2.0.0a18/src/together/types/beta/jig_deploy_params.py +150 -0
  53. together-2.0.0a18/src/together/types/beta/jig_list_response.py +16 -0
  54. together-2.0.0a18/src/together/types/beta/jig_retrieve_logs_params.py +15 -0
  55. together-2.0.0a18/src/together/types/beta/jig_update_params.py +141 -0
  56. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/completion_create_params.py +11 -0
  57. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/endpoint_create_params.py +1 -1
  58. together-2.0.0a18/src/together/types/models/__init__.py +5 -0
  59. together-2.0.0a16/src/together/types/job_retrieve_response.py → together-2.0.0a18/src/together/types/models/upload_status_response.py +3 -3
  60. together-2.0.0a18/tests/api_resources/beta/jig/test_queue.py +315 -0
  61. together-2.0.0a18/tests/api_resources/beta/jig/test_secrets.py +412 -0
  62. together-2.0.0a18/tests/api_resources/beta/jig/test_volumes.py +426 -0
  63. together-2.0.0a18/tests/api_resources/beta/test_jig.py +616 -0
  64. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/chat/test_completions.py +4 -0
  65. together-2.0.0a18/tests/api_resources/code_interpreter/__init__.py +1 -0
  66. together-2.0.0a18/tests/api_resources/models/__init__.py +1 -0
  67. together-2.0.0a18/tests/api_resources/models/test_uploads.py +100 -0
  68. together-2.0.0a18/tests/test_utils/test_json.py +126 -0
  69. together-2.0.0a16/.release-please-manifest.json +0 -3
  70. together-2.0.0a16/src/together/lib/cli/api/endpoints/hardware.py +0 -40
  71. together-2.0.0a16/src/together/resources/jobs.py +0 -214
  72. together-2.0.0a16/src/together/types/job_list_response.py +0 -47
  73. together-2.0.0a16/tests/api_resources/test_jobs.py +0 -150
  74. {together-2.0.0a16 → together-2.0.0a18}/.gitignore +0 -0
  75. {together-2.0.0a16 → together-2.0.0a18}/CONTRIBUTING.md +0 -0
  76. {together-2.0.0a16 → together-2.0.0a18}/LICENSE +0 -0
  77. {together-2.0.0a16 → together-2.0.0a18}/SECURITY.md +0 -0
  78. {together-2.0.0a16 → together-2.0.0a18}/bin/check-release-environment +0 -0
  79. {together-2.0.0a16 → together-2.0.0a18}/bin/publish-pypi +0 -0
  80. {together-2.0.0a16 → together-2.0.0a18}/examples/.keep +0 -0
  81. {together-2.0.0a16 → together-2.0.0a18}/examples/coqa-small.jsonl +0 -0
  82. {together-2.0.0a16 → together-2.0.0a18}/examples/coqa.jsonl +0 -0
  83. {together-2.0.0a16 → together-2.0.0a18}/examples/embedding.py +0 -0
  84. {together-2.0.0a16 → together-2.0.0a18}/examples/file-upload.py +0 -0
  85. {together-2.0.0a16 → together-2.0.0a18}/examples/files.py +0 -0
  86. {together-2.0.0a16 → together-2.0.0a18}/examples/fine_tuning.py +0 -0
  87. {together-2.0.0a16 → together-2.0.0a18}/examples/image.py +0 -0
  88. {together-2.0.0a16 → together-2.0.0a18}/examples/models.py +0 -0
  89. {together-2.0.0a16 → together-2.0.0a18}/examples/streaming.py +0 -0
  90. {together-2.0.0a16 → together-2.0.0a18}/examples/tokenize_data.py +0 -0
  91. {together-2.0.0a16 → together-2.0.0a18}/release-please-config.json +0 -0
  92. {together-2.0.0a16 → together-2.0.0a18}/requirements-dev.lock +0 -0
  93. {together-2.0.0a16 → together-2.0.0a18}/src/together/__init__.py +0 -0
  94. {together-2.0.0a16 → together-2.0.0a18}/src/together/_constants.py +0 -0
  95. {together-2.0.0a16 → together-2.0.0a18}/src/together/_exceptions.py +0 -0
  96. {together-2.0.0a16 → together-2.0.0a18}/src/together/_files.py +0 -0
  97. {together-2.0.0a16 → together-2.0.0a18}/src/together/_models.py +0 -0
  98. {together-2.0.0a16 → together-2.0.0a18}/src/together/_qs.py +0 -0
  99. {together-2.0.0a16 → together-2.0.0a18}/src/together/_resource.py +0 -0
  100. {together-2.0.0a16 → together-2.0.0a18}/src/together/_response.py +0 -0
  101. {together-2.0.0a16 → together-2.0.0a18}/src/together/_streaming.py +0 -0
  102. {together-2.0.0a16 → together-2.0.0a18}/src/together/_types.py +0 -0
  103. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/__init__.py +0 -0
  104. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_compat.py +0 -0
  105. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_datetime_parse.py +0 -0
  106. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_logs.py +0 -0
  107. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_proxy.py +0 -0
  108. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_reflection.py +0 -0
  109. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_resources_proxy.py +0 -0
  110. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_streams.py +0 -0
  111. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_sync.py +0 -0
  112. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_transform.py +0 -0
  113. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_typing.py +0 -0
  114. {together-2.0.0a16 → together-2.0.0a18}/src/together/_utils/_utils.py +0 -0
  115. {together-2.0.0a16 → together-2.0.0a18}/src/together/constants.py +0 -0
  116. {together-2.0.0a16 → together-2.0.0a18}/src/together/error.py +0 -0
  117. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/.keep +0 -0
  118. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/__init__.py +0 -0
  119. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/_google_colab.py +0 -0
  120. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/__init__.py +0 -0
  121. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/_utils.py +0 -0
  122. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/__init__.py +0 -0
  123. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/__init__.py +0 -0
  124. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/create.py +0 -0
  125. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/delete.py +0 -0
  126. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/get_credentials.py +0 -0
  127. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/list.py +0 -0
  128. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/list_regions.py +0 -0
  129. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/retrieve.py +0 -0
  130. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/__init__.py +0 -0
  131. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/create.py +0 -0
  132. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/delete.py +0 -0
  133. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/list.py +0 -0
  134. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/retrieve.py +0 -0
  135. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/update.py +0 -0
  136. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/__init__.py +0 -0
  137. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/availability_zones.py +0 -0
  138. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/delete.py +0 -0
  139. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/list.py +0 -0
  140. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/retrieve.py +0 -0
  141. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/start.py +0 -0
  142. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/stop.py +0 -0
  143. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/update.py +0 -0
  144. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/evals/__init__.py +0 -0
  145. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/evals/create.py +0 -0
  146. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/evals/list.py +0 -0
  147. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/evals/retrieve.py +0 -0
  148. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/evals/status.py +0 -0
  149. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/files/__init__.py +0 -0
  150. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/files/check.py +0 -0
  151. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/files/delete.py +0 -0
  152. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/files/list.py +0 -0
  153. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/files/retrieve.py +0 -0
  154. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/files/retrieve_content.py +0 -0
  155. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/files/upload.py +0 -0
  156. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/__init__.py +0 -0
  157. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/cancel.py +0 -0
  158. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/create.py +0 -0
  159. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/delete.py +0 -0
  160. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/download.py +0 -0
  161. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/list.py +0 -0
  162. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/list_checkpoints.py +0 -0
  163. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/list_events.py +0 -0
  164. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/retrieve.py +0 -0
  165. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/cli/api/models/__init__.py +0 -0
  166. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/constants.py +0 -0
  167. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/resources/__init__.py +0 -0
  168. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/resources/files.py +0 -0
  169. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/resources/fine_tuning.py +0 -0
  170. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/types/__init__.py +0 -0
  171. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/types/error.py +0 -0
  172. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/types/fine_tuning.py +0 -0
  173. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/utils/__init__.py +0 -0
  174. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/utils/_log.py +0 -0
  175. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/utils/files.py +0 -0
  176. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/utils/serializer.py +0 -0
  177. {together-2.0.0a16 → together-2.0.0a18}/src/together/lib/utils/tools.py +0 -0
  178. {together-2.0.0a16 → together-2.0.0a18}/src/together/py.typed +0 -0
  179. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/audio/__init__.py +0 -0
  180. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/audio/audio.py +0 -0
  181. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/audio/speech.py +0 -0
  182. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/audio/transcriptions.py +0 -0
  183. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/audio/translations.py +0 -0
  184. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/audio/voices.py +0 -0
  185. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/batches.py +0 -0
  186. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/beta/clusters/__init__.py +0 -0
  187. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/chat/__init__.py +0 -0
  188. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/chat/chat.py +0 -0
  189. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/code_interpreter/__init__.py +0 -0
  190. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/code_interpreter/code_interpreter.py +0 -0
  191. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/code_interpreter/sessions.py +0 -0
  192. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/completions.py +0 -0
  193. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/embeddings.py +0 -0
  194. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/evals.py +0 -0
  195. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/files.py +0 -0
  196. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/fine_tuning.py +0 -0
  197. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/hardware.py +0 -0
  198. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/images.py +0 -0
  199. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/rerank.py +0 -0
  200. {together-2.0.0a16 → together-2.0.0a18}/src/together/resources/videos.py +0 -0
  201. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio/__init__.py +0 -0
  202. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio/speech_create_params.py +0 -0
  203. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio/transcription_create_params.py +0 -0
  204. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio/transcription_create_response.py +0 -0
  205. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio/translation_create_params.py +0 -0
  206. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio/translation_create_response.py +0 -0
  207. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio/voice_list_response.py +0 -0
  208. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/audio_speech_stream_chunk.py +0 -0
  209. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/autoscaling.py +0 -0
  210. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/autoscaling_param.py +0 -0
  211. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/batch_create_params.py +0 -0
  212. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/batch_create_response.py +0 -0
  213. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/batch_job.py +0 -0
  214. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/batch_list_response.py +0 -0
  215. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/cluster.py +0 -0
  216. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/cluster_create_params.py +0 -0
  217. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/cluster_delete_response.py +0 -0
  218. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/cluster_list_regions_response.py +0 -0
  219. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/cluster_list_response.py +0 -0
  220. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/cluster_update_params.py +0 -0
  221. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/clusters/__init__.py +0 -0
  222. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/clusters/cluster_storage.py +0 -0
  223. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/clusters/storage_create_params.py +0 -0
  224. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/clusters/storage_delete_response.py +0 -0
  225. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/clusters/storage_list_response.py +0 -0
  226. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/beta/clusters/storage_update_params.py +0 -0
  227. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/__init__.py +0 -0
  228. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/chat_completion.py +0 -0
  229. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/chat_completion_chunk.py +0 -0
  230. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/chat_completion_structured_message_image_url_param.py +0 -0
  231. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/chat_completion_structured_message_text_param.py +0 -0
  232. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/chat_completion_structured_message_video_url_param.py +0 -0
  233. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/chat_completion_usage.py +0 -0
  234. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat/chat_completion_warning.py +0 -0
  235. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/chat_completions.py +0 -0
  236. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/code_interpreter/__init__.py +0 -0
  237. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/code_interpreter/session_list_response.py +0 -0
  238. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/code_interpreter_execute_params.py +0 -0
  239. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/completion.py +0 -0
  240. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/completion_chunk.py +0 -0
  241. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/completion_create_params.py +0 -0
  242. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/dedicated_endpoint.py +0 -0
  243. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/embedding.py +0 -0
  244. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/embedding_create_params.py +0 -0
  245. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/endpoint_list_avzones_response.py +0 -0
  246. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/endpoint_list_params.py +0 -0
  247. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/endpoint_list_response.py +0 -0
  248. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/endpoint_update_params.py +0 -0
  249. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/endpoints.py +0 -0
  250. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/eval_create_params.py +0 -0
  251. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/eval_create_response.py +0 -0
  252. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/eval_list_params.py +0 -0
  253. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/eval_list_response.py +0 -0
  254. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/eval_status_response.py +0 -0
  255. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/evaluation_job.py +0 -0
  256. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/execute_response.py +0 -0
  257. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/file_delete_response.py +0 -0
  258. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/file_list.py +0 -0
  259. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/file_purpose.py +0 -0
  260. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/file_response.py +0 -0
  261. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/file_type.py +0 -0
  262. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/files.py +0 -0
  263. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_cancel_response.py +0 -0
  264. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_content_params.py +0 -0
  265. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_delete_params.py +0 -0
  266. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_delete_response.py +0 -0
  267. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_estimate_price_params.py +0 -0
  268. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_estimate_price_response.py +0 -0
  269. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_list_checkpoints_response.py +0 -0
  270. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_list_events_response.py +0 -0
  271. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/fine_tuning_list_response.py +0 -0
  272. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/finetune.py +0 -0
  273. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/finetune_event.py +0 -0
  274. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/finetune_event_type.py +0 -0
  275. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/finetune_response.py +0 -0
  276. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/hardware_list_params.py +0 -0
  277. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/hardware_list_response.py +0 -0
  278. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/image_data_b64.py +0 -0
  279. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/image_data_url.py +0 -0
  280. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/image_file.py +0 -0
  281. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/image_generate_params.py +0 -0
  282. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/log_probs.py +0 -0
  283. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/model_list_params.py +0 -0
  284. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/model_list_response.py +0 -0
  285. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/model_object.py +0 -0
  286. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/model_upload_params.py +0 -0
  287. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/model_upload_response.py +0 -0
  288. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/models.py +0 -0
  289. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/rerank_create_params.py +0 -0
  290. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/rerank_create_response.py +0 -0
  291. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/tool_choice.py +0 -0
  292. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/tool_choice_param.py +0 -0
  293. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/tools_param.py +0 -0
  294. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/training_method_dpo.py +0 -0
  295. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/training_method_sft.py +0 -0
  296. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/video_create_params.py +0 -0
  297. {together-2.0.0a16 → together-2.0.0a18}/src/together/types/video_job.py +0 -0
  298. {together-2.0.0a16 → together-2.0.0a18}/tests/__init__.py +0 -0
  299. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/__init__.py +0 -0
  300. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/audio/__init__.py +0 -0
  301. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/audio/test_speech.py +0 -0
  302. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/audio/test_transcriptions.py +0 -0
  303. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/audio/test_translations.py +0 -0
  304. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/audio/test_voices.py +0 -0
  305. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/beta/__init__.py +0 -0
  306. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/beta/clusters/__init__.py +0 -0
  307. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/beta/clusters/test_storage.py +0 -0
  308. {together-2.0.0a16/tests/api_resources/chat → together-2.0.0a18/tests/api_resources/beta/jig}/__init__.py +0 -0
  309. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/beta/test_clusters.py +0 -0
  310. {together-2.0.0a16/tests/api_resources/code_interpreter → together-2.0.0a18/tests/api_resources/chat}/__init__.py +0 -0
  311. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/code_interpreter/test_sessions.py +0 -0
  312. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_batches.py +0 -0
  313. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_code_interpreter.py +0 -0
  314. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_completions.py +0 -0
  315. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_embeddings.py +0 -0
  316. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_endpoints.py +0 -0
  317. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_evals.py +0 -0
  318. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_files.py +0 -0
  319. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_fine_tuning.py +0 -0
  320. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_hardware.py +0 -0
  321. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_images.py +0 -0
  322. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_models.py +0 -0
  323. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_rerank.py +0 -0
  324. {together-2.0.0a16 → together-2.0.0a18}/tests/api_resources/test_videos.py +0 -0
  325. {together-2.0.0a16 → together-2.0.0a18}/tests/conftest.py +0 -0
  326. {together-2.0.0a16 → together-2.0.0a18}/tests/integration/__init__.py +0 -0
  327. {together-2.0.0a16 → together-2.0.0a18}/tests/integration/constants.py +0 -0
  328. {together-2.0.0a16 → together-2.0.0a18}/tests/integration/resources/__init__.py +0 -0
  329. {together-2.0.0a16 → together-2.0.0a18}/tests/integration/resources/generate_hyperparameters.py +0 -0
  330. {together-2.0.0a16 → together-2.0.0a18}/tests/integration/resources/test_completion.py +0 -0
  331. {together-2.0.0a16 → together-2.0.0a18}/tests/integration/resources/test_completion_stream.py +0 -0
  332. {together-2.0.0a16 → together-2.0.0a18}/tests/integration/resources/test_files.py +0 -0
  333. {together-2.0.0a16 → together-2.0.0a18}/tests/sample_file.txt +0 -0
  334. {together-2.0.0a16 → together-2.0.0a18}/tests/test_cli_utils.py +0 -0
  335. {together-2.0.0a16 → together-2.0.0a18}/tests/test_client.py +0 -0
  336. {together-2.0.0a16 → together-2.0.0a18}/tests/test_deepcopy.py +0 -0
  337. {together-2.0.0a16 → together-2.0.0a18}/tests/test_extract_files.py +0 -0
  338. {together-2.0.0a16 → together-2.0.0a18}/tests/test_files.py +0 -0
  339. {together-2.0.0a16 → together-2.0.0a18}/tests/test_models.py +0 -0
  340. {together-2.0.0a16 → together-2.0.0a18}/tests/test_qs.py +0 -0
  341. {together-2.0.0a16 → together-2.0.0a18}/tests/test_required_args.py +0 -0
  342. {together-2.0.0a16 → together-2.0.0a18}/tests/test_response.py +0 -0
  343. {together-2.0.0a16 → together-2.0.0a18}/tests/test_streaming.py +0 -0
  344. {together-2.0.0a16 → together-2.0.0a18}/tests/test_transform.py +0 -0
  345. {together-2.0.0a16 → together-2.0.0a18}/tests/test_utils/test_datetime_parse.py +0 -0
  346. {together-2.0.0a16 → together-2.0.0a18}/tests/test_utils/test_proxy.py +0 -0
  347. {together-2.0.0a16 → together-2.0.0a18}/tests/test_utils/test_typing.py +0 -0
  348. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_async_client.py +0 -0
  349. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_client.py +0 -0
  350. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_code_interpreter.py +0 -0
  351. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_files_checks.py +0 -0
  352. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_files_resource.py +0 -0
  353. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_fine_tuning_resources.py +0 -0
  354. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_imports.py +0 -0
  355. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_multipart_upload_manager.py +0 -0
  356. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_preference_openai.py +0 -0
  357. {together-2.0.0a16 → together-2.0.0a18}/tests/unit/test_video_url.py +0 -0
  358. {together-2.0.0a16 → together-2.0.0a18}/tests/utils.py +0 -0
  359. {together-2.0.0a16 → together-2.0.0a18}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "2.0.0-alpha.18"
3
+ }
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.0-alpha.18 (2026-01-31)
4
+
5
+ Full Changelog: [v2.0.0-alpha.17...v2.0.0-alpha.18](https://github.com/togethercomputer/together-py/compare/v2.0.0-alpha.17...v2.0.0-alpha.18)
6
+
7
+ ### Features
8
+
9
+ * Add chat completion support for reasoning.enabled ([7fba349](https://github.com/togethercomputer/together-py/commit/7fba349c1bde34ace5ca38c0728479f054518e04))
10
+ * **api:** Add API for listing deployments ([298d447](https://github.com/togethercomputer/together-py/commit/298d4475208fb24e1373fa7449c0716768d5501d))
11
+ * **api:** Add beta sdks for jig features ([c3ac883](https://github.com/togethercomputer/together-py/commit/c3ac883f8ffe62d2c1b660e3a62fc82891e63dac))
12
+ * **api:** Move jobs apis to nest under model uploads per their use case ([368c003](https://github.com/togethercomputer/together-py/commit/368c003ec61e8cea2ec995ba9889d3cf7ac21328))
13
+ * **api:** Move queue out of jig namespace ([ebc1498](https://github.com/togethercomputer/together-py/commit/ebc1498125e7b95f2726cfb37a4324aadcf40f8d))
14
+ * **api:** Update Jig types and add retrieve_logs api to jig ([76a3c1a](https://github.com/togethercomputer/together-py/commit/76a3c1abccf8bb1efaebd192a68fe31785b568cf))
15
+ * **cli:** enhance hardware command to display availability status ([#223](https://github.com/togethercomputer/together-py/issues/223)) ([e7cf8a3](https://github.com/togethercomputer/together-py/commit/e7cf8a30c6a1d46f10ea5049f51e969be6f8418f))
16
+ * **client:** add custom JSON encoder for extended type support ([036a0ea](https://github.com/togethercomputer/together-py/commit/036a0eaba07c3cca56e9dbec965e1cce2f8b848a))
17
+ * internal: Update to new cluster api routing ([54af0bd](https://github.com/togethercomputer/together-py/commit/54af0bdf4076e5ff02f0475547a4b1d2f7393c46))
18
+ * move byoc features under /deployments route ([d70e2e9](https://github.com/togethercomputer/together-py/commit/d70e2e9c3c12997935a34cb4a63a26e315e0c799))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * Avoid crashing when uploading a model which weights already exist ([#226](https://github.com/togethercomputer/together-py/issues/226)) ([5a9095c](https://github.com/togethercomputer/together-py/commit/5a9095c91da5de8333e366e88f6960b428177d07))
24
+
25
+
26
+ ### Chores
27
+
28
+ * **api:** Improve type names for jig volumes and logs ([b256c61](https://github.com/togethercomputer/together-py/commit/b256c61f601d67a0abee1dbc44e9851d52014d0d))
29
+ * **api:** Move Queue SDK methods into Jig namespace ([43179e1](https://github.com/togethercomputer/together-py/commit/43179e1ee8451cc3bcb8430c2bc35148309b82db))
30
+ * **api:** Rename jig queue apis ([4b466d6](https://github.com/togethercomputer/together-py/commit/4b466d6079071fd840880337b20c4d34a3a5cf45))
31
+ * **ci:** upgrade `actions/github-script` ([c8668a1](https://github.com/togethercomputer/together-py/commit/c8668a1424fbfcd37d893d414d4dcd0307f5aac4))
32
+
33
+
34
+ ### Documentation
35
+
36
+ * **axle-queue:** added axle-queue endpoints ([4e60b09](https://github.com/togethercomputer/together-py/commit/4e60b096128cbfef4769195a9b00cf0236e5052c))
37
+
38
+ ## 2.0.0-alpha.17 (2026-01-21)
39
+
40
+ Full Changelog: [v2.0.0-alpha.16...v2.0.0-alpha.17](https://github.com/togethercomputer/together-py/compare/v2.0.0-alpha.16...v2.0.0-alpha.17)
41
+
42
+ ### Features
43
+
44
+ * **cli:** add b200 and h200 GPU options for endpoint creation ([#218](https://github.com/togethercomputer/together-py/issues/218)) ([b514912](https://github.com/togethercomputer/together-py/commit/b514912a281922fefbf8a9f62b936ed1de243718))
45
+ * Improve usage of models list cli command ([#216](https://github.com/togethercomputer/together-py/issues/216)) ([430e6c1](https://github.com/togethercomputer/together-py/commit/430e6c1e030749be474f020b677d91014ba4482c))
46
+
47
+
48
+ ### Chores
49
+
50
+ * Deprecate CLI usage for endpoints create flag --no-promopt-cache ([#219](https://github.com/togethercomputer/together-py/issues/219)) ([55e9700](https://github.com/togethercomputer/together-py/commit/55e9700187b42f8baff6f567a3a657b46577ed88))
51
+ * Mark disable_prompt_cache as deprecated for endpoint creation ([6a629b2](https://github.com/togethercomputer/together-py/commit/6a629b29e53b4374503d30ca75456184ef313b67))
52
+
3
53
  ## 2.0.0-alpha.16 (2026-01-18)
4
54
 
5
55
  Full Changelog: [v2.0.0-alpha.15...v2.0.0-alpha.16](https://github.com/togethercomputer/together-py/compare/v2.0.0-alpha.15...v2.0.0-alpha.16)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: together
3
- Version: 2.0.0a16
3
+ Version: 2.0.0a18
4
4
  Summary: The official Python library for the together API
5
5
  Project-URL: Homepage, https://github.com/togethercomputer/together-py
6
6
  Project-URL: Repository, https://github.com/togethercomputer/together-py
@@ -235,20 +235,17 @@ from together import Together
235
235
 
236
236
  client = Together()
237
237
 
238
- cluster = client.beta.clusters.create(
239
- billing_type="RESERVED",
240
- cluster_name="cluster_name",
241
- driver_version="CUDA_12_5_555",
242
- gpu_type="H100_SXM",
243
- num_gpus=0,
244
- region="us-central-8",
245
- shared_volume={
246
- "region": "region",
247
- "size_tib": 0,
248
- "volume_name": "volume_name",
249
- },
238
+ chat_completion = client.chat.completions.create(
239
+ messages=[
240
+ {
241
+ "content": "content",
242
+ "role": "system",
243
+ }
244
+ ],
245
+ model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
246
+ reasoning={},
250
247
  )
251
- print(cluster.shared_volume)
248
+ print(chat_completion.reasoning)
252
249
  ```
253
250
 
254
251
  The async client uses the exact same interface. If you pass a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance, the file contents will be read asynchronously automatically.
@@ -186,20 +186,17 @@ from together import Together
186
186
 
187
187
  client = Together()
188
188
 
189
- cluster = client.beta.clusters.create(
190
- billing_type="RESERVED",
191
- cluster_name="cluster_name",
192
- driver_version="CUDA_12_5_555",
193
- gpu_type="H100_SXM",
194
- num_gpus=0,
195
- region="us-central-8",
196
- shared_volume={
197
- "region": "region",
198
- "size_tib": 0,
199
- "volume_name": "volume_name",
200
- },
189
+ chat_completion = client.chat.completions.create(
190
+ messages=[
191
+ {
192
+ "content": "content",
193
+ "role": "system",
194
+ }
195
+ ],
196
+ model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
197
+ reasoning={},
201
198
  )
202
- print(cluster.shared_volume)
199
+ print(chat_completion.reasoning)
203
200
  ```
204
201
 
205
202
  The async client uses the exact same interface. If you pass a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance, the file contents will be read asynchronously automatically.
@@ -1,5 +1,74 @@
1
1
  # Beta
2
2
 
3
+ ## Jig
4
+
5
+ Types:
6
+
7
+ ```python
8
+ from together.types.beta import Deployment, DeploymentLogs, JigListResponse
9
+ ```
10
+
11
+ Methods:
12
+
13
+ - <code title="get /deployments/{id}">client.beta.jig.<a href="./src/together/resources/beta/jig/jig.py">retrieve</a>(id) -> <a href="./src/together/types/beta/deployment.py">Deployment</a></code>
14
+ - <code title="patch /deployments/{id}">client.beta.jig.<a href="./src/together/resources/beta/jig/jig.py">update</a>(id, \*\*<a href="src/together/types/beta/jig_update_params.py">params</a>) -> <a href="./src/together/types/beta/deployment.py">Deployment</a></code>
15
+ - <code title="get /deployments">client.beta.jig.<a href="./src/together/resources/beta/jig/jig.py">list</a>() -> <a href="./src/together/types/beta/jig_list_response.py">JigListResponse</a></code>
16
+ - <code title="post /deployments">client.beta.jig.<a href="./src/together/resources/beta/jig/jig.py">deploy</a>(\*\*<a href="src/together/types/beta/jig_deploy_params.py">params</a>) -> <a href="./src/together/types/beta/deployment.py">Deployment</a></code>
17
+ - <code title="delete /deployments/{id}">client.beta.jig.<a href="./src/together/resources/beta/jig/jig.py">destroy</a>(id) -> object</code>
18
+ - <code title="get /deployments/{id}/logs">client.beta.jig.<a href="./src/together/resources/beta/jig/jig.py">retrieve_logs</a>(id, \*\*<a href="src/together/types/beta/jig_retrieve_logs_params.py">params</a>) -> <a href="./src/together/types/beta/deployment_logs.py">DeploymentLogs</a></code>
19
+
20
+ ### Queue
21
+
22
+ Types:
23
+
24
+ ```python
25
+ from together.types.beta.jig import (
26
+ QueueRetrieveResponse,
27
+ QueueCancelResponse,
28
+ QueueMetricsResponse,
29
+ QueueSubmitResponse,
30
+ )
31
+ ```
32
+
33
+ Methods:
34
+
35
+ - <code title="get /queue/status">client.beta.jig.queue.<a href="./src/together/resources/beta/jig/queue.py">retrieve</a>(\*\*<a href="src/together/types/beta/jig/queue_retrieve_params.py">params</a>) -> <a href="./src/together/types/beta/jig/queue_retrieve_response.py">QueueRetrieveResponse</a></code>
36
+ - <code title="post /queue/cancel">client.beta.jig.queue.<a href="./src/together/resources/beta/jig/queue.py">cancel</a>(\*\*<a href="src/together/types/beta/jig/queue_cancel_params.py">params</a>) -> <a href="./src/together/types/beta/jig/queue_cancel_response.py">QueueCancelResponse</a></code>
37
+ - <code title="get /queue/metrics">client.beta.jig.queue.<a href="./src/together/resources/beta/jig/queue.py">metrics</a>(\*\*<a href="src/together/types/beta/jig/queue_metrics_params.py">params</a>) -> <a href="./src/together/types/beta/jig/queue_metrics_response.py">QueueMetricsResponse</a></code>
38
+ - <code title="post /queue/submit">client.beta.jig.queue.<a href="./src/together/resources/beta/jig/queue.py">submit</a>(\*\*<a href="src/together/types/beta/jig/queue_submit_params.py">params</a>) -> <a href="./src/together/types/beta/jig/queue_submit_response.py">QueueSubmitResponse</a></code>
39
+
40
+ ### Volumes
41
+
42
+ Types:
43
+
44
+ ```python
45
+ from together.types.beta.jig import Volume, VolumeListResponse
46
+ ```
47
+
48
+ Methods:
49
+
50
+ - <code title="post /deployments/storage/volumes">client.beta.jig.volumes.<a href="./src/together/resources/beta/jig/volumes.py">create</a>(\*\*<a href="src/together/types/beta/jig/volume_create_params.py">params</a>) -> <a href="./src/together/types/beta/jig/volume.py">Volume</a></code>
51
+ - <code title="get /deployments/storage/volumes/{id}">client.beta.jig.volumes.<a href="./src/together/resources/beta/jig/volumes.py">retrieve</a>(id) -> <a href="./src/together/types/beta/jig/volume.py">Volume</a></code>
52
+ - <code title="patch /deployments/storage/volumes/{id}">client.beta.jig.volumes.<a href="./src/together/resources/beta/jig/volumes.py">update</a>(id, \*\*<a href="src/together/types/beta/jig/volume_update_params.py">params</a>) -> <a href="./src/together/types/beta/jig/volume.py">Volume</a></code>
53
+ - <code title="get /deployments/storage/volumes">client.beta.jig.volumes.<a href="./src/together/resources/beta/jig/volumes.py">list</a>() -> <a href="./src/together/types/beta/jig/volume_list_response.py">VolumeListResponse</a></code>
54
+ - <code title="delete /deployments/storage/volumes/{id}">client.beta.jig.volumes.<a href="./src/together/resources/beta/jig/volumes.py">delete</a>(id) -> object</code>
55
+
56
+ ### Secrets
57
+
58
+ Types:
59
+
60
+ ```python
61
+ from together.types.beta.jig import Secret, SecretListResponse
62
+ ```
63
+
64
+ Methods:
65
+
66
+ - <code title="post /deployments/secrets">client.beta.jig.secrets.<a href="./src/together/resources/beta/jig/secrets.py">create</a>(\*\*<a href="src/together/types/beta/jig/secret_create_params.py">params</a>) -> <a href="./src/together/types/beta/jig/secret.py">Secret</a></code>
67
+ - <code title="get /deployments/secrets/{id}">client.beta.jig.secrets.<a href="./src/together/resources/beta/jig/secrets.py">retrieve</a>(id) -> <a href="./src/together/types/beta/jig/secret.py">Secret</a></code>
68
+ - <code title="patch /deployments/secrets/{id}">client.beta.jig.secrets.<a href="./src/together/resources/beta/jig/secrets.py">update</a>(id, \*\*<a href="src/together/types/beta/jig/secret_update_params.py">params</a>) -> <a href="./src/together/types/beta/jig/secret.py">Secret</a></code>
69
+ - <code title="get /deployments/secrets">client.beta.jig.secrets.<a href="./src/together/resources/beta/jig/secrets.py">list</a>() -> <a href="./src/together/types/beta/jig/secret_list_response.py">SecretListResponse</a></code>
70
+ - <code title="delete /deployments/secrets/{id}">client.beta.jig.secrets.<a href="./src/together/resources/beta/jig/secrets.py">delete</a>(id) -> object</code>
71
+
3
72
  ## Clusters
4
73
 
5
74
  Types:
@@ -15,12 +84,12 @@ from together.types.beta import (
15
84
 
16
85
  Methods:
17
86
 
18
- - <code title="post /clusters">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">create</a>(\*\*<a href="src/together/types/beta/cluster_create_params.py">params</a>) -> <a href="./src/together/types/beta/cluster.py">Cluster</a></code>
19
- - <code title="get /clusters/{cluster_id}">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">retrieve</a>(cluster_id) -> <a href="./src/together/types/beta/cluster.py">Cluster</a></code>
20
- - <code title="put /clusters/{cluster_id}">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">update</a>(cluster_id, \*\*<a href="src/together/types/beta/cluster_update_params.py">params</a>) -> <a href="./src/together/types/beta/cluster.py">Cluster</a></code>
21
- - <code title="get /clusters">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">list</a>() -> <a href="./src/together/types/beta/cluster_list_response.py">ClusterListResponse</a></code>
22
- - <code title="delete /clusters/{cluster_id}">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">delete</a>(cluster_id) -> <a href="./src/together/types/beta/cluster_delete_response.py">ClusterDeleteResponse</a></code>
23
- - <code title="get /clusters/regions">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">list_regions</a>() -> <a href="./src/together/types/beta/cluster_list_regions_response.py">ClusterListRegionsResponse</a></code>
87
+ - <code title="post /compute/clusters">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">create</a>(\*\*<a href="src/together/types/beta/cluster_create_params.py">params</a>) -> <a href="./src/together/types/beta/cluster.py">Cluster</a></code>
88
+ - <code title="get /compute/clusters/{cluster_id}">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">retrieve</a>(cluster_id) -> <a href="./src/together/types/beta/cluster.py">Cluster</a></code>
89
+ - <code title="put /compute/clusters/{cluster_id}">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">update</a>(cluster_id, \*\*<a href="src/together/types/beta/cluster_update_params.py">params</a>) -> <a href="./src/together/types/beta/cluster.py">Cluster</a></code>
90
+ - <code title="get /compute/clusters">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">list</a>() -> <a href="./src/together/types/beta/cluster_list_response.py">ClusterListResponse</a></code>
91
+ - <code title="delete /compute/clusters/{cluster_id}">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">delete</a>(cluster_id) -> <a href="./src/together/types/beta/cluster_delete_response.py">ClusterDeleteResponse</a></code>
92
+ - <code title="get /compute/regions">client.beta.clusters.<a href="./src/together/resources/beta/clusters/clusters.py">list_regions</a>() -> <a href="./src/together/types/beta/cluster_list_regions_response.py">ClusterListRegionsResponse</a></code>
24
93
 
25
94
  ### Storage
26
95
 
@@ -32,11 +101,11 @@ from together.types.beta.clusters import ClusterStorage, StorageListResponse, St
32
101
 
33
102
  Methods:
34
103
 
35
- - <code title="post /clusters/storages">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">create</a>(\*\*<a href="src/together/types/beta/clusters/storage_create_params.py">params</a>) -> <a href="./src/together/types/beta/clusters/cluster_storage.py">ClusterStorage</a></code>
36
- - <code title="get /clusters/storages/{volume_id}">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">retrieve</a>(volume_id) -> <a href="./src/together/types/beta/clusters/cluster_storage.py">ClusterStorage</a></code>
37
- - <code title="put /clusters/storages">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">update</a>(\*\*<a href="src/together/types/beta/clusters/storage_update_params.py">params</a>) -> <a href="./src/together/types/beta/clusters/cluster_storage.py">ClusterStorage</a></code>
38
- - <code title="get /clusters/storages">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">list</a>() -> <a href="./src/together/types/beta/clusters/storage_list_response.py">StorageListResponse</a></code>
39
- - <code title="delete /clusters/storages/{volume_id}">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">delete</a>(volume_id) -> <a href="./src/together/types/beta/clusters/storage_delete_response.py">StorageDeleteResponse</a></code>
104
+ - <code title="post /compute/clusters/storage/volumes">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">create</a>(\*\*<a href="src/together/types/beta/clusters/storage_create_params.py">params</a>) -> <a href="./src/together/types/beta/clusters/cluster_storage.py">ClusterStorage</a></code>
105
+ - <code title="get /compute/clusters/storage/volumes/{volume_id}">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">retrieve</a>(volume_id) -> <a href="./src/together/types/beta/clusters/cluster_storage.py">ClusterStorage</a></code>
106
+ - <code title="put /compute/clusters/storage/volumes">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">update</a>(\*\*<a href="src/together/types/beta/clusters/storage_update_params.py">params</a>) -> <a href="./src/together/types/beta/clusters/cluster_storage.py">ClusterStorage</a></code>
107
+ - <code title="get /compute/clusters/storage/volumes">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">list</a>() -> <a href="./src/together/types/beta/clusters/storage_list_response.py">StorageListResponse</a></code>
108
+ - <code title="delete /compute/clusters/storage/volumes/{volume_id}">client.beta.clusters.storage.<a href="./src/together/resources/beta/clusters/storage.py">delete</a>(volume_id) -> <a href="./src/together/types/beta/clusters/storage_delete_response.py">StorageDeleteResponse</a></code>
40
109
 
41
110
  # Chat
42
111
 
@@ -244,21 +313,20 @@ from together.types import ModelObject, ModelListResponse, ModelUploadResponse
244
313
 
245
314
  Methods:
246
315
 
247
- - <code title="get /models">client.models.<a href="./src/together/resources/models.py">list</a>(\*\*<a href="src/together/types/model_list_params.py">params</a>) -> <a href="./src/together/types/model_list_response.py">ModelListResponse</a></code>
248
- - <code title="post /models">client.models.<a href="./src/together/resources/models.py">upload</a>(\*\*<a href="src/together/types/model_upload_params.py">params</a>) -> <a href="./src/together/types/model_upload_response.py">ModelUploadResponse</a></code>
316
+ - <code title="get /models">client.models.<a href="./src/together/resources/models/models.py">list</a>(\*\*<a href="src/together/types/model_list_params.py">params</a>) -> <a href="./src/together/types/model_list_response.py">ModelListResponse</a></code>
317
+ - <code title="post /models">client.models.<a href="./src/together/resources/models/models.py">upload</a>(\*\*<a href="src/together/types/model_upload_params.py">params</a>) -> <a href="./src/together/types/model_upload_response.py">ModelUploadResponse</a></code>
249
318
 
250
- # Jobs
319
+ ## Uploads
251
320
 
252
321
  Types:
253
322
 
254
323
  ```python
255
- from together.types import JobRetrieveResponse, JobListResponse
324
+ from together.types.models import UploadStatusResponse
256
325
  ```
257
326
 
258
327
  Methods:
259
328
 
260
- - <code title="get /jobs/{jobId}">client.jobs.<a href="./src/together/resources/jobs.py">retrieve</a>(job_id) -> <a href="./src/together/types/job_retrieve_response.py">JobRetrieveResponse</a></code>
261
- - <code title="get /jobs">client.jobs.<a href="./src/together/resources/jobs.py">list</a>() -> <a href="./src/together/types/job_list_response.py">JobListResponse</a></code>
329
+ - <code title="get /jobs/{jobId}">client.models.uploads.<a href="./src/together/resources/models/uploads.py">status</a>(job_id) -> <a href="./src/together/types/models/upload_status_response.py">UploadStatusResponse</a></code>
262
330
 
263
331
  # Endpoints
264
332
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "together"
3
- version = "2.0.0-alpha.16"
3
+ version = "2.0.0-alpha.18"
4
4
  description = "The official Python library for the together API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -86,6 +86,7 @@ from ._exceptions import (
86
86
  APIConnectionError,
87
87
  APIResponseValidationError,
88
88
  )
89
+ from ._utils._json import openapi_dumps
89
90
 
90
91
  log: logging.Logger = logging.getLogger(__name__)
91
92
 
@@ -554,8 +555,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
554
555
  kwargs["content"] = options.content
555
556
  elif isinstance(json_data, bytes):
556
557
  kwargs["content"] = json_data
557
- else:
558
- kwargs["json"] = json_data if is_given(json_data) else None
558
+ elif not files:
559
+ # Don't set content when JSON is sent as multipart/form-data,
560
+ # since httpx's content param overrides other body arguments
561
+ kwargs["content"] = openapi_dumps(json_data) if is_given(json_data) and json_data is not None else None
559
562
  kwargs["files"] = files
560
563
  else:
561
564
  headers.pop("Content-Type", None)
@@ -37,7 +37,6 @@ if TYPE_CHECKING:
37
37
  from .resources import (
38
38
  beta,
39
39
  chat,
40
- jobs,
41
40
  audio,
42
41
  evals,
43
42
  files,
@@ -53,11 +52,9 @@ if TYPE_CHECKING:
53
52
  fine_tuning,
54
53
  code_interpreter,
55
54
  )
56
- from .resources.jobs import JobsResource, AsyncJobsResource
57
55
  from .resources.evals import EvalsResource, AsyncEvalsResource
58
56
  from .resources.files import FilesResource, AsyncFilesResource
59
57
  from .resources.images import ImagesResource, AsyncImagesResource
60
- from .resources.models import ModelsResource, AsyncModelsResource
61
58
  from .resources.rerank import RerankResource, AsyncRerankResource
62
59
  from .resources.videos import VideosResource, AsyncVideosResource
63
60
  from .resources.batches import BatchesResource, AsyncBatchesResource
@@ -69,6 +66,7 @@ if TYPE_CHECKING:
69
66
  from .resources.audio.audio import AudioResource, AsyncAudioResource
70
67
  from .resources.completions import CompletionsResource, AsyncCompletionsResource
71
68
  from .resources.fine_tuning import FineTuningResource, AsyncFineTuningResource
69
+ from .resources.models.models import ModelsResource, AsyncModelsResource
72
70
  from .resources.code_interpreter.code_interpreter import CodeInterpreterResource, AsyncCodeInterpreterResource
73
71
 
74
72
  __all__ = [
@@ -209,12 +207,6 @@ class Together(SyncAPIClient):
209
207
 
210
208
  return ModelsResource(self)
211
209
 
212
- @cached_property
213
- def jobs(self) -> JobsResource:
214
- from .resources.jobs import JobsResource
215
-
216
- return JobsResource(self)
217
-
218
210
  @cached_property
219
211
  def endpoints(self) -> EndpointsResource:
220
212
  from .resources.endpoints import EndpointsResource
@@ -486,12 +478,6 @@ class AsyncTogether(AsyncAPIClient):
486
478
 
487
479
  return AsyncModelsResource(self)
488
480
 
489
- @cached_property
490
- def jobs(self) -> AsyncJobsResource:
491
- from .resources.jobs import AsyncJobsResource
492
-
493
- return AsyncJobsResource(self)
494
-
495
481
  @cached_property
496
482
  def endpoints(self) -> AsyncEndpointsResource:
497
483
  from .resources.endpoints import AsyncEndpointsResource
@@ -709,12 +695,6 @@ class TogetherWithRawResponse:
709
695
 
710
696
  return ModelsResourceWithRawResponse(self._client.models)
711
697
 
712
- @cached_property
713
- def jobs(self) -> jobs.JobsResourceWithRawResponse:
714
- from .resources.jobs import JobsResourceWithRawResponse
715
-
716
- return JobsResourceWithRawResponse(self._client.jobs)
717
-
718
698
  @cached_property
719
699
  def endpoints(self) -> endpoints.EndpointsResourceWithRawResponse:
720
700
  from .resources.endpoints import EndpointsResourceWithRawResponse
@@ -818,12 +798,6 @@ class AsyncTogetherWithRawResponse:
818
798
 
819
799
  return AsyncModelsResourceWithRawResponse(self._client.models)
820
800
 
821
- @cached_property
822
- def jobs(self) -> jobs.AsyncJobsResourceWithRawResponse:
823
- from .resources.jobs import AsyncJobsResourceWithRawResponse
824
-
825
- return AsyncJobsResourceWithRawResponse(self._client.jobs)
826
-
827
801
  @cached_property
828
802
  def endpoints(self) -> endpoints.AsyncEndpointsResourceWithRawResponse:
829
803
  from .resources.endpoints import AsyncEndpointsResourceWithRawResponse
@@ -927,12 +901,6 @@ class TogetherWithStreamedResponse:
927
901
 
928
902
  return ModelsResourceWithStreamingResponse(self._client.models)
929
903
 
930
- @cached_property
931
- def jobs(self) -> jobs.JobsResourceWithStreamingResponse:
932
- from .resources.jobs import JobsResourceWithStreamingResponse
933
-
934
- return JobsResourceWithStreamingResponse(self._client.jobs)
935
-
936
904
  @cached_property
937
905
  def endpoints(self) -> endpoints.EndpointsResourceWithStreamingResponse:
938
906
  from .resources.endpoints import EndpointsResourceWithStreamingResponse
@@ -1036,12 +1004,6 @@ class AsyncTogetherWithStreamedResponse:
1036
1004
 
1037
1005
  return AsyncModelsResourceWithStreamingResponse(self._client.models)
1038
1006
 
1039
- @cached_property
1040
- def jobs(self) -> jobs.AsyncJobsResourceWithStreamingResponse:
1041
- from .resources.jobs import AsyncJobsResourceWithStreamingResponse
1042
-
1043
- return AsyncJobsResourceWithStreamingResponse(self._client.jobs)
1044
-
1045
1007
  @cached_property
1046
1008
  def endpoints(self) -> endpoints.AsyncEndpointsResourceWithStreamingResponse:
1047
1009
  from .resources.endpoints import AsyncEndpointsResourceWithStreamingResponse
@@ -139,6 +139,7 @@ def model_dump(
139
139
  exclude_defaults: bool = False,
140
140
  warnings: bool = True,
141
141
  mode: Literal["json", "python"] = "python",
142
+ by_alias: bool | None = None,
142
143
  ) -> dict[str, Any]:
143
144
  if (not PYDANTIC_V1) or hasattr(model, "model_dump"):
144
145
  return model.model_dump(
@@ -148,13 +149,12 @@ def model_dump(
148
149
  exclude_defaults=exclude_defaults,
149
150
  # warnings are not supported in Pydantic v1
150
151
  warnings=True if PYDANTIC_V1 else warnings,
152
+ by_alias=by_alias,
151
153
  )
152
154
  return cast(
153
155
  "dict[str, Any]",
154
156
  model.dict( # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
155
- exclude=exclude,
156
- exclude_unset=exclude_unset,
157
- exclude_defaults=exclude_defaults,
157
+ exclude=exclude, exclude_unset=exclude_unset, exclude_defaults=exclude_defaults, by_alias=bool(by_alias)
158
158
  ),
159
159
  )
160
160
 
@@ -0,0 +1,35 @@
1
+ import json
2
+ from typing import Any
3
+ from datetime import datetime
4
+ from typing_extensions import override
5
+
6
+ import pydantic
7
+
8
+ from .._compat import model_dump
9
+
10
+
11
+ def openapi_dumps(obj: Any) -> bytes:
12
+ """
13
+ Serialize an object to UTF-8 encoded JSON bytes.
14
+
15
+ Extends the standard json.dumps with support for additional types
16
+ commonly used in the SDK, such as `datetime`, `pydantic.BaseModel`, etc.
17
+ """
18
+ return json.dumps(
19
+ obj,
20
+ cls=_CustomEncoder,
21
+ # Uses the same defaults as httpx's JSON serialization
22
+ ensure_ascii=False,
23
+ separators=(",", ":"),
24
+ allow_nan=False,
25
+ ).encode()
26
+
27
+
28
+ class _CustomEncoder(json.JSONEncoder):
29
+ @override
30
+ def default(self, o: Any) -> Any:
31
+ if isinstance(o, datetime):
32
+ return o.isoformat()
33
+ if isinstance(o, pydantic.BaseModel):
34
+ return model_dump(o, exclude_unset=True, mode="json", by_alias=True)
35
+ return super().default(o)
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "together"
4
- __version__ = "2.0.0-alpha.16" # x-release-please-version
4
+ __version__ = "2.0.0-alpha.18" # x-release-please-version
@@ -3,7 +3,6 @@ from __future__ import annotations
3
3
  import sys
4
4
 
5
5
  import click
6
- from rich import print
7
6
 
8
7
  from together import APIError, Together, omit
9
8
  from together.lib.cli.api._utils import handle_api_errors
@@ -31,7 +30,7 @@ from .hardware import hardware
31
30
  )
32
31
  @click.option(
33
32
  "--gpu",
34
- type=click.Choice(["h100", "a100", "l40", "l40s", "rtx-6000"]),
33
+ type=click.Choice(["b200", "h200", "h100", "a100", "l40", "l40s", "rtx-6000"]),
35
34
  required=True,
36
35
  help="GPU type to use for inference",
37
36
  )
@@ -48,7 +47,7 @@ from .hardware import hardware
48
47
  @click.option(
49
48
  "--no-prompt-cache",
50
49
  is_flag=True,
51
- help="Disable the prompt cache for this endpoint",
50
+ help="Deprecated and no longer has any effect.",
52
51
  )
53
52
  @click.option(
54
53
  "--no-speculative-decoding",
@@ -95,6 +94,8 @@ def create(
95
94
  client: Together = ctx.obj
96
95
  # Map GPU types to their full hardware ID names
97
96
  gpu_map = {
97
+ "b200": "nvidia_b200_180gb_sxm",
98
+ "h200": "nvidia_h200_140gb_sxm",
98
99
  "h100": "nvidia_h100_80gb_sxm",
99
100
  "a100": "nvidia_a100_80gb_pcie" if gpu_count == 1 else "nvidia_a100_80gb_sxm",
100
101
  "l40": "nvidia_l40",
@@ -102,6 +103,9 @@ def create(
102
103
  "rtx-6000": "nvidia_rtx_6000_ada",
103
104
  }
104
105
 
106
+ if no_prompt_cache is not None:
107
+ click.echo("Warning: --no-prompt-cache is deprecated and no longer has any effect.", err=True)
108
+
105
109
  hardware_id = f"{gpu_count}x_{gpu_map[gpu]}"
106
110
 
107
111
  try:
@@ -113,15 +117,19 @@ def create(
113
117
  "max_replicas": max_replicas,
114
118
  },
115
119
  display_name=display_name or omit,
116
- disable_prompt_cache=no_prompt_cache or omit,
117
120
  disable_speculative_decoding=no_speculative_decoding or omit,
118
121
  state="STOPPED" if no_auto_start else "STARTED",
119
122
  inactive_timeout=inactive_timeout,
120
123
  extra_query={"availability_zone": availability_zone or omit},
121
124
  )
122
125
  except APIError as e:
123
- if "check the hardware api" in str(e.args[0]).lower() or "invalid hardware provided" in str(e.args[0]).lower():
124
- print("Invalid hardware provided")
126
+ if (
127
+ "check the hardware api" in str(e.args[0]).lower()
128
+ or "invalid hardware provided" in str(e.args[0]).lower()
129
+ or "the selected configuration" in str(e.args[0]).lower()
130
+ ):
131
+ click.secho("Invalid hardware selected.", fg="red", err=True)
132
+ click.echo("\nAvailable hardware options:")
125
133
  ctx.invoke(hardware, available=True, model=model, json=False)
126
134
  sys.exit(1)
127
135
  raise e
@@ -134,8 +142,6 @@ def create(
134
142
  click.echo(f" Hardware: {hardware_id}", err=True)
135
143
  if display_name:
136
144
  click.echo(f" Display name: {display_name}", err=True)
137
- if no_prompt_cache:
138
- click.echo(" Prompt cache: disabled", err=True)
139
145
  if no_speculative_decoding:
140
146
  click.echo(" Speculative decoding: disabled", err=True)
141
147
  if no_auto_start:
@@ -0,0 +1,71 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ import json as json_lib
5
+ from typing import Any, Dict, List
6
+
7
+ import click
8
+ from tabulate import tabulate
9
+
10
+ from together import Together, omit
11
+ from together.types import HardwareListResponse
12
+ from together.lib.cli.api._utils import handle_api_errors
13
+ from together.lib.utils.serializer import datetime_serializer
14
+
15
+
16
+ @click.command()
17
+ @click.option("--model", help="Filter hardware options by model")
18
+ @click.option("--json", is_flag=True, help="Print output in JSON format")
19
+ @click.option(
20
+ "--available",
21
+ is_flag=True,
22
+ help="Print only available hardware options (can only be used if model is passed in)",
23
+ )
24
+ @click.pass_obj
25
+ @handle_api_errors("Endpoints")
26
+ def hardware(client: Together, model: str | None, json: bool, available: bool) -> None:
27
+ """List all available hardware options, optionally filtered by model."""
28
+ hardware_options = client.hardware.list(model=model or omit)
29
+
30
+ if available:
31
+ hardware_options.data = [
32
+ hardware
33
+ for hardware in hardware_options.data
34
+ if hardware.availability is not None and hardware.availability.status == "available"
35
+ ]
36
+ if json:
37
+ json_output = [hardware.model_dump() for hardware in hardware_options.data]
38
+ click.echo(json_lib.dumps(json_output, default=datetime_serializer, indent=2))
39
+ else:
40
+ _format_hardware_options(hardware_options, show_availability=model is not None)
41
+
42
+
43
+ def _format_hardware_options(hardware_options: HardwareListResponse, show_availability: bool = True) -> None:
44
+ display_list: List[Dict[str, Any]] = []
45
+
46
+ for hw in hardware_options.data:
47
+ data = {
48
+ "Hardware ID": hw.id,
49
+ "GPU": re.sub(r"\-\d+[a-zA-Z][a-zA-Z]$", "", hw.specs.gpu_type)
50
+ if hw.specs and hw.specs.gpu_type
51
+ else "N/A",
52
+ "Memory": f"{int(hw.specs.gpu_memory)}GB" if hw.specs else "N/A",
53
+ "Count": hw.specs.gpu_count if hw.specs else "N/A",
54
+ "Price (per minute)": (f"${hw.pricing.cents_per_minute / 100:.2f}" if hw.pricing else "N/A"),
55
+ }
56
+
57
+ if show_availability:
58
+ status_display = "—"
59
+ if hw.availability:
60
+ status = hw.availability.status
61
+ # Add visual indicators for status
62
+ if status == "available":
63
+ status_display = click.style("✓ available", fg="green")
64
+ elif status == "unavailable":
65
+ status_display = click.style("✗ unavailable", fg="red")
66
+ else: # insufficient
67
+ status_display = click.style("⚠ insufficient", fg="yellow")
68
+ data["availability"] = status_display
69
+ display_list.append(data)
70
+
71
+ click.echo(tabulate(display_list, headers="keys", numalign="left"))