Repository navigation
Send ul cloud runs to the same project as yolo train - #114
Conversation
resolve_project kept only the last folder of project= and always used the caller's account, so project=team/exp landed in the caller's personal account even when team is a workspace, and a workspace the caller cannot edit silently fell back to their account. It now follows the contract's local-training rule: an existing username before the first slash selects that workspace (account.profile), and the rest of the path joins with dashes.
|
👋 Hello @JaviChulvi, thank you for submitting a
For more guidance, please refer to our Contributing Guide. Don't hesitate to leave a comment if you have any questions. Thank you for contributing to Ultralytics! 🚀 |
UltralyticsAssistant
left a comment
There was a problem hiding this comment.
🔍 PR Review
Made with ❤️ by Ultralytics Actions
Reviewed the project-resolution change and matching documentation in both CLI copies. No concrete behavioral regression found; LGTM.
UltralyticsAssistant
left a comment
There was a problem hiding this comment.
🔍 PR Review 2
Made with ❤️ by Ultralytics Actions
Since review 1, no code changes are present; there were no prior findings to address, and no new issues were found. The project-resolution change and matching documentation look sound. LGTM.
pderrenger
left a comment
There was a problem hiding this comment.
LGTM. Cold full-diff review of 4b843df found no findings against the Core Principles. The shared CLI resolve_project function owns cloud destination selection and reuses the existing Ultralytics slug helper; the public API contract already defines workspace-prefix behavior for local training. Focused offline checks passed for nested and absolute paths, normalized usernames, lookup failures, empty slugs, project creation, and default privacy. CI confirms generation drift, lint, builds, and all six tests pass on Python 3.11 and 3.14. API-owned versioning remains unchanged.
|
🎉 PR #114 is merged! Thank you @JaviChulvi, with contributions from @pderrenger.
This change makes |
ul cloud train/predict/exportkept only the last folder ofproject=and always used your own account, soproject=team/explanded in your personal account (even for a workspace you can't edit, where it should fail), while localyolo trainregisters the same value inteam/exp.resolve_projectnow follows the contract's local-training rule (training.metrics): an existing username before the first slash selects that workspace, checked withaccount.profile, and the rest of the path joins with dashes. A workspace you can't edit fails with HTTP 403 before anything is uploaded. One extra GET, only whenproject=contains a slash.Tested on production against YOLO 8.4.176. For 9
project=forms (plain, own and uppercase prefix, nested, double slash, absolute path, spaces, 128-character truncation, non-username prefix),ul cloud predict,export(including official-weights clones) andtrain(watched and detached) used the project localyolo trainregistered. A workspace you can't edit exits 1 with nothing created. Lookup errors (404/400 fall back, 429/500 raise) were checked offline. Team workspaces you can edit are untested; the test account has none. Ruff, pytest and generator drift pass.This is a CLI-only fix, so it ships with the next contract version.
🛠️ PR Summary
Made with ❤️ by Ultralytics Actions
🌟 Summary
Cloud train, predict, and export now resolve
project=to the Platform owner and project slug using the same path convention as local training.📊 Key Changes
ValueError.🎯 Purpose & Impact
project=team/expnow targets theexpproject in theteamworkspace; users without the required workspace access receive an error rather than creating the run in their own account.