together 2.0.0a17__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.0a17 → together-2.0.0a18}/CHANGELOG.md +35 -0
  3. {together-2.0.0a17 → together-2.0.0a18}/PKG-INFO +11 -14
  4. {together-2.0.0a17 → together-2.0.0a18}/README.md +10 -13
  5. {together-2.0.0a17 → together-2.0.0a18}/api.md +85 -17
  6. {together-2.0.0a17 → together-2.0.0a18}/pyproject.toml +1 -1
  7. {together-2.0.0a17 → together-2.0.0a18}/src/together/_base_client.py +5 -2
  8. {together-2.0.0a17 → together-2.0.0a18}/src/together/_client.py +1 -39
  9. {together-2.0.0a17 → 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.0a17 → together-2.0.0a18}/src/together/_version.py +1 -1
  12. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/create.py +7 -3
  13. together-2.0.0a18/src/together/lib/cli/api/endpoints/hardware.py +71 -0
  14. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/models/upload.py +5 -1
  15. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/__init__.py +0 -14
  16. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/beta/__init__.py +14 -0
  17. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/beta/beta.py +32 -0
  18. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/beta/clusters/clusters.py +12 -12
  19. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/beta/clusters/storage.py +10 -10
  20. together-2.0.0a18/src/together/resources/beta/jig/__init__.py +61 -0
  21. together-2.0.0a18/src/together/resources/beta/jig/jig.py +1024 -0
  22. together-2.0.0a18/src/together/resources/beta/jig/queue.py +482 -0
  23. together-2.0.0a18/src/together/resources/beta/jig/secrets.py +548 -0
  24. together-2.0.0a18/src/together/resources/beta/jig/volumes.py +514 -0
  25. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/chat/completions.py +10 -0
  26. together-2.0.0a18/src/together/resources/models/__init__.py +33 -0
  27. {together-2.0.0a17/src/together/resources → together-2.0.0a18/src/together/resources/models}/models.py +41 -9
  28. together-2.0.0a18/src/together/resources/models/uploads.py +163 -0
  29. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/__init__.py +0 -2
  30. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/__init__.py +6 -0
  31. together-2.0.0a18/src/together/types/beta/deployment.py +261 -0
  32. together-2.0.0a18/src/together/types/beta/deployment_logs.py +11 -0
  33. together-2.0.0a18/src/together/types/beta/jig/__init__.py +20 -0
  34. together-2.0.0a18/src/together/types/beta/jig/queue_cancel_params.py +13 -0
  35. together-2.0.0a18/src/together/types/beta/jig/queue_cancel_response.py +11 -0
  36. together-2.0.0a18/src/together/types/beta/jig/queue_metrics_params.py +12 -0
  37. together-2.0.0a18/src/together/types/beta/jig/queue_metrics_response.py +8 -0
  38. together-2.0.0a18/src/together/types/beta/jig/queue_retrieve_params.py +15 -0
  39. together-2.0.0a18/src/together/types/beta/jig/queue_retrieve_response.py +35 -0
  40. together-2.0.0a18/src/together/types/beta/jig/queue_submit_params.py +19 -0
  41. together-2.0.0a18/src/together/types/beta/jig/queue_submit_response.py +25 -0
  42. together-2.0.0a18/src/together/types/beta/jig/secret.py +33 -0
  43. together-2.0.0a18/src/together/types/beta/jig/secret_create_params.py +34 -0
  44. together-2.0.0a18/src/together/types/beta/jig/secret_list_response.py +16 -0
  45. together-2.0.0a18/src/together/types/beta/jig/secret_update_params.py +34 -0
  46. together-2.0.0a18/src/together/types/beta/jig/volume.py +47 -0
  47. together-2.0.0a18/src/together/types/beta/jig/volume_create_params.py +34 -0
  48. together-2.0.0a18/src/together/types/beta/jig/volume_list_response.py +16 -0
  49. together-2.0.0a18/src/together/types/beta/jig/volume_update_params.py +34 -0
  50. together-2.0.0a18/src/together/types/beta/jig_deploy_params.py +150 -0
  51. together-2.0.0a18/src/together/types/beta/jig_list_response.py +16 -0
  52. together-2.0.0a18/src/together/types/beta/jig_retrieve_logs_params.py +15 -0
  53. together-2.0.0a18/src/together/types/beta/jig_update_params.py +141 -0
  54. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/completion_create_params.py +11 -0
  55. together-2.0.0a18/src/together/types/models/__init__.py +5 -0
  56. together-2.0.0a17/src/together/types/job_retrieve_response.py → together-2.0.0a18/src/together/types/models/upload_status_response.py +3 -3
  57. together-2.0.0a18/tests/api_resources/beta/jig/test_queue.py +315 -0
  58. together-2.0.0a18/tests/api_resources/beta/jig/test_secrets.py +412 -0
  59. together-2.0.0a18/tests/api_resources/beta/jig/test_volumes.py +426 -0
  60. together-2.0.0a18/tests/api_resources/beta/test_jig.py +616 -0
  61. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/chat/test_completions.py +4 -0
  62. together-2.0.0a18/tests/api_resources/code_interpreter/__init__.py +1 -0
  63. together-2.0.0a18/tests/api_resources/models/__init__.py +1 -0
  64. together-2.0.0a18/tests/api_resources/models/test_uploads.py +100 -0
  65. together-2.0.0a18/tests/test_utils/test_json.py +126 -0
  66. together-2.0.0a17/.release-please-manifest.json +0 -3
  67. together-2.0.0a17/src/together/lib/cli/api/endpoints/hardware.py +0 -40
  68. together-2.0.0a17/src/together/resources/jobs.py +0 -214
  69. together-2.0.0a17/src/together/types/job_list_response.py +0 -47
  70. together-2.0.0a17/tests/api_resources/test_jobs.py +0 -150
  71. {together-2.0.0a17 → together-2.0.0a18}/.gitignore +0 -0
  72. {together-2.0.0a17 → together-2.0.0a18}/CONTRIBUTING.md +0 -0
  73. {together-2.0.0a17 → together-2.0.0a18}/LICENSE +0 -0
  74. {together-2.0.0a17 → together-2.0.0a18}/SECURITY.md +0 -0
  75. {together-2.0.0a17 → together-2.0.0a18}/bin/check-release-environment +0 -0
  76. {together-2.0.0a17 → together-2.0.0a18}/bin/publish-pypi +0 -0
  77. {together-2.0.0a17 → together-2.0.0a18}/examples/.keep +0 -0
  78. {together-2.0.0a17 → together-2.0.0a18}/examples/coqa-small.jsonl +0 -0
  79. {together-2.0.0a17 → together-2.0.0a18}/examples/coqa.jsonl +0 -0
  80. {together-2.0.0a17 → together-2.0.0a18}/examples/embedding.py +0 -0
  81. {together-2.0.0a17 → together-2.0.0a18}/examples/file-upload.py +0 -0
  82. {together-2.0.0a17 → together-2.0.0a18}/examples/files.py +0 -0
  83. {together-2.0.0a17 → together-2.0.0a18}/examples/fine_tuning.py +0 -0
  84. {together-2.0.0a17 → together-2.0.0a18}/examples/image.py +0 -0
  85. {together-2.0.0a17 → together-2.0.0a18}/examples/models.py +0 -0
  86. {together-2.0.0a17 → together-2.0.0a18}/examples/streaming.py +0 -0
  87. {together-2.0.0a17 → together-2.0.0a18}/examples/tokenize_data.py +0 -0
  88. {together-2.0.0a17 → together-2.0.0a18}/release-please-config.json +0 -0
  89. {together-2.0.0a17 → together-2.0.0a18}/requirements-dev.lock +0 -0
  90. {together-2.0.0a17 → together-2.0.0a18}/src/together/__init__.py +0 -0
  91. {together-2.0.0a17 → together-2.0.0a18}/src/together/_constants.py +0 -0
  92. {together-2.0.0a17 → together-2.0.0a18}/src/together/_exceptions.py +0 -0
  93. {together-2.0.0a17 → together-2.0.0a18}/src/together/_files.py +0 -0
  94. {together-2.0.0a17 → together-2.0.0a18}/src/together/_models.py +0 -0
  95. {together-2.0.0a17 → together-2.0.0a18}/src/together/_qs.py +0 -0
  96. {together-2.0.0a17 → together-2.0.0a18}/src/together/_resource.py +0 -0
  97. {together-2.0.0a17 → together-2.0.0a18}/src/together/_response.py +0 -0
  98. {together-2.0.0a17 → together-2.0.0a18}/src/together/_streaming.py +0 -0
  99. {together-2.0.0a17 → together-2.0.0a18}/src/together/_types.py +0 -0
  100. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/__init__.py +0 -0
  101. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_compat.py +0 -0
  102. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_datetime_parse.py +0 -0
  103. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_logs.py +0 -0
  104. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_proxy.py +0 -0
  105. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_reflection.py +0 -0
  106. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_resources_proxy.py +0 -0
  107. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_streams.py +0 -0
  108. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_sync.py +0 -0
  109. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_transform.py +0 -0
  110. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_typing.py +0 -0
  111. {together-2.0.0a17 → together-2.0.0a18}/src/together/_utils/_utils.py +0 -0
  112. {together-2.0.0a17 → together-2.0.0a18}/src/together/constants.py +0 -0
  113. {together-2.0.0a17 → together-2.0.0a18}/src/together/error.py +0 -0
  114. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/.keep +0 -0
  115. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/__init__.py +0 -0
  116. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/_google_colab.py +0 -0
  117. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/__init__.py +0 -0
  118. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/_utils.py +0 -0
  119. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/__init__.py +0 -0
  120. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/__init__.py +0 -0
  121. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/create.py +0 -0
  122. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/delete.py +0 -0
  123. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/get_credentials.py +0 -0
  124. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/list.py +0 -0
  125. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/list_regions.py +0 -0
  126. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/retrieve.py +0 -0
  127. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/__init__.py +0 -0
  128. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/create.py +0 -0
  129. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/delete.py +0 -0
  130. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/list.py +0 -0
  131. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/storage/retrieve.py +0 -0
  132. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/beta/clusters/update.py +0 -0
  133. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/__init__.py +0 -0
  134. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/availability_zones.py +0 -0
  135. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/delete.py +0 -0
  136. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/list.py +0 -0
  137. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/retrieve.py +0 -0
  138. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/start.py +0 -0
  139. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/stop.py +0 -0
  140. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/endpoints/update.py +0 -0
  141. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/evals/__init__.py +0 -0
  142. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/evals/create.py +0 -0
  143. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/evals/list.py +0 -0
  144. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/evals/retrieve.py +0 -0
  145. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/evals/status.py +0 -0
  146. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/files/__init__.py +0 -0
  147. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/files/check.py +0 -0
  148. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/files/delete.py +0 -0
  149. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/files/list.py +0 -0
  150. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/files/retrieve.py +0 -0
  151. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/files/retrieve_content.py +0 -0
  152. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/files/upload.py +0 -0
  153. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/__init__.py +0 -0
  154. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/cancel.py +0 -0
  155. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/create.py +0 -0
  156. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/delete.py +0 -0
  157. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/download.py +0 -0
  158. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/list.py +0 -0
  159. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/list_checkpoints.py +0 -0
  160. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/list_events.py +0 -0
  161. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/fine_tuning/retrieve.py +0 -0
  162. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/models/__init__.py +0 -0
  163. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/cli/api/models/list.py +0 -0
  164. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/constants.py +0 -0
  165. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/resources/__init__.py +0 -0
  166. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/resources/files.py +0 -0
  167. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/resources/fine_tuning.py +0 -0
  168. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/types/__init__.py +0 -0
  169. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/types/error.py +0 -0
  170. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/types/fine_tuning.py +0 -0
  171. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/utils/__init__.py +0 -0
  172. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/utils/_log.py +0 -0
  173. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/utils/files.py +0 -0
  174. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/utils/serializer.py +0 -0
  175. {together-2.0.0a17 → together-2.0.0a18}/src/together/lib/utils/tools.py +0 -0
  176. {together-2.0.0a17 → together-2.0.0a18}/src/together/py.typed +0 -0
  177. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/audio/__init__.py +0 -0
  178. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/audio/audio.py +0 -0
  179. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/audio/speech.py +0 -0
  180. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/audio/transcriptions.py +0 -0
  181. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/audio/translations.py +0 -0
  182. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/audio/voices.py +0 -0
  183. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/batches.py +0 -0
  184. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/beta/clusters/__init__.py +0 -0
  185. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/chat/__init__.py +0 -0
  186. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/chat/chat.py +0 -0
  187. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/code_interpreter/__init__.py +0 -0
  188. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/code_interpreter/code_interpreter.py +0 -0
  189. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/code_interpreter/sessions.py +0 -0
  190. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/completions.py +0 -0
  191. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/embeddings.py +0 -0
  192. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/endpoints.py +0 -0
  193. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/evals.py +0 -0
  194. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/files.py +0 -0
  195. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/fine_tuning.py +0 -0
  196. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/hardware.py +0 -0
  197. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/images.py +0 -0
  198. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/rerank.py +0 -0
  199. {together-2.0.0a17 → together-2.0.0a18}/src/together/resources/videos.py +0 -0
  200. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio/__init__.py +0 -0
  201. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio/speech_create_params.py +0 -0
  202. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio/transcription_create_params.py +0 -0
  203. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio/transcription_create_response.py +0 -0
  204. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio/translation_create_params.py +0 -0
  205. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio/translation_create_response.py +0 -0
  206. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio/voice_list_response.py +0 -0
  207. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/audio_speech_stream_chunk.py +0 -0
  208. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/autoscaling.py +0 -0
  209. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/autoscaling_param.py +0 -0
  210. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/batch_create_params.py +0 -0
  211. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/batch_create_response.py +0 -0
  212. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/batch_job.py +0 -0
  213. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/batch_list_response.py +0 -0
  214. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/cluster.py +0 -0
  215. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/cluster_create_params.py +0 -0
  216. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/cluster_delete_response.py +0 -0
  217. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/cluster_list_regions_response.py +0 -0
  218. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/cluster_list_response.py +0 -0
  219. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/cluster_update_params.py +0 -0
  220. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/clusters/__init__.py +0 -0
  221. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/clusters/cluster_storage.py +0 -0
  222. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/clusters/storage_create_params.py +0 -0
  223. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/clusters/storage_delete_response.py +0 -0
  224. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/clusters/storage_list_response.py +0 -0
  225. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/beta/clusters/storage_update_params.py +0 -0
  226. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/__init__.py +0 -0
  227. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/chat_completion.py +0 -0
  228. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/chat_completion_chunk.py +0 -0
  229. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/chat_completion_structured_message_image_url_param.py +0 -0
  230. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/chat_completion_structured_message_text_param.py +0 -0
  231. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/chat_completion_structured_message_video_url_param.py +0 -0
  232. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/chat_completion_usage.py +0 -0
  233. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat/chat_completion_warning.py +0 -0
  234. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/chat_completions.py +0 -0
  235. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/code_interpreter/__init__.py +0 -0
  236. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/code_interpreter/session_list_response.py +0 -0
  237. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/code_interpreter_execute_params.py +0 -0
  238. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/completion.py +0 -0
  239. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/completion_chunk.py +0 -0
  240. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/completion_create_params.py +0 -0
  241. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/dedicated_endpoint.py +0 -0
  242. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/embedding.py +0 -0
  243. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/embedding_create_params.py +0 -0
  244. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/endpoint_create_params.py +0 -0
  245. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/endpoint_list_avzones_response.py +0 -0
  246. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/endpoint_list_params.py +0 -0
  247. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/endpoint_list_response.py +0 -0
  248. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/endpoint_update_params.py +0 -0
  249. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/endpoints.py +0 -0
  250. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/eval_create_params.py +0 -0
  251. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/eval_create_response.py +0 -0
  252. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/eval_list_params.py +0 -0
  253. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/eval_list_response.py +0 -0
  254. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/eval_status_response.py +0 -0
  255. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/evaluation_job.py +0 -0
  256. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/execute_response.py +0 -0
  257. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/file_delete_response.py +0 -0
  258. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/file_list.py +0 -0
  259. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/file_purpose.py +0 -0
  260. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/file_response.py +0 -0
  261. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/file_type.py +0 -0
  262. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/files.py +0 -0
  263. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_cancel_response.py +0 -0
  264. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_content_params.py +0 -0
  265. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_delete_params.py +0 -0
  266. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_delete_response.py +0 -0
  267. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_estimate_price_params.py +0 -0
  268. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_estimate_price_response.py +0 -0
  269. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_list_checkpoints_response.py +0 -0
  270. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_list_events_response.py +0 -0
  271. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/fine_tuning_list_response.py +0 -0
  272. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/finetune.py +0 -0
  273. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/finetune_event.py +0 -0
  274. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/finetune_event_type.py +0 -0
  275. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/finetune_response.py +0 -0
  276. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/hardware_list_params.py +0 -0
  277. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/hardware_list_response.py +0 -0
  278. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/image_data_b64.py +0 -0
  279. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/image_data_url.py +0 -0
  280. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/image_file.py +0 -0
  281. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/image_generate_params.py +0 -0
  282. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/log_probs.py +0 -0
  283. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/model_list_params.py +0 -0
  284. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/model_list_response.py +0 -0
  285. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/model_object.py +0 -0
  286. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/model_upload_params.py +0 -0
  287. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/model_upload_response.py +0 -0
  288. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/models.py +0 -0
  289. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/rerank_create_params.py +0 -0
  290. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/rerank_create_response.py +0 -0
  291. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/tool_choice.py +0 -0
  292. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/tool_choice_param.py +0 -0
  293. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/tools_param.py +0 -0
  294. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/training_method_dpo.py +0 -0
  295. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/training_method_sft.py +0 -0
  296. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/video_create_params.py +0 -0
  297. {together-2.0.0a17 → together-2.0.0a18}/src/together/types/video_job.py +0 -0
  298. {together-2.0.0a17 → together-2.0.0a18}/tests/__init__.py +0 -0
  299. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/__init__.py +0 -0
  300. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/audio/__init__.py +0 -0
  301. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/audio/test_speech.py +0 -0
  302. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/audio/test_transcriptions.py +0 -0
  303. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/audio/test_translations.py +0 -0
  304. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/audio/test_voices.py +0 -0
  305. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/beta/__init__.py +0 -0
  306. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/beta/clusters/__init__.py +0 -0
  307. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/beta/clusters/test_storage.py +0 -0
  308. {together-2.0.0a17/tests/api_resources/chat → together-2.0.0a18/tests/api_resources/beta/jig}/__init__.py +0 -0
  309. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/beta/test_clusters.py +0 -0
  310. {together-2.0.0a17/tests/api_resources/code_interpreter → together-2.0.0a18/tests/api_resources/chat}/__init__.py +0 -0
  311. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/code_interpreter/test_sessions.py +0 -0
  312. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_batches.py +0 -0
  313. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_code_interpreter.py +0 -0
  314. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_completions.py +0 -0
  315. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_embeddings.py +0 -0
  316. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_endpoints.py +0 -0
  317. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_evals.py +0 -0
  318. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_files.py +0 -0
  319. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_fine_tuning.py +0 -0
  320. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_hardware.py +0 -0
  321. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_images.py +0 -0
  322. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_models.py +0 -0
  323. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_rerank.py +0 -0
  324. {together-2.0.0a17 → together-2.0.0a18}/tests/api_resources/test_videos.py +0 -0
  325. {together-2.0.0a17 → together-2.0.0a18}/tests/conftest.py +0 -0
  326. {together-2.0.0a17 → together-2.0.0a18}/tests/integration/__init__.py +0 -0
  327. {together-2.0.0a17 → together-2.0.0a18}/tests/integration/constants.py +0 -0
  328. {together-2.0.0a17 → together-2.0.0a18}/tests/integration/resources/__init__.py +0 -0
  329. {together-2.0.0a17 → together-2.0.0a18}/tests/integration/resources/generate_hyperparameters.py +0 -0
  330. {together-2.0.0a17 → together-2.0.0a18}/tests/integration/resources/test_completion.py +0 -0
  331. {together-2.0.0a17 → together-2.0.0a18}/tests/integration/resources/test_completion_stream.py +0 -0
  332. {together-2.0.0a17 → together-2.0.0a18}/tests/integration/resources/test_files.py +0 -0
  333. {together-2.0.0a17 → together-2.0.0a18}/tests/sample_file.txt +0 -0
  334. {together-2.0.0a17 → together-2.0.0a18}/tests/test_cli_utils.py +0 -0
  335. {together-2.0.0a17 → together-2.0.0a18}/tests/test_client.py +0 -0
  336. {together-2.0.0a17 → together-2.0.0a18}/tests/test_deepcopy.py +0 -0
  337. {together-2.0.0a17 → together-2.0.0a18}/tests/test_extract_files.py +0 -0
  338. {together-2.0.0a17 → together-2.0.0a18}/tests/test_files.py +0 -0
  339. {together-2.0.0a17 → together-2.0.0a18}/tests/test_models.py +0 -0
  340. {together-2.0.0a17 → together-2.0.0a18}/tests/test_qs.py +0 -0
  341. {together-2.0.0a17 → together-2.0.0a18}/tests/test_required_args.py +0 -0
  342. {together-2.0.0a17 → together-2.0.0a18}/tests/test_response.py +0 -0
  343. {together-2.0.0a17 → together-2.0.0a18}/tests/test_streaming.py +0 -0
  344. {together-2.0.0a17 → together-2.0.0a18}/tests/test_transform.py +0 -0
  345. {together-2.0.0a17 → together-2.0.0a18}/tests/test_utils/test_datetime_parse.py +0 -0
  346. {together-2.0.0a17 → together-2.0.0a18}/tests/test_utils/test_proxy.py +0 -0
  347. {together-2.0.0a17 → together-2.0.0a18}/tests/test_utils/test_typing.py +0 -0
  348. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_async_client.py +0 -0
  349. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_client.py +0 -0
  350. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_code_interpreter.py +0 -0
  351. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_files_checks.py +0 -0
  352. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_files_resource.py +0 -0
  353. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_fine_tuning_resources.py +0 -0
  354. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_imports.py +0 -0
  355. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_multipart_upload_manager.py +0 -0
  356. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_preference_openai.py +0 -0
  357. {together-2.0.0a17 → together-2.0.0a18}/tests/unit/test_video_url.py +0 -0
  358. {together-2.0.0a17 → together-2.0.0a18}/tests/utils.py +0 -0
  359. {together-2.0.0a17 → together-2.0.0a18}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "2.0.0-alpha.18"
