iterative / gto

🏷️ Git Tag Ops. Turn your Git repository into Artifact Registry or Model Registry.
https://dvc.org/doc/gto
Apache License 2.0
140 stars 16 forks source link

gto show gives list index out of range error when supplied with --version #344

Open fortminors opened 1 year ago

fortminors commented 1 year ago

Hello! I am getting this error when I try to get the last version of the artifact at the non existent stage.

Let's say I have the following registry:

$ gto show:

╒═══════════════════════╤══════════╤═════════╕
│ name                  │ latest   │ #prod   │
╞═══════════════════════╪══════════╪═════════╡
│<artifact_name>        │ v0.0.2   │ v0.0.2  │
╘═══════════════════════╧══════════╧═════════╛

I am doing the following: $ gto show <artifact_name>#develop -r <remote_repo_url> --version

And I get the following output:

❌ Unexpected error: list index out of range
Please report it here running with '--traceback' flag: <https://github.com/iterative/gto/issues>

I believe the command should output empty string in this case, as develop stage does not exist yet.

gto show <artifact_name>#develop -r <remote_repo_url> --json gives [], so I guess it could be checked for emptiness?

$ gto doctor:

🪴  GTO Version: 0.2.7
---------------------------------
INDEX='artifacts.yaml'
TYPES=None
STAGES=None
LOG_LEVEL='INFO'
DEBUG=False
ENRICHMENTS=[]
AUTOLOAD_ENRICHMENTS=True
CONFIG_FILE_NAME='.gto'
EMOJIS=True
---------------------------------
✅  No issues found

PS: Passing --traceback says No such option: --traceback for some reason

aguschin commented 1 year ago

Thanks for reporting @fortminors! I'll investigate.

aguschin commented 1 year ago

Yes, you're right!

For --traceback option, it should be put in the beginning: gto --tb show <artifact_name>#develop -r <remote_repo_url>

Do you mind contributing a fix? This should be adding a few lines, just like you described. The CI/CD will check your PR for issues - if something won't work, I'll help figuring it out.

aguschin commented 1 year ago

It also worth adding a simple test just like this one https://github.com/iterative/gto/blob/main/tests/test_cli.py#L139