together 2.0.0a11__tar.gz → 2.0.0a13__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 (246) hide show
  1. together-2.0.0a13/.release-please-manifest.json +3 -0
  2. {together-2.0.0a11 → together-2.0.0a13}/CHANGELOG.md +33 -0
  3. {together-2.0.0a11 → together-2.0.0a13}/LICENSE +1 -1
  4. {together-2.0.0a11 → together-2.0.0a13}/PKG-INFO +3 -3
  5. {together-2.0.0a11 → together-2.0.0a13}/README.md +2 -2
  6. {together-2.0.0a11 → together-2.0.0a13}/pyproject.toml +1 -1
  7. {together-2.0.0a11 → together-2.0.0a13}/src/together/_base_client.py +1 -1
  8. {together-2.0.0a11 → together-2.0.0a13}/src/together/_version.py +1 -1
  9. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/api/fine_tuning.py +14 -6
  10. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/api/utils.py +5 -13
  11. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/constants.py +6 -0
  12. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/resources/fine_tuning.py +15 -1
  13. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/types/fine_tuning.py +17 -0
  14. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/utils/files.py +187 -29
  15. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/chat/completions.py +20 -0
  16. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/fine_tuning.py +25 -17
  17. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/completion_create_params.py +4 -0
  18. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/finetune_response.py +11 -0
  19. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/chat/test_completions.py +8 -0
  20. {together-2.0.0a11 → together-2.0.0a13}/tests/test_cli_utils.py +21 -57
  21. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_files_checks.py +106 -0
  22. {together-2.0.0a11 → together-2.0.0a13}/uv.lock +1 -1
  23. together-2.0.0a11/.release-please-manifest.json +0 -3
  24. {together-2.0.0a11 → together-2.0.0a13}/.gitignore +0 -0
  25. {together-2.0.0a11 → together-2.0.0a13}/CONTRIBUTING.md +0 -0
  26. {together-2.0.0a11 → together-2.0.0a13}/SECURITY.md +0 -0
  27. {together-2.0.0a11 → together-2.0.0a13}/api.md +0 -0
  28. {together-2.0.0a11 → together-2.0.0a13}/bin/check-release-environment +0 -0
  29. {together-2.0.0a11 → together-2.0.0a13}/bin/publish-pypi +0 -0
  30. {together-2.0.0a11 → together-2.0.0a13}/examples/.keep +0 -0
  31. {together-2.0.0a11 → together-2.0.0a13}/examples/coqa-small.jsonl +0 -0
  32. {together-2.0.0a11 → together-2.0.0a13}/examples/coqa.jsonl +0 -0
  33. {together-2.0.0a11 → together-2.0.0a13}/examples/embedding.py +0 -0
  34. {together-2.0.0a11 → together-2.0.0a13}/examples/file-upload.py +0 -0
  35. {together-2.0.0a11 → together-2.0.0a13}/examples/files.py +0 -0
  36. {together-2.0.0a11 → together-2.0.0a13}/examples/fine_tuning.py +0 -0
  37. {together-2.0.0a11 → together-2.0.0a13}/examples/image.py +0 -0
  38. {together-2.0.0a11 → together-2.0.0a13}/examples/models.py +0 -0
  39. {together-2.0.0a11 → together-2.0.0a13}/examples/streaming.py +0 -0
  40. {together-2.0.0a11 → together-2.0.0a13}/release-please-config.json +0 -0
  41. {together-2.0.0a11 → together-2.0.0a13}/requirements-dev.lock +0 -0
  42. {together-2.0.0a11 → together-2.0.0a13}/src/together/__init__.py +0 -0
  43. {together-2.0.0a11 → together-2.0.0a13}/src/together/_client.py +0 -0
  44. {together-2.0.0a11 → together-2.0.0a13}/src/together/_compat.py +0 -0
  45. {together-2.0.0a11 → together-2.0.0a13}/src/together/_constants.py +0 -0
  46. {together-2.0.0a11 → together-2.0.0a13}/src/together/_exceptions.py +0 -0
  47. {together-2.0.0a11 → together-2.0.0a13}/src/together/_files.py +0 -0
  48. {together-2.0.0a11 → together-2.0.0a13}/src/together/_models.py +0 -0
  49. {together-2.0.0a11 → together-2.0.0a13}/src/together/_qs.py +0 -0
  50. {together-2.0.0a11 → together-2.0.0a13}/src/together/_resource.py +0 -0
  51. {together-2.0.0a11 → together-2.0.0a13}/src/together/_response.py +0 -0
  52. {together-2.0.0a11 → together-2.0.0a13}/src/together/_streaming.py +0 -0
  53. {together-2.0.0a11 → together-2.0.0a13}/src/together/_types.py +0 -0
  54. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/__init__.py +0 -0
  55. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_compat.py +0 -0
  56. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_datetime_parse.py +0 -0
  57. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_logs.py +0 -0
  58. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_proxy.py +0 -0
  59. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_reflection.py +0 -0
  60. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_resources_proxy.py +0 -0
  61. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_streams.py +0 -0
  62. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_sync.py +0 -0
  63. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_transform.py +0 -0
  64. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_typing.py +0 -0
  65. {together-2.0.0a11 → together-2.0.0a13}/src/together/_utils/_utils.py +0 -0
  66. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/.keep +0 -0
  67. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/__init__.py +0 -0
  68. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/__init__.py +0 -0
  69. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/api/__init__.py +0 -0
  70. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/api/endpoints.py +0 -0
  71. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/api/evals.py +0 -0
  72. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/api/files.py +0 -0
  73. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/api/models.py +0 -0
  74. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/cli/cli.py +0 -0
  75. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/resources/__init__.py +0 -0
  76. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/resources/files.py +0 -0
  77. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/types/__init__.py +0 -0
  78. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/types/error.py +0 -0
  79. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/utils/__init__.py +0 -0
  80. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/utils/_log.py +0 -0
  81. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/utils/serializer.py +0 -0
  82. {together-2.0.0a11 → together-2.0.0a13}/src/together/lib/utils/tools.py +0 -0
  83. {together-2.0.0a11 → together-2.0.0a13}/src/together/py.typed +0 -0
  84. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/__init__.py +0 -0
  85. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/audio/__init__.py +0 -0
  86. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/audio/audio.py +0 -0
  87. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/audio/speech.py +0 -0
  88. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/audio/transcriptions.py +0 -0
  89. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/audio/translations.py +0 -0
  90. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/audio/voices.py +0 -0
  91. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/batches.py +0 -0
  92. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/chat/__init__.py +0 -0
  93. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/chat/chat.py +0 -0
  94. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/code_interpreter/__init__.py +0 -0
  95. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/code_interpreter/code_interpreter.py +0 -0
  96. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/code_interpreter/sessions.py +0 -0
  97. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/completions.py +0 -0
  98. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/embeddings.py +0 -0
  99. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/endpoints.py +0 -0
  100. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/evals.py +0 -0
  101. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/files.py +0 -0
  102. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/hardware.py +0 -0
  103. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/images.py +0 -0
  104. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/jobs.py +0 -0
  105. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/models.py +0 -0
  106. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/rerank.py +0 -0
  107. {together-2.0.0a11 → together-2.0.0a13}/src/together/resources/videos.py +0 -0
  108. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/__init__.py +0 -0
  109. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio/__init__.py +0 -0
  110. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio/speech_create_params.py +0 -0
  111. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio/transcription_create_params.py +0 -0
  112. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio/transcription_create_response.py +0 -0
  113. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio/translation_create_params.py +0 -0
  114. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio/translation_create_response.py +0 -0
  115. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio/voice_list_response.py +0 -0
  116. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/audio_speech_stream_chunk.py +0 -0
  117. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/autoscaling.py +0 -0
  118. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/autoscaling_param.py +0 -0
  119. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/batch_create_params.py +0 -0
  120. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/batch_create_response.py +0 -0
  121. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/batch_job.py +0 -0
  122. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/batch_list_response.py +0 -0
  123. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/__init__.py +0 -0
  124. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/chat_completion.py +0 -0
  125. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/chat_completion_chunk.py +0 -0
  126. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/chat_completion_structured_message_image_url_param.py +0 -0
  127. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/chat_completion_structured_message_text_param.py +0 -0
  128. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/chat_completion_structured_message_video_url_param.py +0 -0
  129. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/chat_completion_usage.py +0 -0
  130. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/chat/chat_completion_warning.py +0 -0
  131. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/code_interpreter/__init__.py +0 -0
  132. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/code_interpreter/session_list_response.py +0 -0
  133. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/code_interpreter_execute_params.py +0 -0
  134. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/completion.py +0 -0
  135. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/completion_chunk.py +0 -0
  136. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/completion_create_params.py +0 -0
  137. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/dedicated_endpoint.py +0 -0
  138. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/embedding.py +0 -0
  139. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/embedding_create_params.py +0 -0
  140. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/endpoint_create_params.py +0 -0
  141. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/endpoint_list_avzones_response.py +0 -0
  142. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/endpoint_list_params.py +0 -0
  143. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/endpoint_list_response.py +0 -0
  144. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/endpoint_update_params.py +0 -0
  145. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/eval_create_params.py +0 -0
  146. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/eval_create_response.py +0 -0
  147. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/eval_list_params.py +0 -0
  148. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/eval_list_response.py +0 -0
  149. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/eval_status_response.py +0 -0
  150. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/evaluation_job.py +0 -0
  151. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/execute_response.py +0 -0
  152. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/file_delete_response.py +0 -0
  153. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/file_list.py +0 -0
  154. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/file_purpose.py +0 -0
  155. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/file_response.py +0 -0
  156. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/file_type.py +0 -0
  157. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_cancel_response.py +0 -0
  158. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_content_params.py +0 -0
  159. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_delete_params.py +0 -0
  160. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_delete_response.py +0 -0
  161. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_estimate_price_params.py +0 -0
  162. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_estimate_price_response.py +0 -0
  163. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_list_checkpoints_response.py +0 -0
  164. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_list_events_response.py +0 -0
  165. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/fine_tuning_list_response.py +0 -0
  166. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/finetune_event.py +0 -0
  167. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/finetune_event_type.py +0 -0
  168. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/hardware_list_params.py +0 -0
  169. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/hardware_list_response.py +0 -0
  170. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/image_data_b64.py +0 -0
  171. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/image_data_url.py +0 -0
  172. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/image_file.py +0 -0
  173. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/image_generate_params.py +0 -0
  174. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/job_list_response.py +0 -0
  175. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/job_retrieve_response.py +0 -0
  176. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/log_probs.py +0 -0
  177. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/model_list_params.py +0 -0
  178. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/model_list_response.py +0 -0
  179. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/model_object.py +0 -0
  180. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/model_upload_params.py +0 -0
  181. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/model_upload_response.py +0 -0
  182. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/rerank_create_params.py +0 -0
  183. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/rerank_create_response.py +0 -0
  184. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/tool_choice.py +0 -0
  185. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/tool_choice_param.py +0 -0
  186. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/tools_param.py +0 -0
  187. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/training_method_dpo.py +0 -0
  188. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/training_method_sft.py +0 -0
  189. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/video_create_params.py +0 -0
  190. {together-2.0.0a11 → together-2.0.0a13}/src/together/types/video_job.py +0 -0
  191. {together-2.0.0a11 → together-2.0.0a13}/tests/__init__.py +0 -0
  192. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/__init__.py +0 -0
  193. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/audio/__init__.py +0 -0
  194. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/audio/test_speech.py +0 -0
  195. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/audio/test_transcriptions.py +0 -0
  196. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/audio/test_translations.py +0 -0
  197. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/audio/test_voices.py +0 -0
  198. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/chat/__init__.py +0 -0
  199. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/code_interpreter/__init__.py +0 -0
  200. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/code_interpreter/test_sessions.py +0 -0
  201. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_batches.py +0 -0
  202. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_code_interpreter.py +0 -0
  203. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_completions.py +0 -0
  204. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_embeddings.py +0 -0
  205. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_endpoints.py +0 -0
  206. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_evals.py +0 -0
  207. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_files.py +0 -0
  208. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_fine_tuning.py +0 -0
  209. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_hardware.py +0 -0
  210. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_images.py +0 -0
  211. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_jobs.py +0 -0
  212. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_models.py +0 -0
  213. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_rerank.py +0 -0
  214. {together-2.0.0a11 → together-2.0.0a13}/tests/api_resources/test_videos.py +0 -0
  215. {together-2.0.0a11 → together-2.0.0a13}/tests/conftest.py +0 -0
  216. {together-2.0.0a11 → together-2.0.0a13}/tests/integration/__init__.py +0 -0
  217. {together-2.0.0a11 → together-2.0.0a13}/tests/integration/constants.py +0 -0
  218. {together-2.0.0a11 → together-2.0.0a13}/tests/integration/resources/__init__.py +0 -0
  219. {together-2.0.0a11 → together-2.0.0a13}/tests/integration/resources/generate_hyperparameters.py +0 -0
  220. {together-2.0.0a11 → together-2.0.0a13}/tests/integration/resources/test_completion.py +0 -0
  221. {together-2.0.0a11 → together-2.0.0a13}/tests/integration/resources/test_completion_stream.py +0 -0
  222. {together-2.0.0a11 → together-2.0.0a13}/tests/integration/resources/test_files.py +0 -0
  223. {together-2.0.0a11 → together-2.0.0a13}/tests/sample_file.txt +0 -0
  224. {together-2.0.0a11 → together-2.0.0a13}/tests/test_client.py +0 -0
  225. {together-2.0.0a11 → together-2.0.0a13}/tests/test_deepcopy.py +0 -0
  226. {together-2.0.0a11 → together-2.0.0a13}/tests/test_extract_files.py +0 -0
  227. {together-2.0.0a11 → together-2.0.0a13}/tests/test_files.py +0 -0
  228. {together-2.0.0a11 → together-2.0.0a13}/tests/test_models.py +0 -0
  229. {together-2.0.0a11 → together-2.0.0a13}/tests/test_qs.py +0 -0
  230. {together-2.0.0a11 → together-2.0.0a13}/tests/test_required_args.py +0 -0
  231. {together-2.0.0a11 → together-2.0.0a13}/tests/test_response.py +0 -0
  232. {together-2.0.0a11 → together-2.0.0a13}/tests/test_streaming.py +0 -0
  233. {together-2.0.0a11 → together-2.0.0a13}/tests/test_transform.py +0 -0
  234. {together-2.0.0a11 → together-2.0.0a13}/tests/test_utils/test_datetime_parse.py +0 -0
  235. {together-2.0.0a11 → together-2.0.0a13}/tests/test_utils/test_proxy.py +0 -0
  236. {together-2.0.0a11 → together-2.0.0a13}/tests/test_utils/test_typing.py +0 -0
  237. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_async_client.py +0 -0
  238. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_client.py +0 -0
  239. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_code_interpreter.py +0 -0
  240. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_files_resource.py +0 -0
  241. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_fine_tuning_resources.py +0 -0
  242. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_imports.py +0 -0
  243. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_multipart_upload_manager.py +0 -0
  244. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_preference_openai.py +0 -0
  245. {together-2.0.0a11 → together-2.0.0a13}/tests/unit/test_video_url.py +0 -0
  246. {together-2.0.0a11 → together-2.0.0a13}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "2.0.0-alpha.13"
