Package: zenodo-client
Zenodo ClientA wrapper for the Zenodo API.💪 Getting StartedThe first example shows how you can set some configuration then never worry about whether it's been
uploaded already or not - all baked in withpystow. On the
first time this script is run, the new deposition is made, published, and the identifier is stored
with the given key in your~/.config/zenodo.ini. Next time it's run, the deposition will be looked
up, and the data will be uploaded. Versioning is given automatically by date, and if multiple
versions are uploaded on one day, then a dash and the revision are appended.fromzenodo_clientimportCreator,Metadata,ensure_zenodo# Define the metadata that will be used on initial uploaddata=Metadata(title='Test Upload 3',upload_type='dataset',description='test description',creators=[Creator(name='Hoyt, Charles Tapley',affiliation='Harvard Medical School',orcid='0000-0003-4423-4370',),],)res=ensure_zenodo(key='test3',# this is a unique key you pick that will be used to store# the numeric deposition ID on your local system's cachedata=data,paths=['/Users/cthoyt/Desktop/test1.png',],sandbox=True,# remove this when you're ready to upload to real Zenodo)frompprintimportpprintpprint(res.json())A real-world example can be found here:https://github.com/cthoyt/nsockg.The following example shows how to use the Zenodo uploader if you already know what your deposition
identifier is.fromzenodo_clientimportupdate_zenodo# The ID from your depositionSANDBOX_DEP_ID='724868'# Paths to local files. Good to use in combination with resources that are always# dumped to the same place by a given scriptpaths=[# os.path.join(DATABASE_DIRECTORY, 'alts_sample.tsv')'/Users/cthoyt/Desktop/alts_sample.tsv',]# Don't forget to set the ZENODO_API_TOKEN environment variable or# any valid way to get zenodo/api_token from PyStow.update_zenodo(SANDBOX_DEP_ID,paths)The following example shows how to look up the latest version of a record.fromzenodo_clientimportZenodozenodo=Zenodo()OOH_NA_NA_RECORD='4020486'new_record=zenodo.get_latest_record(OOH_NA_NA_RECORD)Even further, the latest version ofnames.tsv.gzcan be automatically downloaded to the~/.data/zenodo/<conceptrecid>/<version>/<path>viapystowwith:fromzenodo_clientimportZenodozenodo=Zenodo()OOH_NA_NA_RECORD='4020486'new_record=zenodo.download_latest(OOH_NA_NA_RECORD,'names.tsv.gz')A real-world example can be foundherewhere the latest build of theOoh Na Nanomenclature
database is automatically downloaded from Zenodo, even though the PyOBO package only hardcodes the
first deposition ID.Command Line InterfaceThe zenodo_client command line tool is automatically installed. It can be used from the shell with
the--helpflag to show all subcommands:$zenodo_client--helpIt can be run withzenodo_client <deposition ID> <path 1> ... <path N>⬇️ InstallationThe most recent release can be installed fromPyPIwith:$pipinstallzenodo_clientThe most recent code and data can be installed directly from GitHub with:$pipinstallgit+https://github.com/cthoyt/zenodo-client.gitTo install in development mode, use the following:$gitclonegit+https://github.com/cthoyt/zenodo-client.git
$cdzenodo-client
$pipinstall-e.⚖️ LicenseThe code in this package is licensed under the MIT License.🙏 ContributingContributions, whether filing an issue, making a pull request, or forking, are appreciated. SeeCONTRIBUTING.rstfor more
information on getting involved.🍪 Cookiecutter AcknowledgementThis package was created with@audreyr'scookiecutterpackage
using@cthoyt'scookiecutter-python-packagetemplate.🛠️ DevelopmentThe final section of the README is for if you want to get involved by making a code contribution.❓ TestingAfter cloning the repository and installingtoxwithpip install tox, the unit tests in
thetests/folder can be run reproducibly with:$toxAdditionally, these tests are automatically re-run with each commit in
aGitHub Action.📦 Making a ReleaseAfter installing the package in development mode and installingtoxwithpip install tox, the commands for making a new release are contained within
thefinishenvironment intox.ini. Run the following from the shell:$tox-efinishThis script does the following:Uses BumpVersion to switch the version number in thesetup.cfgandsrc/zenodo_client/version.pyto not have the-devsuffixPackages the code in both a tar archive and a wheelUploads to PyPI usingtwine. Be sure to have a.pypircfile configured to avoid the need for
manual input at this stepPush to GitHub. You'll need to make a release going with the commit where the version was bumped.Bump the version to the next patch. If you made big changes and want to bump the version by
minor, you can usetox -e bumpversion minorafter.