Python driver/validator for Bento Model Description Format
Project description
bento_mdf
Python 3 drivers for the graph Model Description Format
This directory provides test-mdf.py
, a standalone command line MDF validator.
Installation
Install the latest version (including scripts below) from GitHub using an up-to-date pip:
pip install bento-mdf
Scripts
Scripts test-mdf.py
and
load-mdf.py
are included in the
distribution. test-mdf
is a verbose validator that can be used to
find issues in a set of local MDFs using the MDF
JSONSchema. load-mdf
will load a
valid set of MDFs into an existing Neo4j Metamodel Database.
test-mdf
Usage
$ test-mdf.py -h
usage: test-mdf.py [-h] [--schema SCHEMA] [--quiet] [--log-file LOG_FILE]
mdf-file [mdf-file ...]
Validate MDF against JSONSchema
positional arguments:
mdf-file MDF yaml files for validation
optional arguments:
-h, --help show this help message and exit
--schema SCHEMA MDF JSONschema file
--quiet Suppress output; return only exit value
--log-file LOG_FILE Log file name
See "Validator Notes" below.
load-mdf
Usage
$ ./load-mdf.py -h
usage: load-mdf.py [-h] --commit COMMIT [--handle HANDLE] [--user USER] [--passw PASSW]
[--bolt BoltURL] [--put]
[MDF-FILE ...]
Load model in MDF into an MDB
positional arguments:
MDF-FILE MDF file(s)/url(s)
optional arguments:
-h, --help show this help message and exit
--commit COMMIT commit SHA1 for MDF instance (if any)
--handle HANDLE model handle
--user USER MDB username
--passw PASSW MDB password
--bolt BoltURL MDB Bolt url endpoint (specify as 'bolt://...')
--put Load model to database
Validator test-mdf.py
Notes
The --schema
argument is optional. test-mdf.py
will automatically retrieve the latest mdf-schema.yaml in the master branch of this repo.
The script tests both the syntax of the YAML (for both schema and MDF files), and the validity of the files with respect to the JSONSchema (for both schema and MDF files).
The errors are as emitted from the PyYaml and jsonschema packages, and can be rather obscure.
-
Successful test
$ test-mdf.py samples/ctdc_model_file.yaml samples/ctdc_model_properties_file.yaml Checking schema YAML ===== Checking as a JSON schema ===== Checking instance YAML ===== Checking instance against schema =====
-
Bad YAML syntax
$ test-mdf.py samples/ctdc_model_bad.yaml samples/ctdc_model_properties_file.yaml Checking schema YAML ===== Checking as a JSON schema ===== Checking instance YAML ===== YAML error in 'samples/ctdc_model_bad.yaml': while parsing a block mapping in "samples/ctdc_model_bad.yaml", line 1, column 1 expected <block end>, but found '<block mapping start>' in "samples/ctdc_model_bad.yaml", line 3, column 3
-
Schema-invalid YAML
$ test-mdf.py samples/ctdc_model_file_invalid.yaml samples/ctdc_model_properties_file.yaml Checking schema YAML ===== Checking as a JSON schema ===== Checking instance YAML ===== Checking instance against schema ===== ['show_node', 'specimen_id', 'biopsy_sequence_number', 'specimen_type'] is not of type 'object' Failed validating 'type' in schema['properties']['Nodes']['additionalProperties']: {'$id': '#nodeSpec', 'properties': {'Category': {'$ref': '#/defs/snake_case_id'}, 'Props': {'oneOf': [{'items': {'$ref': '#/defs/snake_case_id'}, 'type': 'array', 'uniqueItems': True}, {'type': 'null'}]}, 'Tags': {'$ref': '#/defs/tagsSpec'}}, 'required': ['Props'], 'type': 'object'} On instance['Nodes']['specimen']: ['show_node', 'specimen_id', 'biopsy_sequence_number', 'specimen_type']
Testing the tester
The validator code itself can be tested as follows:
pip install tox
cd bento-mdf/validators/mdf-validate
tox
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file bento_mdf-0.10.0.tar.gz
.
File metadata
- Download URL: bento_mdf-0.10.0.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f048f60d57620d990b2990ed35d12e01ac3b46c3256d817e65388d3a2cd829e6 |
|
MD5 | 98de224c159a66c84e80f2825eaa6d23 |
|
BLAKE2b-256 | bc3c160f83b721fa693d6f97f29bdc32cee2be79234aa3549b7b6fea8ae011bd |
File details
Details for the file bento_mdf-0.10.0-py3-none-any.whl
.
File metadata
- Download URL: bento_mdf-0.10.0-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a98f1fc193ec7803bc96c2d113c1167b8f49a92fea0e722477f833437c34d2eb |
|
MD5 | 6a1325779fe5d68fc4fec9680a973b04 |
|
BLAKE2b-256 | b6c4209fb26e8bedc4611d4c26e35036f9b206473008a9a07b967e8e913e9893 |