Conversation
2d822fe to
823bf43
Compare
4780a8a to
2cd3113
Compare
2cd3113 to
331fb64
Compare
* Update README.md (#245) * Add from_checkpoint parameter to price estimation for FT Job creation (#247) * codegen metadata * codegen metadata * codegen metadata * jig papercuts (#238) * feat(jig): show a unique name tip when deployment create fails * feat(jig): factor out config_path option and add short flag * feat: jig support for multi deployment * codegen metadata * chore: Update descriptions for jig queue methods and properties * chore(internal): bump dependencies * Allow tool calls through together-py and remove alternating roles check (#244) * Update README.md (#245) * Add from_checkpoint parameter to price estimation for FT Job creation (#247) * codegen metadata * codegen metadata * codegen metadata * Allow tool calls through together-py and remove outdated checks * Remove outdated tests * lint * Enforce that either content or tool calls exists * Skip for empty content * Condition field checks on role --------- Co-authored-by: Blaine Kasten <blainekasten@gmail.com> Co-authored-by: Artem Chumachenko <artek.chumak@gmail.com> Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> * make submit --watch signal status through exit code * fix(cli): fine-tuning retrieve now renders data instead of schema (#250) * fix(jig): lint errors * fix(jig): migrate old state files properly and be even more defensive about parsing deploy errors * fix(jig): pyright does not handle isinstance type narrowing in ternary expressions. also fix migration logic * format code * Feat: Allow uploading local file during fine tuning create call in the CLI * cleanup * Add support for validation_file * fix lint --------- Co-authored-by: Artem Chumachenko <artek.chumak@gmail.com> Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> Co-authored-by: technillogue <technillogue@gmail.com> Co-authored-by: Mohamad Rostami <mbrostami@proton.me> Co-authored-by: Conner Manuel <57027354+connermanuel@users.noreply.github.com>
331fb64 to
716bae1
Compare
| [[package]] | ||
| name = "together" | ||
| version = "2.0.0" | ||
| version = "2.1.1" |
There was a problem hiding this comment.
Lock file version doesn't match project version
Low Severity
The uv.lock file records version = "2.1.1" for the together package, but pyproject.toml declares version = "2.2.0". The lock file version was bumped from "2.0.0" to "2.1.1" instead of to "2.2.0", leaving it out of sync with the actual release version.
* feat(jig): Format jig status - chore(jig): typing fix - chore(jig): minor improvements to status - fix(jig): status formatter use Typed models - fix(jig): reformat app status - fix(jig): wip: reformat config status - fix(jig): add env to config status - fix(jig): replica event status - fix(jig): remove unused age func - fix(jig): simplify and condense status message - fix(jig): only show 'ready since' for running replicas - fix: fixed replica event grouping and image tag split - fix: Fix minor status errors - fix(jig): show replica_id instead of revision_id for replica events in jig status * minor mypy type error * chore: format_deployment_status(deployment) -> format_deployment_status(d) * fix(jig): profile -> metric, targetValue -> target --------- Co-authored-by: technillogue <technillogue@gmail.com>
716bae1 to
aab3182
Compare
aab3182 to
759f909
Compare
759f909 to
9eb76df
Compare
9eb76df to
44cbee9
Compare
44cbee9 to
a7ed7fb
Compare
a7ed7fb to
49d6665
Compare
6477638 to
2c62dea
Compare
… is not cancellable (#268)
2c62dea to
467cb3f
Compare
* chore: format files * check format in CI * run lint
467cb3f to
08af9be
Compare
| if result == ReplicaTrackingResult.SUCCESS: | ||
| return None | ||
| if result == ReplicaTrackingResult.FAILURE: | ||
| raise SystemExit(1) |
There was a problem hiding this comment.
Multi-replica deployment tracking order-dependent failure
Medium Severity
In _track_deployment_progress, when iterating relevant_replicas, the loop raises SystemExit(1) on the very first FAILURE result without inspecting any remaining replicas. If a CrashLoopBackOff replica happens to be iterated before a Running+ready replica (dict order depends on API response ordering), the deployment is falsely reported as failed even though a healthy replica already exists. The stated success condition is "at least one replica has replica_ready_since set", but the current short-circuit can prevent that condition from ever being evaluated.
Additional Locations (1)
08af9be to
7a63c60
Compare
7a63c60 to
aee8e31
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
| @click.pass_context | ||
| @click.argument("id", type=str, required=True) | ||
| @click.option("--output", type=str, default=None, help="Output filename") | ||
| @click.option("--output", type=click.Path(file_okay=False, writable=True, dir_okay=True), help="Output filename") |
There was a problem hiding this comment.
Output option rejects existing files due to file_okay=False
Medium Severity
The --output option uses click.Path(file_okay=False, ...) which prevents users from passing a path to an existing file. Since Click validates file_okay only on existing paths, this means --output existing_file.jsonl is rejected while --output new_file.jsonl is accepted. The code at line 31 explicitly handles file paths (checking for extension), so the intent is to accept both files and directories. file_okay needs to be True to allow overwriting existing files.
|
🤖 Release is at https://github.com/togethercomputer/together-py/releases/tag/v2.2.0 🌻 |


Automated Release PR
2.2.0 (2026-02-19)
Full Changelog: v2.1.1...v2.2.0
Features
fine-tuning list --json(#269) (13d3551)Bug Fixes
Chores
api.mdfiles (c16f892)This pull request is managed by Stainless's GitHub App.
The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.
For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.
🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions
Note
Medium Risk
Touches core file upload and CLI deployment flows (checksum/idempotent upload behavior and jig deploy progress polling), which could affect user workflows and error handling despite being largely additive.
Overview
Bumps the SDK to v2.2.0 (manifest,
pyproject.toml,_version.py, changelog) and refreshes the OpenAPI-derived surface area, mostly updating docstrings/types (e.g., stricterLiteralobjectfields, cluster regions typed asstr, evals list no longer takesuser_id).Improves file handling end-to-end: uploads now compute and send a checksum, treat server
409as already exists (returning the existing file viaretrieve), and remove the brokenline_count/LineCountfield fromFileResponseand CLI output.Enhances CLI workflows:
fine-tuning listgains--json,fine-tuning cancelavoids attempting cancellation in non-cancellable states,fine-tuning createcan accept local paths and uploads them automatically,files contentnow requires--outputor--stdoutwith better path handling, andjig deploy/statusgets richer status output plus optional deploy progress tracking with a--detachescape hatch.CI now also enforces
ruff format --check, and formatting scripts/docs generation were updated to run across allapi.mdfiles.Written by Cursor Bugbot for commit aee8e31. This will update automatically on new commits. Configure here.