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.
Files changed (78) hide show
  1. linkml/cli/__init__.py +0 -0
  2. linkml/cli/__main__.py +4 -0
  3. linkml/cli/main.py +130 -0
  4. linkml/generators/common/build.py +105 -0
  5. linkml/generators/common/ifabsent_processor.py +286 -0
  6. linkml/generators/common/lifecycle.py +124 -0
  7. linkml/generators/common/template.py +89 -0
  8. linkml/generators/csvgen.py +1 -1
  9. linkml/generators/docgen/slot.md.jinja2 +4 -0
  10. linkml/generators/docgen.py +1 -1
  11. linkml/generators/dotgen.py +1 -1
  12. linkml/generators/erdiagramgen.py +1 -1
  13. linkml/generators/excelgen.py +1 -1
  14. linkml/generators/golanggen.py +1 -1
  15. linkml/generators/golrgen.py +1 -1
  16. linkml/generators/graphqlgen.py +1 -1
  17. linkml/generators/javagen.py +1 -1
  18. linkml/generators/jsonldcontextgen.py +4 -5
  19. linkml/generators/jsonldgen.py +1 -1
  20. linkml/generators/jsonschemagen.py +69 -22
  21. linkml/generators/linkmlgen.py +1 -1
  22. linkml/generators/markdowngen.py +1 -1
  23. linkml/generators/namespacegen.py +1 -1
  24. linkml/generators/oocodegen.py +2 -1
  25. linkml/generators/owlgen.py +1 -1
  26. linkml/generators/plantumlgen.py +1 -1
  27. linkml/generators/prefixmapgen.py +1 -1
  28. linkml/generators/projectgen.py +1 -1
  29. linkml/generators/protogen.py +1 -1
  30. linkml/generators/pydanticgen/__init__.py +8 -3
  31. linkml/generators/pydanticgen/array.py +114 -194
  32. linkml/generators/pydanticgen/build.py +64 -25
  33. linkml/generators/pydanticgen/includes.py +1 -31
  34. linkml/generators/pydanticgen/pydanticgen.py +621 -276
  35. linkml/generators/pydanticgen/template.py +152 -184
  36. linkml/generators/pydanticgen/templates/attribute.py.jinja +9 -7
  37. linkml/generators/pydanticgen/templates/base_model.py.jinja +0 -13
  38. linkml/generators/pydanticgen/templates/class.py.jinja +2 -2
  39. linkml/generators/pydanticgen/templates/footer.py.jinja +2 -10
  40. linkml/generators/pydanticgen/templates/module.py.jinja +2 -2
  41. linkml/generators/pydanticgen/templates/validator.py.jinja +0 -4
  42. linkml/generators/python/__init__.py +1 -0
  43. linkml/generators/python/python_ifabsent_processor.py +92 -0
  44. linkml/generators/pythongen.py +19 -23
  45. linkml/generators/rdfgen.py +1 -1
  46. linkml/generators/shacl/__init__.py +1 -3
  47. linkml/generators/shacl/shacl_data_type.py +1 -1
  48. linkml/generators/shacl/shacl_ifabsent_processor.py +89 -0
  49. linkml/generators/shaclgen.py +11 -5
  50. linkml/generators/shexgen.py +1 -1
  51. linkml/generators/sparqlgen.py +1 -1
  52. linkml/generators/sqlalchemygen.py +1 -1
  53. linkml/generators/sqltablegen.py +1 -1
  54. linkml/generators/sssomgen.py +1 -1
  55. linkml/generators/summarygen.py +1 -1
  56. linkml/generators/terminusdbgen.py +7 -4
  57. linkml/generators/typescriptgen.py +1 -1
  58. linkml/generators/yamlgen.py +1 -1
  59. linkml/generators/yumlgen.py +1 -1
  60. linkml/linter/cli.py +1 -1
  61. linkml/transformers/logical_model_transformer.py +117 -18
  62. linkml/utils/converter.py +1 -1
  63. linkml/utils/execute_tutorial.py +2 -0
  64. linkml/utils/logictools.py +142 -29
  65. linkml/utils/schema_builder.py +7 -6
  66. linkml/utils/schema_fixer.py +1 -1
  67. linkml/utils/sqlutils.py +1 -1
  68. linkml/validator/cli.py +4 -1
  69. linkml/validators/jsonschemavalidator.py +1 -1
  70. linkml/validators/sparqlvalidator.py +1 -1
  71. linkml/workspaces/example_runner.py +1 -1
  72. {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/METADATA +2 -2
  73. {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/RECORD +76 -68
  74. {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/entry_points.txt +1 -1
  75. linkml/generators/shacl/ifabsent_processor.py +0 -59
  76. linkml/utils/ifabsent_functions.py +0 -138
  77. {linkml-1.8.1.dist-info → linkml-1.8.3.dist-info}/LICENSE +0 -0
  78. {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.1
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 (==1.8.0)
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=R8VQdWXj43LNf5isJElo3MStsiNBSSF4ywIRS1c3_v0,3243
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=ZGa-kaNvi5LknvFRIjKQyRpSynr1SlkLrpEmWDNPwDA,3226
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=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
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=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=sQXlaT_UOiJfbRoxH-hFY4nM0ELdjRlCFnS8HqVzqb8,28263
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=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=JgAox2o_HQgXR4ZxdHwdRUzcHSbpsAdv15Qsq1vnEZs,15463
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=-972x-uV0atgveW_n5qvG1WelKANvsk9ZseZOIH_tNI,663
43
- linkml/generators/pydanticgen/array.py,sha256=EYqAkT2_wE82kZ-niUWAC5U3V8EvjjyfSH7tz5GYKWo,19461
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=Ia8qy4C16b-KqO_fw4tGQW_Eo4grCVyX7RsuJ3uRTtk,2681
46
- linkml/generators/pydanticgen/includes.py,sha256=0CZi8vs6Z2eVvMOWhbTphCYoI3X8E9-8LgSaCBeiuCY,1174
47
- linkml/generators/pydanticgen/pydanticgen.py,sha256=kaUBENnVEGpFs3gGK8kQbR2ZoZ1eg9Jiz0yNtXajbEw,34900
48
- linkml/generators/pydanticgen/template.py,sha256=gffWyzJNmjw2Kf1UszRp97qGrnkAGd4UnLimU2nEsEA,21154
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
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=WuWGJjkWDQcEPL2bGk5fdGuhO0gQRUJzpo4CQHHxQNQ,385
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=gYauXrq8ML3ieaN_DFGB9yj9VfZV2yHG5LRQUzWy4VA,622
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
60
- linkml/generators/shacl/__init__.py,sha256=O-M-wndKw8rMW-U8X3QCNHal-ErXP6uXZqxiQSa77l4,108
61
- linkml/generators/shacl/ifabsent_processor.py,sha256=kV9BGA2ZPXLRfaFuW0o4jpkATvGggvrqpAo9c1UqWNE,2193
62
- 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
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=boXn_tlkbZ_a5TJYoXvdlKzABNwD-Jn5ld9IAbtzWm4,9286
70
- linkml/generators/sqltablegen.py,sha256=87057FJi9EUVPXOjRfHuSqY0lKmepXRNQsose2fGts4,12343
71
- linkml/generators/sssomgen.py,sha256=yur3q7so9uwIELWZaZRzkJwNbz_ppBL7IQki9XLIM3k,6879
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=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
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=BpQiETcRfQlZsI1-JALyU9wXPgPOm_KE_n11p0iJaC8,4494
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=z-1nyD0d8LYJeAPWRn29p-S4Hgmvjocfcj0VrHTAs2c,26703
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=snAF-pgZBSi4ANiaKXxqtZk5w3qonJjTfI4X5OVLmUE,6283
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=T4kHTSyz3ItJGEUZxVjR-3yLVKnOr5Ix4NMGE47-IuE,6912
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/ifabsent_functions.py,sha256=IkcBcmRYu8sllx7_mTCqu4aHfTxX2AnQoccZ1KOODds,5843
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=4qhrur8O0xRZnPm7H1h2BZmTkut5R4q-IE_1KKiHy_c,9937
115
- linkml/utils/schema_fixer.py,sha256=Uz8M3AOQ_BputJr1f6lbfk1iyvmANUNG80-0B3BQKJ8,16761
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=Cwoaz44MLcvAGUEBshT4jtn0Z3w7jVOp85zGkd6FTHY,17071
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=uVe_tbBzsK-4BNboE5zRyohS_dEs5Nl1gbhklrzOEpw,7605
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=_ku7MQGqA6KplbHMiyzDRqgRwwXGloobhLptuXqLCp4,7951
140
- linkml/validators/sparqlvalidator.py,sha256=JowuZ5KxmWkldgWIXAb8DJi7YCPm8x3it0QkgM4lSi0,4612
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=hDk2RGxRE5-WYNriWknugtbm3Mhn8bFcAcXGMlkYxVk,11705
146
- linkml-1.8.1.dist-info/entry_points.txt,sha256=7haDkIbyC7ZLhm5z-e3BhrLJpY2xoW1yuD8Y7QPNtVg,2093
147
- linkml-1.8.1.dist-info/LICENSE,sha256=kORMoywK6j9_iy0UvLR-a80P1Rvc9AOM4gsKlUNZABg,535
148
- linkml-1.8.1.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
149
- linkml-1.8.1.dist-info/METADATA,sha256=-Nk6qRvku2ysnCvxuObK_ILTulyQzPAKyvbbUbzSSfk,3724
150
- linkml-1.8.1.dist-info/RECORD,,
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