linkml 1.8.0rc2__py3-none-any.whl → 1.8.2__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 (70) hide show
  1. linkml/cli/__init__.py +0 -0
  2. linkml/cli/__main__.py +4 -0
  3. linkml/cli/main.py +126 -0
  4. linkml/generators/common/build.py +105 -0
  5. linkml/generators/common/lifecycle.py +124 -0
  6. linkml/generators/common/template.py +89 -0
  7. linkml/generators/csvgen.py +1 -1
  8. linkml/generators/docgen/slot.md.jinja2 +4 -0
  9. linkml/generators/docgen.py +1 -1
  10. linkml/generators/dotgen.py +1 -1
  11. linkml/generators/erdiagramgen.py +1 -1
  12. linkml/generators/excelgen.py +1 -1
  13. linkml/generators/golanggen.py +1 -1
  14. linkml/generators/golrgen.py +1 -1
  15. linkml/generators/graphqlgen.py +1 -1
  16. linkml/generators/javagen.py +1 -1
  17. linkml/generators/jsonldcontextgen.py +4 -4
  18. linkml/generators/jsonldgen.py +1 -1
  19. linkml/generators/jsonschemagen.py +80 -21
  20. linkml/generators/linkmlgen.py +1 -1
  21. linkml/generators/markdowngen.py +1 -1
  22. linkml/generators/namespacegen.py +1 -1
  23. linkml/generators/oocodegen.py +2 -1
  24. linkml/generators/owlgen.py +1 -1
  25. linkml/generators/plantumlgen.py +24 -7
  26. linkml/generators/prefixmapgen.py +1 -1
  27. linkml/generators/projectgen.py +1 -1
  28. linkml/generators/protogen.py +1 -1
  29. linkml/generators/pydanticgen/__init__.py +9 -3
  30. linkml/generators/pydanticgen/array.py +114 -194
  31. linkml/generators/pydanticgen/build.py +64 -25
  32. linkml/generators/pydanticgen/includes.py +4 -28
  33. linkml/generators/pydanticgen/pydanticgen.py +635 -283
  34. linkml/generators/pydanticgen/template.py +153 -180
  35. linkml/generators/pydanticgen/templates/attribute.py.jinja +9 -7
  36. linkml/generators/pydanticgen/templates/base_model.py.jinja +0 -13
  37. linkml/generators/pydanticgen/templates/class.py.jinja +2 -2
  38. linkml/generators/pydanticgen/templates/footer.py.jinja +2 -10
  39. linkml/generators/pydanticgen/templates/module.py.jinja +3 -3
  40. linkml/generators/pydanticgen/templates/validator.py.jinja +0 -4
  41. linkml/generators/pythongen.py +12 -2
  42. linkml/generators/rdfgen.py +1 -1
  43. linkml/generators/shaclgen.py +6 -2
  44. linkml/generators/shexgen.py +1 -1
  45. linkml/generators/sparqlgen.py +1 -1
  46. linkml/generators/sqlalchemygen.py +1 -1
  47. linkml/generators/sqltablegen.py +1 -1
  48. linkml/generators/sssomgen.py +1 -1
  49. linkml/generators/summarygen.py +1 -1
  50. linkml/generators/terminusdbgen.py +7 -4
  51. linkml/generators/typescriptgen.py +1 -1
  52. linkml/generators/yamlgen.py +1 -1
  53. linkml/generators/yumlgen.py +1 -1
  54. linkml/linter/cli.py +1 -1
  55. linkml/transformers/logical_model_transformer.py +117 -18
  56. linkml/utils/converter.py +1 -1
  57. linkml/utils/execute_tutorial.py +2 -0
  58. linkml/utils/logictools.py +142 -29
  59. linkml/utils/schema_builder.py +7 -6
  60. linkml/utils/schema_fixer.py +1 -1
  61. linkml/utils/sqlutils.py +1 -1
  62. linkml/validator/cli.py +4 -1
  63. linkml/validators/jsonschemavalidator.py +1 -1
  64. linkml/validators/sparqlvalidator.py +1 -1
  65. linkml/workspaces/example_runner.py +1 -1
  66. {linkml-1.8.0rc2.dist-info → linkml-1.8.2.dist-info}/METADATA +2 -2
  67. {linkml-1.8.0rc2.dist-info → linkml-1.8.2.dist-info}/RECORD +70 -64
  68. {linkml-1.8.0rc2.dist-info → linkml-1.8.2.dist-info}/entry_points.txt +1 -1
  69. {linkml-1.8.0rc2.dist-info → linkml-1.8.2.dist-info}/LICENSE +0 -0
  70. {linkml-1.8.0rc2.dist-info → linkml-1.8.2.dist-info}/WHEEL +0 -0
@@ -1,7 +1,7 @@
1
1
  import operator
2
2
  from copy import deepcopy
3
3
  from itertools import product
4
- from typing import Any, Collection, List, Optional, Tuple
4
+ from typing import Any, Collection, List, Optional, Tuple, Type
5
5
 
6
6
 
7
7
  def member_of(item: Any, collection: Collection[Any]) -> bool:
