ImperialCollegeLondon / safedata_validator

Python tools to validate and publish datasets using the safedata metadata format.
https://safedata-validator.readthedocs.io/
MIT License
2 stars 4 forks source link

`safedata_zenodo publish_dataset` fails gracelessly if Zenodo credentials are not provided #177

Closed jacobcook1995 closed 2 weeks ago

jacobcook1995 commented 1 month ago

If safedata_zenodo publish_dataset is run and a valid zenodo (or zenodo sandbox) access token is not provided then the process fails with the following trace.

Traceback (most recent call last):
  File "/Users/jc2017/Library/Caches/pypoetry/virtualenvs/safedata-validator-5SPgOFFl-py3.12/bin/safedata_zenodo", line 8, in <module>
    sys.exit(_safedata_zenodo_cli())
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jc2017/Documents/MyRepos/safedata_validator/safedata_validator/entry_points.py", line 992, in _safedata_zenodo_cli
    publish_id, publish_url = publish_dataset(
                              ^^^^^^^^^^^^^^^^
  File "/Users/jc2017/Documents/MyRepos/safedata_validator/safedata_validator/zenodo.py", line 1113, in publish_dataset
    _clean_up_and_bail(zenodo_metadata=zenodo_metadata, resources=resources)
  File "/Users/jc2017/Documents/MyRepos/safedata_validator/safedata_validator/zenodo.py", line 1101, in _clean_up_and_bail
    publish_response, error = discard_deposit(
                              ^^^^^^^^^^^^^^^^
  File "/Users/jc2017/Documents/MyRepos/safedata_validator/safedata_validator/zenodo.py", line 531, in discard_deposit
    delete = requests.delete(zenodo_metadata["links"]["self"], params=params)
                             ~~~~~~~~~~~~~~~^^^^^^^^^
KeyError: 'links'

When invalid credentials are provided the process should inform the user that incorrect credentials have been provided and end the process, rather than continuing and crashing