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.1 (released 2024-07-14)

  • installation: remove invenio-i18n dependency

Version 0.1.0 (released 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.1.tar.gz (22.9 kB view details)

Uploaded Source

Built Distribution

inveniordm_py-0.1.1-py2.py3-none-any.whl (20.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file inveniordm-py-0.1.1.tar.gz.

File metadata

  • Download URL: inveniordm-py-0.1.1.tar.gz
  • Upload date:
  • Size: 22.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.19

File hashes

Hashes for inveniordm-py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f1b61834c6a2236a6079bbc17926645b924ba493279d901ceb8bcf6d53091c95
MD5 cb2aede03c7a1dd9e7a8bfbb21b9c978
BLAKE2b-256 3601bf0787c40c62d64d32d3b484572d42f218c06417109629a00f930325e351

See more details on using hashes here.

File details

Details for the file inveniordm_py-0.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for inveniordm_py-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c9c0ebc6dc65953ca326e2162ed452abd1c4def57ef45d93b47205a45b2f0e91
MD5 7972c061d09c06f75c5d074a1e28030f
BLAKE2b-256 38774fd894baeaf59795f8a79723098b9199d5007a35eeb6099953ebf22c51f7

See more details on using hashes here.

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