@@ -25,6 +25,8 @@ OPS = {
25
25
 
26
26
 
27
27
  class Expression:
28
+ """Base class for logic expressions"""
29
+
28
30
  def __eq__(self, other: "Expression"):
29
31
  if isinstance(other, Expression):
30
32
  return self._ordered_str() == other._ordered_str()
@@ -60,6 +62,7 @@ class Expression:
60
62
 
61
63
  def __contains__(self, other: Any):
62
64
  return Term("contains", self, other)
65
+ return Term("contains", self, other)
63
66
 
64
67
  def _ordered_str(self, **kwargs):
65
68
  return str(self)
@@ -69,6 +72,8 @@ class Expression:
69
72
 
70
73
 
71
74
  class Variable(Expression):
75
+ """A variable in a logic expression"""
76
+
72
77
  def __init__(self, name: str):
73
78
  self.name = name
74
79
 
@@ -80,6 +85,8 @@ class Variable(Expression):
80
85
 
81
86
 
82
87
  class Top(Expression):
88
+ """True expression"""
89
+
83
90
  def __str__(self):
84
91
  return "T"
85
92
 
@@ -88,6 +95,8 @@ class Top(Expression):
88
95
 
89
96
 
90
97
  class Bottom(Expression):
98
+ """False expression"""
99
+
91
100
  def __str__(self):
92
101
  return "F"
93
102
 
@@ -96,6 +105,8 @@ class Bottom(Expression):
96
105
 
97
106
 
98
107
  class Not(Expression):
108
+ """Negation of an expression"""
109
+
99
110
  def __init__(self, operand: Expression):
100
111
  self.operand = operand
101
112
 
@@ -107,6 +118,8 @@ class Not(Expression):
107
118
 
108
119
 
109
120
  class And(Expression):
121
+ """Conjunction of expressions"""
122
+
110
123
  def __init__(self, *operands: Expression):
111
124
  self.operands: List[Expression] = list(operands)
112
125
 
@@ -306,6 +319,45 @@ def distribute_and_over_or(expr: Expression) -> Expression:
306
319
 
307
320
 
308
321
  def is_contradiction(expr: Expression, apply_dnf=False) -> Optional[bool]:
322
+ """
323
+ Check if the given expression is a contradiction.
324
+
325
+ >>> a = Variable("a")
326
+ >>> b = Variable("b")
327
+ >>> c = Variable("c")
328
+ >>> d = Variable("d")
329
+ >>> F = Bottom()
330
+ >>> T = Top()
331
+ >>> is_contradiction(T)
332
+ False
333
+ >>> is_contradiction(F)
334
+ True
335
+ >>> is_contradiction(~T)
336
+ True
337
+ >>> is_contradiction(~F)
338
+ False
339
+ >>> is_contradiction(~~T)
340
+ False
341
+ >>> is_contradiction(~~F)
342
+ True
343
+ >>> is_contradiction(F & F)
344
+ True
345
+ >>> is_contradiction(F & T)
346
+ True
347
+ >>> is_contradiction(F | T)
348
+ False
349
+ >>> is_contradiction(a & F )
350
+ True
351
+ >>> is_contradiction(a & ~a)
352
+ True
353
+ >>> assert is_contradiction(a & T) is None
354
+ >>> assert is_contradiction(a) is None
355
+ >>> assert is_contradiction(And(a)) is None
356
+
357
+ :param expr:
358
+ :param apply_dnf:
359
+ :return:
360
+ """
309
361
  if apply_dnf:
310
362
  expr = to_dnf(expr)
311
363
  expr = simplify(expr)
@@ -354,6 +406,32 @@ def evals_to_true(expr: Expression, apply_dnf=False) -> Optional[bool]:
354
406
  """
355
407
  Two-valued logic
356
408
 
409
+ >>> a = Variable("a")
410
+ >>> b = Variable("b")
411
+ >>> c = Variable("c")
412
+ >>> d = Variable("d")
413
+ >>> F = Bottom()
414
+ >>> T = Top()
415
+ >>> evals_to_true(T)
416
+ True
417
+ >>> evals_to_true(F)
418
+ False
419
+ >>> evals_to_true(~T)
420
+ False
421
+ >>> evals_to_true(~F)
422
+ True
423
+ >>> evals_to_true(a & b)
424
+ False
425
+ >>> evals_to_true(a | b)
426
+ False
427
+ >>> evals_to_true(a & a)
428
+ False
429
+
430
+ Note that this does not perform unification, so the following does not evaluate to True
431
+
432
+ >>> evals_to_true(a & ~a)
433
+ False
434
+
357
435
  :param expr:
358
436
  :param apply_dnf:
359
437
  :return:
@@ -363,7 +441,7 @@ def evals_to_true(expr: Expression, apply_dnf=False) -> Optional[bool]:
363
441
  if isinstance(expr, And):
364
442
  return all([evals_to_true(operand) for operand in expr.operands])
365
443
  elif isinstance(expr, Not):
366
- if is_contradiction(expr.operand) is False:
444
+ if is_contradiction(expr.operand) is True:
367
445
  return True
368
446
  else:
369
447
  return False
@@ -378,32 +456,6 @@ def evals_to_true(expr: Expression, apply_dnf=False) -> Optional[bool]:
378
456
  return False
379
457
 
380
458
 
381
- def is_tautology(expr):
382
- """
383
- Checks if the given propositional logic formula is a tautology.
384
-
385
- A formula is a tautology if it is true under every possible valuation of its variables.
386
-
387
- Args:
388
- expr (Expression): The input formula which is an instance of Expression or its subclasses.
389
-
390
- Returns:
391
- bool: True if the formula is a tautology, False otherwise.
392
- """
393
- if isinstance(expr, Or):
394
- for i in range(len(expr.operands)):
395
- for j in range(i + 1, len(expr.operands)):
396
- if isinstance(expr.operands[i], Not) and expr.operands[i].operand == expr.operands[j]:
397
- return True
398
- elif isinstance(expr.operands[j], Not) and expr.operands[j].operand == expr.operands[i]:
399
- return True
400
- elif isinstance(expr, And):
401
- for operand in expr.operands:
402
- if is_tautology(operand):
403
- return True
404
- return False
405
-
406
-
407
459
  def eliminate_redundant(expr: Expression) -> Expression:
408
460
  if isinstance(expr, And):
409
461
  visited = set()
@@ -444,6 +496,23 @@ def simplify(expr: Expression) -> Expression:
444
496
  """
445
497
  Simplifies the given propositional logic formula.
446
498
 
499
+ >>> a = Variable("a")
500
+ >>> b = Variable("b")
501
+ >>> c = Variable("c")
502
+ >>> d = Variable("d")
503
+ >>> simplify(a & b)
504
+ (a & b)
505
+ >>> simplify(a | b)
506
+ (a | b)
507
+ >>> simplify(a & a)
508
+ a
509
+ >>> simplify(a | a)
510
+ a
511
+ >>> simplify(a & ~a)
512
+ F
513
+ >>> simplify(a | ~a)
514
+ T
515
+
447
516
  :param expr:
448
517
  :return:
449
518
  """
@@ -521,6 +590,30 @@ COMPOSITIONS = {
521
590
 
522
591
 
523
592
  def _unsat(x: Expression, y: Expression) -> bool:
593
+ """
594
+ Check if two terms are unsatisfiable when combined.
595
+
596
+ >>> a = Variable("a")
597
+ >>> b = Variable("b")
598
+ >>> _unsat( a < b, a > b)
599
+ True
600
+ >>> _unsat( a < b, a < b)
601
+ False
602
+ >>> _unsat( a <= b, b >= a)
603
+ False
604
+ >>> _unsat( a < b, a <= b)
605
+ False
606
+ >>> _unsat( a < b, b <= a)
607
+ False
608
+ >>> _unsat( IsIn(a, [1, 2]), IsIn(a, [2, 3]))
609
+ False
610
+ >>> _unsat( IsIn(a, [1, 2]), IsIn(a, [3, 4]))
611
+ True
612
+
613
+ :param x:
614
+ :param y:
615
+ :return:
616
+ """
524
617
  if isinstance(x, Term) and isinstance(y, Term):
525
618
  if x.operands[0] == y.operands[0]:
526
619
  xp = x.predicate
@@ -547,7 +640,27 @@ def _unsat(x: Expression, y: Expression) -> bool:
547
640
  return False
548
641
 
549
642
 
550
- def compose_operators(boolean_op, op1, v1, op2, v2) -> Optional[Tuple]:
643
+ def compose_operators(boolean_op: Type[Expression], op1: str, v1: Any, op2: str, v2: Any) -> Optional[Tuple]:
644
+ """
645
+ Compose two expressions.
646
+
647
+ >>> assert compose_operators(And, '<', 1, '<', 2) == (operator.__lt__, 1)
648
+ >>> assert compose_operators(Or, '<', 1, '<', 2) == (operator.__lt__, 2)
649
+ >>> assert compose_operators(Or, '=', 1, '=', 2) is None
650
+ >>> assert compose_operators(And, '=', 1, '=', 2) is None
651
+ >>> assert compose_operators(And, "in", [1, 2], "in", [2, 3]) == (member_of, [2])
652
+ >>> assert compose_operators(Or, "in", [1, 2], "in", [2, 3]) == (member_of, [1, 2, 3])
653
+ >>> assert compose_operators(And, "in", [1], "in", [3]) == (member_of, [])
654
+ >>> assert compose_operators(And, "in", [1], "in", UniversalSet()) == (member_of, [1])
655
+ >>> assert compose_operators(Or, "in", [1], "in", UniversalSet()) == (member_of, UniversalSet())
656
+
657
+ :param boolean_op:
658
+ :param op1:
659
+ :param v1:
660
+ :param op2:
661
+ :param v2:
662
+ :return: New expression OR None if the expressions cannot be reduced
663
+ """
551
664
  rev_op_map = {v: k for k, v in OPS.items()}
552
665
  if not (op1 in rev_op_map and op2 in rev_op_map):
553
666
  return None
@@ -101,12 +101,13 @@ class SchemaBuilder:
101
101
  for k, v in slots.items():
102
102
  cls.slots.append(k)
103
103
  self.add_slot(SlotDefinition(k, **v), replace_if_present=replace_if_present)
104
- for s in slots:
105
- cls.slots.append(s.name if isinstance(s, SlotDefinition) else s)
106
- if isinstance(s, str) and s in self.schema.slots:
107
- # top-level slot already exists
108
- continue
109
- self.add_slot(s, replace_if_present=replace_if_present)
104
+ else:
105
+ for s in slots:
106
+ cls.slots.append(s.name if isinstance(s, SlotDefinition) else s)
107
+ if isinstance(s, str) and s in self.schema.slots:
108
+ # top-level slot already exists
109
+ continue
110
+ self.add_slot(s, replace_if_present=replace_if_present)
110
111
  if slot_usage:
111
112
  if isinstance(slot_usage, dict):
112
113
  for k, v in slot_usage.items():
@@ -382,7 +382,7 @@ class SchemaFixer:
382
382
  return schema
383
383
 
384
384
 
385
- @click.group()
385
+ @click.group(name="fix")
386
386
  @click.option("-v", "--verbose", count=True)
387
387
  @click.option("-q", "--quiet")
388
388
  def main(verbose: int, quiet: bool):
linkml/utils/sqlutils.py CHANGED
@@ -270,7 +270,7 @@ class SQLStore:
270
270
  return obj
271
271
 
272
272
 
273
- @click.group()
273
+ @click.group(name="sqldb")
274
274
  @click.option("-v", "--verbose", count=True)
275
275
  @click.option("-q", "--quiet")
276
276
  @click.option(
linkml/validator/cli.py CHANGED
@@ -64,7 +64,7 @@ def _resolve_loaders(loader_config: Iterable[Union[str, Dict[str, Dict[str, str]
64
64
  DEPRECATED = "[DEPRECATED: only used in legacy mode]"
65
65
 
66
66
 
67
- @click.command()
67
+ @click.command(name="validate")
68
68
  @click.option(
69
69
  "-s",
70
70
  "--schema",
@@ -132,6 +132,9 @@ def cli(
132
132
  include_range_class_descendants: bool,
133
133
  include_context: bool,
134
134
  ):
135
+ """
136
+ Validate data according to a LinkML Schema
137
+ """
135
138
  if legacy_mode:
136
139
  from linkml.validators import jsonschemavalidator
137
140
 
@@ -114,7 +114,7 @@ class JsonSchemaDataValidator(DataValidator):
114
114
  yield f"{best_error.message} in {best_error.json_path}"
115
115
 
116
116
 
117
- @click.command()
117
+ @click.command(name="jsonschema")
118
118
  @click.option("--module", "-m", help="Path to python datamodel module")
119
119
  @click.option(
120
120
  "--input-format",
@@ -85,7 +85,7 @@ class SparqlDataValidator(DataValidator):
85
85
  return self.schema
86
86
 
87
87
 
88
- @click.command()
88
+ @click.command(name="sparql")
89
89
  @click.option("--named-graph", "-G", multiple=True, help="Constrain query to a named graph")
90
90
  @click.option("--input", "-i", help="Input file to validate")
91
91
  @click.option("--endpoint-url", "-U", help="URL of sparql endpoint")
@@ -255,7 +255,7 @@ class ExampleRunner:
255
255
  return dict_obj
256
256
 
257
257
 
258
- @click.command()
258
+ @click.command(name="examples")
259
259
  @click.option("--schema", "-s", required=True, help="Path to linkml schema yaml file")
260
260
  @click.option("--prefixes", "-P", help="Path to prefixes")
261
261
  @click.option("--input-directory", "-e", help="folder containing positive examples that MUST pass validation")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: linkml
3
- Version: 1.8.0rc2
3
+ Version: 1.8.2
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
@@ -36,7 +36,7 @@ Requires-Dist: jinja2 (>=3.1.0)
36
36
  Requires-Dist: jsonasobj2 (>=1.0.3,<2.0.0)
37
37
  Requires-Dist: jsonschema[format] (>=4.0.0)
38
38
  Requires-Dist: linkml-dataops
39
- Requires-Dist: linkml-runtime (==1.8.0rc2)
39
+ Requires-Dist: linkml-runtime (>=1.8.1,<2.0.0)
40
40
  Requires-Dist: openpyxl
41
41
  Requires-Dist: parse
42
42
  Requires-Dist: prefixcommons (>=0.1.7)
@@ -1,11 +1,17 @@
1
1
  linkml/__init__.py,sha256=0REu65rXiOk3F1CYLzq60HiSZ2DfFySfGS6QFljZ01s,3663
2
2
  linkml/_version.py,sha256=udxv6OEqcE89DTVMYPtetXYg8IA8Sgc6yW26-6f8C3M,310
3
+ linkml/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ linkml/cli/__main__.py,sha256=oPa7Fl2DQP40UivpIWNRr1CgwT2SQM0rhE478155zBY,80
5
+ linkml/cli/main.py,sha256=-VaV8Z6rhadMOIHS9kdeV30NdXsE6jG3kVpvGbkF2wY,5184
3
6
  linkml/generators/PythonGenNotes.md,sha256=wb9BPLLhF6378OKLbwSBAwmniLpwrcT5_bbfCHfLme8,51006
4
7
  linkml/generators/README.md,sha256=RMzT8EblC_GEdPy5WyfXHDBXlFI6k6mz3Cx2sdpcyWI,4438
5
8
  linkml/generators/__init__.py,sha256=dQ2EUKy_MctEVEzbC3XzEJL5YmYwjYfsa44mG2zKn7g,1517
6
9
  linkml/generators/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ linkml/generators/common/build.py,sha256=hXf2gf1ox2hiR-D6N-qXt5w5QkISLlo1A-_GurY3yHo,2897
11
+ linkml/generators/common/lifecycle.py,sha256=UOJXlIyWQkvsn0Dao9_ZDzlamJtiINyVJQ6SRj66L9s,4910
12
+ linkml/generators/common/template.py,sha256=bjcSNiC85MYl9oGhk0ZpqwZpRxxy_NqxG8XBV-TXXDY,3338
7
13
  linkml/generators/common/type_designators.py,sha256=lgVcIRJJ-yCvVGeP9U_gQZpm77UmJBQo9Bh3lGJITno,1956
8
- linkml/generators/csvgen.py,sha256=R8VQdWXj43LNf5isJElo3MStsiNBSSF4ywIRS1c3_v0,3243
14
+ linkml/generators/csvgen.py,sha256=O20K3IuDxomGJAyNFJmm1_HbPyl6xUK0l-aKY0A3KcM,3253
9
15
  linkml/generators/docgen/class.md.jinja2,sha256=-JmjYHgYOaaBYd5r-Tr5dkk0CLM_lX0kHdocPQtRsjU,3504
10
16
  linkml/generators/docgen/class_diagram.md.jinja2,sha256=gzskx4hOpU_s6BqOXdYZ9DwKxuClnsEgDzPurm30PeY,3469
11
17
  linkml/generators/docgen/common_metadata.md.jinja2,sha256=gy9J8rghBfKDKimwtHj_XuHY4PJRRYHLXVlBHqWrUzU,1604
@@ -13,70 +19,70 @@ linkml/generators/docgen/enum.md.jinja2,sha256=mXnUrRkleY2bOTEyAZ5c4pcUnqhs6BNa8
13
19
  linkml/generators/docgen/index.md.jinja2,sha256=wXUYTmayPLFltC0vbGE_Mf6m3GkkWav7FOEjCvEpHp4,1466
14
20
  linkml/generators/docgen/index.tex.jinja2,sha256=Go_EA-_N4JUpbOYbk3OY11mz5yV70VF2l2sMtgIPWw4,501
15
21
  linkml/generators/docgen/schema.md.jinja2,sha256=xlENfnzNRYgPT_0tdqNFxgklVM4Qf5BuzhFVvSMDuxs,70
16
- linkml/generators/docgen/slot.md.jinja2,sha256=ZGa-kaNvi5LknvFRIjKQyRpSynr1SlkLrpEmWDNPwDA,3226
22
+ linkml/generators/docgen/slot.md.jinja2,sha256=dJHugIv9OPTi3FIn8Iez7CzjQizdXrcn0hcmCmXSgV4,3339
17
23
  linkml/generators/docgen/subset.md.jinja2,sha256=EPln_fjlhlkmwEGEp2iPX-9Xm2vVodPZLlRBlYCB_sA,2705
18
24
  linkml/generators/docgen/type.md.jinja2,sha256=QmCMJZrFwP33eHkggBVtypbyrxTb-XZn9vHOYojVaYk,635
19
- linkml/generators/docgen.py,sha256=QECBmOAiVr-DsUYOLmqapESSB_CiNoiHt_3vjiZCrUs,36396
20
- linkml/generators/dotgen.py,sha256=kzp1EYtF8bBqOuycJokDmsvHVDVkkW-J-6-MiUhwJH0,5013
21
- linkml/generators/erdiagramgen.py,sha256=7W010ngoHrk-BjhCEmpHyySPImLXIOTEBGO70hOUOH8,11341
22
- linkml/generators/excelgen.py,sha256=3ILAeIHeYngNpPf3Ad7CXoHOLQ9KSiYcX5HdwHhQeQE,7696
23
- linkml/generators/golanggen.py,sha256=rDiDFyZBZ6_JygCEdpbKrohQCScvBlWi17AcoR6Qi3g,5790
24
- linkml/generators/golrgen.py,sha256=OUBYRWicP7G7lrPu1VrxumbVpx3CBJal-o2imyeP05M,3437
25
- linkml/generators/graphqlgen.py,sha256=ClJdD6fVjBI8rsIJ3DIuwdQScAJG0gYYKwS8SrFqVZk,2149
25
+ linkml/generators/docgen.py,sha256=BbYIL1Bep0La4izwHaYZuTsnbVAv8_zjx3U3r1eHFEQ,36406
26
+ linkml/generators/dotgen.py,sha256=vjHveFtKBItHRkowi1I4FHffcn4u4wLpBydYgVxB-vE,5028
27
+ linkml/generators/erdiagramgen.py,sha256=5_VEPvRL0I819wCjk7T5hWffdBPc_qw3XpQdOYpO7uE,11357
28
+ linkml/generators/excelgen.py,sha256=MQRRm1wDbg7auUQH9tGb5aRyrp-e4gjXsY10aoLb9LI,7708
29
+ linkml/generators/golanggen.py,sha256=w3iTcOK69cwCrhE1pZn-PpV59arFZB8uU3ErLFo9i8Y,5803
30
+ linkml/generators/golrgen.py,sha256=JB92VDhTuwyaOyxHxB4goIsjZbq4NMf36ESprC3GeBs,3454
31
+ linkml/generators/graphqlgen.py,sha256=-BS-UHPyHqauUgtgcFCO4xSxxogk7BPAQFSXHIrKJT0,2163
26
32
  linkml/generators/javagen/example_template.java.jinja2,sha256=ec4CVTv_0zS7V5Y-1E6H4lRraya10gfX7BEMBlu38X4,444
27
33
  linkml/generators/javagen/java_record_template.jinja2,sha256=OQZffLSy_xR3FIhQMltvrYyVeut7l2Q-tzK7AOiVmWs,1729
28
- linkml/generators/javagen.py,sha256=KxwupMztyCRHcSsbtTnOovuj1WamsAny0mxbYWvTiDs,5324
29
- linkml/generators/jsonldcontextgen.py,sha256=y_AE1JF0QS75VDfOAquToClrWGAWb_ltsGN5r-Q20F8,8638
30
- linkml/generators/jsonldgen.py,sha256=FamA0pbbc9U3kEslsjvgJoJXjQ80VzoPbHmClVGPvKE,7757
31
- linkml/generators/jsonschemagen.py,sha256=Oi55uJJmKiSLoZWn_snN5rx51q0DEGqzHv6VgCLfodY,27747
34
+ linkml/generators/javagen.py,sha256=BTAXgvOOvRa3AOfaaiVFyuyaqg4XFR_JbO6_7tT_AnQ,5335
35
+ linkml/generators/jsonldcontextgen.py,sha256=fZ22yjYGLMf_rQYKQSRh3IvMdGVAFhJ0PdQF8d514NI,8689
36
+ linkml/generators/jsonldgen.py,sha256=9ru1rb4_u7t_Rp8ILQSmDIsk_evrDL_OeilnQUsu338,7770
37
+ linkml/generators/jsonschemagen.py,sha256=XoA0HJ1XlItogmhr3F8XNnAi1UG6fXeBAKkjme48n7o,30388
32
38
  linkml/generators/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- linkml/generators/linkmlgen.py,sha256=1_Kt_7rD42WvCTjq0yaq1Of7jEDZR_uusyzAT-qWMHk,3471
34
- linkml/generators/markdowngen.py,sha256=mwydWkrF-WzsTiKwJqqe9NUya5VaTj7ywKqodP85A44,34449
35
- linkml/generators/namespacegen.py,sha256=vVcIyM0zlKd7XRvtdzwTwHjG4Pg49801gy4FUmjJlqQ,6450
36
- linkml/generators/oocodegen.py,sha256=r73QI08ajbTZTobc9OIG6BMWZft3zdu76vKVR33pyYg,7774
37
- linkml/generators/owlgen.py,sha256=NHIcL1d79WoeqfiZRj6kRk5aTXcQ6JDNXV_VAtH6Vt0,57554
38
- linkml/generators/plantumlgen.py,sha256=2e4ejw0B72Sl_-mipgpKz743LVMs0kRZc8E0MK7gxFY,14919
39
- linkml/generators/prefixmapgen.py,sha256=w8gMCFOI0DmZsNvo9IkbhOqVWqqWYEN6SXnAP3BgFSk,4240
40
- linkml/generators/projectgen.py,sha256=OuT_AneoZFNMCn50GllfZafadUHt50u61JcftM2eed4,9750
41
- linkml/generators/protogen.py,sha256=i4sEhNdAiFFP12fwfRdype1MX8yU-E5fF7XzkcpBCd0,2512
42
- linkml/generators/pydanticgen/__init__.py,sha256=uKGaaQSaeKqinHImXGFE448i-t8Oi0No8suIO76sep8,629
43
- linkml/generators/pydanticgen/array.py,sha256=EYqAkT2_wE82kZ-niUWAC5U3V8EvjjyfSH7tz5GYKWo,19461
39
+ linkml/generators/linkmlgen.py,sha256=g1D8B6MBxcG6b9aYCUESp7nDZPmjedCs8rmGm_0GLnE,3484
40
+ linkml/generators/markdowngen.py,sha256=0gjMPJ0Ycm9se4Y4cyqjbTntGYqRRZu4RL-9Qf5n4lk,34464
41
+ linkml/generators/namespacegen.py,sha256=C4p9LSwsnDqf6sv-wG5l0VQniWFJ1HA1hRXJBDOg3pM,6467
42
+ linkml/generators/oocodegen.py,sha256=aBJgy-S-8FL5cW9p4hf986iSTxXwvkM7ZajKlari4us,7820
43
+ linkml/generators/owlgen.py,sha256=XgEuwvlznnsk8Z-mqZlCC0eK2DinPT9YLga3CkRyBRE,57564
44
+ linkml/generators/plantumlgen.py,sha256=ScTpXZe2Vjs2O6DeRJo-nr-p13lWSAtMZl6gu9jQYTk,15478
45
+ linkml/generators/prefixmapgen.py,sha256=oISFtSt_s5OWx65tYasWk0bUJIDIU1MjnsWqfBE7ZQA,4257
46
+ linkml/generators/projectgen.py,sha256=XSndKhTJ8uik30wWtabKNhERybPeeyVrekf7oEDVF2Q,9764
47
+ linkml/generators/protogen.py,sha256=a4KUyKj525tuE2YenEJQ_IkbNKnnhVH_N-qTEmMBVY4,2524
48
+ linkml/generators/pydanticgen/__init__.py,sha256=5SUFNcrh-6MLfMqptR6wPsR2v1Gyrl3wii-yu6kdnQM,700
49
+ linkml/generators/pydanticgen/array.py,sha256=mF_vhmlPfd9yVlVyANvT9GgLP6iQLSheqaowT5Jp6Jo,16120
44
50
  linkml/generators/pydanticgen/black.py,sha256=BaJ7b-kMUbIN_cKRT3yCaMEbFwxzj1_U7w4fKQnkL44,723
45
- linkml/generators/pydanticgen/build.py,sha256=Ia8qy4C16b-KqO_fw4tGQW_Eo4grCVyX7RsuJ3uRTtk,2681
46
- linkml/generators/pydanticgen/includes.py,sha256=PIVbACrtqQS6LFrXqQsJC6dQUcGBM3uY4E4qLQWJrnk,998
47
- linkml/generators/pydanticgen/pydanticgen.py,sha256=WZxFfLvXhHXVtDQpLjMf63eoBMUxcW0oEMS14jbDOWo,34458
48
- linkml/generators/pydanticgen/template.py,sha256=HESLY1Rd7N_e92dqrh_fif_yp3oDl0n1UAghklMyphA,20982
49
- linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=S_T-M7n_eeM3LW5gQUuTPH1-Oc1CEtL7Bve7qAFouYQ,688
50
- linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=48y64MnC9rjNSV-nKLMeDuHN4gm15UsInhnKxh65zoM,834
51
- linkml/generators/pydanticgen/templates/class.py.jinja,sha256=V_lyvFcZ9QhlKZi2bL5iff8RjHir2SQTTypOzQMOfmk,744
51
+ linkml/generators/pydanticgen/build.py,sha256=_NQzXK_wWJ-EAHBi1nqZCEWSTYy7KWkc5w-mRsEXycI,3936
52
+ 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
55
+ linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=uMyVKpO5uQkAFlIvIBwA6FFZl_BSIotfwCorrSwMA3Q,873
56
+ linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=6KRQ1ZVHh1uwZnYL3qxBnyit8_DNE7D-4l2-1wsRsG0,406
57
+ linkml/generators/pydanticgen/templates/class.py.jinja,sha256=GqR2t5y0vLmvUpT2vyP5VX42PO9AkAnGE-U2RZPa9AI,690
52
58
  linkml/generators/pydanticgen/templates/conditional_import.py.jinja,sha256=YheknDrxvepiJUzeItSL5aSbAkCdR1k0a6m6aTA4qNM,240
53
59
  linkml/generators/pydanticgen/templates/enum.py.jinja,sha256=572XFQyEMZfL-G_Cj68T-NI_mUnDoFOAVJOGIKu2Hb8,338
54
- linkml/generators/pydanticgen/templates/footer.py.jinja,sha256=WuWGJjkWDQcEPL2bGk5fdGuhO0gQRUJzpo4CQHHxQNQ,385
60
+ linkml/generators/pydanticgen/templates/footer.py.jinja,sha256=t_24p1xmqdbfxGqz_XCXSTvkkWt26_2w_RcQjGIAWlY,155
55
61
  linkml/generators/pydanticgen/templates/imports.py.jinja,sha256=d1XFna2eOpkH8cgJML3vXwqGcocczvOcrbg6jjd4kP0,945
56
- linkml/generators/pydanticgen/templates/module.py.jinja,sha256=nymjtSX4jqV9deSsXrsh1HWR90ygECHE4CV9MCyNrTY,615
57
- linkml/generators/pydanticgen/templates/validator.py.jinja,sha256=Yo4dubQal-HwEoJKztQkLYM5qCz1I8na2oaDlXuEpwU,532
58
- linkml/generators/pythongen.py,sha256=CiLmc964siGeJWZC_bOffsqrSnJ5qzn7Eu961C47xgo,52850
59
- linkml/generators/rdfgen.py,sha256=eQi3XXjWk6xliTLncQ4G0VYzGCJwCU_FFG-O7tA8DSA,2959
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
65
+ linkml/generators/rdfgen.py,sha256=OT8oS8MPUVf5UK3OKvRWgAh9iQiWwdyWJSA69PncOw4,2969
60
66
  linkml/generators/shacl/__init__.py,sha256=O-M-wndKw8rMW-U8X3QCNHal-ErXP6uXZqxiQSa77l4,108
61
67
  linkml/generators/shacl/ifabsent_processor.py,sha256=kV9BGA2ZPXLRfaFuW0o4jpkATvGggvrqpAo9c1UqWNE,2193
62
68
  linkml/generators/shacl/shacl_data_type.py,sha256=BT3C9tdFyBQnuucPN7YQiFAKEa9yuzy-Q26X6dmOXgo,1827
63
- linkml/generators/shaclgen.py,sha256=kgJ3VaVM0_7XBr5cvqgob6wjEarNINZzpC4FK61sC9M,13157
64
- linkml/generators/shexgen.py,sha256=MhB1HidCREMCJcDGBqutFQ0gWKKz7aSVw-0s-IHUMm4,9930
65
- linkml/generators/sparqlgen.py,sha256=c7x8GFChKWprBx4rToSnu9qN8OleWTCenVUdZ8XSTWM,6138
69
+ linkml/generators/shaclgen.py,sha256=9fp7qsKhMpplDHNIBIwfFLguYubjOEUn9th_Fvtg8zA,13283
70
+ linkml/generators/shexgen.py,sha256=-GFdapDEAUXAjsXdTI7ZlS39YfuvaxfzPkdqUNM19qI,9941
71
+ linkml/generators/sparqlgen.py,sha256=ULvWokNGPADq1qDENoFeRYg3FmjdTh4-Vq-eYjsAEK4,6151
66
72
  linkml/generators/sqlalchemy/__init__.py,sha256=mb9AC1rIFkSiNZhhG0TAk45ol9PjS1XvsrvCjgfVUpQ,249
67
73
  linkml/generators/sqlalchemy/sqlalchemy_declarative_template.py,sha256=X_Ws1NUBikMI5HuNgEhl_PIeWM-B-c2B0W9KUBH4QTg,2542
68
74
  linkml/generators/sqlalchemy/sqlalchemy_imperative_template.py,sha256=u4ZpponG1h6XROrOHGOf_0H2e6xL1_s8twAOA-gx94A,1622
69
- linkml/generators/sqlalchemygen.py,sha256=boXn_tlkbZ_a5TJYoXvdlKzABNwD-Jn5ld9IAbtzWm4,9286
70
- linkml/generators/sqltablegen.py,sha256=87057FJi9EUVPXOjRfHuSqY0lKmepXRNQsose2fGts4,12343
71
- linkml/generators/sssomgen.py,sha256=yur3q7so9uwIELWZaZRzkJwNbz_ppBL7IQki9XLIM3k,6879
75
+ linkml/generators/sqlalchemygen.py,sha256=qTyT0s1FhQnCvcgjEsC4OaTWhkgHBAGxcHnxEoF9DmI,9297
76
+ linkml/generators/sqltablegen.py,sha256=nKjUMhd05JaWaME_DjP7AV2DDUulsKpcu7IidhD3PLo,12359
77
+ linkml/generators/sssomgen.py,sha256=zrZy0WL9fF5bk-XAcB-MZYZkhHhqVRHt2rGBUtfqnLY,6891
72
78
  linkml/generators/string_template.md,sha256=kRcfic6entgIaJdpSg6GF3jcjC9wbKsCVM6wVT2qipc,1788
73
- linkml/generators/summarygen.py,sha256=HUO13GmfFzhAzKtL3nFypR-_I_IFIHqQoE6WMW05mpo,3069
74
- linkml/generators/terminusdbgen.py,sha256=_q5R0OPCkLCHNTQ9AMtCL2hYaO-wReDjzITvj2doaU0,4626
75
- linkml/generators/typescriptgen.py,sha256=80Ph4RfzDoA1TRCkKaLWlh0NsCNvhakJ2RrNfMqcMmY,8577
76
- linkml/generators/yamlgen.py,sha256=PKssrY5VHpdbOU54PVwLVLbsRqHwoOgOImlMb6DVcXM,1614
77
- linkml/generators/yumlgen.py,sha256=xmMCHPDg-x1vhqc4M-_YmU49-yFan_mjZkve4vCVBaU,12197
79
+ linkml/generators/summarygen.py,sha256=C9r34928QtVMaXTbdch-mRPB5L0jDTGmTnVmtrKrR-0,3083
80
+ linkml/generators/terminusdbgen.py,sha256=ItJ-HTMkkX22Ex1-UjJZmtEtE2fn6UdjAxDtn20RXV8,4713
81
+ linkml/generators/typescriptgen.py,sha256=y8l1A1hAyuiRmXw0CyPXfamBKWpi7ag_lspfr8bnIds,8594
82
+ linkml/generators/yamlgen.py,sha256=38zdh5T4tObFhCHgbUbKbc0UuFh1TmmsWBkWM9gcvsI,1625
83
+ linkml/generators/yumlgen.py,sha256=Bg1MGlhCCQoswB19mFKh8xB0UcL9MQGHlUrAVGZSWkc,12208
78
84
  linkml/linter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- linkml/linter/cli.py,sha256=BpQiETcRfQlZsI1-JALyU9wXPgPOm_KE_n11p0iJaC8,4494
85
+ linkml/linter/cli.py,sha256=tXJ3vwjohCnj4EApEJXvXUSI3NLJ3fI3u6tJVxbgLQg,4505
80
86
  linkml/linter/config/datamodel/.linkmllint.yaml,sha256=40rNhcL35FXQSjlVBMWnyPgplwEUqFT_sJmeZqUzxMw,292
81
87
  linkml/linter/config/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
88
  linkml/linter/config/datamodel/config.py,sha256=WyIBA1damYcW0JI6zLxbFwcHOtSdw0prSADlJdz3zG0,17202
@@ -94,32 +100,32 @@ linkml/linter/rules.py,sha256=Eg_-lIX1KPsCp3PHdPcBiHmSS5qAVZkHbw5LURfkfXk,11481
94
100
  linkml/reporting/__init__.py,sha256=Jo0V_nyEcnWhMukMW-bqW9dlbgCfaRlWm3CO-XzgU84,92
95
101
  linkml/reporting/model.py,sha256=-10yNfk8wuRC48ZI-akrWvtlJ9a6RYWET2TzlZV3XXo,8622
96
102
  linkml/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- linkml/transformers/logical_model_transformer.py,sha256=z-1nyD0d8LYJeAPWRn29p-S4Hgmvjocfcj0VrHTAs2c,26703
103
+ linkml/transformers/logical_model_transformer.py,sha256=rPeBYzQdLtcEKPe1kwkOWce4N7HZvFaULDrEGKbB-qI,29838
98
104
  linkml/transformers/model_transformer.py,sha256=tK_MpRDI-q2qfe8KHT6qJHP8ZruKjYx1FcM-Fnjse-E,678
99
105
  linkml/transformers/relmodel_transformer.py,sha256=aiSI2xaqRz4f0Z_0WFaBP5bknzX0pTnvxsR5mESFysg,18857
100
106
  linkml/transformers/schema_renamer.py,sha256=DYRbgL9j41M9FdbHYLY3u4YIdDM98laD3cv_lHcgWHQ,5275
101
107
  linkml/utils/__init__.py,sha256=Pkyv-Gfb8QoJdInRdJuuUz1Igfe0sT9t8Gv3V_fyTXc,92
102
108
  linkml/utils/cli_utils.py,sha256=MdVbox1qr6kDUHUCWAmFhV-D6ebs_nn8vVwB8KDQfew,742
103
- linkml/utils/converter.py,sha256=snAF-pgZBSi4ANiaKXxqtZk5w3qonJjTfI4X5OVLmUE,6283
109
+ linkml/utils/converter.py,sha256=vMpJLNFDxZR3yUGMiBCassDC-vvTb2oTq_3NYSLgErk,6297
104
110
  linkml/utils/datautils.py,sha256=QlbzwXykh5Fphfe5KxPo6_ekXfniLbHiEGJtLWjUrvY,3742
105
111
  linkml/utils/datavalidator.py,sha256=kBdWaVi8IZT1bOwEJgJYx-wZAb_PTBObB9nHpYORfKA,472
106
112
  linkml/utils/deprecation.py,sha256=onhB82qjIkKzyUOTO9WDqN6QF3I2cJoyBrbm66vHmgM,8088
107
- linkml/utils/execute_tutorial.py,sha256=T4kHTSyz3ItJGEUZxVjR-3yLVKnOr5Ix4NMGE47-IuE,6912
113
+ linkml/utils/execute_tutorial.py,sha256=KGmSnaz6joIAShnrD24n8kD6URe6CBoSUYsDOTg7qCg,7039
108
114
  linkml/utils/generator.py,sha256=nAZTBFDKAZ2Asi6f54-GSOZoP03jQKgbYCW82KA34Z4,39100
109
115
  linkml/utils/helpers.py,sha256=yR8n4zFA5wPcYC7xzRuNF3wO16vG80v6j7DM3qTNmIc,447
110
116
  linkml/utils/ifabsent_functions.py,sha256=IkcBcmRYu8sllx7_mTCqu4aHfTxX2AnQoccZ1KOODds,5843
111
- linkml/utils/logictools.py,sha256=GSmBiobC49TcQjE08RtXEE3JwJEOV7eEREio25uJiFs,21184
117
+ linkml/utils/logictools.py,sha256=BGtcoqr_Rsu08Ywa6lNiL881uZzQmNWk1p4FEIVKYe0,23641
112
118
  linkml/utils/mergeutils.py,sha256=QVm2iQB4v_L2rSvPBsPe9C865R03BgV3TzlPoTTTwWQ,9044
113
119
  linkml/utils/rawloader.py,sha256=nUB8Gfn8yEVwyo6bx0TtB2mBGkilC-fybi0xvQ73Gks,4417
114
- linkml/utils/schema_builder.py,sha256=4qhrur8O0xRZnPm7H1h2BZmTkut5R4q-IE_1KKiHy_c,9937
115
- linkml/utils/schema_fixer.py,sha256=Uz8M3AOQ_BputJr1f6lbfk1iyvmANUNG80-0B3BQKJ8,16761
120
+ linkml/utils/schema_builder.py,sha256=LwaLeo65IQBHcmRD1kIxnjI1idFZyZsgfPACPow1_JY,9983
121
+ linkml/utils/schema_fixer.py,sha256=dzAkID_hO8VNrSpO9Jbz_GLJQAoRju13cZ3fnY03ZX8,16771
116
122
  linkml/utils/schemaloader.py,sha256=dWZO044p_UcUWnrd8HZ-NsbLXQ9cA6c8HKfNI9-qH2A,47388
117
123
  linkml/utils/schemasynopsis.py,sha256=j7sNt6j-E3rmf-1qEo351Kth2kltt6crQV-dxJAGCUE,18414
118
- linkml/utils/sqlutils.py,sha256=Cwoaz44MLcvAGUEBshT4jtn0Z3w7jVOp85zGkd6FTHY,17071
124
+ linkml/utils/sqlutils.py,sha256=Ddm6nsUd3oqLEWwZj7yakpyhRCO92Vvfl2MobiFaaXo,17083
119
125
  linkml/utils/typereferences.py,sha256=8Yfuz9-HAwOPoJLbIcO_sY9zf32hvPRzGeSOzECfMWA,2232
120
126
  linkml/utils/validation.py,sha256=eLw1-d8x3N1V14bSc6H_mJJXo59ryKvvUIBcOJ1dVMw,1438
121
127
  linkml/validator/__init__.py,sha256=u0CeorIw50Qqwa60-lIFsJXg-sOdfo90hqvLpyvvwo4,4993
122
- linkml/validator/cli.py,sha256=uVe_tbBzsK-4BNboE5zRyohS_dEs5Nl1gbhklrzOEpw,7605
128
+ linkml/validator/cli.py,sha256=-7_hU787d321z_4pJeUs9dQsM76xpXie9dS-552c7Xs,7683
123
129
  linkml/validator/loaders/__init__.py,sha256=FjUqEfBHeT5PEMBEZ9XwpclyQOysr4OCI1M0w_MYPVc,1165
124
130
  linkml/validator/loaders/delimited_file_loader.py,sha256=fdh61ZMPTfH29_DM93f5dY0jLP7KQPNh_QAHZppsdNw,2616
125
131
  linkml/validator/loaders/json_loader.py,sha256=Qy42naS2clb0fNXbUushckRu5AIX32b3UFUL6KMhxDE,809
@@ -136,15 +142,15 @@ linkml/validator/report.py,sha256=LwFpmJ74Cvsi2CuEDhm1a8nn9x1VI3Z98DbkUZVhKMA,89
136
142
  linkml/validator/validation_context.py,sha256=Pmccq-LQ9iEeLyZhamp3mKjjtwp4ji1hIe5TT05AUT4,2732
137
143
  linkml/validator/validator.py,sha256=BFgfKdu9Nad2dc9XTpmz9daQTj_FTcvo6mBq3e8fhJs,5649
138
144
  linkml/validators/__init__.py,sha256=43W3J5NPKhwa3ZFHLRYsJMocwQKWGYCF9Ki9r0ccGbc,202
139
- linkml/validators/jsonschemavalidator.py,sha256=_ku7MQGqA6KplbHMiyzDRqgRwwXGloobhLptuXqLCp4,7951
140
- linkml/validators/sparqlvalidator.py,sha256=JowuZ5KxmWkldgWIXAb8DJi7YCPm8x3it0QkgM4lSi0,4612
145
+ linkml/validators/jsonschemavalidator.py,sha256=LVhBF3Fp4Ltjeaov36duoODxXVXwKqe07SrohH_uzhg,7968
146
+ linkml/validators/sparqlvalidator.py,sha256=KU4Vj-B3i_0Fde0Sn89oqkOVxt1UGW3uI4F6YNoJMTQ,4625
141
147
  linkml/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
148
  linkml/workspaces/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
149
  linkml/workspaces/datamodel/workspaces.py,sha256=4HdkqweGNfMPqnB1_Onc9DcTfkhoagTRcqruh08nRoI,14905
144
150
  linkml/workspaces/datamodel/workspaces.yaml,sha256=EjVrwPpeRZqJRjuGyyDRxxFzuv55SiLIXPBRUG6HStU,4233
145
- linkml/workspaces/example_runner.py,sha256=hDk2RGxRE5-WYNriWknugtbm3Mhn8bFcAcXGMlkYxVk,11705
146
- linkml-1.8.0rc2.dist-info/entry_points.txt,sha256=7haDkIbyC7ZLhm5z-e3BhrLJpY2xoW1yuD8Y7QPNtVg,2093
147
- linkml-1.8.0rc2.dist-info/LICENSE,sha256=kORMoywK6j9_iy0UvLR-a80P1Rvc9AOM4gsKlUNZABg,535
148
- linkml-1.8.0rc2.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
149
- linkml-1.8.0rc2.dist-info/METADATA,sha256=9v4Pd2xXmn0sVz2jpoizKyJlyBpxZLVpq0cu1jpfaiU,3730
150
- linkml-1.8.0rc2.dist-info/RECORD,,
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,,
@@ -18,7 +18,6 @@ gen-owl=linkml.generators.owlgen:cli
18
18
  gen-plantuml=linkml.generators.plantumlgen:cli
19
19
  gen-prefix-map=linkml.generators.prefixmapgen:cli
20
20
  gen-project=linkml.generators.projectgen:cli
21
- gen-prolog=linkml.generators.lpgen:cli
22
21
  gen-proto=linkml.generators.protogen:cli
23
22
  gen-py-classes=linkml.generators.pythongen:cli
24
23
  gen-pydantic=linkml.generators.pydanticgen:cli
@@ -36,6 +35,7 @@ gen-terminusdb=linkml.generators.terminusdbgen:cli
36
35
  gen-typescript=linkml.generators.typescriptgen:cli
37
36
  gen-yaml=linkml.generators.yamlgen:cli
38
37
  gen-yuml=linkml.generators.yumlgen:cli
38
+ linkml=linkml.cli.main:linkml
39
39
  linkml-convert=linkml.utils.converter:cli
40
40
  linkml-jsonschema-validate=linkml.validators.jsonschemavalidator:cli
41
41
  linkml-lint=linkml.linter.cli:main