Skip to main content

ManGO metadata schemas on iRODS

Project description

Apply ManGO metadata schemas in Python

Small application to apply metadata from a metadata schema using iRODS PRC.

Requirements

  • python-irodsclient
  • validators

Installation

You can install the package and its dependencies with pip:

pip install mango-mdschema

Usage

# authentication to iRODS
import os, os.path
from irods.session import iRODSSession
from mango_mdschema import Schema

env_file = os.getenv('IRODS_ENVIRONMENT_FILE', os.path.expanduser('~/.irods/irods_environment.json'))

# load a schema from file
my_schema = Schema('/path/to/schema') # this also validates it as a schema
with iRODSSession(irods_env_file=env_file) as session:
    obj = session.data_objects.get('path/to/my/object')
    my_metadata = {
        'text' : 'Some text',
        'a_date' : '2023-04-26',
        'author' : {
            'name' : 'Mariana',
            'email' : 'mariana.montes@kuleuven.be'
        }
    }
    my_schema.apply(obj, my_metadata)

The apply function will first validate the provided metadata dictionary before applying it on the iRODS object. See the tutorial for more details.

To only validate your metadata, without applying it, you can use the validate

function of the schema.

try:
    validated = my_schema.validate(metadata)
except (ConversionError, ValidationError) as err:
    print("Oops my metadata was not valid: {err}")

You can check the fields in a schema with:

print(my_schema)

The list of required fields and default values is found as the required_fields attribute. You can also check all the characteristics of a specific field such as 'name' with:

my_schema.print_requirements('name') # same as print(my_schema.fields['name'])

You can test the list of AVUs that would be sent by providing a given metadata dictonary like so:

avus = my_schema.to_avus(metadata)

The schema class can also read the metadata from ManGO and return it as nested dictionary with all values converted to their Python representation ( i.e. integer fields result in int values, datetime fields in datetime objects, etc.).

with iRODSSession(irods_env_file=env_file) as session:
    obj = session.data_objects.get('path/to/my/object')
    my_metadata = my_schema.extract(obj)

Check the tutorial notebook for more details.

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

mango_mdschema-1.1.0.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

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

mango_mdschema-1.1.0-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file mango_mdschema-1.1.0.tar.gz.

File metadata

  • Download URL: mango_mdschema-1.1.0.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mango_mdschema-1.1.0.tar.gz
Algorithm Hash digest
SHA256 f23715f7147be866aa2550546e8d49625312c45bf33303d7a54a36c07749cea6
MD5 1e33d1fe652c6872d057a9f0391852eb
BLAKE2b-256 94adc77ced013bc7e73ff5046437306275832954564cc9abeb4b879d579b216c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mango_mdschema-1.1.0.tar.gz:

Publisher: python-publish.yml on kuleuven/mango-mdschema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mango_mdschema-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: mango_mdschema-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mango_mdschema-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2bb9c343c0b5b53b7b04571971b22f26a5c511531cbf3aa510068bc74feeda61
MD5 02d544d8b3994a22e4c332867cddbbe9
BLAKE2b-256 985fac6f90f88d967d4c61ea87fdb09f14182a6d6c1ea16402df24df87848cb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for mango_mdschema-1.1.0-py3-none-any.whl:

Publisher: python-publish.yml on kuleuven/mango-mdschema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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