Failed uploads are reported as success: Version.deploy() / Workspace.deploy_model() don't raise, and roboflow model upload / roboflow image upload <dir> exit 0
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
Direzione di ricerca
Start with Version._upload_zip() and Workspace._upload_zip() for swallowed upload failures, then trace _upload_model in roboflow/cli/handlers/model.py and _handle_upload_directory in roboflow/cli/handlers/image.py. Read the related issue #497 and inspect tests for model and image uploads before deciding how to represent partial failures. Done means failed uploads propagate as errors and the CLI exits non-zero; add tests for both paths.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Several upload paths catch errors, print them and continue, so scripts and the CLI cannot detect a failed upload (roboflow 1.7.0, also current main).
Version._upload_zip()andWorkspace._upload_zip()wrap both the request for the signed upload URL and the PUT intry/except Exception: print(...).Version.deploy()andWorkspace.deploy_model()therefore return normally when the upload failed, androboflow model upload(_upload_modelinroboflow/cli/handlers/model.py) prints{"status": "uploaded"}and exits 0. The 429 branch raises aRuntimeErrorinside the sametry, so it is swallowed too; since a version can own several models (#497), its message may also be outdated.Workspace.upload_dataset()(per-image flow) prints[ERR] <path> (...)for each failed image and returnsNone.roboflow image upload <dir>(_handle_upload_directoryinroboflow/cli/handlers/image.py) then reports{"status": "imported", "count": N}, where N is the number of image files on disk, and exits 0, even if every upload failed. In the zip flow, a final statusfailedis passed through as"status": "failed", also with exit code 0.
Reproducer for 1, run from a checkout (offline, mocked HTTP):
from types import SimpleNamespace
from unittest.mock import patch
import responses
from tests.helpers import get_version
bundle = SimpleNamespace(model_type="yolov8n", archive_path=SimpleNamespace(name="roboflow_deploy.zip"))
with responses.RequestsMock() as rsps, patch(
"roboflow.core.version.package_custom_weights_interactive", return_value=bundle
):
rsps.add(responses.GET, "https://api.roboflow.com/Test Workspace Name/Test Project Name/1/uploadModel", status=500)
print(get_version().deploy("yolov8n", "/tmp/weights", "weights/best.pt")) # prints the error, then None
With the same mock and roboflow.Roboflow patched to return that version, roboflow --json model upload -p proj -v 1 -t yolov8n -m <dir> exits 0, and stdout is the printed error followed by {"status": "uploaded"}. For 2: with Project.upload_image raising ImageUploadError for every image, roboflow --json image upload <dir with 3 images> -p proj exits 0 and prints three [ERR] lines followed by {"status": "imported", "count": 3}.
Suggested behavior: raise RoboflowError from both _upload_zip methods (keeping the printed hints as the message) and let the CLI report it through output_error. For upload_dataset, return a summary (uploaded, duplicates, failed with reasons) and let the CLI exit non-zero when anything failed; treat a zip status failed as an error.
I'm happy to send a PR with tests for part 1. Part 2 changes a return value, so I'd like to hear your preference first. Related: #528 (annotation retries), #302.
cc @leeclemnet @digaobarbosa
- Lingua principale
- Python
- Stelle
- 633
- Fork
- 141
- Merge medio
- 1g 19h
- PR unite (30g)
- 14
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di roboflow/roboflow-python
-
`--json` output is not valid JSON for `search --export`, `image upload <dir>`, `model upload` and `version download`Forse già presa @cdeil l’ha presa 3 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 20/100
roboflow/roboflow-python#546 ·
I maintainer di solito rispondono entro 1 giorno
-
RLE segmentation mask visible in dataset thumbnail, but invisible in annotation preview/editorAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
roboflow/roboflow-python#505 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 30/100
roboflow/roboflow-python#433 ·
I maintainer di solito rispondono entro 1 giorno
-
Dataset Download StuckAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
roboflow/roboflow-python#429 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
roboflow/roboflow-python#427 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di roboflow/roboflow-python
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aicell-lab/bioengine#232 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
modelscope/evalscope#1836 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
jbaruch/speaker-toolkit#480 ·
I maintainer di solito rispondono entro 1 giorno