linkml 1.8.2__py3-none-any.whl → 1.8.4__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.
Files changed (50) hide show
  1. linkml/cli/main.py +4 -0
  2. linkml/generators/__init__.py +2 -0
  3. linkml/generators/common/ifabsent_processor.py +286 -0
  4. linkml/generators/docgen/index.md.jinja2 +6 -6
  5. linkml/generators/docgen.py +64 -14
  6. linkml/generators/golanggen.py +3 -1
  7. linkml/generators/jsonldcontextgen.py +0 -1
  8. linkml/generators/jsonschemagen.py +4 -2
  9. linkml/generators/owlgen.py +36 -17
  10. linkml/generators/projectgen.py +13 -11
  11. linkml/generators/pydanticgen/array.py +340 -56
  12. linkml/generators/pydanticgen/build.py +4 -2
  13. linkml/generators/pydanticgen/pydanticgen.py +46 -24
  14. linkml/generators/pydanticgen/template.py +108 -3
  15. linkml/generators/pydanticgen/templates/imports.py.jinja +11 -3
  16. linkml/generators/pydanticgen/templates/module.py.jinja +1 -3
  17. linkml/generators/pydanticgen/templates/validator.py.jinja +2 -2
  18. linkml/generators/python/__init__.py +1 -0
  19. linkml/generators/python/python_ifabsent_processor.py +92 -0
  20. linkml/generators/pythongen.py +19 -31
  21. linkml/generators/shacl/__init__.py +1 -3
  22. linkml/generators/shacl/shacl_data_type.py +1 -1
  23. linkml/generators/shacl/shacl_ifabsent_processor.py +89 -0
  24. linkml/generators/shaclgen.py +39 -13
  25. linkml/generators/sparqlgen.py +3 -1
  26. linkml/generators/sqlalchemygen.py +5 -3
  27. linkml/generators/sqltablegen.py +4 -2
  28. linkml/generators/typescriptgen.py +13 -6
  29. linkml/linter/linter.py +2 -1
  30. linkml/transformers/logical_model_transformer.py +3 -3
  31. linkml/transformers/relmodel_transformer.py +18 -4
  32. linkml/utils/converter.py +3 -1
  33. linkml/utils/exceptions.py +11 -0
  34. linkml/utils/execute_tutorial.py +22 -20
  35. linkml/utils/generator.py +6 -4
  36. linkml/utils/mergeutils.py +4 -2
  37. linkml/utils/schema_fixer.py +5 -5
  38. linkml/utils/schemaloader.py +5 -3
  39. linkml/utils/sqlutils.py +3 -1
  40. linkml/validator/plugins/pydantic_validation_plugin.py +1 -1
  41. linkml/validators/jsonschemavalidator.py +3 -1
  42. linkml/validators/sparqlvalidator.py +5 -3
  43. linkml/workspaces/example_runner.py +3 -1
  44. {linkml-1.8.2.dist-info → linkml-1.8.4.dist-info}/METADATA +3 -1
  45. {linkml-1.8.2.dist-info → linkml-1.8.4.dist-info}/RECORD +48 -45
  46. linkml/generators/shacl/ifabsent_processor.py +0 -59
  47. linkml/utils/ifabsent_functions.py +0 -138
  48. {linkml-1.8.2.dist-info → linkml-1.8.4.dist-info}/LICENSE +0 -0
  49. {linkml-1.8.2.dist-info → linkml-1.8.4.dist-info}/WHEEL +0 -0
  50. {linkml-1.8.2.dist-info → linkml-1.8.4.dist-info}/entry_points.txt +0 -0
@@ -10,6 +10,8 @@ import click
10
10
 
11
11
  from linkml._version import __version__
12
12
 
13
+ logger = logging.getLogger(__name__)
14
+
13
15
  re_decl = re.compile(r"^(\S+):$")
14
16
  re_start_yaml = re.compile(r"^```(\w+)$")
15
17
  re_end_yaml = re.compile(r"^```$")
@@ -46,17 +48,17 @@ def execute_blocks(directory: str, blocks: List[Block]) -> List[str]:
46
48
  :return: errors
