linkml 1.8.5__py3-none-any.whl → 1.8.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- linkml/cli/main.py +2 -0
- linkml/generators/common/build.py +1 -2
- linkml/generators/common/lifecycle.py +18 -2
- linkml/generators/dbmlgen.py +173 -0
- linkml/generators/erdiagramgen.py +1 -0
- linkml/generators/jsonldcontextgen.py +7 -1
- linkml/generators/jsonldgen.py +1 -3
- linkml/generators/jsonschemagen.py +84 -53
- linkml/generators/linkmlgen.py +13 -1
- linkml/generators/mermaidclassdiagramgen.py +133 -0
- linkml/generators/owlgen.py +16 -14
- linkml/generators/plantumlgen.py +17 -10
- linkml/generators/pydanticgen/array.py +21 -61
- linkml/generators/pydanticgen/templates/attribute.py.jinja +1 -1
- linkml/generators/shacl/shacl_ifabsent_processor.py +2 -1
- linkml/generators/shaclgen.py +16 -5
- linkml/generators/shexgen.py +1 -3
- linkml/generators/summarygen.py +1 -3
- linkml/generators/typescriptgen.py +3 -1
- linkml/generators/yamlgen.py +1 -3
- linkml/linter/rules.py +3 -1
- linkml/transformers/logical_model_transformer.py +7 -5
- linkml/utils/converter.py +17 -0
- linkml/utils/deprecation.py +10 -0
- linkml/utils/generator.py +11 -2
- linkml/utils/helpers.py +65 -0
- linkml/utils/validation.py +2 -1
- linkml/validator/__init__.py +2 -2
- linkml/validator/plugins/jsonschema_validation_plugin.py +1 -0
- linkml/validator/report.py +4 -1
- linkml/validator/validator.py +4 -4
- linkml/validators/jsonschemavalidator.py +10 -0
- linkml/validators/sparqlvalidator.py +7 -0
- linkml/workspaces/example_runner.py +21 -4
- {linkml-1.8.5.dist-info → linkml-1.8.7.dist-info}/METADATA +2 -2
- {linkml-1.8.5.dist-info → linkml-1.8.7.dist-info}/RECORD +39 -37
- {linkml-1.8.5.dist-info → linkml-1.8.7.dist-info}/entry_points.txt +2 -0
- {linkml-1.8.5.dist-info → linkml-1.8.7.dist-info}/LICENSE +0 -0
- {linkml-1.8.5.dist-info → linkml-1.8.7.dist-info}/WHEEL +0 -0
linkml/utils/helpers.py
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
import re
|
2
|
+
from functools import lru_cache
|
3
|
+
from typing import List, Tuple, Union
|
4
|
+
|
5
|
+
from linkml_runtime import SchemaView
|
6
|
+
from linkml_runtime.linkml_model.meta import (
|
7
|
+
ClassDefinition,
|
8
|
+
ElementName,
|
9
|
+
SlotDefinition,
|
10
|
+
)
|
2
11
|
|
3
12
|
|
4
13
|
def remove_duplicates(lst):
|
@@ -14,3 +23,59 @@ def write_to_file(file_path, data, mode="w", encoding="utf-8"):
|
|
14
23
|
def convert_to_snake_case(str):
|
15
24
|
str = re.sub(r"(?<=[a-z])(?=[A-Z])|[^a-zA-Z]", " ", str).strip().replace(" ", "_")
|
16
25
|
return "".join(str.lower())
|
26
|
+
|
27
|
+
|
28
|
+
@lru_cache(None)
|
29
|
+
def get_range_associated_slots(
|
30
|
+
schemaview: SchemaView, range_class: ClassDefinition
|
31
|
+
) -> Tuple[Union[SlotDefinition, None], Union[SlotDefinition, None], Union[List[SlotDefinition], None]]:
|
32
|
+
if isinstance(range_class, ElementName):
|
33
|
+
range_class = schemaview.get_class(range_class)
|
34
|
+
if range_class is None:
|
35
|
+
return None, None, None
|
36
|
+
|
37
|
+
range_class_id_slot = schemaview.get_identifier_slot(range_class.name, use_key=True)
|
38
|
+
if range_class_id_slot is None:
|
39
|
+
return None, None, None
|
40
|
+
|
41
|
+
non_id_slots = [s for s in schemaview.class_induced_slots(range_class.name) if s.name != range_class_id_slot.name]
|
42
|
+
non_id_required_slots = [s for s in non_id_slots if s.required]
|
43
|
+
|
44
|
+
# Some lists of objects can be serialized as SimpleDicts.
|
45
|
+
# A SimpleDict is serialized as simple key-value pairs where the value is atomic.
|
46
|
+
# The key must be declared as a key, and the value must satisfy one of the following conditions:
|
47
|
+
# 1. The value slot is the only other slot in the object other than the key
|
48
|
+
# 2. The value slot is explicitly annotated as a simple_dict_value
|
49
|
+
# 3. The value slot is the only non-key that is required
|
50
|
+
# See also: https://github.com/linkml/linkml/issues/1250
|
51
|
+
range_simple_dict_value_slot = None
|
52
|
+
if len(non_id_slots) == 1:
|
53
|
+
range_simple_dict_value_slot = non_id_slots[0]
|
54
|
+
elif len(non_id_slots) > 1:
|
55
|
+
candidate_non_id_slots = []
|
56
|
+
for non_id_slot in non_id_slots:
|
57
|
+
if isinstance(non_id_slot.annotations, dict):
|
58
|
+
is_simple_dict_value = non_id_slot.annotations.get("simple_dict_value", False)
|
59
|
+
else:
|
60
|
+
is_simple_dict_value = getattr(non_id_slot.annotations, "simple_dict_value", False)
|
61
|
+
if is_simple_dict_value:
|
62
|
+
candidate_non_id_slots.append(non_id_slot)
|
63
|
+
if len(candidate_non_id_slots) == 1:
|
64
|
+
range_simple_dict_value_slot = candidate_non_id_slots[0]
|
65
|
+
else:
|
66
|
+
candidate_non_id_slots = []
|
67
|
+
for non_id_slot in non_id_slots:
|
68
|
+
if non_id_slot.required:
|
69
|
+
candidate_non_id_slots.append(non_id_slot)
|
70
|
+
if len(candidate_non_id_slots) == 1:
|
71
|
+
range_simple_dict_value_slot = candidate_non_id_slots[0]
|
72
|
+
|
73
|
+
return range_class_id_slot, range_simple_dict_value_slot, non_id_required_slots
|
74
|
+
|
75
|
+
|
76
|
+
def is_simple_dict(schemaview: SchemaView, slot: SlotDefinition) -> bool:
|
77
|
+
if not slot.multivalued or not slot.inlined or slot.inlined_as_list:
|
78
|
+
return False
|
79
|
+
else:
|
80
|
+
_, range_simple_dict_value_slot, _ = get_range_associated_slots(schemaview, slot.range)
|
81
|
+
return range_simple_dict_value_slot is not None
|
linkml/utils/validation.py
CHANGED
@@ -7,6 +7,7 @@ from linkml_runtime.linkml_model import SchemaDefinition
|
|
7
7
|
from linkml_runtime.utils.yamlutils import YAMLRoot
|
8
8
|
|
9
9
|
from linkml.generators.jsonschemagen import JsonSchemaGenerator
|
10
|
+
from linkml.utils.deprecation import deprecation_warning
|
10
11
|
|
11
12
|
|
12
13
|
def _as_dict(inst):
|
@@ -16,7 +17,6 @@ def _as_dict(inst):
|
|
16
17
|
return inst_dict
|
17
18
|
|
18
19
|
|
19
|
-
# Deprecated: use validators module
|
20
20
|
def validate_object(
|
21
21
|
data: YAMLRoot,
|
22
22
|
schema: Union[str, TextIO, SchemaDefinition],
|
@@ -32,6 +32,7 @@ def validate_object(
|
|
32
32
|
:param closed:
|
33
33
|
:return:
|
34
34
|
"""
|
35
|
+
deprecation_warning("validators")
|
35
36
|
if target_class is None:
|
36
37
|
target_class = type(data)
|
37
38
|
inst_dict = _as_dict(data)
|
linkml/validator/__init__.py
CHANGED
@@ -60,7 +60,7 @@ def validate(
|
|
60
60
|
otherwise it should be a ``SchemaDefinition`` instance.
|
61
61
|
:param target_class: Name of the class within the schema to validate
|
62
62
|
against. If ``None``, the class will be inferred from the schema by
|
63
|
-
|
63
|
+
looking for a class with ``tree_root: true``. Defaults to ``None``.
|
64
64
|
:param strict: If ``True``, validation will stop after the first validation
|
65
65
|
error is found, Otherwise all validation problems will be reported.
|
66
66
|
Defaults to ``False``.
|
@@ -99,7 +99,7 @@ def validate_file(
|
|
99
99
|
otherwise it should be a ``SchemaDefinition`` instance.
|
100
100
|
:param target_class: Name of the class within the schema to validate
|
101
101
|
against. If ``None``, the class will be inferred from the schema by
|
102
|
-
|
102
|
+
looking for a class with ``tree_root: true``. Defaults to ``None``.
|
103
103
|
:param strict: If ``True``, validation will stop after the first validation
|
104
104
|
error is found, Otherwise all validation problems will be reported.
|
105
105
|
Defaults to ``False``.
|
linkml/validator/report.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from enum import Enum
|
2
2
|
from typing import Any, List, Optional
|
3
3
|
|
4
|
-
from pydantic import BaseModel
|
4
|
+
from pydantic import BaseModel, Field
|
5
5
|
|
6
6
|
|
7
7
|
class Severity(str, Enum):
|
@@ -30,6 +30,9 @@ class ValidationResult(BaseModel):
|
|
30
30
|
instantiates: Optional[str] = None
|
31
31
|
context: List[str] = []
|
32
32
|
|
33
|
+
# The source object that caused this validation result
|
34
|
+
source: Any = Field(None, description="The source of this validation result", exclude=True)
|
35
|
+
|
33
36
|
|
34
37
|
class ValidationReport(BaseModel):
|
35
38
|
"""
|
linkml/validator/validator.py
CHANGED
@@ -48,7 +48,7 @@ class Validator:
|
|
48
48
|
:param instance: The instance to validate
|
49
49
|
:param target_class: Name of the class within the schema to validate
|
50
50
|
against. If ``None``, the class will be inferred from the schema by
|
51
|
-
|
51
|
+
looking for a class with ``tree_root: true``. Defaults to ``None``.
|
52
52
|
:return: A validation report
|
53
53
|
:rtype: ValidationReport
|
54
54
|
"""
|
@@ -61,7 +61,7 @@ class Validator:
|
|
61
61
|
which provides the instances to validate
|
62
62
|
:param target_class: Name of the class within the schema to validate
|
63
63
|
against. If ``None``, the class will be inferred from the schema by
|
64
|
-
|
64
|
+
looking for a class with ``tree_root: true``. Defaults to ``None``.
|
65
65
|
:return: A validation report
|
66
66
|
:rtype: ValidationReport
|
67
67
|
"""
|
@@ -73,7 +73,7 @@ class Validator:
|
|
73
73
|
:param instance: The instance to validate
|
74
74
|
:param target_class: Name of the class within the schema to validate
|
75
75
|
against. If ``None``, the class will be inferred from the schema by
|
76
|
-
|
76
|
+
looking for a class with ``tree_root: true``. Defaults to ``None``.
|
77
77
|
:return: Iterator over validation results
|
78
78
|
:rtype: Iterator[ValidationResult]
|
79
79
|
"""
|
@@ -89,7 +89,7 @@ class Validator:
|
|
89
89
|
which provides the instances to validate
|
90
90
|
:param target_class: Name of the class within the schema to validate
|
91
91
|
against. If ``None``, the class will be inferred from the schema by
|
92
|
-
|
92
|
+
looking for a class with ``tree_root: true``. Defaults to ``None``.
|
93
93
|
:return: Iterator over validation results
|
94
94
|
:rtype: Iterator[ValidationResult]
|
95
95
|
"""
|
@@ -18,6 +18,7 @@ from linkml.generators.jsonschemagen import JsonSchemaGenerator
|
|
18
18
|
from linkml.generators.pythongen import PythonGenerator
|
19
19
|
from linkml.utils import datautils
|
20
20
|
from linkml.utils.datavalidator import DataValidator
|
21
|
+
from linkml.utils.deprecation import deprecation_warning
|
21
22
|
|
22
23
|
logger = logging.getLogger(__name__)
|
23
24
|
|
@@ -29,6 +30,7 @@ class HashableSchemaDefinition(SchemaDefinition):
|
|
29
30
|
|
30
31
|
@lru_cache(maxsize=None)
|
31
32
|
def _generate_jsonschema(schema, top_class, closed, include_range_class_descendants):
|
33
|
+
deprecation_warning("validators")
|
32
34
|
logger.debug("Generating JSON Schema")
|
33
35
|
not_closed = not closed
|
34
36
|
return JsonSchemaGenerator(
|
@@ -42,6 +44,7 @@ def _generate_jsonschema(schema, top_class, closed, include_range_class_descenda
|
|
42
44
|
|
43
45
|
class JsonSchemaDataValidatorError(Exception):
|
44
46
|
def __init__(self, validation_messages: List[str]) -> None:
|
47
|
+
deprecation_warning("validators")
|
45
48
|
super().__init__("\n".join(validation_messages))
|
46
49
|
self.validation_messages = validation_messages
|
47
50
|
|
@@ -56,6 +59,7 @@ class JsonSchemaDataValidator(DataValidator):
|
|
56
59
|
_hashable_schema: Union[str, HashableSchemaDefinition] = field(init=False, repr=False)
|
57
60
|
|
58
61
|
def __setattr__(self, __name: str, __value: Any) -> None:
|
62
|
+
deprecation_warning("validators")
|
59
63
|
if __name == "schema":
|
60
64
|
if isinstance(__value, SchemaDefinition):
|
61
65
|
self._hashable_schema = HashableSchemaDefinition(**asdict(__value))
|
@@ -65,6 +69,7 @@ class JsonSchemaDataValidator(DataValidator):
|
|
65
69
|
|
66
70
|
def validate_file(self, input: str, format: str = "json", **kwargs):
|
67
71
|
# return self.validate_object(obj)
|
72
|
+
deprecation_warning("validators")
|
68
73
|
pass
|
69
74
|
|
70
75
|
def validate_object(self, data: YAMLRoot, target_class: Type[YAMLRoot] = None, closed: bool = True) -> None:
|
@@ -76,6 +81,7 @@ class JsonSchemaDataValidator(DataValidator):
|
|
76
81
|
:param closed:
|
77
82
|
:return:
|
78
83
|
"""
|
84
|
+
deprecation_warning("validators")
|
79
85
|
if target_class is None:
|
80
86
|
target_class = type(data)
|
81
87
|
inst_dict = as_simple_dict(data)
|
@@ -90,6 +96,7 @@ class JsonSchemaDataValidator(DataValidator):
|
|
90
96
|
:param closed:
|
91
97
|
:return:
|
92
98
|
"""
|
99
|
+
deprecation_warning("validators")
|
93
100
|
results = list(self.iter_validate_dict(data, target_class, closed))
|
94
101
|
if results:
|
95
102
|
raise JsonSchemaDataValidatorError(results)
|
@@ -97,6 +104,7 @@ class JsonSchemaDataValidator(DataValidator):
|
|
97
104
|
def iter_validate_dict(
|
98
105
|
self, data: dict, target_class_name: ClassDefinitionName = None, closed: bool = True
|
99
106
|
) -> Iterable[str]:
|
107
|
+
deprecation_warning("validators")
|
100
108
|
if self.schema is None:
|
101
109
|
raise ValueError("schema object must be set")
|
102
110
|
if target_class_name is None:
|
@@ -159,6 +167,8 @@ def cli(
|
|
159
167
|
"""
|
160
168
|
Validates instance data
|
161
169
|
"""
|
170
|
+
deprecation_warning("validators")
|
171
|
+
|
162
172
|
if module is None:
|
163
173
|
if schema is None:
|
164
174
|
raise Exception("must pass one of module OR schema")
|
@@ -14,11 +14,13 @@ from linkml.generators.sparqlgen import SparqlGenerator
|
|
14
14
|
from linkml.reporting import CheckResult, Report
|
15
15
|
from linkml.utils.datautils import _get_format, dumpers_loaders, get_dumper
|
16
16
|
from linkml.utils.datavalidator import DataValidator
|
17
|
+
from linkml.utils.deprecation import deprecation_warning
|
17
18
|
|
18
19
|
logger = logging.getLogger(__name__)
|
19
20
|
|
20
21
|
|
21
22
|
def sparqljson2dict(row: dict):
|
23
|
+
deprecation_warning("validators")
|
22
24
|
return {k: v["value"] for k, v in row.items()}
|
23
25
|
|
24
26
|
|
@@ -37,11 +39,13 @@ class SparqlDataValidator(DataValidator):
|
|
37
39
|
queries: dict = None
|
38
40
|
|
39
41
|
def validate_file(self, input: str, format: str = "turtle", **kwargs):
|
42
|
+
deprecation_warning("validators")
|
40
43
|
g = Graph()
|
41
44
|
g.parse(input, format=format)
|
42
45
|
return self.validate_graph(g, **kwargs)
|
43
46
|
|
44
47
|
def validate_graph(self, g: Graph, **kwargs):
|
48
|
+
deprecation_warning("validators")
|
45
49
|
if self.queries is None:
|
46
50
|
self.queries = SparqlGenerator(self.schema, **kwargs).queries
|
47
51
|
invalid = []
|
@@ -61,6 +65,7 @@ class SparqlDataValidator(DataValidator):
|
|
61
65
|
return invalid
|
62
66
|
|
63
67
|
def validate_endpoint(self, url: str, **kwargs):
|
68
|
+
deprecation_warning("validators")
|
64
69
|
if self.queries is None:
|
65
70
|
self.queries = SparqlGenerator(self.schema, **kwargs).queries
|
66
71
|
invalid = []
|
@@ -81,6 +86,7 @@ class SparqlDataValidator(DataValidator):
|
|
81
86
|
return report
|
82
87
|
|
83
88
|
def load_schema(self, schema: Union[str, SchemaDefinition]):
|
89
|
+
deprecation_warning("validators")
|
84
90
|
self.schemaview = SchemaView(schema)
|
85
91
|
self.schema = self.schemaview.schema
|
86
92
|
# self.schema = YAMLGenerator(schema).schema
|
@@ -124,6 +130,7 @@ def cli(
|
|
124
130
|
|
125
131
|
linkml-sparql-validate -U http://sparql.hegroup.org/sparql -s tests/test_validation/input/omo.yaml
|
126
132
|
"""
|
133
|
+
deprecation_warning("validators")
|
127
134
|
validator = SparqlDataValidator(schema)
|
128
135
|
if endpoint_url is not None:
|
129
136
|
results = validator.validate_endpoint(endpoint_url, limit=limit, named_graphs=named_graph)
|
@@ -1,6 +1,4 @@
|
|
1
|
-
"""Iterate through all examples in a folder testing them for validity.
|
2
|
-
|
3
|
-
"""
|
1
|
+
"""Iterate through all examples in a folder testing them for validity."""
|
4
2
|
|
5
3
|
import glob
|
6
4
|
import json
|
@@ -22,6 +20,7 @@ from linkml_runtime.utils.formatutils import camelcase
|
|
22
20
|
|
23
21
|
from linkml._version import __version__
|
24
22
|
from linkml.generators.pythongen import PythonGenerator
|
23
|
+
from linkml.utils.helpers import get_range_associated_slots
|
25
24
|
from linkml.validator import Validator, _get_default_validator
|
26
25
|
|
27
26
|
logger = logging.getLogger(__name__)
|
@@ -244,10 +243,28 @@ class ExampleRunner:
|
|
244
243
|
raise ValueError(f"Cannot find unique class for URI {target_class}; got: {target_classes}")
|
245
244
|
target_class = target_classes[0]
|
246
245
|
new_dict_obj = {}
|
246
|
+
|
247
247
|
for k, v in dict_obj.items():
|
248
248
|
if v is not None:
|
249
249
|
islot = sv.induced_slot(k, target_class)
|
250
|
-
|
250
|
+
# if slot is a dictionary, repeat key in dictionary value object
|
251
|
+
if islot.multivalued and islot.inlined and not islot.inlined_as_list:
|
252
|
+
(range_id_slot, range_simple_dict_value_slot, _) = get_range_associated_slots(
|
253
|
+
self.schemaview, islot.range
|
254
|
+
)
|
255
|
+
v_as_list = []
|
256
|
+
for ik, iv in v.items():
|
257
|
+
# simple dictionaries can be simply created
|
258
|
+
if range_simple_dict_value_slot is not None:
|
259
|
+
value = {range_id_slot.name: ik, range_simple_dict_value_slot.name: iv}
|
260
|
+
# other dictionaries => simply add the identifier to the dictionary
|
261
|
+
else:
|
262
|
+
value = iv
|
263
|
+
value[range_id_slot.name] = ik
|
264
|
+
v_as_list.append(value)
|
265
|
+
v2 = self._load_from_dict(v_as_list, target_class=islot.range)
|
266
|
+
else:
|
267
|
+
v2 = self._load_from_dict(v, target_class=islot.range)
|
251
268
|
new_dict_obj[k] = v2
|
252
269
|
py_target_class = getattr(self.python_module, camelcase(target_class))
|
253
270
|
return py_target_class(**new_dict_obj)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: linkml
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.7
|
4
4
|
Summary: Linked Open Data Modeling Language
|
5
5
|
Home-page: https://linkml.io/linkml/
|
6
6
|
Keywords: schema,linked data,data modeling,rdf,owl,biolink
|
@@ -53,7 +53,7 @@ Requires-Dist: pyyaml
|
|
53
53
|
Requires-Dist: rdflib (>=6.0.0)
|
54
54
|
Requires-Dist: requests (>=2.22)
|
55
55
|
Requires-Dist: sqlalchemy (>=1.4.31)
|
56
|
-
Requires-Dist: typing-extensions (>=4.
|
56
|
+
Requires-Dist: typing-extensions (>=4.6.0) ; python_version < "3.12"
|
57
57
|
Requires-Dist: watchdog (>=0.9.0)
|
58
58
|
Project-URL: Documentation, https://linkml.io/linkml/
|
59
59
|
Project-URL: Repository, https://github.com/linkml/linkml
|
@@ -2,18 +2,19 @@ linkml/__init__.py,sha256=0REu65rXiOk3F1CYLzq60HiSZ2DfFySfGS6QFljZ01s,3663
|
|
2
2
|
linkml/_version.py,sha256=udxv6OEqcE89DTVMYPtetXYg8IA8Sgc6yW26-6f8C3M,310
|
3
3
|
linkml/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
4
|
linkml/cli/__main__.py,sha256=oPa7Fl2DQP40UivpIWNRr1CgwT2SQM0rhE478155zBY,80
|
5
|
-
linkml/cli/main.py,sha256=
|
5
|
+
linkml/cli/main.py,sha256=4X0OXU53nqkS18ViOIRLH8bx2eDVzgisWixhx9bhgPQ,5484
|
6
6
|
linkml/generators/PythonGenNotes.md,sha256=wb9BPLLhF6378OKLbwSBAwmniLpwrcT5_bbfCHfLme8,51006
|
7
7
|
linkml/generators/README.md,sha256=RMzT8EblC_GEdPy5WyfXHDBXlFI6k6mz3Cx2sdpcyWI,4438
|
8
8
|
linkml/generators/__init__.py,sha256=2qSOnibL6KtzBW3KNqVX1gx1LQttrXlOPbbVDLLV2go,1587
|
9
9
|
linkml/generators/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
linkml/generators/common/build.py,sha256=
|
10
|
+
linkml/generators/common/build.py,sha256=AR1jnMzE7WXBlLCX1qdgilj8qmBHRWFwsNx9nw2RBzQ,2928
|
11
11
|
linkml/generators/common/ifabsent_processor.py,sha256=hVm6mKq8qciL5Fa53TAtGO8ZJnbRuktvJnaA6-HutTk,13533
|
12
|
-
linkml/generators/common/lifecycle.py,sha256=
|
12
|
+
linkml/generators/common/lifecycle.py,sha256=We0h_GeyL1biDaXCsd0ENWqGMpgtDbWOMCk-1-JJTD4,5514
|
13
13
|
linkml/generators/common/naming.py,sha256=AsLJ7e87TU_SnAM0Sy7q9HZc-qXvyIuqHt1CoHV-Y3Y,5089
|
14
14
|
linkml/generators/common/template.py,sha256=bjcSNiC85MYl9oGhk0ZpqwZpRxxy_NqxG8XBV-TXXDY,3338
|
15
15
|
linkml/generators/common/type_designators.py,sha256=lgVcIRJJ-yCvVGeP9U_gQZpm77UmJBQo9Bh3lGJITno,1956
|
16
16
|
linkml/generators/csvgen.py,sha256=O20K3IuDxomGJAyNFJmm1_HbPyl6xUK0l-aKY0A3KcM,3253
|
17
|
+
linkml/generators/dbmlgen.py,sha256=IrtY65iFdXg4wHBP9vHQeV20HUOUB1XlggPtmt_YvGM,5466
|
17
18
|
linkml/generators/docgen/class.md.jinja2,sha256=-JmjYHgYOaaBYd5r-Tr5dkk0CLM_lX0kHdocPQtRsjU,3504
|
18
19
|
linkml/generators/docgen/class_diagram.md.jinja2,sha256=gzskx4hOpU_s6BqOXdYZ9DwKxuClnsEgDzPurm30PeY,3469
|
19
20
|
linkml/generators/docgen/common_metadata.md.jinja2,sha256=gy9J8rghBfKDKimwtHj_XuHY4PJRRYHLXVlBHqWrUzU,1604
|
@@ -26,7 +27,7 @@ linkml/generators/docgen/subset.md.jinja2,sha256=EPln_fjlhlkmwEGEp2iPX-9Xm2vVodP
|
|
26
27
|
linkml/generators/docgen/type.md.jinja2,sha256=QmCMJZrFwP33eHkggBVtypbyrxTb-XZn9vHOYojVaYk,635
|
27
28
|
linkml/generators/docgen.py,sha256=iDSu2LsZ7MStrzXdxFwK-oBlVevq2MwBc1n5WzHzTyw,38996
|
28
29
|
linkml/generators/dotgen.py,sha256=vjHveFtKBItHRkowi1I4FHffcn4u4wLpBydYgVxB-vE,5028
|
29
|
-
linkml/generators/erdiagramgen.py,sha256=
|
30
|
+
linkml/generators/erdiagramgen.py,sha256=BteqzyVgKeUXfdCq3VHiiJMbuMrsn_D08IoNq8QMBcY,11462
|
30
31
|
linkml/generators/excelgen.py,sha256=MQRRm1wDbg7auUQH9tGb5aRyrp-e4gjXsY10aoLb9LI,7708
|
31
32
|
linkml/generators/golanggen.py,sha256=Qx1GZRIrKn8jNoO-8fJMjkrwV9ZLwR4NwYBW5kGGp9c,5840
|
32
33
|
linkml/generators/golrgen.py,sha256=JB92VDhTuwyaOyxHxB4goIsjZbq4NMf36ESprC3GeBs,3454
|
@@ -34,27 +35,28 @@ linkml/generators/graphqlgen.py,sha256=belU4f89vBHoHBipaMkHiE_ND42IV7L0Zp4akL9sQ
|
|
34
35
|
linkml/generators/javagen/example_template.java.jinja2,sha256=ec4CVTv_0zS7V5Y-1E6H4lRraya10gfX7BEMBlu38X4,444
|
35
36
|
linkml/generators/javagen/java_record_template.jinja2,sha256=OQZffLSy_xR3FIhQMltvrYyVeut7l2Q-tzK7AOiVmWs,1729
|
36
37
|
linkml/generators/javagen.py,sha256=BTAXgvOOvRa3AOfaaiVFyuyaqg4XFR_JbO6_7tT_AnQ,5335
|
37
|
-
linkml/generators/jsonldcontextgen.py,sha256=
|
38
|
-
linkml/generators/jsonldgen.py,sha256=
|
39
|
-
linkml/generators/jsonschemagen.py,sha256=
|
38
|
+
linkml/generators/jsonldcontextgen.py,sha256=LpuTtzU4H6BH_615E4Fbt0QBCEopvqRMVOMwDva1kGk,8958
|
39
|
+
linkml/generators/jsonldgen.py,sha256=d94TEPu9zeHDZqPU6cSaiQiJnv0kc_AXkXahi1xOBZ8,7789
|
40
|
+
linkml/generators/jsonschemagen.py,sha256=8luthDkItlZ5bU4Lxt9b7tZx0HTIP4FZEZ5C2nwMMqA,30867
|
40
41
|
linkml/generators/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
41
|
-
linkml/generators/linkmlgen.py,sha256=
|
42
|
+
linkml/generators/linkmlgen.py,sha256=7GbD-ZErCblapbl_CukfHvFYOTbhgWiTIyg6O5BJSO0,3915
|
42
43
|
linkml/generators/markdowngen.py,sha256=0gjMPJ0Ycm9se4Y4cyqjbTntGYqRRZu4RL-9Qf5n4lk,34464
|
44
|
+
linkml/generators/mermaidclassdiagramgen.py,sha256=NzRDXmy2qMOUHmvrcd7LrKZiVR1J___pLRhQpGstGyA,4946
|
43
45
|
linkml/generators/namespacegen.py,sha256=C4p9LSwsnDqf6sv-wG5l0VQniWFJ1HA1hRXJBDOg3pM,6467
|
44
46
|
linkml/generators/oocodegen.py,sha256=aBJgy-S-8FL5cW9p4hf986iSTxXwvkM7ZajKlari4us,7820
|
45
|
-
linkml/generators/owlgen.py,sha256=
|
46
|
-
linkml/generators/plantumlgen.py,sha256=
|
47
|
+
linkml/generators/owlgen.py,sha256=FxfEpJSybw11qEjcE3ozVvFuu_eKp1qhQmFOK566CGg,58086
|
48
|
+
linkml/generators/plantumlgen.py,sha256=G12fBFh8qqHuXTtGEndcQJzAtarWJFE7qcUaMXLTJrE,15614
|
47
49
|
linkml/generators/prefixmapgen.py,sha256=oISFtSt_s5OWx65tYasWk0bUJIDIU1MjnsWqfBE7ZQA,4257
|
48
50
|
linkml/generators/projectgen.py,sha256=XQdOjAJroroT2JNNPbrUauv2DTJ3tfJoFNYGSLKky24,9791
|
49
51
|
linkml/generators/protogen.py,sha256=a4KUyKj525tuE2YenEJQ_IkbNKnnhVH_N-qTEmMBVY4,2524
|
50
52
|
linkml/generators/pydanticgen/__init__.py,sha256=5SUFNcrh-6MLfMqptR6wPsR2v1Gyrl3wii-yu6kdnQM,700
|
51
|
-
linkml/generators/pydanticgen/array.py,sha256=
|
53
|
+
linkml/generators/pydanticgen/array.py,sha256=ELAH-KyJwDX69q3ANlyyFJqvEpU30XSY1Ztu2sh4M0E,25956
|
52
54
|
linkml/generators/pydanticgen/black.py,sha256=BaJ7b-kMUbIN_cKRT3yCaMEbFwxzj1_U7w4fKQnkL44,723
|
53
55
|
linkml/generators/pydanticgen/build.py,sha256=xWNnxaNz0LqfNpgUuaUeVdvmXyFASwv5QED3bEaUVaM,4093
|
54
56
|
linkml/generators/pydanticgen/includes.py,sha256=kDAwonKbhTFzrFa2TrmTYuOSHXuzDy5WHgBaI5nVY6c,504
|
55
57
|
linkml/generators/pydanticgen/pydanticgen.py,sha256=IEmSPr9zu1dkgIMFvVKDswokhQvM_weXdmVNQ3l3eNQ,49938
|
56
58
|
linkml/generators/pydanticgen/template.py,sha256=wjUMiTay_EFh8zp5LfytBsgZJGlKjV96PVnBgI21KVc,24886
|
57
|
-
linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=
|
59
|
+
linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=4s4eUZEqiTxHV2pU8beF761xut4Q-bXwZXF0XBlnXAs,881
|
58
60
|
linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=6KRQ1ZVHh1uwZnYL3qxBnyit8_DNE7D-4l2-1wsRsG0,406
|
59
61
|
linkml/generators/pydanticgen/templates/class.py.jinja,sha256=GqR2t5y0vLmvUpT2vyP5VX42PO9AkAnGE-U2RZPa9AI,690
|
60
62
|
linkml/generators/pydanticgen/templates/conditional_import.py.jinja,sha256=YheknDrxvepiJUzeItSL5aSbAkCdR1k0a6m6aTA4qNM,240
|
@@ -69,9 +71,9 @@ linkml/generators/pythongen.py,sha256=-W8ZgvgDP-Hm4Q9weQiB7xtXMJyadtyfZ6BHC1CmCl
|
|
69
71
|
linkml/generators/rdfgen.py,sha256=OT8oS8MPUVf5UK3OKvRWgAh9iQiWwdyWJSA69PncOw4,2969
|
70
72
|
linkml/generators/shacl/__init__.py,sha256=KgMOyESGTdKk2Vhx9uuUYgEJPuJQ-iT1vDQVIMoiXCM,58
|
71
73
|
linkml/generators/shacl/shacl_data_type.py,sha256=gX3Y2KyTVPwMyef0cJMTEpU9h0oH-H0ThVDORdNW170,1828
|
72
|
-
linkml/generators/shacl/shacl_ifabsent_processor.py,sha256=
|
73
|
-
linkml/generators/shaclgen.py,sha256=
|
74
|
-
linkml/generators/shexgen.py,sha256
|
74
|
+
linkml/generators/shacl/shacl_ifabsent_processor.py,sha256=usmqdCvAPiivHzXWkNzW0G_KOaAG8bHdTCkEH2pI0b4,4364
|
75
|
+
linkml/generators/shaclgen.py,sha256=RcGoo4j-NJUavbdUo1gnYo4mXTivaYb8o-oIfaUrA_g,14833
|
76
|
+
linkml/generators/shexgen.py,sha256=cr4x4ORZlre6XlToWKho5F4XjFwOlzR1SpOpbeOvRA4,9939
|
75
77
|
linkml/generators/sparqlgen.py,sha256=2DaFrFIeMI7QQfiPn79J8ERILlkJALrabDnKK7usDJQ,6188
|
76
78
|
linkml/generators/sqlalchemy/__init__.py,sha256=mb9AC1rIFkSiNZhhG0TAk45ol9PjS1XvsrvCjgfVUpQ,249
|
77
79
|
linkml/generators/sqlalchemy/sqlalchemy_declarative_template.py,sha256=X_Ws1NUBikMI5HuNgEhl_PIeWM-B-c2B0W9KUBH4QTg,2542
|
@@ -80,10 +82,10 @@ linkml/generators/sqlalchemygen.py,sha256=MYzEkg8BAgFChiRNqOZK9aMqH-aNGa6-CnpZdb
|
|
80
82
|
linkml/generators/sqltablegen.py,sha256=BaWAuvwVHsXVt85GYxzH5_UL3ZeqRI9SojlvMmh4KkE,12395
|
81
83
|
linkml/generators/sssomgen.py,sha256=zrZy0WL9fF5bk-XAcB-MZYZkhHhqVRHt2rGBUtfqnLY,6891
|
82
84
|
linkml/generators/string_template.md,sha256=kRcfic6entgIaJdpSg6GF3jcjC9wbKsCVM6wVT2qipc,1788
|
83
|
-
linkml/generators/summarygen.py,sha256=
|
85
|
+
linkml/generators/summarygen.py,sha256=abNd39Z-Kn3FX2fjXLeCqvXvFunpqM7UFPimtiCB2p0,3081
|
84
86
|
linkml/generators/terminusdbgen.py,sha256=ItJ-HTMkkX22Ex1-UjJZmtEtE2fn6UdjAxDtn20RXV8,4713
|
85
|
-
linkml/generators/typescriptgen.py,sha256=
|
86
|
-
linkml/generators/yamlgen.py,sha256=
|
87
|
+
linkml/generators/typescriptgen.py,sha256=xxi7LzWNjbRFjjC6AR7NO4tfXx5CVCWNJ1urSiu5FNo,8876
|
88
|
+
linkml/generators/yamlgen.py,sha256=PWexYoR3wHRoAUk6zK67fRYjBF6sAmX_iGlOAT0PJq0,1623
|
87
89
|
linkml/generators/yumlgen.py,sha256=Bg1MGlhCCQoswB19mFKh8xB0UcL9MQGHlUrAVGZSWkc,12208
|
88
90
|
linkml/linter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
89
91
|
linkml/linter/cli.py,sha256=tXJ3vwjohCnj4EApEJXvXUSI3NLJ3fI3u6tJVxbgLQg,4505
|
@@ -100,24 +102,24 @@ linkml/linter/formatters/markdown_formatter.py,sha256=sumF2MNJYL5oipLwCftCr3AiaC
|
|
100
102
|
linkml/linter/formatters/terminal_formatter.py,sha256=xmNwlRieVCssRt3fpnNP5WWw_YXGmaBsbxFoMWufy5M,2085
|
101
103
|
linkml/linter/formatters/tsv_formatter.py,sha256=1VW-1Tv16mwhIDpHdExYpJJR3z42K5_XK2C-4mmYYdE,871
|
102
104
|
linkml/linter/linter.py,sha256=ETx1C8IbXnrCDWwpBxAz0ahY4ROYcl-pQhwp5RFjzJ8,5145
|
103
|
-
linkml/linter/rules.py,sha256=
|
105
|
+
linkml/linter/rules.py,sha256=NFCSBnEU_D0V9tqYbJvzhJlxhtyNuyqRzt4nrTc7xeA,11621
|
104
106
|
linkml/reporting/__init__.py,sha256=Jo0V_nyEcnWhMukMW-bqW9dlbgCfaRlWm3CO-XzgU84,92
|
105
107
|
linkml/reporting/model.py,sha256=-10yNfk8wuRC48ZI-akrWvtlJ9a6RYWET2TzlZV3XXo,8622
|
106
108
|
linkml/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
107
|
-
linkml/transformers/logical_model_transformer.py,sha256=
|
109
|
+
linkml/transformers/logical_model_transformer.py,sha256=5p6y41bTt3nJULznqINb8BJqPeCYgHGPuv8qQRycJ_E,29923
|
108
110
|
linkml/transformers/model_transformer.py,sha256=tK_MpRDI-q2qfe8KHT6qJHP8ZruKjYx1FcM-Fnjse-E,678
|
109
111
|
linkml/transformers/relmodel_transformer.py,sha256=2AwLVqto1to_9IaTjicweFVIPa8dcNPKK0EJWdHfWMo,19675
|
110
112
|
linkml/transformers/schema_renamer.py,sha256=DYRbgL9j41M9FdbHYLY3u4YIdDM98laD3cv_lHcgWHQ,5275
|
111
113
|
linkml/utils/__init__.py,sha256=Pkyv-Gfb8QoJdInRdJuuUz1Igfe0sT9t8Gv3V_fyTXc,92
|
112
114
|
linkml/utils/cli_utils.py,sha256=MdVbox1qr6kDUHUCWAmFhV-D6ebs_nn8vVwB8KDQfew,742
|
113
|
-
linkml/utils/converter.py,sha256
|
115
|
+
linkml/utils/converter.py,sha256=-v6eiXjjn3NqmZCfnzfkyDpcA5jha3BFxUuSlLmgK6Y,7126
|
114
116
|
linkml/utils/datautils.py,sha256=QlbzwXykh5Fphfe5KxPo6_ekXfniLbHiEGJtLWjUrvY,3742
|
115
117
|
linkml/utils/datavalidator.py,sha256=kBdWaVi8IZT1bOwEJgJYx-wZAb_PTBObB9nHpYORfKA,472
|
116
|
-
linkml/utils/deprecation.py,sha256=
|
118
|
+
linkml/utils/deprecation.py,sha256=SlAS6L27I65fkaSape2uC49CFgeOTGzUwwERZMp134E,8484
|
117
119
|
linkml/utils/exceptions.py,sha256=3S6lf5WAUgVvjPRaES597_YjUjbbJ5KqjKjpjcaRLoU,217
|
118
120
|
linkml/utils/execute_tutorial.py,sha256=X2sdb4fBBnBmNKg9k5_fhWeY9DXCbYEb4NXUCPv4TJ0,7057
|
119
|
-
linkml/utils/generator.py,sha256=
|
120
|
-
linkml/utils/helpers.py,sha256=
|
121
|
+
linkml/utils/generator.py,sha256=w90ASqaXZnu4aezf8YpFfH7khU5HHvJa5Qqfk50Pd6c,39572
|
122
|
+
linkml/utils/helpers.py,sha256=IoLaG8XE8WOorOFQF-XKfaWKSEoVDShC2E9Rd1596uo,3364
|
121
123
|
linkml/utils/logictools.py,sha256=BGtcoqr_Rsu08Ywa6lNiL881uZzQmNWk1p4FEIVKYe0,23641
|
122
124
|
linkml/utils/mergeutils.py,sha256=FdcSiYUmPkxxwnEv_43SR3BN6lCUeEkNndRpxJQWE2c,9080
|
123
125
|
linkml/utils/rawloader.py,sha256=nUB8Gfn8yEVwyo6bx0TtB2mBGkilC-fybi0xvQ73Gks,4417
|
@@ -127,8 +129,8 @@ linkml/utils/schemaloader.py,sha256=wiqKHc28ga_qLuIDGS9BQhwhXYu1ZSUqhOebmUF1NGs,
|
|
127
129
|
linkml/utils/schemasynopsis.py,sha256=j7sNt6j-E3rmf-1qEo351Kth2kltt6crQV-dxJAGCUE,18414
|
128
130
|
linkml/utils/sqlutils.py,sha256=DkeNyVlHcFlKSHgnOmpO47JSQssqRhA9ys_0ZXkYGz4,17120
|
129
131
|
linkml/utils/typereferences.py,sha256=8Yfuz9-HAwOPoJLbIcO_sY9zf32hvPRzGeSOzECfMWA,2232
|
130
|
-
linkml/utils/validation.py,sha256=
|
131
|
-
linkml/validator/__init__.py,sha256=
|
132
|
+
linkml/utils/validation.py,sha256=5vYsb2G21S0j7wkCOvmwK9TNbIGtBNMXHKdRVw1VF-o,1497
|
133
|
+
linkml/validator/__init__.py,sha256=rhGXoxyxY3ZMJYwB29HYYzXbwSbMxxE-OmB2ouQIvVw,4995
|
132
134
|
linkml/validator/cli.py,sha256=-7_hU787d321z_4pJeUs9dQsM76xpXie9dS-552c7Xs,7683
|
133
135
|
linkml/validator/loaders/__init__.py,sha256=FjUqEfBHeT5PEMBEZ9XwpclyQOysr4OCI1M0w_MYPVc,1165
|
134
136
|
linkml/validator/loaders/delimited_file_loader.py,sha256=fdh61ZMPTfH29_DM93f5dY0jLP7KQPNh_QAHZppsdNw,2616
|
@@ -137,24 +139,24 @@ linkml/validator/loaders/loader.py,sha256=YKQXmSZhCymvvb2Dbr4lVCKVDt-lOIayzRD7CW
|
|
137
139
|
linkml/validator/loaders/passthrough_loader.py,sha256=fQvBZqzGnpdwpZio4Mbehmsb6ePpzcacHPuR1QWuhFM,525
|
138
140
|
linkml/validator/loaders/yaml_loader.py,sha256=ZsMz-oGDkX9oPEOVcKnFRGhU9q0fKoHcL6BLOkCeB4c,914
|
139
141
|
linkml/validator/plugins/__init__.py,sha256=0ifiDqpcXVy4X7OJFm7FMYi1-6E06avNIIk9R0c6nD8,693
|
140
|
-
linkml/validator/plugins/jsonschema_validation_plugin.py,sha256=
|
142
|
+
linkml/validator/plugins/jsonschema_validation_plugin.py,sha256=y1DU_oxc-tP5ZRHzI6boSqkesxpEe_6A6Ftuva0Yfuo,2669
|
141
143
|
linkml/validator/plugins/pydantic_validation_plugin.py,sha256=gVjdJiGcZ1EuOTcCMWOUS35W3IpMJQHUgjj6lQ3-41E,1990
|
142
144
|
linkml/validator/plugins/recommended_slots_plugin.py,sha256=kOdoYQyye47nLA7BjorVmydS84nGpiVy3MoCbPq1Ymo,2308
|
143
145
|
linkml/validator/plugins/shacl_validation_plugin.py,sha256=X6h1O54m9P5USvqCvNqELD0YpzXkE6UrmxnV0ukU6E4,3888
|
144
146
|
linkml/validator/plugins/validation_plugin.py,sha256=9SMHF8b2bgG9-8351e8bY676e0A4aEBJSXvMjMF5kXg,1548
|
145
|
-
linkml/validator/report.py,sha256=
|
147
|
+
linkml/validator/report.py,sha256=haaLq9TiOw00SURa9r9v-WUsstfzn_8yIJ29_Axq0fg,1061
|
146
148
|
linkml/validator/validation_context.py,sha256=Pmccq-LQ9iEeLyZhamp3mKjjtwp4ji1hIe5TT05AUT4,2732
|
147
|
-
linkml/validator/validator.py,sha256
|
149
|
+
linkml/validator/validator.py,sha256=-RUrgLl7RY8p0zbUOWbw6afh7ZgHjjMJM08heDh58LM,5653
|
148
150
|
linkml/validators/__init__.py,sha256=43W3J5NPKhwa3ZFHLRYsJMocwQKWGYCF9Ki9r0ccGbc,202
|
149
|
-
linkml/validators/jsonschemavalidator.py,sha256=
|
150
|
-
linkml/validators/sparqlvalidator.py,sha256=
|
151
|
+
linkml/validators/jsonschemavalidator.py,sha256=jrUWbQo4Uy85SLtxyu3LPdgcZM6re5-Hw5Yo5qASl4U,8391
|
152
|
+
linkml/validators/sparqlvalidator.py,sha256=xlf9hZ-XDeScv2WB9wBg17WKM8HOKmRPowozOzlOLSQ,4961
|
151
153
|
linkml/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
152
154
|
linkml/workspaces/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
153
155
|
linkml/workspaces/datamodel/workspaces.py,sha256=4HdkqweGNfMPqnB1_Onc9DcTfkhoagTRcqruh08nRoI,14905
|
154
156
|
linkml/workspaces/datamodel/workspaces.yaml,sha256=EjVrwPpeRZqJRjuGyyDRxxFzuv55SiLIXPBRUG6HStU,4233
|
155
|
-
linkml/workspaces/example_runner.py,sha256=
|
156
|
-
linkml-1.8.
|
157
|
-
linkml-1.8.
|
158
|
-
linkml-1.8.
|
159
|
-
linkml-1.8.
|
160
|
-
linkml-1.8.
|
157
|
+
linkml/workspaces/example_runner.py,sha256=oViQ5gT8NkFTZbg0dW5LAOSAOAfJK8_QmKdYwzzGhgQ,12919
|
158
|
+
linkml-1.8.7.dist-info/LICENSE,sha256=kORMoywK6j9_iy0UvLR-a80P1Rvc9AOM4gsKlUNZABg,535
|
159
|
+
linkml-1.8.7.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
|
160
|
+
linkml-1.8.7.dist-info/METADATA,sha256=hubj7dcgTrPQ2ZHmC9Es38FRabdXlkYzrYOqHNp_PS0,3874
|
161
|
+
linkml-1.8.7.dist-info/entry_points.txt,sha256=CtvrM-5f3NuMEBTXONEnIo5UUJegBRWJvXUmrYfdIfM,2194
|
162
|
+
linkml-1.8.7.dist-info/RECORD,,
|
@@ -1,5 +1,6 @@
|
|
1
1
|
[console_scripts]
|
2
2
|
gen-csv=linkml.generators.csvgen:cli
|
3
|
+
gen-dbml=linkml.generators.dbmlgen:cli
|
3
4
|
gen-doc=linkml.generators.docgen:cli
|
4
5
|
gen-erdiagram=linkml.generators.erdiagramgen:cli
|
5
6
|
gen-excel=linkml.generators.excelgen:cli
|
@@ -13,6 +14,7 @@ gen-jsonld=linkml.generators.jsonldgen:cli
|
|
13
14
|
gen-jsonld-context=linkml.generators.jsonldcontextgen:cli
|
14
15
|
gen-linkml=linkml.generators.linkmlgen:cli
|
15
16
|
gen-markdown=linkml.generators.markdowngen:cli
|
17
|
+
gen-mermaid-class-diagram=linkml.generators.mermaidclassdiagramgen:cli
|
16
18
|
gen-namespaces=linkml.generators.namespacegen:cli
|
17
19
|
gen-owl=linkml.generators.owlgen:cli
|
18
20
|
gen-plantuml=linkml.generators.plantumlgen:cli
|
File without changes
|
File without changes
|