Skip to main content

"Invenio REST API client."

Project description

inveniordm-py

https://github.com/inveniosoftware/inveniordm-py/workflows/CI/badge.svg https://img.shields.io/github/tag/inveniosoftware/inveniordm-py.svg https://img.shields.io/pypi/dm/inveniordm-py.svg https://img.shields.io/github/license/inveniosoftware/inveniordm-py.svg

inveniordm-py is a Python client designed to interact with the InvenioRDM API.

Usage

Here’s a basic example of how to use inveniordm-py:

from inveniordm_py.client import InvenioAPI

# Initialize client
client = InvenioAPI('https://your-invenio-instance.com', 'your-token')

# Get a list of all records
records = client.records.search()

The client supports creating and updating drafts:

from inveniordm_py.records.metadata import DraftMetadata

# Create a draft with metadata
data = {
    "metadata": {
        "title": "Test",
        "resource_type": {
            "id": "publication-article",
        },
        "publication_date": "2024",
        "creators": [
            {
                "person_or_org": {
                    "family_name": "Brown",
                    "given_name": "Troy",
                    "type": "personal",
                }
            },
        ],
        "publisher": "Zenodo"
    }
}
draft = client.records.create(data=DraftMetadata(data))

# Update metadata and draft
data.update({
    "metadata": {
        "title": "Test 2",
    }
})
draft.update(data=DraftMetadata(data))

Files can be added to the draft:

from inveniordm_py.files.metadata import FileMetadata, OutgoingStream, FileMetadata

# Define files metadata
fname = "test.txt"
fpath = "/path/to/test.txt"
file_data = FileMetadata({"key": fname})

# Create the file and add it to the draft using a stream
draft.files.create(file_data)
stream = open(fpath, "rb")
f.set_contents(OutgoingStream(data=stream))
f.commit()

# It also supports the addition of multiple files from disk
_dir = "/path/to/dir"
file_data = FilesListMetadata([{"key": fname} for fname in os.listdir(_dir)])
draft.files.create(file_data)
for f in draft.files:
    file_path = os.path.join(_dir, f.data['key'])
    stream = open(file_path, "rb")
    f.set_contents(OutgoingStream(data=stream))
    f.commit()

Finally, the draft can be published:

# Publish the draft and check the status
record = draft.publish()
print(record.data["status"])

Changes

Version 0.1.0 (2024-05-13)

  • Initial public alpha release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inveniordm-py-0.1.0.tar.gz (22.8 kB view hashes)

Uploaded Source

Built Distribution

inveniordm_py-0.1.0-py2.py3-none-any.whl (20.0 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page