47
49
  """
48
50
  Path(directory).mkdir(parents=True, exist_ok=True)
49
- logging.info(f"Executing in: {directory}")
51
+ logger.info(f"Executing in: {directory}")
50
52
  last_block = None
51
53
  errs = []
52
54
 
53
55
  def err(e):
54
56
  errs.append(e)
55
- logging.error(e)
57
+ logger.error(e)
56
58
 
57
59
  for block in blocks:
58
60
  write_lines(block.prior_lines)
59
- logging.info(f"# Block: {block.category} {block.title}")
61
+ logger.info(f"# Block: {block.category} {block.title}")
60
62
  if block.is_file_block():
61
63
  path = PurePath(directory, block.title)
62
64
  with open(path, "w", encoding="UTF-8") as stream:
@@ -73,44 +75,44 @@ def execute_blocks(directory: str, blocks: List[Block]) -> List[str]:
73
75
  if len(outpath) > 1:
74
76
  raise Exception(f"Maximum 1 token after > in {block.content}. Got: {outpath}")
75
77
  outpath = str(Path(directory, *outpath))
76
- logging.info(f"OUTPATH = {outpath}")
78
+ logger.info(f"OUTPATH = {outpath}")
77
79
  else:
78
80
  outpath = None
79
- logging.info(f"Executing: {cmd}")
81
+ logger.info(f"Executing: {cmd}")
80
82
  r = subprocess.run(cmd, cwd=directory, capture_output=True)
81
83
  block.output = r.stdout.decode("utf-8")
82
84
  if outpath:
83
85
  with open(outpath, "w", encoding="UTF-8") as stream:
84
- logging.info(f"WRITING {len(block.output)} TO = {outpath}")
86
+ logger.info(f"WRITING {len(block.output)} TO = {outpath}")
85
87
  stream.write(block.output)
86
88
  block.error = r.stderr.decode("utf-8")
87
- logging.info(f"OUT [sample] = {block.output[0:30]}")
89
+ logger.info(f"OUT [sample] = {block.output[0:30]}")
88
90
  if block.expected_fail:
89
91
  if r.returncode == 0:
90
92
  err(f"Command unexpectedly succeeded: {cmd}")
91
93
  else:
92
- logging.info("Failed as expected")
94
+ logger.info("Failed as expected")
93
95
  if block.error:
94
- logging.info(f"ERR [sample] = ...{block.error[-200:]}")
96
+ logger.info(f"ERR [sample] = ...{block.error[-200:]}")
95
97
  else:
96
98
  if block.error:
97
- logging.info(f"ERR = {block.error}")
99
+ logger.info(f"ERR = {block.error}")
98
100
  if r.returncode != 0:
99
101
  err(f"Command failed: {cmd}")
100
102
  else:
101
- logging.info("Success!")
103
+ logger.info("Success!")
102
104
  elif block.is_stdout():
103
105
  if "compare_rdf" in block.annotations:
104
- logging.warning("SKIPPING RDF COMPARISON. TODO: https://github.com/linkml/linkml/issues/427")
106
+ logger.warning("SKIPPING RDF COMPARISON. TODO: https://github.com/linkml/linkml/issues/427")
105
107
  elif last_block.output:
106
108
  if last_block.output.strip() != block.content.strip():
107
109
  err(f"Mismatch: {str(last_block.output)} != {block.content}")
108
110
  else:
109
- logging.info("Hurray! Contents match!")
111
+ logger.info("Hurray! Contents match!")
110
112
  else:
111
- logging.info("No comparison performed")
113
+ logger.info("No comparison performed")
112
114
  else:
113
- logging.warning(f"Ignoring block: {block}")
115
+ logger.warning(f"Ignoring block: {block}")
114
116
  last_block = block
115
117
  return errs
116
118
 
@@ -201,20 +203,20 @@ def cli(inputs, directory):
201
203
  logging.basicConfig(level=logging.INFO)
202
204
  errs = []
203
205
  for input in inputs:
204
- logging.info(f"INPUT={input}")
206
+ logger.info(f"INPUT={input}")
205
207
  blocks = parse_file_to_blocks(input)
206
208
  print(f"## {len(blocks)} Blocks")
207
209
  localdir = Path(input).stem
208
210
  subdir = PurePath(directory, localdir)
209
211
  input_errs = execute_blocks(str(subdir), blocks)
210
212
  if len(input_errs) > 0:
211
- logging.error(f"TUTORIAL {input} FAILURES: {len(input_errs)}")
213
+ logger.error(f"TUTORIAL {input} FAILURES: {len(input_errs)}")
212
214
  errs += input_errs
213
- logging.info(f"Errors = {len(errs)}")
215
+ logger.info(f"Errors = {len(errs)}")
214
216
  if len(errs) > 0:
215
- logging.error(f"Encountered {len(errs)} Errors")
217
+ logger.error(f"Encountered {len(errs)} Errors")
216
218
  for err in errs:
217
- logging.error(f"Error: {err}")
219
+ logger.error(f"Error: {err}")
218
220
  sys.exit(1)
219
221
 
220
222
 
linkml/utils/generator.py CHANGED
@@ -54,6 +54,8 @@ from linkml.utils.mergeutils import alias_root
54
54
  from linkml.utils.schemaloader import SchemaLoader
55
55
  from linkml.utils.typereferences import References
56
56
 
57
+ logger = logging.getLogger(__name__)
58
+
57
59
 
58
60
  @lru_cache
59
61
  def _resolved_metamodel(mergeimports):
@@ -61,7 +63,7 @@ def _resolved_metamodel(mergeimports):
61
63
  raise AssertionError(f"{LOCAL_METAMODEL_YAML_FILE} not found")
62
64
 
63
65
  base_dir = str(Path(str(LOCAL_METAMODEL_YAML_FILE)).parent)
64
- logging.debug(f"BASE={base_dir}")
66
+ logger.debug(f"BASE={base_dir}")
65
67
  metamodel = SchemaLoader(
66
68
  LOCAL_METAMODEL_YAML_FILE,
67
69
  importmap={"linkml": base_dir},
@@ -179,7 +181,7 @@ class Generator(metaclass=abc.ABCMeta):
179
181
 
180
182
  def __post_init__(self) -> None:
181
183
  if not self.logger:
182
- self.logger = logging.getLogger()
184
+ self.logger = logger
183
185
  if self.log_level is not None:
184
186
  self.logger.setLevel(self.log_level)
185
187
  if self.format is None:
@@ -203,7 +205,7 @@ class Generator(metaclass=abc.ABCMeta):
203
205
  if self.uses_schemaloader:
204
206
  self._initialize_using_schemaloader(schema)
205
207
  else:
206
- logging.info(f"Using SchemaView with im={self.importmap} // base_dir={self.base_dir}")
208
+ self.logger.info(f"Using SchemaView with im={self.importmap} // base_dir={self.base_dir}")
207
209
  self.schemaview = SchemaView(schema, importmap=self.importmap, base_dir=self.base_dir)
208
210
  if self.include:
209
211
  if isinstance(self.include, (str, Path)):
@@ -840,7 +842,7 @@ class Generator(metaclass=abc.ABCMeta):
840
842
  if ":" not in mapping or len(mapping.split(":")) != 2:
841
843
  raise ValueError(f"Definition {defn.name} - unrecognized mapping: {mapping}")
842
844
  ns = mapping.split(":")[0]
843
- logging.debug(f"Adding {ns} from {mapping} // {defn}")
845
+ self.logger.debug(f"Adding {ns} from {mapping} // {defn}")
844
846
  if ns:
845
847
  self.add_prefix(ns)
846
848
 
@@ -18,6 +18,8 @@ from linkml_runtime.utils.namespaces import Namespaces
18
18
  from linkml_runtime.utils.yamlutils import extended_str
19
19
  from rdflib import URIRef
20
20
 
21
+ logger = logging.getLogger(__name__)
22
+
21
23
 
22
24
  def merge_schemas(
23
25
  target: SchemaDefinition,
@@ -72,7 +74,7 @@ def merge_namespaces(target: SchemaDefinition, mergee: SchemaDefinition, namespa
72
74
  # We cannot resolve this to an absolute path, so we have to assume that
73
75
  # this prefix is already defined correctly in the target
74
76
  if prefix.prefix_prefix not in namespaces:
75
- logging.info(
77
+ logger.info(
76
78
  "Adding an unadjusted relative prefix for %s from %s, "
77
79
  + "as the prefix is not yet defined, even as we cannot adjust it relative to the final file. "
78
80
  + "If it cannot be resolved, add the prefix definition to the input schema!",
@@ -85,7 +87,7 @@ def merge_namespaces(target: SchemaDefinition, mergee: SchemaDefinition, namespa
85
87
  prefix.prefix_prefix in target.prefixes
86
88
  and target.prefixes[prefix.prefix_prefix].prefix_reference != prefix.prefix_reference
87
89
  ):
88
- logging.info(
90
+ logger.info(
89
91
  "Ignoring different relative prefix for %s from %s, "
90
92
  + "as we cannot adjust it relative to the final file. "
91
93
  + "Assuming the first found location is correct: %s!",
@@ -94,7 +94,7 @@ class SchemaFixer:
94
94
  tree_roots = [c for c in sv.all_classes().values() if c.tree_root]
95
95
  if len(tree_roots) > 0:
96
96
  if force:
97
- logging.info("Forcing addition of containers")
97
+ logger.info("Forcing addition of containers")
98
98
  else:
99
99
  raise ValueError(f"Schema already has containers: {tree_roots}")
100
100
  container = ClassDefinition(class_name, tree_root=True)
@@ -228,7 +228,7 @@ class SchemaFixer:
228
228
  # slots within that are redundant
229
229
  slot_usage_keys = list(cls.slot_usage.keys())
230
230
  for slot_usage_key in slot_usage_keys:
231
- logging.debug(f"TESTING: {class_name}.{slot_usage_key}")
231
+ logger.debug(f"TESTING: {class_name}.{slot_usage_key}")
232
232
  slot_usage_value = cls.slot_usage[slot_usage_key]
233
233
  # perform a deletion test: what can be retrieved by inference
234
234
  del cls.slot_usage[slot_usage_key]
@@ -236,7 +236,7 @@ class SchemaFixer:
236
236
  try:
237
237
  induced_slot = sv.induced_slot(slot_usage_key, class_name)
238
238
  except ValueError:
239
- logging.warning(f"slot_usage with no slot: {slot_usage_key}")
239
+ logger.warning(f"slot_usage with no slot: {slot_usage_key}")
240
240
  continue
241
241
  # restore value
242
242
  cls.slot_usage[slot_usage_key] = slot_usage_value
@@ -258,7 +258,7 @@ class SchemaFixer:
258
258
  continue
259
259
  induced_v = getattr(induced_slot, metaslot_name, None)
260
260
  if v is not None and v != [] and v != {} and v == induced_v:
261
- logging.info(f"REDUNDANT: {class_name}.{slot_usage_key}[{metaslot_name}] = {v}")
261
+ logger.info(f"REDUNDANT: {class_name}.{slot_usage_key}[{metaslot_name}] = {v}")
262
262
  to_delete.append(metaslot_name)
263
263
  for metaslot_name in to_delete:
264
264
  del slot_usage_value[metaslot_name]
@@ -302,7 +302,7 @@ class SchemaFixer:
302
302
  if len(vals_strs) == 1:
303
303
  harmonized_slot[k] = vals.pop()
304
304
  elif len(vals_strs) > 1:
305
- logging.info(f"Variable values in {slot_name}.{k}: {vals_strs}")
305
+ logger.info(f"Variable values in {slot_name}.{k}: {vals_strs}")
306
306
  new_slots[str(slot_name)] = harmonized_slot
307
307
  return new_slots
308
308
 
@@ -29,6 +29,8 @@ from linkml.utils.mergeutils import merge_classes, merge_schemas, merge_slots, s
29
29
  from linkml.utils.rawloader import load_raw_schema
30
30
  from linkml.utils.schemasynopsis import SchemaSynopsis
31
31
 
32
+ lgr = logging.getLogger(__name__)
33
+
32
34
 
33
35
  class SchemaLoader:
34
36
  def __init__(
@@ -57,7 +59,7 @@ class SchemaLoader:
57
59
  :param source_file_date: modification of source file
58
60
  :param source_file_size: size of source file
59
61
  """
