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

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 2Python 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

  • Download URL: inveniordm_py-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.8.19

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 Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page