Skip to content
This repository has been archived by the owner on Nov 21, 2023. It is now read-only.

Commit

Permalink
Add tutorial notebook (#19)
Browse files Browse the repository at this point in the history
* Add tutorial notebooks
* Fix reference and how plugins are supplied
* Update README.md
* Bump version
  • Loading branch information
deepakunni3 authored Dec 6, 2022
1 parent d11f1a3 commit 9e9447f
Show file tree
Hide file tree
Showing 9 changed files with 828 additions and 14 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ data_obj = {
"name": "Object 1",
"type": "X"
}
validator = Validator(schema="examples/example_schema.yaml", plugins={MyCustomPlugin})
validator = Validator(schema="examples/example_schema.yaml", plugins=[{"plugin_class": "MyCustomPlugin", "args": {}])
validator.validate(obj=data_obj, target_class="NamedThing")

```
Expand Down
4 changes: 2 additions & 2 deletions examples/example_data1_validation_report.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"valid": true,
"validation_results": [
{
"plugin_name": "JsonschemaValidationPlugin",
"plugin_name": "JsonSchemaValidationPlugin",
"valid": true,
"validation_messages": []
}
Expand All @@ -25,7 +25,7 @@
"valid": true,
"validation_results": [
{
"plugin_name": "JsonschemaValidationPlugin",
"plugin_name": "JsonSchemaValidationPlugin",
"valid": true,
"validation_messages": []
}
Expand Down
4 changes: 2 additions & 2 deletions examples/example_data2_validation_report.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"valid": true,
"validation_results": [
{
"plugin_name": "JsonschemaValidationPlugin",
"plugin_name": "JsonSchemaValidationPlugin",
"valid": true,
"validation_messages": []
}
Expand All @@ -25,7 +25,7 @@
"valid": true,
"validation_results": [
{
"plugin_name": "JsonschemaValidationPlugin",
"plugin_name": "JsonSchemaValidationPlugin",
"valid": true,
"validation_messages": []
}
Expand Down
2 changes: 1 addition & 1 deletion linkml_validator/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.4.4"
__version__ = "0.4.5"
6 changes: 3 additions & 3 deletions linkml_validator/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@


PLUGINS = {
"JsonschemaValidationPlugin": "linkml_validator.plugins.jsonschema_validation.JsonschemaValidationPlugin",
"JsonSchemaValidationPlugin": "linkml_validator.plugins.jsonschema_validation.JsonSchemaValidationPlugin",
"RangeValidationPlugin": "linkml_validator.plugins.range_validation.RangeValidationPlugin",
}

Expand Down Expand Up @@ -50,7 +50,7 @@ def cli(inputs, schema, output, target_class, plugins, strict):
"""
Run the Validator on data from one or more files.
"""
plugin_class_references = set()
plugin_class_references = []
if not plugins:
plugins = DEFAULT_PLUGINS.values()
for plugin in plugins:
Expand All @@ -59,7 +59,7 @@ def cli(inputs, schema, output, target_class, plugins, strict):
plugin_module_name = ".".join(plugin.split(".")[:-1])
plugin_class_name = plugin.split(".")[-1]
plugin_class = import_plugin(plugin_module_name, plugin_class_name)
plugin_class_references.add(plugin_class)
plugin_class_references.append({'plugin_class': plugin_class})
validator = Validator(schema=schema, plugins=plugin_class_references)
for filename in inputs:
reports = [x for x in validator.validate_file(filename=filename, target_class=target_class, strict=strict)]
Expand Down
10 changes: 5 additions & 5 deletions linkml_validator/validator.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@


DEFAULT_PLUGINS = {
"JsonschemaValidationPlugin": JsonSchemaValidationPlugin
"JsonSchemaValidationPlugin": JsonSchemaValidationPlugin
}


Expand All @@ -17,13 +17,13 @@ class Validator:
Args:
schema: Path or URL to schema YAML
plugins: A set of plugin classes to use for validation
plugins: A list of plugin classes to use for validation
"""

def __init__(self, schema: str, plugins: List[Dict] = None) -> None:
self.schema = schema
self.plugins = set()
self.plugins = []
if plugins:
for plugin in plugins:
plugin_class = plugin["plugin_class"]
Expand All @@ -33,11 +33,11 @@ def __init__(self, schema: str, plugins: List[Dict] = None) -> None:
if not issubclass(plugin_class, BasePlugin):
raise Exception(f"{plugin_class} must be a subclass of {BasePlugin}")
instance = plugin_class(schema=self.schema, **plugin_args)
self.plugins.add(instance)
self.plugins.append(instance)
else:
for plugin_class in DEFAULT_PLUGINS.values():
instance = plugin_class(schema=self.schema)
self.plugins.add(instance)
self.plugins.append(instance)

def validate(
self, obj: Dict, target_class: str, strict: bool = False, **kwargs
Expand Down
Loading

0 comments on commit 9e9447f

Please sign in to comment.