60
- self.logger = logger if logger is not None else logging.getLogger(self.__class__.__name__)
62
+ self.logger = logger if logger is not None else lgr
61
63
  if isinstance(data, SchemaDefinition):
62
64
  self.schema = data
63
65
  else:
@@ -176,7 +178,7 @@ class SchemaLoader:
176
178
  # mangled names are overwritten if a schema with attributes is passed in
177
179
  # TODO: handle this in a more graceful way
178
180
  # see https://github.com/linkml/linkml/issues/872
179
- logging.warning(
181
+ self.logger.warning(
180
182
  f'Class: "{cls.name}" attribute "{attribute.name}" - '
181
183
  f"mangled name: {mangled_slot_name} already exists",
182
184
  )
@@ -770,7 +772,7 @@ class SchemaLoader:
770
772
  if slotname in self.schema.slots:
771
773
  base_slot = self.schema.slots[slotname]
772
774
  else:
773
- logging.error(f"slot_usage for undefined slot: {slotname}")
775
+ self.logger.error(f"slot_usage for undefined slot: {slotname}")
774
776
  base_slot = None
775
777
  parent_slot = self.schema.slots.get(slot_usage.is_a)
776
778
  # Follow the ancestry of the class to get the most proximal parent
linkml/utils/sqlutils.py CHANGED
@@ -40,6 +40,8 @@ from linkml.utils.datautils import (
40
40
  infer_root_class,
41
41
  )
42
42
 
43
+ logger = logging.getLogger(__name__)
44
+
43
45
 
44
46
  @dataclass
45
47
  class SQLStore:
@@ -376,7 +378,7 @@ def dump(
376
378
 
377
379
  inputs = [item for input in inputs for item in glob.glob(input)]
378
380
  for input in inputs:
379
- logging.info(f"Loading: {input}")
381
+ logger.info(f"Loading: {input}")
380
382
  input_format = _get_format(input, input_format)
381
383
  loader = get_loader(input_format)
382
384
 
@@ -37,7 +37,7 @@ class PydanticValidationPlugin(ValidationPlugin):
37
37
  """
38
38
  pydantic_model = context.pydantic_model(closed=self.closed)
39
39
  try:
40
- instance = pydantic_model.parse_obj(instance)
40
+ instance = pydantic_model.model_validate(instance)
41
41
  except Exception as e:
42
42
  yield ValidationResult(
43
43
  type="Pydantic validation",
@@ -19,6 +19,8 @@ from linkml.generators.pythongen import PythonGenerator
19
19
  from linkml.utils import datautils
20
20
  from linkml.utils.datavalidator import DataValidator
21
21
 
22
+ logger = logging.getLogger(__name__)
23
+
22
24
 
23
25
  class HashableSchemaDefinition(SchemaDefinition):
24
26
  def __hash__(self) -> int:
@@ -27,7 +29,7 @@ class HashableSchemaDefinition(SchemaDefinition):
27
29
 
28
30
  @lru_cache(maxsize=None)
29
31
  def _generate_jsonschema(schema, top_class, closed, include_range_class_descendants):
30
- logging.debug("Generating JSON Schema")
32
+ logger.debug("Generating JSON Schema")
31
33
  not_closed = not closed
32
34
  return JsonSchemaGenerator(
33
35
  schema=schema,
@@ -15,6 +15,8 @@ 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
17
 
18
+ logger = logging.getLogger(__name__)
19
+
18
20
 
19
21
  def sparqljson2dict(row: dict):
20
22
  return {k: v["value"] for k, v in row.items()}
@@ -55,7 +57,7 @@ class SparqlDataValidator(DataValidator):
55
57
  for row in qres:
56
58
  invalid += row
57
59
  except Exception:
58
- logging.error(f"FAILED: {qn}")
60
+ logger.error(f"FAILED: {qn}")
59
61
  return invalid
60
62
 
61
63
  def validate_endpoint(self, url: str, **kwargs):
@@ -65,8 +67,8 @@ class SparqlDataValidator(DataValidator):
65
67
  report = Report()
66
68
  for qn, q in self.queries.items():
67
69
  q += " LIMIT 20"
68
- logging.debug(f"QUERY: {qn}")
69
- logging.debug(f"{q}")
70
+ logger.debug(f"QUERY: {qn}")
71
+ logger.debug(f"{q}")
70
72
  sw = SPARQLWrapper(url)
71
73
  sw.setQuery(q)
72
74
  sw.setReturnFormat(JSON)
@@ -24,6 +24,8 @@ from linkml._version import __version__
24
24
  from linkml.generators.pythongen import PythonGenerator
25
25
  from linkml.validator import Validator, _get_default_validator
26
26
 
27
+ logger = logging.getLogger(__name__)
28
+
27
29
 
28
30
  @dataclass
29
31
  class SummaryDocument:
@@ -134,7 +136,7 @@ class ExampleRunner:
134
136
  input_examples = glob.glob(os.path.join(str(input_dir), f"*.{fmt}"))
135
137
  input_counter_examples = glob.glob(os.path.join(str(counter_example_dir), f"*.{fmt}"))
136
138
  if not input_counter_examples:
137
- logging.warning(f"No counter examples found in {self.counter_example_input_directory}")
139
+ logger.warning(f"No counter examples found in {self.counter_example_input_directory}")
138
140
  self.process_examples_from_list(input_examples, fmt, False)
139
141
  self.process_examples_from_list(input_counter_examples, fmt, True)
140
142
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: linkml
3
- Version: 1.8.2
3
+ Version: 1.8.4
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
@@ -24,6 +24,7 @@ Classifier: Programming Language :: Python :: 3.8
24
24
  Classifier: Programming Language :: Python :: 3.9
25
25
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
26
  Provides-Extra: black
27
+ Provides-Extra: numpydantic
27
28
  Provides-Extra: shacl
28
29
  Provides-Extra: tests
29
30
  Requires-Dist: antlr4-python3-runtime (>=4.9.0,<4.10)
@@ -37,6 +38,7 @@ Requires-Dist: jsonasobj2 (>=1.0.3,<2.0.0)
37
38
  Requires-Dist: jsonschema[format] (>=4.0.0)
38
39
  Requires-Dist: linkml-dataops
39
40
  Requires-Dist: linkml-runtime (>=1.8.1,<2.0.0)
41
+ Requires-Dist: numpydantic (>=1.6.1) ; (python_version >= "3.9") and (extra == "numpydantic" or extra == "tests")
40
42
  Requires-Dist: openpyxl
41
43
  Requires-Dist: parse
42
44
  Requires-Dist: prefixcommons (>=0.1.7)
@@ -2,12 +2,13 @@ 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=-VaV8Z6rhadMOIHS9kdeV30NdXsE6jG3kVpvGbkF2wY,5184
5
+ linkml/cli/main.py,sha256=83lyx36tcy95StDRtN7BmwNFCPt4As1wb0wbC3YwHKg,5386
6
6
  linkml/generators/PythonGenNotes.md,sha256=wb9BPLLhF6378OKLbwSBAwmniLpwrcT5_bbfCHfLme8,51006
7
7
  linkml/generators/README.md,sha256=RMzT8EblC_GEdPy5WyfXHDBXlFI6k6mz3Cx2sdpcyWI,4438
8
- linkml/generators/__init__.py,sha256=dQ2EUKy_MctEVEzbC3XzEJL5YmYwjYfsa44mG2zKn7g,1517
8
+ linkml/generators/__init__.py,sha256=2qSOnibL6KtzBW3KNqVX1gx1LQttrXlOPbbVDLLV2go,1587
9
9
  linkml/generators/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  linkml/generators/common/build.py,sha256=hXf2gf1ox2hiR-D6N-qXt5w5QkISLlo1A-_GurY3yHo,2897
11
+ linkml/generators/common/ifabsent_processor.py,sha256=D8vKZLa15mc_SUyvFsE3NZfWi-c4kawYW6WdGozJLRQ,11275
11
12
  linkml/generators/common/lifecycle.py,sha256=UOJXlIyWQkvsn0Dao9_ZDzlamJtiINyVJQ6SRj66L9s,4910
12
13
  linkml/generators/common/template.py,sha256=bjcSNiC85MYl9oGhk0ZpqwZpRxxy_NqxG8XBV-TXXDY,3338
13
14
  linkml/generators/common/type_designators.py,sha256=lgVcIRJJ-yCvVGeP9U_gQZpm77UmJBQo9Bh3lGJITno,1956
@@ -16,69 +17,71 @@ linkml/generators/docgen/class.md.jinja2,sha256=-JmjYHgYOaaBYd5r-Tr5dkk0CLM_lX0k
16
17
  linkml/generators/docgen/class_diagram.md.jinja2,sha256=gzskx4hOpU_s6BqOXdYZ9DwKxuClnsEgDzPurm30PeY,3469
17
18
  linkml/generators/docgen/common_metadata.md.jinja2,sha256=gy9J8rghBfKDKimwtHj_XuHY4PJRRYHLXVlBHqWrUzU,1604
18
19
  linkml/generators/docgen/enum.md.jinja2,sha256=mXnUrRkleY2bOTEyAZ5c4pcUnqhs6BNa8a-4LVve-eo,1014
19
- linkml/generators/docgen/index.md.jinja2,sha256=wXUYTmayPLFltC0vbGE_Mf6m3GkkWav7FOEjCvEpHp4,1466
20
+ linkml/generators/docgen/index.md.jinja2,sha256=suXRgJydHrxcMm3quXukaKkThtdzYA9i7BTuMAVKOP0,1502
20
21
  linkml/generators/docgen/index.tex.jinja2,sha256=Go_EA-_N4JUpbOYbk3OY11mz5yV70VF2l2sMtgIPWw4,501
21
22
  linkml/generators/docgen/schema.md.jinja2,sha256=xlENfnzNRYgPT_0tdqNFxgklVM4Qf5BuzhFVvSMDuxs,70
22
23
  linkml/generators/docgen/slot.md.jinja2,sha256=dJHugIv9OPTi3FIn8Iez7CzjQizdXrcn0hcmCmXSgV4,3339
23
24
  linkml/generators/docgen/subset.md.jinja2,sha256=EPln_fjlhlkmwEGEp2iPX-9Xm2vVodPZLlRBlYCB_sA,2705
24
25
  linkml/generators/docgen/type.md.jinja2,sha256=QmCMJZrFwP33eHkggBVtypbyrxTb-XZn9vHOYojVaYk,635
25
- linkml/generators/docgen.py,sha256=BbYIL1Bep0La4izwHaYZuTsnbVAv8_zjx3U3r1eHFEQ,36406
26
+ linkml/generators/docgen.py,sha256=SAkqAZxbzHqzKrX3JQpRJr51bdr2gQKs6Bs1h-aVrmI,38711
26
27
  linkml/generators/dotgen.py,sha256=vjHveFtKBItHRkowi1I4FHffcn4u4wLpBydYgVxB-vE,5028
27
28
  linkml/generators/erdiagramgen.py,sha256=5_VEPvRL0I819wCjk7T5hWffdBPc_qw3XpQdOYpO7uE,11357
28
29
  linkml/generators/excelgen.py,sha256=MQRRm1wDbg7auUQH9tGb5aRyrp-e4gjXsY10aoLb9LI,7708
29
- linkml/generators/golanggen.py,sha256=w3iTcOK69cwCrhE1pZn-PpV59arFZB8uU3ErLFo9i8Y,5803
30
+ linkml/generators/golanggen.py,sha256=Qx1GZRIrKn8jNoO-8fJMjkrwV9ZLwR4NwYBW5kGGp9c,5840
30
31
  linkml/generators/golrgen.py,sha256=JB92VDhTuwyaOyxHxB4goIsjZbq4NMf36ESprC3GeBs,3454
31
32
  linkml/generators/graphqlgen.py,sha256=-BS-UHPyHqauUgtgcFCO4xSxxogk7BPAQFSXHIrKJT0,2163
32
33
  linkml/generators/javagen/example_template.java.jinja2,sha256=ec4CVTv_0zS7V5Y-1E6H4lRraya10gfX7BEMBlu38X4,444
33
34
  linkml/generators/javagen/java_record_template.jinja2,sha256=OQZffLSy_xR3FIhQMltvrYyVeut7l2Q-tzK7AOiVmWs,1729
34
35
  linkml/generators/javagen.py,sha256=BTAXgvOOvRa3AOfaaiVFyuyaqg4XFR_JbO6_7tT_AnQ,5335
35
- linkml/generators/jsonldcontextgen.py,sha256=fZ22yjYGLMf_rQYKQSRh3IvMdGVAFhJ0PdQF8d514NI,8689
36
+ linkml/generators/jsonldcontextgen.py,sha256=J-9QF7doco3-hYReiik67PjiaF_UudrFEiVsbnJFCJg,8666
36
37
  linkml/generators/jsonldgen.py,sha256=9ru1rb4_u7t_Rp8ILQSmDIsk_evrDL_OeilnQUsu338,7770
37
- linkml/generators/jsonschemagen.py,sha256=XoA0HJ1XlItogmhr3F8XNnAi1UG6fXeBAKkjme48n7o,30388
38
+ linkml/generators/jsonschemagen.py,sha256=1k00W4I4paKHKZnmcWcMEoAel1VZRHa2rVgcOZW3kZU,30424
38
39
  linkml/generators/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
40
  linkml/generators/linkmlgen.py,sha256=g1D8B6MBxcG6b9aYCUESp7nDZPmjedCs8rmGm_0GLnE,3484
40
41
  linkml/generators/markdowngen.py,sha256=0gjMPJ0Ycm9se4Y4cyqjbTntGYqRRZu4RL-9Qf5n4lk,34464
41
42
  linkml/generators/namespacegen.py,sha256=C4p9LSwsnDqf6sv-wG5l0VQniWFJ1HA1hRXJBDOg3pM,6467
42
43
  linkml/generators/oocodegen.py,sha256=aBJgy-S-8FL5cW9p4hf986iSTxXwvkM7ZajKlari4us,7820
43
- linkml/generators/owlgen.py,sha256=XgEuwvlznnsk8Z-mqZlCC0eK2DinPT9YLga3CkRyBRE,57564
44
+ linkml/generators/owlgen.py,sha256=X00YGlx8scBftKY422l6uwnvqiQpNd2DI4cDC-G0kW8,58204
44
45
  linkml/generators/plantumlgen.py,sha256=ScTpXZe2Vjs2O6DeRJo-nr-p13lWSAtMZl6gu9jQYTk,15478
45
46
  linkml/generators/prefixmapgen.py,sha256=oISFtSt_s5OWx65tYasWk0bUJIDIU1MjnsWqfBE7ZQA,4257
46
- linkml/generators/projectgen.py,sha256=XSndKhTJ8uik30wWtabKNhERybPeeyVrekf7oEDVF2Q,9764
47
+ linkml/generators/projectgen.py,sha256=XQdOjAJroroT2JNNPbrUauv2DTJ3tfJoFNYGSLKky24,9791
47
48
  linkml/generators/protogen.py,sha256=a4KUyKj525tuE2YenEJQ_IkbNKnnhVH_N-qTEmMBVY4,2524
48
49
  linkml/generators/pydanticgen/__init__.py,sha256=5SUFNcrh-6MLfMqptR6wPsR2v1Gyrl3wii-yu6kdnQM,700
49
- linkml/generators/pydanticgen/array.py,sha256=mF_vhmlPfd9yVlVyANvT9GgLP6iQLSheqaowT5Jp6Jo,16120
50
+ linkml/generators/pydanticgen/array.py,sha256=eV5zWd4dJl7Uj-xQyijibACily4IgWSEQRH8Wmga9gc,27876
50
51
  linkml/generators/pydanticgen/black.py,sha256=BaJ7b-kMUbIN_cKRT3yCaMEbFwxzj1_U7w4fKQnkL44,723
51
- linkml/generators/pydanticgen/build.py,sha256=_NQzXK_wWJ-EAHBi1nqZCEWSTYy7KWkc5w-mRsEXycI,3936
52
+ linkml/generators/pydanticgen/build.py,sha256=xWNnxaNz0LqfNpgUuaUeVdvmXyFASwv5QED3bEaUVaM,4093
52
53
  linkml/generators/pydanticgen/includes.py,sha256=kDAwonKbhTFzrFa2TrmTYuOSHXuzDy5WHgBaI5nVY6c,504
53
- linkml/generators/pydanticgen/pydanticgen.py,sha256=TCQG5O0GFT1GDsrMby79jDujWFJ3D_pXW8sUB3vw3L0,49059
54
- linkml/generators/pydanticgen/template.py,sha256=alt5yXyf2zdh93rLhyuIu9Ctb9C3O1oM62Upr4JH6Cw,21000
54
+ linkml/generators/pydanticgen/pydanticgen.py,sha256=IEmSPr9zu1dkgIMFvVKDswokhQvM_weXdmVNQ3l3eNQ,49938
55
+ linkml/generators/pydanticgen/template.py,sha256=7EZD_niU9bnkmtNG7zTBjLtQ5kUbKkBsidQP0X8UxFI,24828
55
56
  linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=uMyVKpO5uQkAFlIvIBwA6FFZl_BSIotfwCorrSwMA3Q,873
56
57
  linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=6KRQ1ZVHh1uwZnYL3qxBnyit8_DNE7D-4l2-1wsRsG0,406
57
58
  linkml/generators/pydanticgen/templates/class.py.jinja,sha256=GqR2t5y0vLmvUpT2vyP5VX42PO9AkAnGE-U2RZPa9AI,690
58
59
  linkml/generators/pydanticgen/templates/conditional_import.py.jinja,sha256=YheknDrxvepiJUzeItSL5aSbAkCdR1k0a6m6aTA4qNM,240
59
60
  linkml/generators/pydanticgen/templates/enum.py.jinja,sha256=572XFQyEMZfL-G_Cj68T-NI_mUnDoFOAVJOGIKu2Hb8,338
60
61
  linkml/generators/pydanticgen/templates/footer.py.jinja,sha256=t_24p1xmqdbfxGqz_XCXSTvkkWt26_2w_RcQjGIAWlY,155
61
- linkml/generators/pydanticgen/templates/imports.py.jinja,sha256=d1XFna2eOpkH8cgJML3vXwqGcocczvOcrbg6jjd4kP0,945
62
- linkml/generators/pydanticgen/templates/module.py.jinja,sha256=NLCYn4wgwVBCs8trV2hNq0_BkZgfIIS6zQTmjzFDJCQ,568
63
- linkml/generators/pydanticgen/templates/validator.py.jinja,sha256=BhXRGrT7HIweVHEE3Z7ZUtFFV8kP1dmRKJfu53jZBBQ,441
64
- linkml/generators/pythongen.py,sha256=Ti654YxzTwZRXap-vT5T7iP3NYWox0yFqdp4oHV8tNs,53289
62
+ linkml/generators/pydanticgen/templates/imports.py.jinja,sha256=vwAOWV98rM4reAUXUYQXihukTPoVDcs8D9HWsVZmTiQ,1249
63
+ linkml/generators/pydanticgen/templates/module.py.jinja,sha256=hqZKsJ72yUioBkZAunscVgLSe58OFHf0z6-so_b43U4,526
64
+ linkml/generators/pydanticgen/templates/validator.py.jinja,sha256=5vDpqdfxLpie4BzcyjE82agO6NsThIZjNlcz6gq_kFg,465
65
+ linkml/generators/python/__init__.py,sha256=NS9fPEuAo0punDplD91F9mcViXMJJv04Q5NkFcKPNvY,40
66
+ linkml/generators/python/python_ifabsent_processor.py,sha256=a98JCbMsR_Fsdaw8s299-0jFhE0V6F4zLl326ITA7lQ,3848
67
+ linkml/generators/pythongen.py,sha256=pOGoLvF-MxshwS-UJbIvqogWSwr4-sqhhpW5LMzRhbQ,52634
65
68
  linkml/generators/rdfgen.py,sha256=OT8oS8MPUVf5UK3OKvRWgAh9iQiWwdyWJSA69PncOw4,2969
66
- linkml/generators/shacl/__init__.py,sha256=O-M-wndKw8rMW-U8X3QCNHal-ErXP6uXZqxiQSa77l4,108
67
- linkml/generators/shacl/ifabsent_processor.py,sha256=kV9BGA2ZPXLRfaFuW0o4jpkATvGggvrqpAo9c1UqWNE,2193
68
- linkml/generators/shacl/shacl_data_type.py,sha256=BT3C9tdFyBQnuucPN7YQiFAKEa9yuzy-Q26X6dmOXgo,1827
69
- linkml/generators/shaclgen.py,sha256=9fp7qsKhMpplDHNIBIwfFLguYubjOEUn9th_Fvtg8zA,13283
69
+ linkml/generators/shacl/__init__.py,sha256=KgMOyESGTdKk2Vhx9uuUYgEJPuJQ-iT1vDQVIMoiXCM,58
70
+ linkml/generators/shacl/shacl_data_type.py,sha256=gX3Y2KyTVPwMyef0cJMTEpU9h0oH-H0ThVDORdNW170,1828
71
+ linkml/generators/shacl/shacl_ifabsent_processor.py,sha256=hbgt5UtVHo_z_JOLkg6ltGRdVuiv65b2PA3x1Oy4ssQ,4269
72
+ linkml/generators/shaclgen.py,sha256=6MKUgvsQ8GGG9j8w8EUqwhMB4VhV2nVURYRRcg2FBfw,14330
70
73
  linkml/generators/shexgen.py,sha256=-GFdapDEAUXAjsXdTI7ZlS39YfuvaxfzPkdqUNM19qI,9941
71
- linkml/generators/sparqlgen.py,sha256=ULvWokNGPADq1qDENoFeRYg3FmjdTh4-Vq-eYjsAEK4,6151
74
+ linkml/generators/sparqlgen.py,sha256=2DaFrFIeMI7QQfiPn79J8ERILlkJALrabDnKK7usDJQ,6188
72
75
  linkml/generators/sqlalchemy/__init__.py,sha256=mb9AC1rIFkSiNZhhG0TAk45ol9PjS1XvsrvCjgfVUpQ,249
73
76
  linkml/generators/sqlalchemy/sqlalchemy_declarative_template.py,sha256=X_Ws1NUBikMI5HuNgEhl_PIeWM-B-c2B0W9KUBH4QTg,2542
74
77
  linkml/generators/sqlalchemy/sqlalchemy_imperative_template.py,sha256=u4ZpponG1h6XROrOHGOf_0H2e6xL1_s8twAOA-gx94A,1622
75
- linkml/generators/sqlalchemygen.py,sha256=qTyT0s1FhQnCvcgjEsC4OaTWhkgHBAGxcHnxEoF9DmI,9297
76
- linkml/generators/sqltablegen.py,sha256=nKjUMhd05JaWaME_DjP7AV2DDUulsKpcu7IidhD3PLo,12359
78
+ linkml/generators/sqlalchemygen.py,sha256=MYzEkg8BAgFChiRNqOZK9aMqH-aNGa6-CnpZdbhFX_c,9332
79
+ linkml/generators/sqltablegen.py,sha256=BaWAuvwVHsXVt85GYxzH5_UL3ZeqRI9SojlvMmh4KkE,12395
77
80
  linkml/generators/sssomgen.py,sha256=zrZy0WL9fF5bk-XAcB-MZYZkhHhqVRHt2rGBUtfqnLY,6891
78
81
  linkml/generators/string_template.md,sha256=kRcfic6entgIaJdpSg6GF3jcjC9wbKsCVM6wVT2qipc,1788
79
82
  linkml/generators/summarygen.py,sha256=C9r34928QtVMaXTbdch-mRPB5L0jDTGmTnVmtrKrR-0,3083
80
83
  linkml/generators/terminusdbgen.py,sha256=ItJ-HTMkkX22Ex1-UjJZmtEtE2fn6UdjAxDtn20RXV8,4713
81
- linkml/generators/typescriptgen.py,sha256=y8l1A1hAyuiRmXw0CyPXfamBKWpi7ag_lspfr8bnIds,8594
84
+ linkml/generators/typescriptgen.py,sha256=3738AygrfEnyp0eDzpwbO4x4udLHDXX1Ev4MVM2zBwY,8814
82
85
  linkml/generators/yamlgen.py,sha256=38zdh5T4tObFhCHgbUbKbc0UuFh1TmmsWBkWM9gcvsI,1625
83
86
  linkml/generators/yumlgen.py,sha256=Bg1MGlhCCQoswB19mFKh8xB0UcL9MQGHlUrAVGZSWkc,12208
84
87
  linkml/linter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -95,33 +98,33 @@ linkml/linter/formatters/json_formatter.py,sha256=rrOELuETUCFTl1Ewnrus9Rx9hl2g4u
95
98
  linkml/linter/formatters/markdown_formatter.py,sha256=sumF2MNJYL5oipLwCftCr3AiaCmVhd9V6di9aYpJ29I,2605
96
99
  linkml/linter/formatters/terminal_formatter.py,sha256=xmNwlRieVCssRt3fpnNP5WWw_YXGmaBsbxFoMWufy5M,2085
97
100
  linkml/linter/formatters/tsv_formatter.py,sha256=1VW-1Tv16mwhIDpHdExYpJJR3z42K5_XK2C-4mmYYdE,871
98
- linkml/linter/linter.py,sha256=qfVV-vFT7bUJ2BmmDQteD7Jz8HZ-CNDSvnkyhJ-54H0,5113
101
+ linkml/linter/linter.py,sha256=ETx1C8IbXnrCDWwpBxAz0ahY4ROYcl-pQhwp5RFjzJ8,5145
99
102
  linkml/linter/rules.py,sha256=Eg_-lIX1KPsCp3PHdPcBiHmSS5qAVZkHbw5LURfkfXk,11481
100
103
  linkml/reporting/__init__.py,sha256=Jo0V_nyEcnWhMukMW-bqW9dlbgCfaRlWm3CO-XzgU84,92
101
104
  linkml/reporting/model.py,sha256=-10yNfk8wuRC48ZI-akrWvtlJ9a6RYWET2TzlZV3XXo,8622
102
105
  linkml/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
- linkml/transformers/logical_model_transformer.py,sha256=rPeBYzQdLtcEKPe1kwkOWce4N7HZvFaULDrEGKbB-qI,29838
106
+ linkml/transformers/logical_model_transformer.py,sha256=hWc5uF1TYU9_qVZAKm2UtQ6ICoeWLaRCI5OUWmEy94k,29835
104
107
  linkml/transformers/model_transformer.py,sha256=tK_MpRDI-q2qfe8KHT6qJHP8ZruKjYx1FcM-Fnjse-E,678
105
- linkml/transformers/relmodel_transformer.py,sha256=aiSI2xaqRz4f0Z_0WFaBP5bknzX0pTnvxsR5mESFysg,18857
108
+ linkml/transformers/relmodel_transformer.py,sha256=2AwLVqto1to_9IaTjicweFVIPa8dcNPKK0EJWdHfWMo,19675
106
109
  linkml/transformers/schema_renamer.py,sha256=DYRbgL9j41M9FdbHYLY3u4YIdDM98laD3cv_lHcgWHQ,5275
107
110
  linkml/utils/__init__.py,sha256=Pkyv-Gfb8QoJdInRdJuuUz1Igfe0sT9t8Gv3V_fyTXc,92
108
111
  linkml/utils/cli_utils.py,sha256=MdVbox1qr6kDUHUCWAmFhV-D6ebs_nn8vVwB8KDQfew,742
109
- linkml/utils/converter.py,sha256=vMpJLNFDxZR3yUGMiBCassDC-vvTb2oTq_3NYSLgErk,6297
112
+ linkml/utils/converter.py,sha256=ZGRZXsPezhMmQaF-BiBsQON--TVQLi64tEdtrN9q2PA,6334
110
113
  linkml/utils/datautils.py,sha256=QlbzwXykh5Fphfe5KxPo6_ekXfniLbHiEGJtLWjUrvY,3742
111
114
  linkml/utils/datavalidator.py,sha256=kBdWaVi8IZT1bOwEJgJYx-wZAb_PTBObB9nHpYORfKA,472
112
115
  linkml/utils/deprecation.py,sha256=onhB82qjIkKzyUOTO9WDqN6QF3I2cJoyBrbm66vHmgM,8088
113
- linkml/utils/execute_tutorial.py,sha256=KGmSnaz6joIAShnrD24n8kD6URe6CBoSUYsDOTg7qCg,7039
114
- linkml/utils/generator.py,sha256=nAZTBFDKAZ2Asi6f54-GSOZoP03jQKgbYCW82KA34Z4,39100
116
+ linkml/utils/exceptions.py,sha256=3S6lf5WAUgVvjPRaES597_YjUjbbJ5KqjKjpjcaRLoU,217
117
+ linkml/utils/execute_tutorial.py,sha256=X2sdb4fBBnBmNKg9k5_fhWeY9DXCbYEb4NXUCPv4TJ0,7057
118
+ linkml/utils/generator.py,sha256=04GLUdwxz5Q4K_5ICBWOlhRapCf9yOan2H5C3zUrOE4,39132
115
119
  linkml/utils/helpers.py,sha256=yR8n4zFA5wPcYC7xzRuNF3wO16vG80v6j7DM3qTNmIc,447
116
- linkml/utils/ifabsent_functions.py,sha256=IkcBcmRYu8sllx7_mTCqu4aHfTxX2AnQoccZ1KOODds,5843
117
120
  linkml/utils/logictools.py,sha256=BGtcoqr_Rsu08Ywa6lNiL881uZzQmNWk1p4FEIVKYe0,23641
118
- linkml/utils/mergeutils.py,sha256=QVm2iQB4v_L2rSvPBsPe9C865R03BgV3TzlPoTTTwWQ,9044
121
+ linkml/utils/mergeutils.py,sha256=FdcSiYUmPkxxwnEv_43SR3BN6lCUeEkNndRpxJQWE2c,9080
119
122
  linkml/utils/rawloader.py,sha256=nUB8Gfn8yEVwyo6bx0TtB2mBGkilC-fybi0xvQ73Gks,4417
120
123
  linkml/utils/schema_builder.py,sha256=LwaLeo65IQBHcmRD1kIxnjI1idFZyZsgfPACPow1_JY,9983
121
- linkml/utils/schema_fixer.py,sha256=dzAkID_hO8VNrSpO9Jbz_GLJQAoRju13cZ3fnY03ZX8,16771
122
- linkml/utils/schemaloader.py,sha256=dWZO044p_UcUWnrd8HZ-NsbLXQ9cA6c8HKfNI9-qH2A,47388
124
+ linkml/utils/schema_fixer.py,sha256=Z_4XnyvwDDiGxtihq-U3vUTMZvbfCzAAun6cH0Elsss,16766
125
+ linkml/utils/schemaloader.py,sha256=wiqKHc28ga_qLuIDGS9BQhwhXYu1ZSUqhOebmUF1NGs,47392
123
126
  linkml/utils/schemasynopsis.py,sha256=j7sNt6j-E3rmf-1qEo351Kth2kltt6crQV-dxJAGCUE,18414
124
- linkml/utils/sqlutils.py,sha256=Ddm6nsUd3oqLEWwZj7yakpyhRCO92Vvfl2MobiFaaXo,17083
127
+ linkml/utils/sqlutils.py,sha256=DkeNyVlHcFlKSHgnOmpO47JSQssqRhA9ys_0ZXkYGz4,17120
125
128
  linkml/utils/typereferences.py,sha256=8Yfuz9-HAwOPoJLbIcO_sY9zf32hvPRzGeSOzECfMWA,2232
126
129
  linkml/utils/validation.py,sha256=eLw1-d8x3N1V14bSc6H_mJJXo59ryKvvUIBcOJ1dVMw,1438
127
130
  linkml/validator/__init__.py,sha256=u0CeorIw50Qqwa60-lIFsJXg-sOdfo90hqvLpyvvwo4,4993
@@ -134,7 +137,7 @@ linkml/validator/loaders/passthrough_loader.py,sha256=fQvBZqzGnpdwpZio4Mbehmsb6e
134
137
  linkml/validator/loaders/yaml_loader.py,sha256=ZsMz-oGDkX9oPEOVcKnFRGhU9q0fKoHcL6BLOkCeB4c,914
135
138
  linkml/validator/plugins/__init__.py,sha256=0ifiDqpcXVy4X7OJFm7FMYi1-6E06avNIIk9R0c6nD8,693
136
139
  linkml/validator/plugins/jsonschema_validation_plugin.py,sha256=c3OjvLR5m83vppsDfkrS9nMXma_ogUxXpZuM_JIUVM4,2634
137
- linkml/validator/plugins/pydantic_validation_plugin.py,sha256=C-Vp74bz5oqp5V-iuhXW8p0PPDoFY8NCU5x36Ur5Og4,1985
140
+ linkml/validator/plugins/pydantic_validation_plugin.py,sha256=gVjdJiGcZ1EuOTcCMWOUS35W3IpMJQHUgjj6lQ3-41E,1990
138
141
  linkml/validator/plugins/recommended_slots_plugin.py,sha256=kOdoYQyye47nLA7BjorVmydS84nGpiVy3MoCbPq1Ymo,2308
139
142
  linkml/validator/plugins/shacl_validation_plugin.py,sha256=X6h1O54m9P5USvqCvNqELD0YpzXkE6UrmxnV0ukU6E4,3888
140
143
  linkml/validator/plugins/validation_plugin.py,sha256=9SMHF8b2bgG9-8351e8bY676e0A4aEBJSXvMjMF5kXg,1548
@@ -142,15 +145,15 @@ linkml/validator/report.py,sha256=LwFpmJ74Cvsi2CuEDhm1a8nn9x1VI3Z98DbkUZVhKMA,89
142
145
  linkml/validator/validation_context.py,sha256=Pmccq-LQ9iEeLyZhamp3mKjjtwp4ji1hIe5TT05AUT4,2732
143
146
  linkml/validator/validator.py,sha256=BFgfKdu9Nad2dc9XTpmz9daQTj_FTcvo6mBq3e8fhJs,5649
144
147
  linkml/validators/__init__.py,sha256=43W3J5NPKhwa3ZFHLRYsJMocwQKWGYCF9Ki9r0ccGbc,202
145
- linkml/validators/jsonschemavalidator.py,sha256=LVhBF3Fp4Ltjeaov36duoODxXVXwKqe07SrohH_uzhg,7968
146
- linkml/validators/sparqlvalidator.py,sha256=KU4Vj-B3i_0Fde0Sn89oqkOVxt1UGW3uI4F6YNoJMTQ,4625
148
+ linkml/validators/jsonschemavalidator.py,sha256=zGDPKjr13hXHSH8g1KOzo4PXrfM_TTvpwq_jD03aVUw,8005
149
+ linkml/validators/sparqlvalidator.py,sha256=0iq-oFFLV0Juu6pJskpLOlB7AMZwU3VFvoflzW4ohH8,4660
147
150
  linkml/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
151
  linkml/workspaces/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
152
  linkml/workspaces/datamodel/workspaces.py,sha256=4HdkqweGNfMPqnB1_Onc9DcTfkhoagTRcqruh08nRoI,14905
150
153
  linkml/workspaces/datamodel/workspaces.yaml,sha256=EjVrwPpeRZqJRjuGyyDRxxFzuv55SiLIXPBRUG6HStU,4233
151
- linkml/workspaces/example_runner.py,sha256=qrn3EALJsHpyzQXo2npg5oTmMNQTrCjaNIAuMV0P5c8,11720
152
- linkml-1.8.2.dist-info/entry_points.txt,sha256=jvnPJ8UTca4_L-Dh8OdUm5td8I3ZFlKRhMPjqRLtaSg,2084
153
- linkml-1.8.2.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
154
- linkml-1.8.2.dist-info/LICENSE,sha256=kORMoywK6j9_iy0UvLR-a80P1Rvc9AOM4gsKlUNZABg,535
155
- linkml-1.8.2.dist-info/METADATA,sha256=rdL9CvP5g68hZnKnQcInhtIMvcI2Ip5wqBdII0le-nY,3731
156
- linkml-1.8.2.dist-info/RECORD,,
154
+ linkml/workspaces/example_runner.py,sha256=T7sHQetV6a-dG5Kjuh2L4rHQ6-SPG3Kj1J1nPB_1uoQ,11757
155
+ linkml-1.8.4.dist-info/LICENSE,sha256=kORMoywK6j9_iy0UvLR-a80P1Rvc9AOM4gsKlUNZABg,535
156
+ linkml-1.8.4.dist-info/METADATA,sha256=G7CFrUedBRAKCg2p1-QuO9aA7KgVCh0n48KlZ1RjuZc,3873
157
+ linkml-1.8.4.dist-info/entry_points.txt,sha256=jvnPJ8UTca4_L-Dh8OdUm5td8I3ZFlKRhMPjqRLtaSg,2084
158
+ linkml-1.8.4.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
159
+ linkml-1.8.4.dist-info/RECORD,,