-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
repo: add API and CLI for reading artifacts #9770
Conversation
name (str): name of the artifact to open. | ||
version (str, optional): version of the artifact to open. Defaults to | ||
the latest version. | ||
stage (str, optional): name of the model registry stage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think all these options are actually mutually exclusive. Would be good to explicitly handle that early in the code.
I am a little confused about the GTO code as it just silently overrides tags
in:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, it seems like they are supposed to be mutually exclusive, but I wasn't sure either since GTO doesn't check for it.
CC: @aguschin
@dberenbaum CI tests haven't been updated for this yet, but otherwise the PR can be installed/tested manually. Other thoughts - it seems confusing that we use |
get_parser.add_argument( | ||
"--rev", | ||
nargs="?", | ||
help="Artifact version", | ||
metavar="<version>", | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can't use --version
since it conflicts with the global DVC version flag, so I went with --rev
for now.
Codecov ReportPatch coverage is
π’ Thoughts on this report? Let us know!. |
Yes, it's confusing but I think it is somewhat explainable. An artifact can be any path and may contain metadata like type, labels, etc. One type of artifact is a model, and the primary use for artifact metadata is in the model registry. There is a similar distinction in wandb models. I don't think we want to say that this metadata can only apply to models, but the primary use case is specific to models. |
@pmrowla Do you want me to wait before reviewing? |
963d3bd
to
755cc5f
Compare
@dberenbaum this is ready for review/testing |
4c9cfff
to
54823b2
Compare
PR has been updated to prefer downloading with studio over DVC remote.
|
I'm getting a long pause after cloning the repo followed by an error (the signed urls should fail here but the artifact should be found, and not sure why it takes so long): Screen.Recording.2023-08-11.at.12.46.35.PM.mov |
@dberenbaum ah, I forgot about needing the support for both the studio/gto and DVC style addressing. The PR currently only has the support for the studio/gto names (I think it should find the artifact if you use and regarding the long pause, there are no progress callbacks for the studio API calls and there's no support for progress in GTO, so that's something we'd have to address in a follow up. (but once we get URLs from studio, the HTTP download will have progress bars like any other file transfer in DVC) |
Some thoughts on the long pause:
|
If |
Can we print a result showing what's been downloaded and the path to it? Since the path is not part of the command, it's not obvious where to find it. |
Trying a different repo and can't get past this error: $ dvc artifacts get -vv [email protected]:iterative/lstm_seq2seq.git results:best
2023-08-11 13:39:24,195 DEBUG: v3.14.1.dev9+g54823b259, CPython 3.11.4 on macOS-13.4.1-arm64-arm-64bit
2023-08-11 13:39:24,196 DEBUG: command: /Users/dave/micromamba/envs/dvc/bin/dvc artifacts get -vv [email protected]:iterative/lstm_seq2seq.git results:best
2023-08-11 13:39:24,196 TRACE: Namespace(quiet=0, verbose=2, cprofile=False, cprofile_dump=None, yappi=False, yappi_separate_threads=False, viztracer=False, viztracer_depth=None, viztracer_async=False, pdb=False, instrument=False, instrument_open=False, show_stack=False, cd='.', cmd='get', url='[email protected]:iterative/lstm_seq2seq.git', name='results:best', rev=None, stage=None, out=None, jobs=None, force=False, config=None, func=<class 'dvc.commands.artifacts.CmdArtifactsGet'>, parser=DvcParser(prog='dvc', usage=None, description='Data Version Control', formatter_class=<class 'argparse.RawTextHelpFormatter'>, conflict_handler='error', add_help=False))
2023-08-11 13:39:24,387 DEBUG: Creating external repo [email protected]:iterative/lstm_seq2seq.git@None
2023-08-11 13:39:24,388 DEBUG: erepo: git clone '[email protected]:iterative/lstm_seq2seq.git' to a temporary dir
2023-08-11 13:39:28,706 DEBUG: Trying to download artifact 'results:best' via studio
2023-08-11 13:39:28,706 DEBUG: Trying to download artifact 'results:best' via DVC
2023-08-11 13:39:28,777 TRACE: switching fs to revision 77bd34d
2023-08-11 13:39:28,799 TRACE: Context during resolution of stage download:
{'model': {'batch_size': 512, 'latent_dim': 8, 'duration': '00:00:30:00', 'max_epochs': 5, 'optim': {'lr': 0.001}}, 'data_path': 'fra.txt', 'num_samples': 10000, 'seed': 423}
2023-08-11 13:39:28,832 TRACE: Context during resolution of stage train:
{'model': {'batch_size': 512, 'latent_dim': 8, 'duration': '00:00:30:00', 'max_epochs': 5, 'optim': {'lr': 0.001}}, 'data_path': 'fra.txt', 'num_samples': 10000, 'seed': 423}
2023-08-11 13:39:28,833 TRACE: 53.45 ms in collecting stages from /
2023-08-11 13:39:28,833 TRACE: 1.92 mks in collecting stages from /.github
2023-08-11 13:39:28,833 TRACE: 1.75 mks in collecting stages from /.github/workflows
2023-08-11 13:39:28,833 TRACE: 3.08 mks in collecting stages from /conf
2023-08-11 13:39:28,833 TRACE: 3.50 mks in collecting stages from /conf/model
2023-08-11 13:39:28,834 TRACE: 862.58 mks in collecting stages from /results
2023-08-11 13:39:28,917 DEBUG: failed to load ('model',) from storage local (/var/folders/24/99_tf1xj3vx8k1k_jkdmnhq00000gn/T/tmpjnauvqowdvc-cache/files/md5) - [Errno 2] No such file or directory: '/var/folders/24/99_tf1xj3vx8k1k_jkdmnhq00000gn/T/tmpjnauvqowdvc-cache/files/md5/70/06e6dfdcbce27a2362214995586475.dir'
Traceback (most recent call last):
File "/Users/dave/micromamba/envs/dvc/lib/python3.11/site-packages/dvc_data/index/index.py", line 545, in _load_from_storage
_load_from_object_storage(trie, entry, storage)
File "/Users/dave/micromamba/envs/dvc/lib/python3.11/site-packages/dvc_data/index/index.py", line 475, in _load_from_object_storage
obj = Tree.load(
^^^^^^^^^^
File "/Users/dave/micromamba/envs/dvc/lib/python3.11/site-packages/dvc_data/hashfile/tree.py", line 191, in load
with obj.fs.open(obj.path, "r") as fobj:
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/dave/Code/dvc-objects/src/dvc_objects/fs/base.py", line 222, in open
return self.fs.open(path, mode=mode, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/dave/Code/dvc-objects/src/dvc_objects/fs/local.py", line 134, in open
return open(path, mode=mode, encoding=encoding)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/var/folders/24/99_tf1xj3vx8k1k_jkdmnhq00000gn/T/tmpjnauvqowdvc-cache/files/md5/70/06e6dfdcbce27a2362214995586475.dir' |
Here's a simple example that uses the aws sandbox: https://github.com/dberenbaum/example-get-started/blob/main/dvc.yaml. Both the studio rest api and With a studio token it works but still clones the repo, which is unexpected: $ dvc artifacts get -vv [email protected]:dberenbaum/example-get-started.git text-classification
2023-08-11 13:42:29,325 DEBUG: v3.14.1.dev9+g54823b259, CPython 3.11.4 on macOS-13.4.1-arm64-arm-64bit
2023-08-11 13:42:29,325 DEBUG: command: /Users/dave/micromamba/envs/dvc/bin/dvc artifacts get -vv [email protected]:dberenbaum/example-get-started.git text-classification
2023-08-11 13:42:29,325 TRACE: Namespace(quiet=0, verbose=2, cprofile=False, cprofile_dump=None, yappi=False, yappi_separate_threads=False, viztracer=False, viztracer_depth=None, viztracer_async=False, pdb=False, instrument=False, instrument_open=False, show_stack=False, cd='.', cmd='get', url='[email protected]:dberenbaum/example-get-started.git', name='text-classification', rev=None, stage=None, out=None, jobs=None, force=False, config=None, func=<class 'dvc.commands.artifacts.CmdArtifactsGet'>, parser=DvcParser(prog='dvc', usage=None, description='Data Version Control', formatter_class=<class 'argparse.RawTextHelpFormatter'>, conflict_handler='error', add_help=False))
2023-08-11 13:42:29,571 DEBUG: Creating external repo [email protected]:dberenbaum/example-get-started.git@None
2023-08-11 13:42:29,571 DEBUG: erepo: git clone '[email protected]:dberenbaum/example-get-started.git' to a temporary dir
2023-08-11 13:42:33,673 DEBUG: Trying to download artifact 'text-classification' via studio
2023-08-11 13:42:35,054 DEBUG: Analytics is disabled. Without a studio token it fails completely: $ dvc artifacts get -vv [email protected]:dberenbaum/example-get-started.git text-classification
2023-08-11 13:48:05,792 DEBUG: v3.14.1.dev9+g54823b259, CPython 3.11.4 on macOS-13.4.1-arm64-arm-64bit
2023-08-11 13:48:05,792 DEBUG: command: /Users/dave/micromamba/envs/dvc/bin/dvc artifacts get -vv [email protected]:dberenbaum/example-get-started.git text-classification
2023-08-11 13:48:05,793 TRACE: Namespace(quiet=0, verbose=2, cprofile=False, cprofile_dump=None, yappi=False, yappi_separate_threads=False, viztracer=False, viztracer_depth=None, viztracer_async=False, pdb=False, instrument=False, instrument_open=False, show_stack=False, cd='.', cmd='get', url='[email protected]:dberenbaum/example-get-started.git', name='text-classification', rev=None, stage=None, out=None, jobs=None, force=False, config=None, func=<class 'dvc.commands.artifacts.CmdArtifactsGet'>, parser=DvcParser(prog='dvc', usage=None, description='Data Version Control', formatter_class=<class 'argparse.RawTextHelpFormatter'>, conflict_handler='error', add_help=False))
2023-08-11 13:48:05,990 DEBUG: Creating external repo [email protected]:dberenbaum/example-get-started.git@None
2023-08-11 13:48:05,990 DEBUG: erepo: git clone '[email protected]:dberenbaum/example-get-started.git' to a temporary dir
2023-08-11 13:48:09,708 DEBUG: Trying to download artifact 'text-classification' via studio
2023-08-11 13:48:09,708 DEBUG: Trying to download artifact 'text-classification' via DVC
2023-08-11 13:48:09,806 ERROR: failed to get 'text-classification' from '[email protected]:dberenbaum/example-get-started.git' - Unable to find artifact 'text-classification': No studio config
Traceback (most recent call last):
File "/Users/dave/Code/dvc/dvc/repo/artifacts.py", line 268, in get
return cls._download_studio(
^^^^^^^^^^^^^^^^^^^^^
File "/Users/dave/Code/dvc/dvc/repo/artifacts.py", line 191, in _download_studio
for path, url in get_download_uris(
^^^^^^^^^^^^^^^^^^
File "/Users/dave/micromamba/envs/dvc/lib/python3.11/site-packages/dvc_studio_client/model_registry.py", line 39, in get_download_uris
raise ValueError("No studio config")
ValueError: No studio config
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/dave/Code/dvc/dvc/commands/artifacts.py", line 18, in run
Artifacts.get(
File "/Users/dave/Code/dvc/dvc/repo/artifacts.py", line 292, in get
raise exc from saved_exc
File "/Users/dave/Code/dvc/dvc/repo/artifacts.py", line 282, in get
return repo.artifacts.download(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/dave/Code/dvc/dvc/repo/artifacts.py", line 153, in download
rev = self.get_rev(name, version=version, stage=stage)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/dave/Code/dvc/dvc/repo/artifacts.py", line 119, in get_rev
raise ArtifactNotFoundError(name, version=version, stage=stage)
dvc.exceptions.ArtifactNotFoundError: Unable to find artifact 'text-classification' |
Both of these should be resolved now Since there's two separate sets of exceptions (one for the studio case and one for the dvc remote case) the logging for it is a bit clunky but for now it looks like:
|
@dberenbaum there was an example here https://github.com/iterative/dvc.org/pull/4681/files#diff-ad0fba6815b9afc00db151a1c167f308681cd0faaf07cc402bf087756296c4c2R58 just checked - it works |
Thanks @aguschin! I'm able to get that curl command to work, but not to download the model: $ curl "https://studio.iterative.ai/api/model-registry/[email protected]:iterative/demo-bank-customer-churn.git&name=randomforest-model&version=v2.0.0" --header "Authorization:token ***"
{".mlem/model/clf-model":"https://sandbox-datasets-iterative.s3.amazonaws.com/bank-customer-churn/4c/65eb98e1f9b9cae801f1a3f124f8ae?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIATZNUPOWBHJ4AE55H%2F20230825%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230825T144821Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH8aCXVzLWVhc3QtMiJIMEYCIQDnSDv%2BAZd1kn4Ir5KUTcO7wjEAJOHyFwrXFxAEkvdbYgIhAMKqBSmMkOrv3qbvzfPiT1hitvvnNad7dqfix4o%2BzYwMKvcECEgQAxoMMjYwNzYwODkyODAyIgxue92VDAAxClYsAqoq1ARvFH8YevdIWvwfflwNS05yQqSdNdjTewTiEPyqNxsXeH%2BNy4uPE39CPnwM8jEGZZAGsaCFUpRoQ6i%2BVx6CHr4GExaHqWTRYLQILPA7NSi7ITQg1cfm4tW%2BX8lO2DXYT3uUaPWI3P7LVJmv%2BLCUzzWw2vt34nsNioH%2FytTMKUwPIE4t8Pv6LbHhBOQrQYfhM1EnkBlI7zYXnlwldzDrJHUbP7ydc%2FOx3cD1BvfMF5wDZZVtWCUHI7kt3uZ%2FGPcZvleYHLOuTGe9qa7dOniAY%2FANiAYrNUfeX19UrZQK%2B8Hr6ft%2FlIOvcgWeOfKvlTvUiEFgqWLCiPr9Olwuc%2FwG1gyXBNx9DVgJF6ARq5%2B38ufF69HKon1Jp2duzWEn9332EFLS43k6BEiAIcfOnmBK3o2hnyfRXxVb9IYm9pumqD8mWtPNK0dP9FcyiOW9ItEVFXx5AXYBJNrm5Vk4sjHN5bZe7TMoxU1B3%2BIQSHS9dcCKIdRGPYhyXSma8pZX44b6Mh9grWLP%2F%2F5k1mkI1IhSAC%2BFhP%2FDU8WRjVWdY0l91ChRXn20qyIsONm4FOxjTMpFzqBvNFEksqIO20gyDDeIQMMD9nyPCHwTvLqUjUegCM1Sa9FLWsxnoVYP2J1XTiaWSQDsL9cTlUVdO1HxGSYY4w%2ByQP67Eqd4I4yM4T7TKPDWh8MnCfdVhxe7P0kVCT4sAt04uUEiLrz0DwHA%2FtsPEHWXdnCkV8NMo3UFy%2FYagd8tbAPMxe4raGeFdmZlHzu1QpZW5aWs68fufNs6okRHevNG%2BUXVujC0%2FqKnBjqZAVblJbmkOvTNbDEzua48Fmfih3CAhb9L1PQyEMSe9M2PR520fQcif9FXDjWR3s7dZgLauEdBJsB%2F8BYU1EgJSsjd0v3%2BUTdfWfhsADV6b3zobAJkjPwqiRNq3jcd5MPyW%2FEQYfrHAHBME%2B%2BvZ9NfVfRXy%2Bh395e7vDuQb06rEblZXIoPsVEpEk8oNFShTfZHqSc13PRwkq9Rew%3D%3D&X-Amz-Signature=a6c9b2ea7cb452ae4c4d17df69a753d0b84d0e4cc38c66beaa33c99765ba9fb4"}%
$ wget "https://sandbox-datasets-iterative.s3.amazonaws.com/bank-customer-churn/4c/65eb98e1f9b9cae801f1a3f124f8ae?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIATZNUPOWBHJ4AE55H%2F20230825%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230825T144821Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH8aCXVzLWVhc3QtMiJIMEYCIQDnSDv%2BAZd1kn4Ir5KUTcO7wjEAJOHyFwrXFxAEkvdbYgIhAMKqBSmMkOrv3qbvzfPiT1hitvvnNad7dqfix4o%2BzYwMKvcECEgQAxoMMjYwNzYwODkyODAyIgxue92VDAAxClYsAqoq1ARvFH8YevdIWvwfflwNS05yQqSdNdjTewTiEPyqNxsXeH%2BNy4uPE39CPnwM8jEGZZAGsaCFUpRoQ6i%2BVx6CHr4GExaHqWTRYLQILPA7NSi7ITQg1cfm4tW%2BX8lO2DXYT3uUaPWI3P7LVJmv%2BLCUzzWw2vt34nsNioH%2FytTMKUwPIE4t8Pv6LbHhBOQrQYfhM1EnkBlI7zYXnlwldzDrJHUbP7ydc%2FOx3cD1BvfMF5wDZZVtWCUHI7kt3uZ%2FGPcZvleYHLOuTGe9qa7dOniAY%2FANiAYrNUfeX19UrZQK%2B8Hr6ft%2FlIOvcgWeOfKvlTvUiEFgqWLCiPr9Olwuc%2FwG1gyXBNx9DVgJF6ARq5%2B38ufF69HKon1Jp2duzWEn9332EFLS43k6BEiAIcfOnmBK3o2hnyfRXxVb9IYm9pumqD8mWtPNK0dP9FcyiOW9ItEVFXx5AXYBJNrm5Vk4sjHN5bZe7TMoxU1B3%2BIQSHS9dcCKIdRGPYhyXSma8pZX44b6Mh9grWLP%2F%2F5k1mkI1IhSAC%2BFhP%2FDU8WRjVWdY0l91ChRXn20qyIsONm4FOxjTMpFzqBvNFEksqIO20gyDDeIQMMD9nyPCHwTvLqUjUegCM1Sa9FLWsxnoVYP2J1XTiaWSQDsL9cTlUVdO1HxGSYY4w%2ByQP67Eqd4I4yM4T7TKPDWh8MnCfdVhxe7P0kVCT4sAt04uUEiLrz0DwHA%2FtsPEHWXdnCkV8NMo3UFy%2FYagd8tbAPMxe4raGeFdmZlHzu1QpZW5aWs68fufNs6okRHevNG%2BUXVujC0%2FqKnBjqZAVblJbmkOvTNbDEzua48Fmfih3CAhb9L1PQyEMSe9M2PR520fQcif9FXDjWR3s7dZgLauEdBJsB%2F8BYU1EgJSsjd0v3%2BUTdfWfhsADV6b3zobAJkjPwqiRNq3jcd5MPyW%2FEQYfrHAHBME%2B%2BvZ9NfVfRXy%2Bh395e7vDuQb06rEblZXIoPsVEpEk8oNFShTfZHqSc13PRwkq9Rew%3D%3D&X-Amz-Signature=a6c9b2ea7cb452ae4c4d17df69a753d0b84d0e4cc38c66beaa33c99765ba9fb4"
The destination name is too long (1543), reducing to 236
--2023-08-25 10:48:42-- https://sandbox-datasets-iterative.s3.amazonaws.com/bank-customer-churn/4c/65eb98e1f9b9cae801f1a3f124f8ae?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIATZNUPOWBHJ4AE55H%2F20230825%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230825T144821Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH8aCXVzLWVhc3QtMiJIMEYCIQDnSDv%2BAZd1kn4Ir5KUTcO7wjEAJOHyFwrXFxAEkvdbYgIhAMKqBSmMkOrv3qbvzfPiT1hitvvnNad7dqfix4o%2BzYwMKvcECEgQAxoMMjYwNzYwODkyODAyIgxue92VDAAxClYsAqoq1ARvFH8YevdIWvwfflwNS05yQqSdNdjTewTiEPyqNxsXeH%2BNy4uPE39CPnwM8jEGZZAGsaCFUpRoQ6i%2BVx6CHr4GExaHqWTRYLQILPA7NSi7ITQg1cfm4tW%2BX8lO2DXYT3uUaPWI3P7LVJmv%2BLCUzzWw2vt34nsNioH%2FytTMKUwPIE4t8Pv6LbHhBOQrQYfhM1EnkBlI7zYXnlwldzDrJHUbP7ydc%2FOx3cD1BvfMF5wDZZVtWCUHI7kt3uZ%2FGPcZvleYHLOuTGe9qa7dOniAY%2FANiAYrNUfeX19UrZQK%2B8Hr6ft%2FlIOvcgWeOfKvlTvUiEFgqWLCiPr9Olwuc%2FwG1gyXBNx9DVgJF6ARq5%2B38ufF69HKon1Jp2duzWEn9332EFLS43k6BEiAIcfOnmBK3o2hnyfRXxVb9IYm9pumqD8mWtPNK0dP9FcyiOW9ItEVFXx5AXYBJNrm5Vk4sjHN5bZe7TMoxU1B3%2BIQSHS9dcCKIdRGPYhyXSma8pZX44b6Mh9grWLP%2F%2F5k1mkI1IhSAC%2BFhP%2FDU8WRjVWdY0l91ChRXn20qyIsONm4FOxjTMpFzqBvNFEksqIO20gyDDeIQMMD9nyPCHwTvLqUjUegCM1Sa9FLWsxnoVYP2J1XTiaWSQDsL9cTlUVdO1HxGSYY4w%2ByQP67Eqd4I4yM4T7TKPDWh8MnCfdVhxe7P0kVCT4sAt04uUEiLrz0DwHA%2FtsPEHWXdnCkV8NMo3UFy%2FYagd8tbAPMxe4raGeFdmZlHzu1QpZW5aWs68fufNs6okRHevNG%2BUXVujC0%2FqKnBjqZAVblJbmkOvTNbDEzua48Fmfih3CAhb9L1PQyEMSe9M2PR520fQcif9FXDjWR3s7dZgLauEdBJsB%2F8BYU1EgJSsjd0v3%2BUTdfWfhsADV6b3zobAJkjPwqiRNq3jcd5MPyW%2FEQYfrHAHBME%2B%2BvZ9NfVfRXy%2Bh395e7vDuQb06rEblZXIoPsVEpEk8oNFShTfZHqSc13PRwkq9Rew%3D%3D&X-Amz-Signature=a6c9b2ea7cb452ae4c4d17df69a753d0b84d0e4cc38c66beaa33c99765ba9fb4
Resolving sandbox-datasets-iterative.s3.amazonaws.com (sandbox-datasets-iterative.s3.amazonaws.com)... 52.216.241.12, 52.217.111.92, 54.231.169.217, ...
Connecting to sandbox-datasets-iterative.s3.amazonaws.com (sandbox-datasets-iterative.s3.amazonaws.com)|52.216.241.12|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2023-08-25 10:48:42 ERROR 403: Forbidden. Should we open a Studio issue? |
@pmrowla Basic scenarios starting to look good!
Otherwise, I'm blocked on QA for the Studio token download by the comments above, but otherwise LGTM. Not a blocker (it could be in a follow up), but since we have |
This should be fixed now
This is also supported now |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work @pmrowla! I'm ready to merge, although we need to track a couple follow-up issues:
- Check the studio download functionality after https://github.com/iterative/studio/issues/7383 is resolved.
- Reduce time it takes to clone the repo (dvc get/artifacts get: repo clone is slowΒ #9880)
@iterative/dvc Could someone please review? |
ping @iterative/dvc for review |
6e8f8ad
to
9f332fa
Compare
The function we were using from `dvc.repo.artifacts` was dropped in iterative/dvc#9770 deps: bump "dvc>3.22.1"
* log_artifact: Use name validation from GTO. The function we were using from `dvc.repo.artifacts` was dropped in iterative/dvc#9770 deps: bump "dvc>3.22.1" * deps: Add `gto`.
β I have followed the Contributing to DVC checklist.
π If this PR requires documentation updates, I have created a separate PR (or issue, at least) in dvc.org and linked it here.
Thank you for the contribution - we'll try to review it as soon as possible. π
Will close: #9100
api.artifacts_show()
for getting a relative path + Git revision for a named artifact version, which can then be used in the existing DVC API methodsdvc artifacts get <url> <artifact>
for downloading named artifactsAPI:
CLI:
Docs PR: iterative/dvc.org#4809