3
+ }
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.0-alpha.13 (2026-01-06)
4
+
5
+ Full Changelog: [v2.0.0-alpha.12...v2.0.0-alpha.13](https://github.com/togethercomputer/together-py/compare/v2.0.0-alpha.12...v2.0.0-alpha.13)
6
+
7
+ ### Features
8
+
9
+ * Add compliance and chat_template_kwargs to chat completions spec ([e6fed17](https://github.com/togethercomputer/together-py/commit/e6fed17708d9c58b30f7c46279fae8be3e143e8d))
10
+
11
+ ## 2.0.0-alpha.12 (2026-01-05)
12
+
13
+ Full Changelog: [v2.0.0-alpha.11...v2.0.0-alpha.12](https://github.com/togethercomputer/together-py/compare/v2.0.0-alpha.11...v2.0.0-alpha.12)
14
+
15
+ ### Features
16
+
17
+ * Support VLM finetuning ([e4428b3](https://github.com/togethercomputer/together-py/commit/e4428b3c86080286643b0e287ff02ac6b8cd3864))
18
+ * VLM Support update ([97c74a3](https://github.com/togethercomputer/together-py/commit/97c74a38da1ea0a7717b0172f5cd65bb85bcaee4))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * use async_to_httpx_files in patch method ([dc293e6](https://github.com/togethercomputer/together-py/commit/dc293e68b49cce5b0c8437e94152e369bb09b625))
24
+
25
+
26
+ ### Chores
27
+
28
+ * **internal:** add `--fix` argument to lint script ([c29463d](https://github.com/togethercomputer/together-py/commit/c29463dbe8a18fa02bf436ae4cbdd6b59644e641))
29
+ * **internal:** codegen related update ([f7499fc](https://github.com/togethercomputer/together-py/commit/f7499fcd931834fcd16210cd25e14dc5b328fb0e))
30
+
31
+
32
+ ### Documentation
33
+
34
+ * add more examples ([a048344](https://github.com/togethercomputer/together-py/commit/a048344c0daeeab4d7fefd41d3554bde860dd9d5))
35
+
3
36
  ## 2.0.0-alpha.11 (2025-12-16)
4
37
 
5
38
  Full Changelog: [v2.0.0-alpha.10...v2.0.0-alpha.11](https://github.com/togethercomputer/together-py/compare/v2.0.0-alpha.10...v2.0.0-alpha.11)
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2025 Together
189
+ Copyright 2026 Together
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: together
3
- Version: 2.0.0a11
3
+ Version: 2.0.0a13
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
@@ -183,7 +183,7 @@ stream = client.chat.completions.create(
183
183
  messages=[
184
184
  {
185
185
  "role": "user",
186
- "content": "Say this is a test",
186
+ "content": "Say this is a test!",
187
187
  }
188
188
  ],
189
189
  model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
@@ -204,7 +204,7 @@ stream = await client.chat.completions.create(
204
204
  messages=[
205
205
  {
206
206
  "role": "user",
207
- "content": "Say this is a test",
207
+ "content": "Say this is a test!",
208
208
  }
209
209
  ],
210
210
  model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
@@ -137,7 +137,7 @@ stream = client.chat.completions.create(
137
137
  messages=[
138
138
  {
139
139
  "role": "user",
140
- "content": "Say this is a test",
140
+ "content": "Say this is a test!",
141
141
  }
142
142
  ],
143
143
  model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
@@ -158,7 +158,7 @@ stream = await client.chat.completions.create(
158
158
  messages=[
159
159
  {
160
160
  "role": "user",
161
- "content": "Say this is a test",
161
+ "content": "Say this is a test!",
162
162
  }
163
163
  ],
164
164
  model="meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "together"
3
- version = "2.0.0-alpha.11"
3
+ version = "2.0.0-alpha.13"
4
4
  description = "The official Python library for the together API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -1774,7 +1774,7 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
1774
1774
  options: RequestOptions = {},
1775
1775
  ) -> ResponseT:
1776
1776
  opts = FinalRequestOptions.construct(
1777
- method="patch", url=path, json_data=body, files=to_httpx_files(files), **options
1777
+ method="patch", url=path, json_data=body, files=await async_to_httpx_files(files), **options
1778
1778
  )
1779
1779
  return await self.request(cast_to, opts)
1780
1780
 
@@ -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.11" # x-release-please-version
4
+ __version__ = "2.0.0-alpha.13" # x-release-please-version
@@ -176,6 +176,12 @@ def fine_tuning(ctx: click.Context) -> None:
176
176
  help="Whether to mask the user messages in conversational data or prompts in instruction data. "
177
177
  "`auto` will automatically determine whether to mask the inputs based on the data format.",
178
178
  )
179
+ @click.option(
180
+ "--train-vision",
181
+ type=bool,
182
+ default=False,
183
+ help="Whether to train the vision encoder. Only supported for multimodal models.",
184
+ )
179
185
  @click.option(
180
186
  "--from-checkpoint",
181
187
  type=str,
@@ -231,6 +237,7 @@ def create(
231
237
  lora_dropout: float | None,
232
238
  lora_alpha: float | None,
233
239
  lora_trainable_modules: str | None,
240
+ train_vision: bool,
234
241
  suffix: str | None,
235
242
  wandb_api_key: str | None,
236
243
  wandb_base_url: str | None,
@@ -272,6 +279,7 @@ def create(
272
279
  lora_dropout=lora_dropout,
273
280
  lora_alpha=lora_alpha,
274
281
  lora_trainable_modules=lora_trainable_modules,
282
+ train_vision=train_vision,
275
283
  suffix=suffix,
276
284
  wandb_api_key=wandb_api_key,
277
285
  wandb_base_url=wandb_base_url,
@@ -363,6 +371,10 @@ def create(
363
371
  simpo_gamma=simpo_gamma or 0,
364
372
  )
365
373
 
374
+ if model_limits.supports_vision:
375
+ # Don't show price estimation for multimodal models yet
376
+ confirm = True
377
+
366
378
  finetune_price_estimation_result = client.fine_tuning.estimate_price(
367
379
  training_file=training_file,
368
380
  validation_file=validation_file,
@@ -426,9 +438,7 @@ def list(ctx: click.Context) -> None:
426
438
  "Price": f"""${
427
439
  finetune_price_to_dollars(float(str(i.total_price)))
428
440
  }""", # convert to string for mypy typing
429
- "Progress": generate_progress_bar(
430
- i, datetime.now().astimezone(), use_rich=False
431
- ),
441
+ "Progress": generate_progress_bar(i, datetime.now().astimezone(), use_rich=False),
432
442
  }
433
443
  )
434
444
  table = tabulate(display_list, headers="keys", tablefmt="grid", showindex=True)
@@ -449,9 +459,7 @@ def retrieve(ctx: click.Context, fine_tune_id: str) -> None:
449
459
  response.events = None
450
460
 
451
461
  rprint(JSON.from_data(response.model_json_schema()))
452
- progress_text = generate_progress_bar(
453
- response, datetime.now().astimezone(), use_rich=True
454
- )
462
+ progress_text = generate_progress_bar(response, datetime.now().astimezone(), use_rich=True)
455
463
  prefix = f"Status: [bold]{response.status}[/bold],"
456
464
  rprint(f"{prefix} {progress_text}")
457
465
 
@@ -28,9 +28,7 @@ class AutoIntParamType(click.ParamType):
28
28
  return int(value)
29
29
  except ValueError:
30
30
  self.fail(
31
- _("{value!r} is not a valid {number_type}.").format(
32
- value=value, number_type=self.name
33
- ),
31
+ _("{value!r} is not a valid {number_type}.").format(value=value, number_type=self.name),
34
32
  param,
35
33
  ctx,
36
34
  )
@@ -39,7 +37,7 @@ class AutoIntParamType(click.ParamType):
39
37
  class BooleanWithAutoParamType(click.ParamType):
40
38
  name = "boolean_or_auto"
41
39
 
42
- def convert( # pyright: ignore[reportImplicitOverride]
40
+ def convert( # pyright: ignore[reportImplicitOverride]
43
41
  self, value: str, param: click.Parameter | None, ctx: click.Context | None
44
42
  ) -> bool | Literal["auto"] | None:
45
43
  if value == "auto":
@@ -48,9 +46,7 @@ class BooleanWithAutoParamType(click.ParamType):
48
46
  return bool(value)
49
47
  except ValueError:
50
48
  self.fail(
51
- _("{value!r} is not a valid {type}.").format(
52
- value=value, type=self.name
53
- ),
49
+ _("{value!r} is not a valid {type}.").format(value=value, type=self.name),
54
50
  param,
55
51
  ctx,
56
52
  )
@@ -119,17 +115,13 @@ def generate_progress_bar(
119
115
  return progress
120
116
 
121
117
  elapsed_time = (current_time - update_at).total_seconds()
122
- ratio_filled = min(
123
- elapsed_time / finetune_job.progress.seconds_remaining, 1.0
124
- )
118
+ ratio_filled = min(elapsed_time / finetune_job.progress.seconds_remaining, 1.0)
125
119
  percentage = ratio_filled * 100
126
120
  filled = math.ceil(ratio_filled * _PROGRESS_BAR_WIDTH)
127
121
  bar = "█" * filled + "░" * (_PROGRESS_BAR_WIDTH - filled)
128
122
  time_left = "N/A"
129
123
  if finetune_job.progress.seconds_remaining > elapsed_time:
130
- time_left = _human_readable_time(
131
- finetune_job.progress.seconds_remaining - elapsed_time
132
- )
124
+ time_left = _human_readable_time(finetune_job.progress.seconds_remaining - elapsed_time)
133
125
  time_text = f"{time_left} left"
134
126
  progress = f"Progress: {bar} [bold]{percentage:>3.0f}%[/bold] [yellow]{time_text}[/yellow]"
135
127
 
@@ -37,6 +37,12 @@ NUM_BYTES_IN_GB = 2**30
37
37
  # maximum number of GB sized files we support finetuning for
38
38
  MAX_FILE_SIZE_GB = 50.1
39
39
 
40
+ # Multimodal limits
41
+ MAX_IMAGES_PER_EXAMPLE = 10
42
+ MAX_IMAGE_BYTES = 10 * 1024 * 1024 # 10MB
43
+ # Max length = Header length + base64 factor (4/3) * image bytes
44
+ MAX_BASE64_IMAGE_LENGTH = len("data:image/jpeg;base64,") + 4 * MAX_IMAGE_BYTES // 3
45
+
40
46
  # expected columns for Parquet files
41
47
  PARQUET_EXPECTED_COLUMNS = ["input_ids", "attention_mask", "labels"]
42
48
 
@@ -22,6 +22,7 @@ from together.lib.types.fine_tuning import (
22
22
  CosineLRSchedulerArgs,
23
23
  LinearLRSchedulerArgs,
24
24
  FinetuneTrainingLimits,
25
+ FinetuneMultimodalParams,
25
26
  )
26
27
 
27
28
  AVAILABLE_TRAINING_METHODS = {
@@ -51,6 +52,7 @@ def create_finetune_request(
51
52
  lora_dropout: float | None = 0,
52
53
  lora_alpha: float | None = None,
53
54
  lora_trainable_modules: str | None = "all-linear",
55
+ train_vision: bool = False,
54
56
  suffix: str | None = None,
55
57
  wandb_api_key: str | None = None,
56
58
  wandb_base_url: str | None = None,
@@ -207,6 +209,13 @@ def create_finetune_request(
207
209
  simpo_gamma=simpo_gamma,
208
210
  )
209
211
 
212
+ if model_limits.supports_vision:
213
+ multimodal_params = FinetuneMultimodalParams(train_vision=train_vision)
214
+ elif not model_limits.supports_vision and train_vision:
215
+ raise ValueError(f"Vision encoder training is not supported for the non-multimodal model `{model}`")
216
+ else:
217
+ multimodal_params = None
218
+
210
219
  finetune_request = FinetuneRequest(
211
220
  model=model,
212
221
  training_file=training_file,
@@ -227,6 +236,7 @@ def create_finetune_request(
227
236
  wandb_project_name=wandb_project_name,
228
237
  wandb_name=wandb_name,
229
238
  training_method=training_method_cls, # pyright: ignore[reportPossiblyUnboundVariable]
239
+ multimodal_params=multimodal_params,
230
240
  from_checkpoint=from_checkpoint,
231
241
  from_hf_model=from_hf_model,
232
242
  hf_model_revision=hf_model_revision,
@@ -238,7 +248,10 @@ def create_finetune_request(
238
248
 
239
249
  return finetune_request, training_type_pe, training_method_pe
240
250
 
241
- def create_price_estimation_params(finetune_request: FinetuneRequest) -> tuple[pe_params.TrainingType, pe_params.TrainingMethod]:
251
+
252
+ def create_price_estimation_params(
253
+ finetune_request: FinetuneRequest,
254
+ ) -> tuple[pe_params.TrainingType, pe_params.TrainingMethod]:
242
255
  training_type_cls: pe_params.TrainingType
243
256
  if isinstance(finetune_request.training_type, FullTrainingType):
244
257
  training_type_cls = pe_params.TrainingTypeFullTrainingType(
@@ -275,6 +288,7 @@ def create_price_estimation_params(finetune_request: FinetuneRequest) -> tuple[p
275
288
 
276
289
  return training_type_cls, training_method_cls
277
290
 
291
+
278
292
  def get_model_limits(client: Together, model: str) -> FinetuneTrainingLimits:
279
293
  """
280
294
  Requests training limits for a specific model
@@ -189,6 +189,7 @@ class TrainingMethodUnknown(BaseModel):
189
189
 
190
190
  method: str
191
191
 
192
+
192
193
  TrainingMethod: TypeAlias = Union[
193
194
  TrainingMethodSFT,
194
195
  TrainingMethodDPO,
@@ -202,6 +203,7 @@ class FinetuneTrainingLimits(BaseModel):
202
203
  min_learning_rate: float
203
204
  full_training: Optional[FinetuneFullTrainingLimits] = None
204
205
  lora_training: Optional[FinetuneLoraTrainingLimits] = None
206
+ supports_vision: bool = False
205
207
 
206
208
 
207
209
  class LinearLRSchedulerArgs(BaseModel):
@@ -249,6 +251,7 @@ class EmptyLRScheduler(BaseModel):
249
251
  lr_scheduler_type: Literal[""]
250
252
  lr_scheduler_args: None = None
251
253
 
254
+
252
255
  class UnknownLRScheduler(BaseModel):
253
256
  """
254
257
  Unknown learning rate scheduler
@@ -268,6 +271,14 @@ FinetuneLRScheduler: TypeAlias = Union[
268
271
  ]
269
272
 
270
273
 
274
+ class FinetuneMultimodalParams(BaseModel):
275
+ """
276
+ Multimodal parameters
277
+ """
278
+
279
+ train_vision: bool = False
280
+
281
+
271
282
  class FinetuneProgress(BaseModel):
272
283
  """
273
284
  Fine-tune job progress
@@ -303,6 +314,9 @@ class FinetuneResponse(BaseModel):
303
314
  from_checkpoint: Optional[str] = None
304
315
  """Checkpoint used to continue training"""
305
316
 
317
+ multimodal_params: Optional[FinetuneMultimodalParams] = None
318
+ """Multimodal parameters"""
319
+
306
320
  from_hf_model: Optional[str] = None
307
321
  """Hugging Face Hub repo to start training from"""
308
322
 
@@ -467,6 +481,9 @@ class FinetuneRequest(BaseModel):
467
481
  training_method: TrainingMethod = Field(default_factory=TrainingMethodSFT)
468
482
  # from step
469
483
  from_checkpoint: Union[str, None] = None
484
+ # multimodal parameters
485
+ multimodal_params: Union[FinetuneMultimodalParams, None] = None
486
+ # hugging face related fields
470
487
  from_hf_model: Union[str, None] = None
471
488
  hf_model_revision: Union[str, None] = None
472
489
  # hf related fields