linkml 1.8.1__py3-none-any.whl → 1.8.3__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/__init__.py +0 -0
- linkml/cli/__main__.py +4 -0
- linkml/cli/main.py +130 -0
- linkml/generators/common/build.py +105 -0
- linkml/generators/common/ifabsent_processor.py +286 -0
- linkml/generators/common/lifecycle.py +124 -0
- linkml/generators/common/template.py +89 -0
- linkml/generators/csvgen.py +1 -1
- linkml/generators/docgen/slot.md.jinja2 +4 -0
- linkml/generators/docgen.py +1 -1
- linkml/generators/dotgen.py +1 -1
- linkml/generators/erdiagramgen.py +1 -1
- linkml/generators/excelgen.py +1 -1
- linkml/generators/golanggen.py +1 -1
- linkml/generators/golrgen.py +1 -1
- linkml/generators/graphqlgen.py +1 -1
- linkml/generators/javagen.py +1 -1
- linkml/generators/jsonldcontextgen.py +4 -5
- linkml/generators/jsonldgen.py +1 -1
- linkml/generators/jsonschemagen.py +69 -22
- linkml/generators/linkmlgen.py +1 -1
- linkml/generators/markdowngen.py +1 -1
- linkml/generators/namespacegen.py +1 -1
- linkml/generators/oocodegen.py +2 -1
- linkml/generators/owlgen.py +1 -1
- linkml/generators/plantumlgen.py +1 -1
- linkml/generators/prefixmapgen.py +1 -1
- linkml/generators/projectgen.py +1 -1
- linkml/generators/protogen.py +1 -1
- linkml/generators/pydanticgen/__init__.py +8 -3
- linkml/generators/pydanticgen/array.py +114 -194
- linkml/generators/pydanticgen/build.py +64 -25
- linkml/generators/pydanticgen/includes.py +1 -31
- linkml/generators/pydanticgen/pydanticgen.py +621 -276
- linkml/generators/pydanticgen/template.py +152 -184
- linkml/generators/pydanticgen/templates/attribute.py.jinja +9 -7
- linkml/generators/pydanticgen/templates/base_model.py.jinja +0 -13
- linkml/generators/pydanticgen/templates/class.py.jinja +2 -2
- linkml/generators/pydanticgen/templates/footer.py.jinja +2 -10
- linkml/generators/pydanticgen/templates/module.py.jinja +2 -2
- linkml/generators/pydanticgen/templates/validator.py.jinja +0 -4
- linkml/generators/python/__init__.py +1 -0
- linkml/generators/python/python_ifabsent_processor.py +92 -0
- linkml/generators/pythongen.py +19 -23
- linkml/generators/rdfgen.py +1 -1
- linkml/generators/shacl/__init__.py +1 -3
- linkml/generators/shacl/shacl_data_type.py +1 -1
- linkml/generators/shacl/shacl_ifabsent_processor.py +89 -0
- linkml/generators/shaclgen.py +11 -5
- linkml/generators/shexgen.py +1 -1
- linkml/generators/sparqlgen.py +1 -1
- linkml/generators/sqlalchemygen.py +1 -1
- linkml/generators/sqltablegen.py +1 -1
- linkml/generators/sssomgen.py +1 -1
- linkml/generators/summarygen.py +1 -1
- linkml/generators/terminusdbgen.py +7 -4
- linkml/generators/typescriptgen.py +1 -1
- linkml/generators/yamlgen.py +1 -1
- linkml/generators/yumlgen.py +1 -1
- linkml/linter/cli.py +1 -1
- linkml/transformers/logical_model_transformer.py +117 -18
- linkml/utils/converter.py +1 -1
- linkml/utils/execute_tutorial.py +2 -0
- linkml/utils/logictools.py +142 -29
- linkml/utils/schema_builder.py +7 -6
- linkml/utils/schema_fixer.py +1 -1
- linkml/utils/sqlutils.py +1 -1
- linkml/validator/cli.py +4 -1
- linkml/validators/jsonschemavalidator.py +1 -1
- linkml/validators/sparqlvalidator.py +1 -1
- linkml/workspaces/example_runner.py +1 -1
- {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/METADATA +2 -2
- {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/RECORD +76 -68
- {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/entry_points.txt +1 -1
- linkml/generators/shacl/ifabsent_processor.py +0 -59
- linkml/utils/ifabsent_functions.py +0 -138
- {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/LICENSE +0 -0
- {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/WHEEL +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: linkml
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.3
|
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 (
|
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,18 @@
|
|
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=83lyx36tcy95StDRtN7BmwNFCPt4As1wb0wbC3YwHKg,5386
|
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/ifabsent_processor.py,sha256=D8vKZLa15mc_SUyvFsE3NZfWi-c4kawYW6WdGozJLRQ,11275
|
12
|
+
linkml/generators/common/lifecycle.py,sha256=UOJXlIyWQkvsn0Dao9_ZDzlamJtiINyVJQ6SRj66L9s,4910
|
13
|
+
linkml/generators/common/template.py,sha256=bjcSNiC85MYl9oGhk0ZpqwZpRxxy_NqxG8XBV-TXXDY,3338
|
7
14
|
linkml/generators/common/type_designators.py,sha256=lgVcIRJJ-yCvVGeP9U_gQZpm77UmJBQo9Bh3lGJITno,1956
|
8
|
-
linkml/generators/csvgen.py,sha256=
|
15
|
+
linkml/generators/csvgen.py,sha256=O20K3IuDxomGJAyNFJmm1_HbPyl6xUK0l-aKY0A3KcM,3253
|
9
16
|
linkml/generators/docgen/class.md.jinja2,sha256=-JmjYHgYOaaBYd5r-Tr5dkk0CLM_lX0kHdocPQtRsjU,3504
|
10
17
|
linkml/generators/docgen/class_diagram.md.jinja2,sha256=gzskx4hOpU_s6BqOXdYZ9DwKxuClnsEgDzPurm30PeY,3469
|
11
18
|
linkml/generators/docgen/common_metadata.md.jinja2,sha256=gy9J8rghBfKDKimwtHj_XuHY4PJRRYHLXVlBHqWrUzU,1604
|
@@ -13,70 +20,72 @@ linkml/generators/docgen/enum.md.jinja2,sha256=mXnUrRkleY2bOTEyAZ5c4pcUnqhs6BNa8
|
|
13
20
|
linkml/generators/docgen/index.md.jinja2,sha256=wXUYTmayPLFltC0vbGE_Mf6m3GkkWav7FOEjCvEpHp4,1466
|
14
21
|
linkml/generators/docgen/index.tex.jinja2,sha256=Go_EA-_N4JUpbOYbk3OY11mz5yV70VF2l2sMtgIPWw4,501
|
15
22
|
linkml/generators/docgen/schema.md.jinja2,sha256=xlENfnzNRYgPT_0tdqNFxgklVM4Qf5BuzhFVvSMDuxs,70
|
16
|
-
linkml/generators/docgen/slot.md.jinja2,sha256=
|
23
|
+
linkml/generators/docgen/slot.md.jinja2,sha256=dJHugIv9OPTi3FIn8Iez7CzjQizdXrcn0hcmCmXSgV4,3339
|
17
24
|
linkml/generators/docgen/subset.md.jinja2,sha256=EPln_fjlhlkmwEGEp2iPX-9Xm2vVodPZLlRBlYCB_sA,2705
|
18
25
|
linkml/generators/docgen/type.md.jinja2,sha256=QmCMJZrFwP33eHkggBVtypbyrxTb-XZn9vHOYojVaYk,635
|
19
|
-
linkml/generators/docgen.py,sha256=
|
20
|
-
linkml/generators/dotgen.py,sha256=
|
21
|
-
linkml/generators/erdiagramgen.py,sha256=
|
22
|
-
linkml/generators/excelgen.py,sha256=
|
23
|
-
linkml/generators/golanggen.py,sha256=
|
24
|
-
linkml/generators/golrgen.py,sha256=
|
25
|
-
linkml/generators/graphqlgen.py,sha256
|
26
|
+
linkml/generators/docgen.py,sha256=BbYIL1Bep0La4izwHaYZuTsnbVAv8_zjx3U3r1eHFEQ,36406
|
27
|
+
linkml/generators/dotgen.py,sha256=vjHveFtKBItHRkowi1I4FHffcn4u4wLpBydYgVxB-vE,5028
|
28
|
+
linkml/generators/erdiagramgen.py,sha256=5_VEPvRL0I819wCjk7T5hWffdBPc_qw3XpQdOYpO7uE,11357
|
29
|
+
linkml/generators/excelgen.py,sha256=MQRRm1wDbg7auUQH9tGb5aRyrp-e4gjXsY10aoLb9LI,7708
|
30
|
+
linkml/generators/golanggen.py,sha256=w3iTcOK69cwCrhE1pZn-PpV59arFZB8uU3ErLFo9i8Y,5803
|
31
|
+
linkml/generators/golrgen.py,sha256=JB92VDhTuwyaOyxHxB4goIsjZbq4NMf36ESprC3GeBs,3454
|
32
|
+
linkml/generators/graphqlgen.py,sha256=-BS-UHPyHqauUgtgcFCO4xSxxogk7BPAQFSXHIrKJT0,2163
|
26
33
|
linkml/generators/javagen/example_template.java.jinja2,sha256=ec4CVTv_0zS7V5Y-1E6H4lRraya10gfX7BEMBlu38X4,444
|
27
34
|
linkml/generators/javagen/java_record_template.jinja2,sha256=OQZffLSy_xR3FIhQMltvrYyVeut7l2Q-tzK7AOiVmWs,1729
|
28
|
-
linkml/generators/javagen.py,sha256=
|
29
|
-
linkml/generators/jsonldcontextgen.py,sha256=
|
30
|
-
linkml/generators/jsonldgen.py,sha256=
|
31
|
-
linkml/generators/jsonschemagen.py,sha256=
|
35
|
+
linkml/generators/javagen.py,sha256=BTAXgvOOvRa3AOfaaiVFyuyaqg4XFR_JbO6_7tT_AnQ,5335
|
36
|
+
linkml/generators/jsonldcontextgen.py,sha256=J-9QF7doco3-hYReiik67PjiaF_UudrFEiVsbnJFCJg,8666
|
37
|
+
linkml/generators/jsonldgen.py,sha256=9ru1rb4_u7t_Rp8ILQSmDIsk_evrDL_OeilnQUsu338,7770
|
38
|
+
linkml/generators/jsonschemagen.py,sha256=XoA0HJ1XlItogmhr3F8XNnAi1UG6fXeBAKkjme48n7o,30388
|
32
39
|
linkml/generators/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
linkml/generators/linkmlgen.py,sha256=
|
34
|
-
linkml/generators/markdowngen.py,sha256=
|
35
|
-
linkml/generators/namespacegen.py,sha256=
|
36
|
-
linkml/generators/oocodegen.py,sha256=
|
37
|
-
linkml/generators/owlgen.py,sha256=
|
38
|
-
linkml/generators/plantumlgen.py,sha256=
|
39
|
-
linkml/generators/prefixmapgen.py,sha256=
|
40
|
-
linkml/generators/projectgen.py,sha256=
|
41
|
-
linkml/generators/protogen.py,sha256=
|
42
|
-
linkml/generators/pydanticgen/__init__.py,sha256
|
43
|
-
linkml/generators/pydanticgen/array.py,sha256=
|
40
|
+
linkml/generators/linkmlgen.py,sha256=g1D8B6MBxcG6b9aYCUESp7nDZPmjedCs8rmGm_0GLnE,3484
|
41
|
+
linkml/generators/markdowngen.py,sha256=0gjMPJ0Ycm9se4Y4cyqjbTntGYqRRZu4RL-9Qf5n4lk,34464
|
42
|
+
linkml/generators/namespacegen.py,sha256=C4p9LSwsnDqf6sv-wG5l0VQniWFJ1HA1hRXJBDOg3pM,6467
|
43
|
+
linkml/generators/oocodegen.py,sha256=aBJgy-S-8FL5cW9p4hf986iSTxXwvkM7ZajKlari4us,7820
|
44
|
+
linkml/generators/owlgen.py,sha256=XgEuwvlznnsk8Z-mqZlCC0eK2DinPT9YLga3CkRyBRE,57564
|
45
|
+
linkml/generators/plantumlgen.py,sha256=ScTpXZe2Vjs2O6DeRJo-nr-p13lWSAtMZl6gu9jQYTk,15478
|
46
|
+
linkml/generators/prefixmapgen.py,sha256=oISFtSt_s5OWx65tYasWk0bUJIDIU1MjnsWqfBE7ZQA,4257
|
47
|
+
linkml/generators/projectgen.py,sha256=XSndKhTJ8uik30wWtabKNhERybPeeyVrekf7oEDVF2Q,9764
|
48
|
+
linkml/generators/protogen.py,sha256=a4KUyKj525tuE2YenEJQ_IkbNKnnhVH_N-qTEmMBVY4,2524
|
49
|
+
linkml/generators/pydanticgen/__init__.py,sha256=5SUFNcrh-6MLfMqptR6wPsR2v1Gyrl3wii-yu6kdnQM,700
|
50
|
+
linkml/generators/pydanticgen/array.py,sha256=mF_vhmlPfd9yVlVyANvT9GgLP6iQLSheqaowT5Jp6Jo,16120
|
44
51
|
linkml/generators/pydanticgen/black.py,sha256=BaJ7b-kMUbIN_cKRT3yCaMEbFwxzj1_U7w4fKQnkL44,723
|
45
|
-
linkml/generators/pydanticgen/build.py,sha256=
|
46
|
-
linkml/generators/pydanticgen/includes.py,sha256=
|
47
|
-
linkml/generators/pydanticgen/pydanticgen.py,sha256=
|
48
|
-
linkml/generators/pydanticgen/template.py,sha256=
|
49
|
-
linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=
|
50
|
-
linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=
|
51
|
-
linkml/generators/pydanticgen/templates/class.py.jinja,sha256=
|
52
|
+
linkml/generators/pydanticgen/build.py,sha256=_NQzXK_wWJ-EAHBi1nqZCEWSTYy7KWkc5w-mRsEXycI,3936
|
53
|
+
linkml/generators/pydanticgen/includes.py,sha256=kDAwonKbhTFzrFa2TrmTYuOSHXuzDy5WHgBaI5nVY6c,504
|
54
|
+
linkml/generators/pydanticgen/pydanticgen.py,sha256=GpGROIR1CX876NIvVoW9dlGe1r_vQSnojC7qnM9RNrM,49239
|
55
|
+
linkml/generators/pydanticgen/template.py,sha256=alt5yXyf2zdh93rLhyuIu9Ctb9C3O1oM62Upr4JH6Cw,21000
|
56
|
+
linkml/generators/pydanticgen/templates/attribute.py.jinja,sha256=uMyVKpO5uQkAFlIvIBwA6FFZl_BSIotfwCorrSwMA3Q,873
|
57
|
+
linkml/generators/pydanticgen/templates/base_model.py.jinja,sha256=6KRQ1ZVHh1uwZnYL3qxBnyit8_DNE7D-4l2-1wsRsG0,406
|
58
|
+
linkml/generators/pydanticgen/templates/class.py.jinja,sha256=GqR2t5y0vLmvUpT2vyP5VX42PO9AkAnGE-U2RZPa9AI,690
|
52
59
|
linkml/generators/pydanticgen/templates/conditional_import.py.jinja,sha256=YheknDrxvepiJUzeItSL5aSbAkCdR1k0a6m6aTA4qNM,240
|
53
60
|
linkml/generators/pydanticgen/templates/enum.py.jinja,sha256=572XFQyEMZfL-G_Cj68T-NI_mUnDoFOAVJOGIKu2Hb8,338
|
54
|
-
linkml/generators/pydanticgen/templates/footer.py.jinja,sha256=
|
61
|
+
linkml/generators/pydanticgen/templates/footer.py.jinja,sha256=t_24p1xmqdbfxGqz_XCXSTvkkWt26_2w_RcQjGIAWlY,155
|
55
62
|
linkml/generators/pydanticgen/templates/imports.py.jinja,sha256=d1XFna2eOpkH8cgJML3vXwqGcocczvOcrbg6jjd4kP0,945
|
56
|
-
linkml/generators/pydanticgen/templates/module.py.jinja,sha256=
|
57
|
-
linkml/generators/pydanticgen/templates/validator.py.jinja,sha256=
|
58
|
-
linkml/generators/
|
59
|
-
linkml/generators/
|
60
|
-
linkml/generators/
|
61
|
-
linkml/generators/
|
62
|
-
linkml/generators/shacl/
|
63
|
-
linkml/generators/
|
64
|
-
linkml/generators/
|
65
|
-
linkml/generators/
|
63
|
+
linkml/generators/pydanticgen/templates/module.py.jinja,sha256=NLCYn4wgwVBCs8trV2hNq0_BkZgfIIS6zQTmjzFDJCQ,568
|
64
|
+
linkml/generators/pydanticgen/templates/validator.py.jinja,sha256=BhXRGrT7HIweVHEE3Z7ZUtFFV8kP1dmRKJfu53jZBBQ,441
|
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=3XOWUMEUlknkdpzGMbJrNGWPWxnhwxLHPr5anOk_m2M,52612
|
68
|
+
linkml/generators/rdfgen.py,sha256=OT8oS8MPUVf5UK3OKvRWgAh9iQiWwdyWJSA69PncOw4,2969
|
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=JGk4X-PQadF_D-ciWKBVHuKU4QdfKewC395ujR5EsBk,13392
|
73
|
+
linkml/generators/shexgen.py,sha256=-GFdapDEAUXAjsXdTI7ZlS39YfuvaxfzPkdqUNM19qI,9941
|
74
|
+
linkml/generators/sparqlgen.py,sha256=ULvWokNGPADq1qDENoFeRYg3FmjdTh4-Vq-eYjsAEK4,6151
|
66
75
|
linkml/generators/sqlalchemy/__init__.py,sha256=mb9AC1rIFkSiNZhhG0TAk45ol9PjS1XvsrvCjgfVUpQ,249
|
67
76
|
linkml/generators/sqlalchemy/sqlalchemy_declarative_template.py,sha256=X_Ws1NUBikMI5HuNgEhl_PIeWM-B-c2B0W9KUBH4QTg,2542
|
68
77
|
linkml/generators/sqlalchemy/sqlalchemy_imperative_template.py,sha256=u4ZpponG1h6XROrOHGOf_0H2e6xL1_s8twAOA-gx94A,1622
|
69
|
-
linkml/generators/sqlalchemygen.py,sha256=
|
70
|
-
linkml/generators/sqltablegen.py,sha256=
|
71
|
-
linkml/generators/sssomgen.py,sha256=
|
78
|
+
linkml/generators/sqlalchemygen.py,sha256=qTyT0s1FhQnCvcgjEsC4OaTWhkgHBAGxcHnxEoF9DmI,9297
|
79
|
+
linkml/generators/sqltablegen.py,sha256=nKjUMhd05JaWaME_DjP7AV2DDUulsKpcu7IidhD3PLo,12359
|
80
|
+
linkml/generators/sssomgen.py,sha256=zrZy0WL9fF5bk-XAcB-MZYZkhHhqVRHt2rGBUtfqnLY,6891
|
72
81
|
linkml/generators/string_template.md,sha256=kRcfic6entgIaJdpSg6GF3jcjC9wbKsCVM6wVT2qipc,1788
|
73
|
-
linkml/generators/summarygen.py,sha256=
|
74
|
-
linkml/generators/terminusdbgen.py,sha256=
|
75
|
-
linkml/generators/typescriptgen.py,sha256=
|
76
|
-
linkml/generators/yamlgen.py,sha256=
|
77
|
-
linkml/generators/yumlgen.py,sha256=
|
82
|
+
linkml/generators/summarygen.py,sha256=C9r34928QtVMaXTbdch-mRPB5L0jDTGmTnVmtrKrR-0,3083
|
83
|
+
linkml/generators/terminusdbgen.py,sha256=ItJ-HTMkkX22Ex1-UjJZmtEtE2fn6UdjAxDtn20RXV8,4713
|
84
|
+
linkml/generators/typescriptgen.py,sha256=y8l1A1hAyuiRmXw0CyPXfamBKWpi7ag_lspfr8bnIds,8594
|
85
|
+
linkml/generators/yamlgen.py,sha256=38zdh5T4tObFhCHgbUbKbc0UuFh1TmmsWBkWM9gcvsI,1625
|
86
|
+
linkml/generators/yumlgen.py,sha256=Bg1MGlhCCQoswB19mFKh8xB0UcL9MQGHlUrAVGZSWkc,12208
|
78
87
|
linkml/linter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
79
|
-
linkml/linter/cli.py,sha256=
|
88
|
+
linkml/linter/cli.py,sha256=tXJ3vwjohCnj4EApEJXvXUSI3NLJ3fI3u6tJVxbgLQg,4505
|
80
89
|
linkml/linter/config/datamodel/.linkmllint.yaml,sha256=40rNhcL35FXQSjlVBMWnyPgplwEUqFT_sJmeZqUzxMw,292
|
81
90
|
linkml/linter/config/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
91
|
linkml/linter/config/datamodel/config.py,sha256=WyIBA1damYcW0JI6zLxbFwcHOtSdw0prSADlJdz3zG0,17202
|
@@ -94,32 +103,31 @@ linkml/linter/rules.py,sha256=Eg_-lIX1KPsCp3PHdPcBiHmSS5qAVZkHbw5LURfkfXk,11481
|
|
94
103
|
linkml/reporting/__init__.py,sha256=Jo0V_nyEcnWhMukMW-bqW9dlbgCfaRlWm3CO-XzgU84,92
|
95
104
|
linkml/reporting/model.py,sha256=-10yNfk8wuRC48ZI-akrWvtlJ9a6RYWET2TzlZV3XXo,8622
|
96
105
|
linkml/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
97
|
-
linkml/transformers/logical_model_transformer.py,sha256=
|
106
|
+
linkml/transformers/logical_model_transformer.py,sha256=rPeBYzQdLtcEKPe1kwkOWce4N7HZvFaULDrEGKbB-qI,29838
|
98
107
|
linkml/transformers/model_transformer.py,sha256=tK_MpRDI-q2qfe8KHT6qJHP8ZruKjYx1FcM-Fnjse-E,678
|
99
108
|
linkml/transformers/relmodel_transformer.py,sha256=aiSI2xaqRz4f0Z_0WFaBP5bknzX0pTnvxsR5mESFysg,18857
|
100
109
|
linkml/transformers/schema_renamer.py,sha256=DYRbgL9j41M9FdbHYLY3u4YIdDM98laD3cv_lHcgWHQ,5275
|
101
110
|
linkml/utils/__init__.py,sha256=Pkyv-Gfb8QoJdInRdJuuUz1Igfe0sT9t8Gv3V_fyTXc,92
|
102
111
|
linkml/utils/cli_utils.py,sha256=MdVbox1qr6kDUHUCWAmFhV-D6ebs_nn8vVwB8KDQfew,742
|
103
|
-
linkml/utils/converter.py,sha256=
|
112
|
+
linkml/utils/converter.py,sha256=vMpJLNFDxZR3yUGMiBCassDC-vvTb2oTq_3NYSLgErk,6297
|
104
113
|
linkml/utils/datautils.py,sha256=QlbzwXykh5Fphfe5KxPo6_ekXfniLbHiEGJtLWjUrvY,3742
|
105
114
|
linkml/utils/datavalidator.py,sha256=kBdWaVi8IZT1bOwEJgJYx-wZAb_PTBObB9nHpYORfKA,472
|
106
115
|
linkml/utils/deprecation.py,sha256=onhB82qjIkKzyUOTO9WDqN6QF3I2cJoyBrbm66vHmgM,8088
|
107
|
-
linkml/utils/execute_tutorial.py,sha256=
|
116
|
+
linkml/utils/execute_tutorial.py,sha256=KGmSnaz6joIAShnrD24n8kD6URe6CBoSUYsDOTg7qCg,7039
|
108
117
|
linkml/utils/generator.py,sha256=nAZTBFDKAZ2Asi6f54-GSOZoP03jQKgbYCW82KA34Z4,39100
|
109
118
|
linkml/utils/helpers.py,sha256=yR8n4zFA5wPcYC7xzRuNF3wO16vG80v6j7DM3qTNmIc,447
|
110
|
-
linkml/utils/
|
111
|
-
linkml/utils/logictools.py,sha256=GSmBiobC49TcQjE08RtXEE3JwJEOV7eEREio25uJiFs,21184
|
119
|
+
linkml/utils/logictools.py,sha256=BGtcoqr_Rsu08Ywa6lNiL881uZzQmNWk1p4FEIVKYe0,23641
|
112
120
|
linkml/utils/mergeutils.py,sha256=QVm2iQB4v_L2rSvPBsPe9C865R03BgV3TzlPoTTTwWQ,9044
|
113
121
|
linkml/utils/rawloader.py,sha256=nUB8Gfn8yEVwyo6bx0TtB2mBGkilC-fybi0xvQ73Gks,4417
|
114
|
-
linkml/utils/schema_builder.py,sha256=
|
115
|
-
linkml/utils/schema_fixer.py,sha256=
|
122
|
+
linkml/utils/schema_builder.py,sha256=LwaLeo65IQBHcmRD1kIxnjI1idFZyZsgfPACPow1_JY,9983
|
123
|
+
linkml/utils/schema_fixer.py,sha256=dzAkID_hO8VNrSpO9Jbz_GLJQAoRju13cZ3fnY03ZX8,16771
|
116
124
|
linkml/utils/schemaloader.py,sha256=dWZO044p_UcUWnrd8HZ-NsbLXQ9cA6c8HKfNI9-qH2A,47388
|
117
125
|
linkml/utils/schemasynopsis.py,sha256=j7sNt6j-E3rmf-1qEo351Kth2kltt6crQV-dxJAGCUE,18414
|
118
|
-
linkml/utils/sqlutils.py,sha256=
|
126
|
+
linkml/utils/sqlutils.py,sha256=Ddm6nsUd3oqLEWwZj7yakpyhRCO92Vvfl2MobiFaaXo,17083
|
119
127
|
linkml/utils/typereferences.py,sha256=8Yfuz9-HAwOPoJLbIcO_sY9zf32hvPRzGeSOzECfMWA,2232
|
120
128
|
linkml/utils/validation.py,sha256=eLw1-d8x3N1V14bSc6H_mJJXo59ryKvvUIBcOJ1dVMw,1438
|
121
129
|
linkml/validator/__init__.py,sha256=u0CeorIw50Qqwa60-lIFsJXg-sOdfo90hqvLpyvvwo4,4993
|
122
|
-
linkml/validator/cli.py,sha256
|
130
|
+
linkml/validator/cli.py,sha256=-7_hU787d321z_4pJeUs9dQsM76xpXie9dS-552c7Xs,7683
|
123
131
|
linkml/validator/loaders/__init__.py,sha256=FjUqEfBHeT5PEMBEZ9XwpclyQOysr4OCI1M0w_MYPVc,1165
|
124
132
|
linkml/validator/loaders/delimited_file_loader.py,sha256=fdh61ZMPTfH29_DM93f5dY0jLP7KQPNh_QAHZppsdNw,2616
|
125
133
|
linkml/validator/loaders/json_loader.py,sha256=Qy42naS2clb0fNXbUushckRu5AIX32b3UFUL6KMhxDE,809
|
@@ -136,15 +144,15 @@ linkml/validator/report.py,sha256=LwFpmJ74Cvsi2CuEDhm1a8nn9x1VI3Z98DbkUZVhKMA,89
|
|
136
144
|
linkml/validator/validation_context.py,sha256=Pmccq-LQ9iEeLyZhamp3mKjjtwp4ji1hIe5TT05AUT4,2732
|
137
145
|
linkml/validator/validator.py,sha256=BFgfKdu9Nad2dc9XTpmz9daQTj_FTcvo6mBq3e8fhJs,5649
|
138
146
|
linkml/validators/__init__.py,sha256=43W3J5NPKhwa3ZFHLRYsJMocwQKWGYCF9Ki9r0ccGbc,202
|
139
|
-
linkml/validators/jsonschemavalidator.py,sha256=
|
140
|
-
linkml/validators/sparqlvalidator.py,sha256=
|
147
|
+
linkml/validators/jsonschemavalidator.py,sha256=LVhBF3Fp4Ltjeaov36duoODxXVXwKqe07SrohH_uzhg,7968
|
148
|
+
linkml/validators/sparqlvalidator.py,sha256=KU4Vj-B3i_0Fde0Sn89oqkOVxt1UGW3uI4F6YNoJMTQ,4625
|
141
149
|
linkml/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
142
150
|
linkml/workspaces/datamodel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
143
151
|
linkml/workspaces/datamodel/workspaces.py,sha256=4HdkqweGNfMPqnB1_Onc9DcTfkhoagTRcqruh08nRoI,14905
|
144
152
|
linkml/workspaces/datamodel/workspaces.yaml,sha256=EjVrwPpeRZqJRjuGyyDRxxFzuv55SiLIXPBRUG6HStU,4233
|
145
|
-
linkml/workspaces/example_runner.py,sha256=
|
146
|
-
linkml-1.8.
|
147
|
-
linkml-1.8.
|
148
|
-
linkml-1.8.
|
149
|
-
linkml-1.8.
|
150
|
-
linkml-1.8.
|
153
|
+
linkml/workspaces/example_runner.py,sha256=qrn3EALJsHpyzQXo2npg5oTmMNQTrCjaNIAuMV0P5c8,11720
|
154
|
+
linkml-1.8.3.dist-info/entry_points.txt,sha256=jvnPJ8UTca4_L-Dh8OdUm5td8I3ZFlKRhMPjqRLtaSg,2084
|
155
|
+
linkml-1.8.3.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
|
156
|
+
linkml-1.8.3.dist-info/LICENSE,sha256=kORMoywK6j9_iy0UvLR-a80P1Rvc9AOM4gsKlUNZABg,535
|
157
|
+
linkml-1.8.3.dist-info/METADATA,sha256=riRcN5vHtkNy2v364JshSNmukypRDIFaw0B7JbQuv_E,3731
|
158
|
+
linkml-1.8.3.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
|
@@ -1,59 +0,0 @@
|
|
1
|
-
import re
|
2
|
-
from typing import Any, Callable, Optional
|
3
|
-
|
4
|
-
from linkml_runtime import SchemaView
|
5
|
-
from linkml_runtime.linkml_model import SlotDefinition
|
6
|
-
from rdflib import SH, Literal, URIRef
|
7
|
-
from rdflib.term import Identifier
|
8
|
-
|
9
|
-
from linkml.generators.shacl.shacl_data_type import ShaclDataType
|
10
|
-
|
11
|
-
|
12
|
-
class IfAbsentProcessor:
|
13
|
-
"""
|
14
|
-
Processes value of ifabsent slot.
|
15
|
-
|
16
|
-
See `<https://w3id.org/linkml/ifabsent>`_.
|
17
|
-
|
18
|
-
TODO: unify this with ifabsent_functions
|
19
|
-
"""
|
20
|
-
|
21
|
-
ifabsent_regex = re.compile("""(?:(?P<type>\w+)\()?[\"\']?(?P<default_value>[^\(\)\"\')]*)[\"\']?\)?""")
|
22
|
-
|
23
|
-
def __init__(self, schema_view: SchemaView):
|
24
|
-
self.schema_view = schema_view
|
25
|
-
|
26
|
-
def process_slot(
|
27
|
-
self, add_prop: Callable[[URIRef, Identifier], None], slot: SlotDefinition, class_uri: Optional[URIRef] = None
|
28
|
-
) -> None:
|
29
|
-
if slot.ifabsent:
|
30
|
-
ifabsent_match = self.ifabsent_regex.search(slot.ifabsent)
|
31
|
-
ifabsent_default_value = ifabsent_match.group("default_value")
|
32
|
-
|
33
|
-
self._map_to_default_value(slot, add_prop, ifabsent_default_value, class_uri)
|
34
|
-
|
35
|
-
def _map_to_default_value(
|
36
|
-
self,
|
37
|
-
slot: SlotDefinition,
|
38
|
-
add_prop: Callable[[URIRef, Identifier], None],
|
39
|
-
ifabsent_default_value: Any,
|
40
|
-
class_uri: Optional[URIRef] = None,
|
41
|
-
) -> None:
|
42
|
-
for datatype in list(ShaclDataType):
|
43
|
-
if datatype.linkml_type == slot.range:
|
44
|
-
add_prop(SH.defaultValue, Literal(ifabsent_default_value, datatype=datatype.uri_ref))
|
45
|
-
return
|
46
|
-
|
47
|
-
for enum_name, enum in self.schema_view.all_enums().items():
|
48
|
-
if enum_name == slot.range:
|
49
|
-
for permissible_value_name, permissible_value in enum.permissible_values.items():
|
50
|
-
if permissible_value_name == ifabsent_default_value:
|
51
|
-
add_prop(SH.defaultValue, Literal(ifabsent_default_value))
|
52
|
-
return
|
53
|
-
|
54
|
-
if ifabsent_default_value == "class_curie":
|
55
|
-
if class_uri:
|
56
|
-
add_prop(SH.defaultValue, class_uri)
|
57
|
-
return
|
58
|
-
|
59
|
-
raise ValueError(f"The ifabsent value `{slot.ifabsent}` of the `{slot.name}` slot could not be processed")
|
@@ -1,138 +0,0 @@
|
|
1
|
-
import re
|
2
|
-
from typing import Callable, List, Match, Optional, Text, Tuple, Union
|
3
|
-
|
4
|
-
from linkml_runtime.linkml_model.meta import ClassDefinition, SlotDefinition
|
5
|
-
from linkml_runtime.utils.formatutils import sfx
|
6
|
-
|
7
|
-
from linkml.utils.schemaloader import SchemaLoader
|
8
|
-
|
9
|
-
|
10
|
-
def strval(txt: str) -> str:
|
11
|
-
txt = str(txt).replace('"', '\\"')
|
12
|
-
return f'"{txt}"'
|
13
|
-
|
14
|
-
|
15
|
-
def default_uri_for(loader: SchemaLoader) -> str:
|
16
|
-
dflt = loader.schema.default_prefix if loader.schema.default_prefix else sfx(loader.schema.id)
|
17
|
-
return sfx(loader.namespaces.uri_for(dflt))
|
18
|
-
|
19
|
-
|
20
|
-
def default_curie_or_uri(loader: SchemaLoader) -> str:
|
21
|
-
dflt = loader.schema.default_prefix if loader.schema.default_prefix else sfx(loader.schema.id)
|
22
|
-
if ":/" in dflt:
|
23
|
-
prefix = loader.namespaces.prefix_for(loader.schema.default_prefix)
|
24
|
-
if prefix:
|
25
|
-
dflt = prefix
|
26
|
-
return dflt
|
27
|
-
|
28
|
-
|
29
|
-
def curie_for(loader: SchemaLoader, is_class: bool) -> Optional[str]:
|
30
|
-
"""Return the Curie for the schema in loader. Return None if there is no curie form"""
|
31
|
-
prefix = default_curie_or_uri(loader)
|
32
|
-
suffix = "camelcase(self.name)" if is_class else "underscore(self.alias if self.alias else self.name)"
|
33
|
-
if ":/" not in prefix:
|
34
|
-
return '"' + prefix + ":" + '" + ' + suffix
|
35
|
-
else:
|
36
|
-
pn = loader.namespaces.curie_for(prefix, default_ok=False)
|
37
|
-
return ('"' + pn + '" + ' + suffix) if pn else None
|
38
|
-
|
39
|
-
|
40
|
-
def uri_for(s: str, loader: SchemaLoader) -> str:
|
41
|
-
uri = str(loader.namespaces.uri_for(s))
|
42
|
-
return loader.namespaces.curie_for(uri, True, True) or strval(uri)
|
43
|
-
|
44
|
-
|
45
|
-
def default_ns_for(loader: SchemaLoader, cls: ClassDefinition) -> str:
|
46
|
-
"""Return code to produce the default namespace for the supplied class"""
|
47
|
-
# TODO: figure out how to mark a slot as a namespace
|
48
|
-
return "sfx(str(self.id))" if "id" in cls.slots else "None"
|
49
|
-
# cls_id = None
|
50
|
-
# for slotname in cls.slots:
|
51
|
-
# slot = loader.schema.slots[slotname]
|
52
|
-
# if slot.identifier:
|
53
|
-
# cls_id = slotname
|
54
|
-
# return f"sfx(str(self.{cls_id}))" if cls_id else "None"
|
55
|
-
|
56
|
-
|
57
|
-
# Library of named default values -- this is here to prevent code injection
|
58
|
-
# Contents: Match text (as re),
|
59
|
-
# flag that indicates whether we're generating a default value expression or postinig code
|
60
|
-
# Function that takes the match string, SchemaLoader, ClassDefinition, and SlotDefinition and returns the
|
61
|
-
# appropriate string
|
62
|
-
default_library: List[
|
63
|
-
Tuple[
|
64
|
-
Text,
|
65
|
-
bool,
|
66
|
-
Callable[[Match[str], SchemaLoader, ClassDefinition, SlotDefinition], str],
|
67
|
-
]
|
68
|
-
] = [
|
69
|
-
(r"[Tt]rue", False, lambda _, __, ___, ____: "True"),
|
70
|
-
(r"[Ff]alse", False, lambda _, __, ___, ____: "False"),
|
71
|
-
(r"int\(([-+]?[0-9]+)\)", False, lambda m, __, ___, ____: int(m[1])),
|
72
|
-
(
|
73
|
-
r"float\(([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)\)",
|
74
|
-
False,
|
75
|
-
lambda m, __, ___, ____: float(m[1]),
|
76
|
-
),
|
77
|
-
(
|
78
|
-
r"date\((\d{4})-(\d{2})-(\d{2})\)",
|
79
|
-
False,
|
80
|
-
lambda m, __, ___, ____: f"date({int(m[1])}, {int(m[2])}, {int(m[3])})",
|
81
|
-
),
|
82
|
-
(
|
83
|
-
r"datetime\((\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z\)",
|
84
|
-
False,
|
85
|
-
lambda m, __, ___, ____: f"datetime({int(m[1])}, {int(m[2])}, {int(m[3])}, "
|
86
|
-
f"{int(m[4])}, {int(m[5])}, {int(m[6])})",
|
87
|
-
),
|
88
|
-
# TODO: We have to make the real URI available before any of these can work
|
89
|
-
# ("class_uri", True,
|
90
|
-
# lambda _, loader, ___, ____: f'"{default_uri_for(loader)}" + camelcase(self.name)'),
|
91
|
-
# ("slot_uri", True,
|
92
|
-
# lambda _, loader, ___, ____: f'"{default_uri_for(loader)}" +
|
93
|
-
# underscore(self.alias if self.alias else self.name)'),
|
94
|
-
# ("class_curie", True, lambda _, loader, ___, ____: curie_for(loader, True)),
|
95
|
-
# ("slot_curie", True, lambda _, loader, ___, ____: curie_for(loader, False)),
|
96
|
-
("class_uri", True, lambda _, loader, ___, ____: "None"),
|
97
|
-
("slot_uri", True, lambda _, loader, ___, ____: "None"),
|
98
|
-
("class_curie", True, lambda _, loader, ___, ____: "None"),
|
99
|
-
("slot_curie", True, lambda _, loader, ___, ____: "None"),
|
100
|
-
# See: https://github.com/linkml/linkml/issues/1333
|
101
|
-
# ("class_uri", False, lambda _, __, class_definition, ____: 'class_class_uri'),
|
102
|
-
# ("class_curie", False, lambda _, __, class_definition, ____: 'class_class_curie'),
|
103
|
-
# ("slot_uri", True, lambda _, loader, ___, slot_definition: f'slots.{slot_definition.name}.uri'),
|
104
|
-
# ("slot_curie", True, lambda _, loader, ___, slot_definition: f'slots.{slot_definition.name}.curie'),
|
105
|
-
# ("default_range", False, lambda _, loader, __, ____: f"{strval(loader.schema.default_range)}"),
|
106
|
-
("default_range", False, lambda _, __, ___, ____: "None"),
|
107
|
-
("bnode", False, lambda _, __, ___, ____: "bnode()"),
|
108
|
-
(r"string\((.*)\)", False, lambda m, __, ___, ____: strval(m[1])),
|
109
|
-
(r"uri\((.*)\)", False, lambda m, loader, _, __: uri_for(m[1], loader)),
|
110
|
-
("default_ns", True, lambda _, loader, cls, ____: default_ns_for(loader, cls)),
|
111
|
-
# ("default_ns", False, lambda _, loader, __, ____: f"{strval(loader.schema.default_prefix)}"),
|
112
|
-
]
|
113
|
-
|
114
|
-
|
115
|
-
def isabsent_match(
|
116
|
-
txt: Text,
|
117
|
-
) -> Union[
|
118
|
-
Tuple[Match[str], bool, Callable[[Match[str], SchemaLoader, ClassDefinition, SlotDefinition], str]],
|
119
|
-
Tuple[None, None, None],
|
120
|
-
]:
|
121
|
-
txt = str(txt)
|
122
|
-
for pattern, postinit, f in default_library:
|
123
|
-
m = re.match(pattern + "$", txt)
|
124
|
-
if m:
|
125
|
-
return m, postinit, f
|
126
|
-
raise ValueError(f"Incompatible default value: {txt}")
|
127
|
-
|
128
|
-
|
129
|
-
def ifabsent_value_declaration(txt: Text, loader, cls, slot) -> Optional[str]:
|
130
|
-
m, postinit, f = isabsent_match(txt)
|
131
|
-
if m and not postinit:
|
132
|
-
return f(m, loader, cls, slot)
|
133
|
-
|
134
|
-
|
135
|
-
def ifabsent_postinit_declaration(txt: Text, loader, cls, slot) -> Optional[str]:
|
136
|
-
m, postinit, f = isabsent_match(txt)
|
137
|
-
if m and postinit:
|
138
|
-
return f(m, loader, cls, slot)
|
File without changes
|
File without changes
|