3
+ }
@@ -1,5 +1,40 @@
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
+
3
38
  ## 2.0.0-alpha.17 (2026-01-21)
4
39
 
5
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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: together
3
- Version: 2.0.0a17
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.17"
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.17" # 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
@@ -124,8 +123,13 @@ def create(
124
123
  extra_query={"availability_zone": availability_zone or omit},
125
124
  )
126
125
  except APIError as e:
127
- if "check the hardware api" in str(e.args[0]).lower() or "invalid hardware provided" in str(e.args[0]).lower():
128
- 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:")
129
133
  ctx.invoke(hardware, available=True, model=model, json=False)
130
134
  sys.exit(1)
131
135
  raise e
@@ -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"))
@@ -3,7 +3,7 @@ from typing import Literal, Optional
3
3
 
4
4
  import click
5
5
 
6
- from together import Together, omit
6
+ from together import Together, TogetherError, omit
7
7
  from together._response import APIResponse as APIResponse
8
8
  from together.lib.cli.api._utils import handle_api_errors
9
9
  from together.types.model_upload_response import ModelUploadResponse
@@ -76,6 +76,10 @@ def upload(
76
76
  if json:
77
77
  click.echo(json_lib.dumps(response.model_dump(), indent=2))
78
78
  else:
79
+ # If the model weights already exist, the api is returning 200 but with no data
80
+ if response.data is None: # type: ignore
81
+ raise TogetherError(response.message)
82
+
79
83
  click.echo(f"Model upload job created successfully!")
80
84
  if response.data.job_id:
81
85
  click.echo(f"Job ID: {response.data.job_id}")
@@ -16,14 +16,6 @@ from .chat import (
16
16
  ChatResourceWithStreamingResponse,
17
17
  AsyncChatResourceWithStreamingResponse,
18
18
  )
19
- from .jobs import (
20
- JobsResource,
21
- AsyncJobsResource,
22
- JobsResourceWithRawResponse,
23
- AsyncJobsResourceWithRawResponse,
24
- JobsResourceWithStreamingResponse,
25
- AsyncJobsResourceWithStreamingResponse,
26
- )
27
19
  from .audio import (
28
20
  AudioResource,
29
21
  AsyncAudioResource,
@@ -204,12 +196,6 @@ __all__ = [
204
196
  "AsyncModelsResourceWithRawResponse",
205
197
  "ModelsResourceWithStreamingResponse",
206
198
  "AsyncModelsResourceWithStreamingResponse",
207
- "JobsResource",
208
- "AsyncJobsResource",
209
- "JobsResourceWithRawResponse",
210
- "AsyncJobsResourceWithRawResponse",
211
- "JobsResourceWithStreamingResponse",
212
- "AsyncJobsResourceWithStreamingResponse",
213
199
  "EndpointsResource",
214
200
  "AsyncEndpointsResource",
215
201
  "EndpointsResourceWithRawResponse",