linkml 1.9.4rc1__py3-none-any.whl → 1.9.5rc1__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 +4 -0
- linkml/generators/__init__.py +2 -0
- linkml/generators/common/build.py +5 -20
- linkml/generators/common/template.py +289 -3
- linkml/generators/docgen.py +55 -10
- linkml/generators/erdiagramgen.py +9 -5
- linkml/generators/graphqlgen.py +32 -6
- linkml/generators/jsonldcontextgen.py +78 -12
- linkml/generators/jsonschemagen.py +29 -12
- linkml/generators/mermaidclassdiagramgen.py +21 -3
- linkml/generators/owlgen.py +4 -1
- linkml/generators/panderagen/dataframe_class.py +13 -0
- linkml/generators/panderagen/dataframe_field.py +50 -0
- linkml/generators/panderagen/linkml_pandera_validator.py +186 -0
- linkml/generators/panderagen/panderagen.py +22 -5
- linkml/generators/panderagen/panderagen_class_based/class.jinja2 +70 -13
- linkml/generators/panderagen/panderagen_class_based/custom_checks.jinja2 +27 -0
- linkml/generators/panderagen/panderagen_class_based/enums.jinja2 +3 -3
- linkml/generators/panderagen/panderagen_class_based/pandera.jinja2 +12 -2
- linkml/generators/panderagen/panderagen_class_based/slots.jinja2 +19 -17
- linkml/generators/panderagen/slot_generator_mixin.py +143 -16
- linkml/generators/panderagen/transforms/__init__.py +19 -0
- linkml/generators/panderagen/transforms/collection_dict_model_transform.py +62 -0
- linkml/generators/panderagen/transforms/list_dict_model_transform.py +66 -0
- linkml/generators/panderagen/transforms/model_transform.py +8 -0
- linkml/generators/panderagen/transforms/nested_struct_model_transform.py +27 -0
- linkml/generators/panderagen/transforms/simple_dict_model_transform.py +86 -0
- linkml/generators/plantumlgen.py +17 -11
- linkml/generators/pydanticgen/pydanticgen.py +53 -2
- linkml/generators/pydanticgen/template.py +45 -233
- linkml/generators/pydanticgen/templates/attribute.py.jinja +1 -0
- linkml/generators/pydanticgen/templates/base_model.py.jinja +16 -2
- linkml/generators/pydanticgen/templates/imports.py.jinja +1 -1
- linkml/generators/rdfgen.py +11 -2
- linkml/generators/rustgen/__init__.py +3 -0
- linkml/generators/rustgen/build.py +94 -0
- linkml/generators/rustgen/cli.py +65 -0
- linkml/generators/rustgen/rustgen.py +1038 -0
- linkml/generators/rustgen/template.py +865 -0
- linkml/generators/rustgen/templates/Cargo.toml.jinja +42 -0
- linkml/generators/rustgen/templates/anything.rs.jinja +142 -0
- linkml/generators/rustgen/templates/as_key_value.rs.jinja +56 -0
- linkml/generators/rustgen/templates/class_module.rs.jinja +8 -0
- linkml/generators/rustgen/templates/enum.rs.jinja +54 -0
- linkml/generators/rustgen/templates/file.rs.jinja +62 -0
- linkml/generators/rustgen/templates/import.rs.jinja +4 -0
- linkml/generators/rustgen/templates/imports.rs.jinja +8 -0
- linkml/generators/rustgen/templates/poly.rs.jinja +9 -0
- linkml/generators/rustgen/templates/poly_containers.rs.jinja +439 -0
- linkml/generators/rustgen/templates/poly_trait.rs.jinja +15 -0
- linkml/generators/rustgen/templates/poly_trait_impl.rs.jinja +5 -0
- linkml/generators/rustgen/templates/poly_trait_impl_orsubtype.rs.jinja +5 -0
- linkml/generators/rustgen/templates/poly_trait_property.rs.jinja +8 -0
- linkml/generators/rustgen/templates/poly_trait_property_impl.rs.jinja +132 -0
- linkml/generators/rustgen/templates/poly_trait_property_match.rs.jinja +10 -0
- linkml/generators/rustgen/templates/property.rs.jinja +19 -0
- linkml/generators/rustgen/templates/pyproject.toml.jinja +10 -0
- linkml/generators/rustgen/templates/serde_utils.rs.jinja +310 -0
- linkml/generators/rustgen/templates/slot_range_as_union.rs.jinja +61 -0
- linkml/generators/rustgen/templates/struct.rs.jinja +75 -0
- linkml/generators/rustgen/templates/struct_or_subtype_enum.rs.jinja +108 -0
- linkml/generators/rustgen/templates/typealias.rs.jinja +13 -0
- linkml/generators/sqltablegen.py +18 -16
- linkml/generators/yarrrmlgen.py +157 -0
- linkml/linter/config/datamodel/config.py +160 -293
- linkml/linter/config/datamodel/config.yaml +34 -26
- linkml/linter/config/default.yaml +4 -0
- linkml/linter/config/recommended.yaml +4 -0
- linkml/linter/linter.py +1 -2
- linkml/linter/rules.py +37 -0
- linkml/utils/schemaloader.py +55 -3
- {linkml-1.9.4rc1.dist-info → linkml-1.9.5rc1.dist-info}/METADATA +2 -2
- {linkml-1.9.4rc1.dist-info → linkml-1.9.5rc1.dist-info}/RECORD +76 -38
- {linkml-1.9.4rc1.dist-info → linkml-1.9.5rc1.dist-info}/entry_points.txt +1 -0
- linkml/generators/panderagen/panderagen_class_based/mixins.jinja2 +0 -26
- {linkml-1.9.4rc1.dist-info → linkml-1.9.5rc1.dist-info}/WHEEL +0 -0
- {linkml-1.9.4rc1.dist-info → linkml-1.9.5rc1.dist-info}/licenses/LICENSE +0 -0
|
@@ -37,32 +37,17 @@ classes:
|
|
|
37
37
|
Each attribute of this class represents a rule that can be enabled and possibly
|
|
38
38
|
configured by a configuration file.
|
|
39
39
|
attributes:
|
|
40
|
+
canonical_prefixes:
|
|
41
|
+
range: CanonicalPrefixesConfig
|
|
42
|
+
description: >-
|
|
43
|
+
Enforce canonical prefixes by verifying that the mappings defined in the `prefixes`
|
|
44
|
+
slot agree with those provided by the [prefixmaps](https://github.com/linkml/prefixmaps)
|
|
45
|
+
package. Not auto-fixable.
|
|
40
46
|
no_empty_title:
|
|
41
47
|
range: NoEmptyTitleConfig
|
|
42
48
|
description: >-
|
|
43
49
|
Disallow empty titles on schema elements. Autofix will transform the element's
|
|
44
50
|
name into a title.
|
|
45
|
-
permissible_values_format:
|
|
46
|
-
range: PermissibleValuesFormatRuleConfig
|
|
47
|
-
description: >-
|
|
48
|
-
Enforce consistent formatting of enum permissible values. This rule may conflict
|
|
49
|
-
with the standard_naming rule. Not auto-fixable.
|
|
50
|
-
tree_root_class:
|
|
51
|
-
range: TreeRootClassRuleConfig
|
|
52
|
-
description: >-
|
|
53
|
-
Require a single class with `tree_root: true` and optionally verify that class's
|
|
54
|
-
name. Autofix will create a new class with `tree_root: true`, a name based on
|
|
55
|
-
the rule configuration, and slots for existing classes.
|
|
56
|
-
recommended:
|
|
57
|
-
range: RecommendedRuleConfig
|
|
58
|
-
description: >-
|
|
59
|
-
Require any slot in the metamodel with `recommended: true` (e.g. description)
|
|
60
|
-
to be provided. Not auto-fixable.
|
|
61
|
-
no_xsd_int_type:
|
|
62
|
-
range: RuleConfig
|
|
63
|
-
description: >-
|
|
64
|
-
Disallow use of `uri: xsd:int` in type definitions. Autofix will change the
|
|
65
|
-
uri to xsd:integer.
|
|
66
51
|
no_invalid_slot_usage:
|
|
67
52
|
range: RuleConfig
|
|
68
53
|
description: >-
|
|
@@ -78,6 +63,29 @@ classes:
|
|
|
78
63
|
description: >-
|
|
79
64
|
Disallow the use of ranges in slot specifications if any of the ranges used
|
|
80
65
|
do not refer to an existing type, class, or enum. Not auto-fixable.
|
|
66
|
+
no_xsd_int_type:
|
|
67
|
+
range: RuleConfig
|
|
68
|
+
description: >-
|
|
69
|
+
Disallow use of `uri: xsd:int` in type definitions. Autofix will change the
|
|
70
|
+
uri to xsd:integer.
|
|
71
|
+
one_identifier_per_class:
|
|
72
|
+
range: RuleConfig
|
|
73
|
+
description: >-
|
|
74
|
+
Ensure that there is only one slot with the `identifier` attribute set to True per class.
|
|
75
|
+
one_key_per_class:
|
|
76
|
+
range: RuleConfig
|
|
77
|
+
description: >-
|
|
78
|
+
Ensure that there is only one slot with the `key` attribute set to True per class.
|
|
79
|
+
permissible_values_format:
|
|
80
|
+
range: PermissibleValuesFormatRuleConfig
|
|
81
|
+
description: >-
|
|
82
|
+
Enforce consistent formatting of enum permissible values. This rule may conflict
|
|
83
|
+
with the standard_naming rule. Not auto-fixable.
|
|
84
|
+
recommended:
|
|
85
|
+
range: RecommendedRuleConfig
|
|
86
|
+
description: >-
|
|
87
|
+
Require any slot in the metamodel with `recommended: true` (e.g. description)
|
|
88
|
+
to be provided. Not auto-fixable.
|
|
81
89
|
root_type_checks:
|
|
82
90
|
range: RuleConfig
|
|
83
91
|
description: >-
|
|
@@ -90,12 +98,12 @@ classes:
|
|
|
90
98
|
CamelCase for enums, snake_case (default) or UPPER_SNAKE for permissible_values
|
|
91
99
|
(see permissible_values_upper_case option). This rule may conflict with the
|
|
92
100
|
permissible_values_format rule. Not auto-fixable.
|
|
93
|
-
|
|
94
|
-
range:
|
|
101
|
+
tree_root_class:
|
|
102
|
+
range: TreeRootClassRuleConfig
|
|
95
103
|
description: >-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
104
|
+
Require a single class with `tree_root: true` and optionally verify that class's
|
|
105
|
+
name. Autofix will create a new class with `tree_root: true`, a name based on
|
|
106
|
+
the rule configuration, and slots for existing classes.
|
|
99
107
|
|
|
100
108
|
RuleConfig:
|
|
101
109
|
description: >-
|
linkml/linter/linter.py
CHANGED
|
@@ -45,8 +45,7 @@ def get_metamodel_validator() -> Validator:
|
|
|
45
45
|
meta_json_gen = JsonSchemaGenerator(LOCAL_METAMODEL_YAML_FILE, not_closed=False)
|
|
46
46
|
meta_json_schema = meta_json_gen.generate()
|
|
47
47
|
validator_cls = jsonschema.validators.validator_for(meta_json_schema, default=jsonschema.Draft7Validator)
|
|
48
|
-
|
|
49
|
-
return validator
|
|
48
|
+
return validator_cls(meta_json_schema, format_checker=validator_cls.FORMAT_CHECKER)
|
|
50
49
|
|
|
51
50
|
|
|
52
51
|
def merge_configs(original: dict, other: dict):
|
linkml/linter/rules.py
CHANGED
|
@@ -319,6 +319,43 @@ class RootTypeChecks(LinterRule):
|
|
|
319
319
|
yield LinterProblem(f"Root type '{t}' is missing the required 'uri' attribute")
|
|
320
320
|
|
|
321
321
|
|
|
322
|
+
class OnePerClass(LinterRule):
|
|
323
|
+
"""Ensures that there is only one slot with the specified attribute per class."""
|
|
324
|
+
|
|
325
|
+
id = "one_per_class"
|
|
326
|
+
|
|
327
|
+
def _check(self, schema_view: SchemaView, attr_name: str) -> Iterable[LinterProblem]:
|
|
328
|
+
for cn in schema_view.all_classes():
|
|
329
|
+
slots_with_attr = [
|
|
330
|
+
slot
|
|
331
|
+
for slot in schema_view.class_induced_slots(cn)
|
|
332
|
+
if hasattr(slot, attr_name) and getattr(slot, attr_name)
|
|
333
|
+
]
|
|
334
|
+
if len(slots_with_attr) > 1:
|
|
335
|
+
naughty_slots = ", ".join(sorted([slot.name for slot in slots_with_attr]))
|
|
336
|
+
yield LinterProblem(f"Class '{cn}' has more than one '{attr_name}' slot: {naughty_slots}")
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
class OneIdentifierPerClass(OnePerClass):
|
|
340
|
+
"""Ensure that there is only one slot with the `identifier` attribute set to True per class."""
|
|
341
|
+
|
|
342
|
+
id = "one_identifier_per_class"
|
|
343
|
+
|
|
344
|
+
def check(self, schema_view: SchemaView, fix: bool = False) -> Iterable[LinterProblem]:
|
|
345
|
+
"""Run the one_identifier_per_class check."""
|
|
346
|
+
return self._check(schema_view, "identifier")
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
class OneKeyPerClass(OnePerClass):
|
|
350
|
+
"""Ensure that there is only one slot with the `key` attribute set to True per class."""
|
|
351
|
+
|
|
352
|
+
id = "one_key_per_class"
|
|
353
|
+
|
|
354
|
+
def check(self, schema_view: SchemaView, fix: bool = False) -> Iterable[LinterProblem]:
|
|
355
|
+
"""Run the one_key_per_class check."""
|
|
356
|
+
return self._check(schema_view, "key")
|
|
357
|
+
|
|
358
|
+
|
|
322
359
|
class StandardNamingRule(LinterRule):
|
|
323
360
|
id = "standard_naming"
|
|
324
361
|
|
linkml/utils/schemaloader.py
CHANGED
|
@@ -401,10 +401,62 @@ class SchemaLoader:
|
|
|
401
401
|
# Inline any class definitions that don't have identifiers. Note that keys ARE inlined
|
|
402
402
|
if slot.range in self.schema.classes:
|
|
403
403
|
range_class = self.schema.classes[cast(ClassDefinitionName, slot.range)]
|
|
404
|
-
|
|
404
|
+
range_has_identifier = any(
|
|
405
405
|
[self.schema.slots[s].identifier or self.schema.slots[s].key for s in range_class.slots]
|
|
406
|
-
)
|
|
407
|
-
|
|
406
|
+
)
|
|
407
|
+
# the inference and validation of class inlining is quite complex
|
|
408
|
+
# slot.inlined and slot.inlined_as_list can have three different values:
|
|
409
|
+
# True, False or None (if nothing specified in the schema)
|
|
410
|
+
# range_has_identifier can only be True or False
|
|
411
|
+
if range_has_identifier is True:
|
|
412
|
+
if slot.inlined is False:
|
|
413
|
+
if slot.inlined_as_list is True:
|
|
414
|
+
slot.inlined = True
|
|
415
|
+
self.logger.warning(
|
|
416
|
+
f"Slot '{slot.name}': 'inlining' as list requested. "
|
|
417
|
+
+ "Overriding inconsistent `inlined: False`!!"
|
|
418
|
+
)
|
|
419
|
+
elif slot.inlined_as_list is False:
|
|
420
|
+
self.logger.warning(
|
|
421
|
+
f"Slot '{slot.name}': Specifying a value for 'inlined_as_list' does not "
|
|
422
|
+
+ "make any sense for non-inlined classes."
|
|
423
|
+
)
|
|
424
|
+
elif slot.inlined is None:
|
|
425
|
+
if slot.inlined_as_list is True:
|
|
426
|
+
slot.inlined = True
|
|
427
|
+
self.logger.info(
|
|
428
|
+
f"Slot '{slot.name}': A value for 'inlined_as_list' specified, but no 'inlined' "
|
|
429
|
+
+ "specification. `inlined: True` has been automatically set!"
|
|
430
|
+
)
|
|
431
|
+
elif slot.inlined_as_list is False:
|
|
432
|
+
self.logger.warning(
|
|
433
|
+
f"Slot '{slot.name}': A value for 'inlined_as_list' specified, but no "
|
|
434
|
+
+ "'inlined' specification."
|
|
435
|
+
)
|
|
436
|
+
else:
|
|
437
|
+
if slot.inlined is True:
|
|
438
|
+
if slot.inlined_as_list is False:
|
|
439
|
+
self.logger.warning(
|
|
440
|
+
f"Slot '{slot.name}': A class without identifiers ({range_class.name}) cannot be "
|
|
441
|
+
+ "'inlined' as a dictionary."
|
|
442
|
+
)
|
|
443
|
+
elif slot.inlined is False:
|
|
444
|
+
slot.inlined = True
|
|
445
|
+
self.logger.info(
|
|
446
|
+
f"Slot '{slot.name}': A class without identifiers ({range_class.name}) MUST be "
|
|
447
|
+
+ "'inlined', but non-inlined specified. `inlined: True` has been automatically set!"
|
|
448
|
+
)
|
|
449
|
+
else:
|
|
450
|
+
slot.inlined = True
|
|
451
|
+
self.logger.info(
|
|
452
|
+
f"Slot '{slot.name}': A class without identifiers ({range_class.name}) MUST be "
|
|
453
|
+
+ "inlined, but nothing specified. `inlined: True` has been automatically set!"
|
|
454
|
+
)
|
|
455
|
+
if slot.inlined_as_list is False:
|
|
456
|
+
self.logger.warning(
|
|
457
|
+
f"Slot '{slot.name}': A class without identifiers ({range_class.name}) cannot be "
|
|
458
|
+
+ "'inlined' as a dictionary."
|
|
459
|
+
)
|
|
408
460
|
|
|
409
461
|
if slot.slot_uri is not None:
|
|
410
462
|
slot.mappings.insert(0, slot.slot_uri)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: linkml
|
|
3
|
-
Version: 1.9.
|
|
3
|
+
Version: 1.9.5rc1
|
|
4
4
|
Summary: Linked Open Data Modeling Language
|
|
5
5
|
Author: Deepak Unni
|
|
6
6
|
Author-email: Chris Mungall <cjmungall@lbl.gov>, Sierra Moxon <smoxon@lbl.gov>, Harold Solbrig <solbrig@jhu.edu>, Sujay Patil <spatil@lbl.gov>, Harshad Hegde <hhegde@lbl.gov>, Mark Andrew Miller <MAM@lbl.gov>, Gaurav Vaidya <gaurav@renci.org>, Kevin Schaper <kevin@tislab.org>
|
|
@@ -27,7 +27,7 @@ Requires-Dist: isodate>=0.6.0
|
|
|
27
27
|
Requires-Dist: jinja2>=3.1.0
|
|
28
28
|
Requires-Dist: jsonasobj2<2.0.0,>=1.0.3
|
|
29
29
|
Requires-Dist: jsonschema[format]>=4.0.0
|
|
30
|
-
Requires-Dist: linkml-runtime<2.0.0,>=1.9.
|
|
30
|
+
Requires-Dist: linkml-runtime<2.0.0,>=1.9.5
|
|
31
31
|
Requires-Dist: openpyxl
|
|
32
32
|
Requires-Dist: parse
|
|
33
33
|
Requires-Dist: prefixcommons>=0.1.7
|
|
@@ -3,53 +3,54 @@ 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
5
|
linkml/cli/logging.py,sha256=MdVbox1qr6kDUHUCWAmFhV-D6ebs_nn8vVwB8KDQfew,742
|
|
6
|
-
linkml/cli/main.py,sha256=
|
|
6
|
+
linkml/cli/main.py,sha256=mFbLc6s5Z5CdXL6Gnsvr8F3rPehG4sqS5AXLwJezDTs,5806
|
|
7
7
|
linkml/generators/PythonGenNotes.md,sha256=SOzZhIBP_O8g46uBTnYy6A7nuP--hh-f_QXEERZRxdk,50822
|
|
8
8
|
linkml/generators/README.md,sha256=fnkmT98lspv8a8FyBLOQsHoBKQaapFGb8H_Stg56dco,4436
|
|
9
|
-
linkml/generators/__init__.py,sha256=
|
|
9
|
+
linkml/generators/__init__.py,sha256=DGSaQ3JOAjI1VwjZQXmU6IPZdAfoBC2ma-N4aRgvGKY,1742
|
|
10
10
|
linkml/generators/csvgen.py,sha256=gPwX5GuwToD2KQF7SrINatqwMYY-54ZsgDTgYH1EM1Y,3242
|
|
11
11
|
linkml/generators/dbmlgen.py,sha256=6TvpdvTEPoprdBHuJpbfIb1Ejwpp20kGNUvW5Av7cpo,5465
|
|
12
|
-
linkml/generators/docgen.py,sha256=
|
|
12
|
+
linkml/generators/docgen.py,sha256=oB-oN1HFCpVOxBBG__Baka7qOZLR4w_s3vcN5m70xs4,45384
|
|
13
13
|
linkml/generators/dotgen.py,sha256=DR1tC-vZ7Vj-NxEkE-zOPGrwPUIk5Bo2LISsJpS0rUk,5022
|
|
14
|
-
linkml/generators/erdiagramgen.py,sha256=
|
|
14
|
+
linkml/generators/erdiagramgen.py,sha256=dZ1RfZize7fLEdXSO5DyVAyvC8dIFDCSRrZzyw0hodc,12317
|
|
15
15
|
linkml/generators/excelgen.py,sha256=81x0Ib13ZjLC5WBWsH0aePn8swv_pjZnwV4X-T4q4Jc,7684
|
|
16
16
|
linkml/generators/golanggen.py,sha256=oBXY0gUz2OzI8uKjubUT9WeBJ4TdoOYUqXxNqeEG1gM,5834
|
|
17
17
|
linkml/generators/golrgen.py,sha256=92hswWdusngnGDGD3vpX_iHbIDYRZrRV5xWkpxG7nxw,3448
|
|
18
|
-
linkml/generators/graphqlgen.py,sha256=
|
|
18
|
+
linkml/generators/graphqlgen.py,sha256=I3zWuMOKjZz5KfA-nyJi_RWVfJdDQ8RUccwuXeoTQik,4775
|
|
19
19
|
linkml/generators/javagen.py,sha256=BTAXgvOOvRa3AOfaaiVFyuyaqg4XFR_JbO6_7tT_AnQ,5335
|
|
20
|
-
linkml/generators/jsonldcontextgen.py,sha256=
|
|
20
|
+
linkml/generators/jsonldcontextgen.py,sha256=JBgfOgjeOBoc0fFlPdKqn-zBeKRs5GopZVH0ltlBU1o,11355
|
|
21
21
|
linkml/generators/jsonldgen.py,sha256=pHSCmZ_qKdzVot_J8XFhPAyYOUYap7Vt6NGigM0-SQ0,7842
|
|
22
|
-
linkml/generators/jsonschemagen.py,sha256=
|
|
22
|
+
linkml/generators/jsonschemagen.py,sha256=bGa6nvazlUjCN-G5RbdLaUHoyxEDPfnfuCJ85jrRqfw,31758
|
|
23
23
|
linkml/generators/linkmlgen.py,sha256=j8T7O-_i7JAa87EnHgSqmdeD4RsXOD66MqZU7P-tX2c,4221
|
|
24
24
|
linkml/generators/markdowngen.py,sha256=_4RfmuMNR-m90QdmbG26iFQC_ZSaUBDUWPX_hsqZPLY,35530
|
|
25
|
-
linkml/generators/mermaidclassdiagramgen.py,sha256=
|
|
25
|
+
linkml/generators/mermaidclassdiagramgen.py,sha256=Zr926xS1K2MqD3K3x9zb9w_ot1T0wyj9U_1ZHZTN2n4,5984
|
|
26
26
|
linkml/generators/namespacegen.py,sha256=C4p9LSwsnDqf6sv-wG5l0VQniWFJ1HA1hRXJBDOg3pM,6467
|
|
27
27
|
linkml/generators/oocodegen.py,sha256=dgcHhpO81qC2Tx-kG_VhZVaoRjOwrcrulIXV8gEU1bY,7808
|
|
28
|
-
linkml/generators/owlgen.py,sha256=
|
|
29
|
-
linkml/generators/plantumlgen.py,sha256=
|
|
28
|
+
linkml/generators/owlgen.py,sha256=cd7kvspyldP21PxJzLGStWkcqknJ9X-mQk2mfOQFC9Q,58203
|
|
29
|
+
linkml/generators/plantumlgen.py,sha256=KUmx25wCcUJrnaOqXJ3EyCx12f9YK2wlrWGOFifKcJc,16053
|
|
30
30
|
linkml/generators/prefixmapgen.py,sha256=X-3K1q5WcSS8TL7rHBOL4qBGBk2Szr7l1_UzRQVvFGA,4246
|
|
31
31
|
linkml/generators/projectgen.py,sha256=qvXIWDfrPYKZT38JCyItQjW1AZofJ4ZyPZeUkscZxOo,9586
|
|
32
32
|
linkml/generators/protogen.py,sha256=a4KUyKj525tuE2YenEJQ_IkbNKnnhVH_N-qTEmMBVY4,2524
|
|
33
33
|
linkml/generators/pythongen.py,sha256=soc3EgUpp1dYwRWx--aVGWo9emCNhj9TvcJsUNunlwE,55847
|
|
34
|
-
linkml/generators/rdfgen.py,sha256=
|
|
34
|
+
linkml/generators/rdfgen.py,sha256=X_N_x-EWvcFimsRi7tKnEAKmzOCTM7Z-O5BQgFzYRcY,3458
|
|
35
35
|
linkml/generators/shaclgen.py,sha256=qas_rqhwx7IpnIKAKOtxUTPB7EdhiCcTOLVJQbLOOsk,15277
|
|
36
36
|
linkml/generators/shexgen.py,sha256=fVwrYRifsojiPu6vM1oNwnkSEp4uX-QognHOExJs0cY,9933
|
|
37
37
|
linkml/generators/sparqlgen.py,sha256=1WjZQFNk3QXMaJhVeztJ1uWg8qojLyGGBdAKSjpVQaI,6176
|
|
38
38
|
linkml/generators/sqlalchemygen.py,sha256=b8vrigGOso66qQrZKlvawRDz-1oDu5LyL-X4F-mkTdc,9053
|
|
39
|
-
linkml/generators/sqltablegen.py,sha256=
|
|
39
|
+
linkml/generators/sqltablegen.py,sha256=BpqE8rTCDrN89usf2-4iijdVOXyWDSNyZlv-DA4KD24,18279
|
|
40
40
|
linkml/generators/sssomgen.py,sha256=zrZy0WL9fF5bk-XAcB-MZYZkhHhqVRHt2rGBUtfqnLY,6891
|
|
41
41
|
linkml/generators/string_template.md,sha256=UMEgU5-JLBEoSpoZ0SKuzcZV6El3vcApm-cvsegsE1c,1780
|
|
42
42
|
linkml/generators/summarygen.py,sha256=abNd39Z-Kn3FX2fjXLeCqvXvFunpqM7UFPimtiCB2p0,3081
|
|
43
43
|
linkml/generators/terminusdbgen.py,sha256=Zizvh_GLBO9LK_X11gUvB_Ip1ttkkfiD4OZBtxjgAG4,4669
|
|
44
44
|
linkml/generators/typescriptgen.py,sha256=wRnZpZ3LEepJRFYHVNP06PX5rPFzIDPglDRxi0Z6Zro,8870
|
|
45
45
|
linkml/generators/yamlgen.py,sha256=PWexYoR3wHRoAUk6zK67fRYjBF6sAmX_iGlOAT0PJq0,1623
|
|
46
|
+
linkml/generators/yarrrmlgen.py,sha256=-wi-jozAkGk1OsrsF-wDy23dYwV7W_6K7J-6HO9c7Ds,5257
|
|
46
47
|
linkml/generators/yumlgen.py,sha256=ZK42N3hJPvvOdztOWCwysARrGVWjg5V4Qx2XcS2Vvgc,13277
|
|
47
48
|
linkml/generators/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
|
-
linkml/generators/common/build.py,sha256=
|
|
49
|
+
linkml/generators/common/build.py,sha256=3SxiwOp9bzrt9XVQqgegstGEuiibnG0-4gdlIAiRBtE,2394
|
|
49
50
|
linkml/generators/common/ifabsent_processor.py,sha256=qefNF_rd24DxF4IGAynR9J7zWGH-oMfDULNbFMvZalA,13527
|
|
50
51
|
linkml/generators/common/lifecycle.py,sha256=Rx9q8shhS_e-4Hx_06wOVR1ZW7I3rqNS8_bOM-r9eCw,5541
|
|
51
52
|
linkml/generators/common/naming.py,sha256=KkY3KCTX3DM30VbPjfIS6icEc-IxUNF9hE8GXreDAv4,5081
|
|
52
|
-
linkml/generators/common/template.py,sha256
|
|
53
|
+
linkml/generators/common/template.py,sha256=-ZuokNyzB8hnHt9t3hJ69ezeRCGiFE7Iy3ufZlmMF4o,15117
|
|
53
54
|
linkml/generators/common/type_designators.py,sha256=ORA9siVxHUXqn3TMuun81m_whqZcX3Zrnn1FDf6dK7c,1931
|
|
54
55
|
linkml/generators/docgen/class.md.jinja2,sha256=2QI-9DpqZ9XJc-g2RwiBa2EkWeDeg4j4HH5cxgE_A3w,4336
|
|
55
56
|
linkml/generators/docgen/class_diagram.md.jinja2,sha256=UCpMYgzbcRsXpb7TnUsCUqIu0yWCEOvPB6o7IOvZFuA,3728
|
|
@@ -66,33 +67,70 @@ linkml/generators/javagen/java_record_template.jinja2,sha256=OQZffLSy_xR3FIhQMlt
|
|
|
66
67
|
linkml/generators/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
68
|
linkml/generators/panderagen/__init__.py,sha256=Bcthn0rKU6xzQoBU--hfTUJwyOvKjASGICYamEglzcQ,109
|
|
68
69
|
linkml/generators/panderagen/class_generator_mixin.py,sha256=LKdpKb1_pyBN3iyhzsQE_Q9A3S9CnXj0RQUDQw0_Ly4,826
|
|
70
|
+
linkml/generators/panderagen/dataframe_class.py,sha256=doTlpoXXNJ0unMtFOQHDyDsmfMYot2dfOpXVh4fBCuU,431
|
|
71
|
+
linkml/generators/panderagen/dataframe_field.py,sha256=TscZrXJS_pjckKiXD3aIsi8lU2Gvy5Yw9fPHCZfp71U,1461
|
|
69
72
|
linkml/generators/panderagen/enum_generator_mixin.py,sha256=CMILBMjP35L8HHdp7WuO0dAHe9zEVBvN5CBSQlq41_g,708
|
|
70
|
-
linkml/generators/panderagen/
|
|
71
|
-
linkml/generators/panderagen/
|
|
72
|
-
linkml/generators/panderagen/
|
|
73
|
-
linkml/generators/panderagen/panderagen_class_based/
|
|
73
|
+
linkml/generators/panderagen/linkml_pandera_validator.py,sha256=lGzngQVtq2QAVhCVBaQhunZBWq-CqHAQMT6_bVwwXmE,7554
|
|
74
|
+
linkml/generators/panderagen/panderagen.py,sha256=U7AJpEIxy_NcyVqAgxWAqlmaYa3jCFD5lxD6qJ4nEtI,7031
|
|
75
|
+
linkml/generators/panderagen/slot_generator_mixin.py,sha256=Y8z8HEyWxy4tGIDv9gr3T-RfupyrzsPinws3Ey7diUc,8202
|
|
76
|
+
linkml/generators/panderagen/panderagen_class_based/class.jinja2,sha256=NlLz2plxCpcNXBi0Mm7IiLbRJiwCb7ty82i1gqVdy94,2311
|
|
77
|
+
linkml/generators/panderagen/panderagen_class_based/custom_checks.jinja2,sha256=HwtAHT2cxsne8ACyYlhUUCkAt8cJyE5YUon1jJb0bhE,897
|
|
78
|
+
linkml/generators/panderagen/panderagen_class_based/enums.jinja2,sha256=wgrDEc_rU4GGZkc2e0Fqpt264ftH-jB8kdZ386zc7G4,272
|
|
74
79
|
linkml/generators/panderagen/panderagen_class_based/header.jinja2,sha256=shLPwNAjIPMgR7uoqZWUxo4a_OtV15ywSjYh0m9dIKo,396
|
|
75
|
-
linkml/generators/panderagen/panderagen_class_based/
|
|
76
|
-
linkml/generators/panderagen/panderagen_class_based/
|
|
77
|
-
linkml/generators/panderagen/
|
|
80
|
+
linkml/generators/panderagen/panderagen_class_based/pandera.jinja2,sha256=gkON1BzEyIaMl47ZZDqtAYUXErJDNyTY9nSrz-p-Lis,769
|
|
81
|
+
linkml/generators/panderagen/panderagen_class_based/slots.jinja2,sha256=u_pzArB7QFxpfQCro55l22F1c4qwJL0DcBgKbPBs9Mc,1582
|
|
82
|
+
linkml/generators/panderagen/transforms/__init__.py,sha256=lWhHmiw1H5DAaHwEcNIOMCx4F3wG_NM7cIlwJAtfdt8,690
|
|
83
|
+
linkml/generators/panderagen/transforms/collection_dict_model_transform.py,sha256=o1K1JqzIrOKtLfokHYOZ0SZ9dkPpqMVwyzq6jEP8SAw,2580
|
|
84
|
+
linkml/generators/panderagen/transforms/list_dict_model_transform.py,sha256=-Dhb7_rSupAsaitMw0KOo8dK3yo_ZLKlnqXO7HCe_GM,2443
|
|
85
|
+
linkml/generators/panderagen/transforms/model_transform.py,sha256=ZAD7jW1xqe6UU7bWOQ8dV2qs8MrfIR6bQ0GYXLVwlt0,225
|
|
86
|
+
linkml/generators/panderagen/transforms/nested_struct_model_transform.py,sha256=eeJwywRsCVPX9o9ZAor_PPx-yTM0CNE1nX02BmOw9W8,1050
|
|
87
|
+
linkml/generators/panderagen/transforms/simple_dict_model_transform.py,sha256=O2hF4MSCN9i89hzIkDxvkbAJf1zOKPnRQlzjo4ZCjUc,3549
|
|
78
88
|
linkml/generators/pydanticgen/__init__.py,sha256=5SUFNcrh-6MLfMqptR6wPsR2v1Gyrl3wii-yu6kdnQM,700
|
|
79
89
|
linkml/generators/pydanticgen/array.py,sha256=TD3_LStHfGGY1TI7jn_9DeyvLMBmgM4kc0JeOWGzSbs,25803
|
|
80
90
|
linkml/generators/pydanticgen/black.py,sha256=BaJ7b-kMUbIN_cKRT3yCaMEbFwxzj1_U7w4fKQnkL44,723
|
|
81
91
|
linkml/generators/pydanticgen/build.py,sha256=KVRiaJ-o1OuRGyeli8PYDOJPqeSVoKfoibsjffoXeFU,4064
|
|
82
92
|
linkml/generators/pydanticgen/includes.py,sha256=qwC8Lj2enFMLLNbaOlZINra0WSQuI4WS9Bd_ZvgQe1c,476
|
|
83
|
-
linkml/generators/pydanticgen/pydanticgen.py,sha256=
|
|
84
|
-
linkml/generators/pydanticgen/template.py,sha256=
|
|
85
|
-
linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=
|
|
86
|
-
linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=
|
|
93
|
+
linkml/generators/pydanticgen/pydanticgen.py,sha256=6HtWLGVjZsSO_AvBDFI0xt1Xbq03aSerM5ILMwpNgzg,51515
|
|
94
|
+
linkml/generators/pydanticgen/template.py,sha256=fnA8jDTE53h05zA8Rrl6KvHmu3PLYDgqgoeF0HZBPRE,16272
|
|
95
|
+
linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=A44qNvlszD1FtPGYhh1yHkziBQbw85HP7yiTy486Ca8,928
|
|
96
|
+
linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=lKxLLCPSvEXQN6nXivBO9T1Vv8AR0YPVcxM1Q4L3PCw,1050
|
|
87
97
|
linkml/generators/pydanticgen/templates/class.py.jinja,sha256=PCkbfRcONxk4ScVHKiGK-6KPjzS94QCKCn262LZ6O_8,691
|
|
88
98
|
linkml/generators/pydanticgen/templates/conditional_import.py.jinja,sha256=r2kb-AOJgqUgU98_tqk2aB4BG1bJFcfV1Ts7TaHTGds,241
|
|
89
99
|
linkml/generators/pydanticgen/templates/enum.py.jinja,sha256=d2j0FbQ4HT-TjspaUkfSHWaHJ50didUBTE8RV9Cj7bo,372
|
|
90
100
|
linkml/generators/pydanticgen/templates/footer.py.jinja,sha256=k764ffh6q-qDJYpTtiUGePOrcw6i81Osrm8mRWs_c2c,156
|
|
91
|
-
linkml/generators/pydanticgen/templates/imports.py.jinja,sha256=
|
|
101
|
+
linkml/generators/pydanticgen/templates/imports.py.jinja,sha256=bk21V9ofXAfhT4fFSPodGtzl8OjtewAcHgdMYX-Yvyo,1248
|
|
92
102
|
linkml/generators/pydanticgen/templates/module.py.jinja,sha256=hqZKsJ72yUioBkZAunscVgLSe58OFHf0z6-so_b43U4,526
|
|
93
103
|
linkml/generators/pydanticgen/templates/validator.py.jinja,sha256=oz8XWh4Mt7DRHH0KObKGZWl_WUoR0KzoGMkLOh-NXFU,525
|
|
94
104
|
linkml/generators/python/__init__.py,sha256=NS9fPEuAo0punDplD91F9mcViXMJJv04Q5NkFcKPNvY,40
|
|
95
105
|
linkml/generators/python/python_ifabsent_processor.py,sha256=AqFabuyHCBpPTLO2-XO1uWNh3YcIpc-Na_649o_VmLc,3834
|
|
106
|
+
linkml/generators/rustgen/__init__.py,sha256=2ihCJiuI3AxYo55Sqt4r2wVxn-3Kp6RNgQVQ-SNvaQU,115
|
|
107
|
+
linkml/generators/rustgen/build.py,sha256=-TfjBYFdJWBSCGMMmQKQ9RvC7_rJoTWXwc7NIMdxhaA,1777
|
|
108
|
+
linkml/generators/rustgen/cli.py,sha256=PcMFzi110RZreERjiW2db89aXsk1hMZ6gzdV7eZdrpY,1898
|
|
109
|
+
linkml/generators/rustgen/rustgen.py,sha256=Wbgqhdhs-jlcp0C5y3NlJamC5aCBdmPQYdOxdEUBnpA,39682
|
|
110
|
+
linkml/generators/rustgen/template.py,sha256=6rJh84jmWxLGThR9V3w9gEq0n7PTFZKkWnKY3nlkwTw,27995
|
|
111
|
+
linkml/generators/rustgen/templates/Cargo.toml.jinja,sha256=ogwEnMlx6Rl81DKiyt9AF67y7aBjXpy4dxCrLi8Fwzw,1057
|
|
112
|
+
linkml/generators/rustgen/templates/anything.rs.jinja,sha256=2RKNeqCawcMzSPgrOSx2yB8F7R9OqzXH3VDOhA2BqSU,5095
|
|
113
|
+
linkml/generators/rustgen/templates/as_key_value.rs.jinja,sha256=_vm6HIFssQCSIbI391Z5eLtzLdbkCRqgTkI-8oH2rqI,2161
|
|
114
|
+
linkml/generators/rustgen/templates/class_module.rs.jinja,sha256=HKRA6L74rGLynfvxdLhzuVQK-5s7tWlcpUmUr1NSw5Q,153
|
|
115
|
+
linkml/generators/rustgen/templates/enum.rs.jinja,sha256=7xmTDezReZEflgBJiY_nxJwSfD5pJfJUPtopAvJbEa4,1807
|
|
116
|
+
linkml/generators/rustgen/templates/file.rs.jinja,sha256=8fuoqOZM4joBoOHdk1FvIkTbhh4v6cPRLBZVzRZypQI,1007
|
|
117
|
+
linkml/generators/rustgen/templates/import.rs.jinja,sha256=fYEG5YYVszjBVp6Gs-pJdgcAoaiHghUQxUg2BA4yyx8,397
|
|
118
|
+
linkml/generators/rustgen/templates/imports.rs.jinja,sha256=2u0cVLBrluxldVnEUJ1ipMJWQGrWidmDP6KbJVyQxi8,158
|
|
119
|
+
linkml/generators/rustgen/templates/poly.rs.jinja,sha256=CXFmKfNwZMSI2cYXy14vKzv80QGtO86vjTdTf7NZi0U,123
|
|
120
|
+
linkml/generators/rustgen/templates/poly_containers.rs.jinja,sha256=xDZevupLBm0bLjltXc1VzE1tVyAligeOtRZmN6-_puw,12347
|
|
121
|
+
linkml/generators/rustgen/templates/poly_trait.rs.jinja,sha256=Smje9PjD2LZsZ27XVbCcHJeWDU5e1PyNg-zJOAVhf9U,308
|
|
122
|
+
linkml/generators/rustgen/templates/poly_trait_impl.rs.jinja,sha256=u1_DSCB-7vX05_xL34gmIQHKelnexGCQZp_lAXhShyw,95
|
|
123
|
+
linkml/generators/rustgen/templates/poly_trait_impl_orsubtype.rs.jinja,sha256=4GTCjV_1MlUG5O-gN_SD-4UY3RaLvthIYW24sLhXGBs,93
|
|
124
|
+
linkml/generators/rustgen/templates/poly_trait_property.rs.jinja,sha256=tLge1ghiR6lHPUsHDhXIQHPshK7hGkJtXm8hXSiL4-g,428
|
|
125
|
+
linkml/generators/rustgen/templates/poly_trait_property_impl.rs.jinja,sha256=DTloJkCwXgqmHrat6XRLO9iY6KFX-yOwVMTp_TQNcEY,5112
|
|
126
|
+
linkml/generators/rustgen/templates/poly_trait_property_match.rs.jinja,sha256=qEeKXt1AcEoIpDrbaNkOgyfGs1zgxGtn8SyHo6mgCWA,478
|
|
127
|
+
linkml/generators/rustgen/templates/property.rs.jinja,sha256=SatpHKIyEOOvAWZOpQ3IRWsNfuBrxc7SPkrVzLIVulI,1014
|
|
128
|
+
linkml/generators/rustgen/templates/pyproject.toml.jinja,sha256=4ViLLeTcLt9wzqe8i80HEypHiU5lGwfzU6IHqzzc1cw,184
|
|
129
|
+
linkml/generators/rustgen/templates/serde_utils.rs.jinja,sha256=KfeDiNZOFfkR2bVlDDmXvR-n58dGazitjBTb5tgVQyA,9441
|
|
130
|
+
linkml/generators/rustgen/templates/slot_range_as_union.rs.jinja,sha256=qFoAWJLUoZbnm9-weg5BJn5Z3iylEK6ELolhjPy5qUQ,2112
|
|
131
|
+
linkml/generators/rustgen/templates/struct.rs.jinja,sha256=AkBF34s054XH_VqUQe61YwdFt_coWrQTECNapoVySK4,2215
|
|
132
|
+
linkml/generators/rustgen/templates/struct_or_subtype_enum.rs.jinja,sha256=333LZUcpjHPsA2aR3Ts1pNnlncMH0ubmA5HlajWFW20,3427
|
|
133
|
+
linkml/generators/rustgen/templates/typealias.rs.jinja,sha256=HQtLzULc-7YaqfVfecYUJBqX7k3PCMEyU9Q8h5-a5vc,413
|
|
96
134
|
linkml/generators/shacl/__init__.py,sha256=KgMOyESGTdKk2Vhx9uuUYgEJPuJQ-iT1vDQVIMoiXCM,58
|
|
97
135
|
linkml/generators/shacl/shacl_data_type.py,sha256=gX3Y2KyTVPwMyef0cJMTEpU9h0oH-H0ThVDORdNW170,1828
|
|
98
136
|
linkml/generators/shacl/shacl_ifabsent_processor.py,sha256=rjxD5OSa7s66ALSj_8CqAqU8oj2NiE4nfOQJ6xCSpjA,4363
|
|
@@ -101,14 +139,14 @@ linkml/generators/sqlalchemy/sqlalchemy_declarative_template.py,sha256=X_Ws1NUBi
|
|
|
101
139
|
linkml/generators/sqlalchemy/sqlalchemy_imperative_template.py,sha256=u4ZpponG1h6XROrOHGOf_0H2e6xL1_s8twAOA-gx94A,1622
|
|
102
140
|
linkml/linter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
141
|
linkml/linter/cli.py,sha256=0Bt7-A1zUTJK3rzFj1O-uvLXc0JsO5vkxODvkWOPgT4,4552
|
|
104
|
-
linkml/linter/linter.py,sha256=
|
|
105
|
-
linkml/linter/rules.py,sha256=
|
|
106
|
-
linkml/linter/config/default.yaml,sha256=
|
|
107
|
-
linkml/linter/config/recommended.yaml,sha256=
|
|
142
|
+
linkml/linter/linter.py,sha256=wxAopbGgpT19m-FR4vslgCwoVJv9yDS8-zImtWSIwm4,5161
|
|
143
|
+
linkml/linter/rules.py,sha256=bVRY3wUIJSTuefd_gVnF2HR7EQRudFWaFnbrAwf4nic,18795
|
|
144
|
+
linkml/linter/config/default.yaml,sha256=B2hyc9xIz0IoncJ4lDMkJ8BmipIzkPWLZHz6xKyREnA,819
|
|
145
|
+
linkml/linter/config/recommended.yaml,sha256=wRY3-gYzfVj7yn4lFOOWFTW3Y3EoLiEFBdX0aWO7Zos,399
|
|
108
146
|
linkml/linter/config/datamodel/.linkmllint.yaml,sha256=40rNhcL35FXQSjlVBMWnyPgplwEUqFT_sJmeZqUzxMw,292
|
|
109
147
|
linkml/linter/config/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
|
-
linkml/linter/config/datamodel/config.py,sha256=
|
|
111
|
-
linkml/linter/config/datamodel/config.yaml,sha256=
|
|
148
|
+
linkml/linter/config/datamodel/config.py,sha256=4Gr1uY8XXYRU3meAi8D6qlgc3uPlfWwyJMJBOnYTHnw,24772
|
|
149
|
+
linkml/linter/config/datamodel/config.yaml,sha256=jVJJjW_avpGePxu6lEcTO_NNyPYzAG36Ldez8WxZHK0,10368
|
|
112
150
|
linkml/linter/formatters/__init__.py,sha256=lKTbA20yL_TuimKZIBI1DGXgDO7D4QSrJ3zZFCJRwu0,269
|
|
113
151
|
linkml/linter/formatters/formatter.py,sha256=u2DNowT7Nx1rexCMJmghlXklTYb98_Glj5qhnhjTkBc,518
|
|
114
152
|
linkml/linter/formatters/json_formatter.py,sha256=rrOELuETUCFTl1Ewnrus9Rx9hl2g4uucrMfN6yw33iI,767
|
|
@@ -137,7 +175,7 @@ linkml/utils/mergeutils.py,sha256=uXHuyc13MhATMPaDToSsJlMTXeqQ9AGVEj7uOlcGGLE,10
|
|
|
137
175
|
linkml/utils/rawloader.py,sha256=nUB8Gfn8yEVwyo6bx0TtB2mBGkilC-fybi0xvQ73Gks,4417
|
|
138
176
|
linkml/utils/schema_builder.py,sha256=WfTdRnuLUhNj_y_D1uaMCaGXgafUuJkvMyPlW8T11r8,9971
|
|
139
177
|
linkml/utils/schema_fixer.py,sha256=j9MoPlAd6j8fLC1Mnj_MSojnPlfR_Ml87jQkknjPYjE,16754
|
|
140
|
-
linkml/utils/schemaloader.py,sha256=
|
|
178
|
+
linkml/utils/schemaloader.py,sha256=DlsKEOvo_uIaQL_Rlz4yCPCc_uStOlFYUVcQbqF4Vik,50590
|
|
141
179
|
linkml/utils/schemasynopsis.py,sha256=0cJZHTIrXTUS6EPvK2YKo7IuvbRQCkWKeRBsyz_zjSo,18441
|
|
142
180
|
linkml/utils/sqlutils.py,sha256=qOnoZvZepo2BcKa3J0Wufhxe4z4ek7SOeHR4O86nlE0,17108
|
|
143
181
|
linkml/utils/typereferences.py,sha256=CcL8ieqFgLq13pvVtYxcJmVy5BzmRpK7VsC0ZVH7mco,2209
|
|
@@ -167,8 +205,8 @@ linkml/workspaces/example_runner.py,sha256=EjaAn6vaAKZnFcW5hRopkYBguiaR05aqKbuaM
|
|
|
167
205
|
linkml/workspaces/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
206
|
linkml/workspaces/datamodel/workspaces.py,sha256=YIGzErECZuMER03h3DcuY3psMb0lDF1Pia_8hreKoTE,14667
|
|
169
207
|
linkml/workspaces/datamodel/workspaces.yaml,sha256=LU0lMJ4W6Tk66r5ECD7OkaVm9kCRfu93yoik1b4gkzQ,4228
|
|
170
|
-
linkml-1.9.
|
|
171
|
-
linkml-1.9.
|
|
172
|
-
linkml-1.9.
|
|
173
|
-
linkml-1.9.
|
|
174
|
-
linkml-1.9.
|
|
208
|
+
linkml-1.9.5rc1.dist-info/METADATA,sha256=sUm26BPUFhoVUtTnyxcISJ09MKQODVDkPxNxn_kWU8k,3344
|
|
209
|
+
linkml-1.9.5rc1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
210
|
+
linkml-1.9.5rc1.dist-info/entry_points.txt,sha256=4JoXSZFx4-Hl3OT0b_M9aQIBr2f3untnPuBzY6TSZ_c,2381
|
|
211
|
+
linkml-1.9.5rc1.dist-info/licenses/LICENSE,sha256=zsURghk1UIVsx0jaDvEy5QU2UAqecv1vtJozTV8Hwvw,536
|
|
212
|
+
linkml-1.9.5rc1.dist-info/RECORD,,
|
|
@@ -26,6 +26,7 @@ gen-py-classes = linkml.generators.pythongen:cli
|
|
|
26
26
|
gen-pydantic = linkml.generators.pydanticgen:cli
|
|
27
27
|
gen-python = linkml.generators.pythongen:cli
|
|
28
28
|
gen-rdf = linkml.generators.rdfgen:cli
|
|
29
|
+
gen-rust = linkml.generators.rustgen.cli:cli
|
|
29
30
|
gen-shacl = linkml.generators.shaclgen:cli
|
|
30
31
|
gen-shex = linkml.generators.shexgen:cli
|
|
31
32
|
gen-sparql = linkml.generators.sparqlgen:cli
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{#-
|
|
2
|
-
Jinja2 Template for a mixin class used by the Linkml/Pandera class-based model
|
|
3
|
-
Inline generation avoids dependencies on LinkML in the generated code.
|
|
4
|
-
|
|
5
|
-
-#}
|
|
6
|
-
class _LinkmlPanderaValidator:
|
|
7
|
-
|
|
8
|
-
@classmethod
|
|
9
|
-
def generate_polars_schema(cls, object_to_validate) -> dict:
|
|
10
|
-
"""Creates a nested PolaRS schema suitable for loading the object_to_validate.
|
|
11
|
-
Optional columns that are not present in the data are omitted.
|
|
12
|
-
This approach is only suitable to enable the test fixtures.
|
|
13
|
-
"""
|
|
14
|
-
polars_schema = {}
|
|
15
|
-
|
|
16
|
-
for column_name, column in cls.to_schema().columns.items():
|
|
17
|
-
dtype = column.properties["dtype"]
|
|
18
|
-
required = column.properties["required"]
|
|
19
|
-
|
|
20
|
-
if required or column_name in object_to_validate:
|
|
21
|
-
if dtype.type == pl.Struct:
|
|
22
|
-
pass
|
|
23
|
-
else:
|
|
24
|
-
polars_schema[column_name] = dtype.type
|
|
25
|
-
|
|
26
|
-
return polars_schema
|
|
File without changes
|
|
File without changes
|