pyMetaModel 0.6.6__tar.gz → 0.6.7__tar.gz

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 (107) hide show
  1. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/PKG-INFO +1 -1
  2. pymetamodel-0.6.7/meta/__init__.py +1 -0
  3. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/metamodel.py +7 -0
  4. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/test_metamodel.py +27 -0
  5. pymetamodel-0.6.6/meta/__init__.py +0 -1
  6. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/.github/workflows/build.yml +0 -0
  7. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/.github/workflows/upload-to-pypi.yml +0 -0
  8. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/.gitignore +0 -0
  9. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/.project +0 -0
  10. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/.pydevproject +0 -0
  11. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/LICENSE +0 -0
  12. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/README.md +0 -0
  13. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/docs/index.md +0 -0
  14. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/ceur-ws/ceur-ws.mermaid +0 -0
  15. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/ceur-ws/ceur-ws.puml +0 -0
  16. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/ceur-ws/ceur-ws.py +0 -0
  17. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/ceur-ws/ceur-ws.sidif +0 -0
  18. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/ceur-ws/ceur-ws.xlsx +0 -0
  19. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/ceur-ws/ceur-ws.yaml +0 -0
  20. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/ceur-ws/ceur-ws_puml.txt +0 -0
  21. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/city/city.mermaid +0 -0
  22. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/city/city.puml +0 -0
  23. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/city/city.py +0 -0
  24. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/city/city.sidif +0 -0
  25. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/city/city.xlsx +0 -0
  26. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/city/city.yaml +0 -0
  27. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/city/city_puml.txt +0 -0
  28. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/family/FamilyContext.mermaid +0 -0
  29. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/family/FamilyContext.puml +0 -0
  30. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/family/FamilyContext.py +0 -0
  31. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/family/FamilyContext.sidif +0 -0
  32. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/family/FamilyContext.xlsx +0 -0
  33. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/family/FamilyContext.yaml +0 -0
  34. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/family/FamilyContext_puml.txt +0 -0
  35. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/infrastructure/infrastructure.mermaid +0 -0
  36. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/infrastructure/infrastructure.puml +0 -0
  37. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/infrastructure/infrastructure.py +0 -0
  38. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/infrastructure/infrastructure.sidif +0 -0
  39. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/infrastructure/infrastructure.xlsx +0 -0
  40. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/infrastructure/infrastructure.yaml +0 -0
  41. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/infrastructure/infrastructure_puml.txt +0 -0
  42. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/metamodel/metamodel.mermaid +0 -0
  43. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/metamodel/metamodel.puml +0 -0
  44. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/metamodel/metamodel.py +0 -0
  45. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/metamodel/metamodel.sidif +0 -0
  46. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/metamodel/metamodel.xlsx +0 -0
  47. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/metamodel/metamodel.yaml +0 -0
  48. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/metamodel/metamodel_puml.txt +0 -0
  49. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/scientific-events/scientific-events.mermaid +0 -0
  50. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/scientific-events/scientific-events.puml +0 -0
  51. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/scientific-events/scientific-events.py +0 -0
  52. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/scientific-events/scientific-events.sidif +0 -0
  53. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/scientific-events/scientific-events.xlsx +0 -0
  54. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/scientific-events/scientific-events.yaml +0 -0
  55. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/scientific-events/scientific-events_puml.txt +0 -0
  56. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smartRQM/smartRQM.mermaid +0 -0
  57. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smartRQM/smartRQM.puml +0 -0
  58. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smartRQM/smartRQM.py +0 -0
  59. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smartRQM/smartRQM.sidif +0 -0
  60. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smartRQM/smartRQM.yaml +0 -0
  61. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smartRQM/smartRQM_puml.txt +0 -0
  62. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smwcon/smwcon.mermaid +0 -0
  63. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smwcon/smwcon.puml +0 -0
  64. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smwcon/smwcon.py +0 -0
  65. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smwcon/smwcon.sidif +0 -0
  66. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smwcon/smwcon.xlsx +0 -0
  67. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smwcon/smwcon.yaml +0 -0
  68. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/smwcon/smwcon_puml.txt +0 -0
  69. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/teaching/TeachingSchema.mermaid +0 -0
  70. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/teaching/TeachingSchema.puml +0 -0
  71. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/teaching/TeachingSchema.py +0 -0
  72. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/teaching/TeachingSchema.sidif +0 -0
  73. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/teaching/TeachingSchema.xlsx +0 -0
  74. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/teaching/TeachingSchema.yaml +0 -0
  75. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/teaching/TeachingSchema_puml.txt +0 -0
  76. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/wiki/wiki.mermaid +0 -0
  77. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/wiki/wiki.puml +0 -0
  78. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/wiki/wiki.py +0 -0
  79. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/wiki/wiki.sidif +0 -0
  80. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/wiki/wiki.xlsx +0 -0
  81. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/wiki/wiki.yaml +0 -0
  82. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/examples/wiki/wiki_puml.txt +0 -0
  83. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/metamodel_cmd.py +0 -0
  84. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/mw.py +0 -0
  85. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/profiler.py +0 -0
  86. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/sidif2linkml.py +0 -0
  87. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/smw_type.py +0 -0
  88. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/uml.py +0 -0
  89. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/meta/version.py +0 -0
  90. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/metamodel.puml +0 -0
  91. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/mkdocs.yml +0 -0
  92. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/pyproject.toml +0 -0
  93. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/scripts/blackisort +0 -0
  94. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/scripts/doc +0 -0
  95. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/scripts/genexamples +0 -0
  96. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/scripts/install +0 -0
  97. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/scripts/release +0 -0
  98. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/scripts/test +0 -0
  99. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/__init__.py +0 -0
  100. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/basemwtest.py +0 -0
  101. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/basesmwtest.py +0 -0
  102. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/basetest.py +0 -0
  103. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/test_generators.py +0 -0
  104. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/test_linkml.py +0 -0
  105. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/test_mw.py +0 -0
  106. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/test_plantuml.py +0 -0
  107. {pymetamodel-0.6.6 → pymetamodel-0.6.7}/tests/test_sidif.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyMetaModel
3
- Version: 0.6.6
3
+ Version: 0.6.7
4
4
  Dynamic: Summary
5
5
  Project-URL: Home, https://github.com/WolfgangFahl/pyMetaModel
6
6
  Project-URL: Documentation, https://wiki.bitplan.com/index.php/PyMetaModel
@@ -0,0 +1 @@
1
+ __version__ = "0.6.7"
@@ -375,6 +375,13 @@ class Topic:
375
375
  conceptProperty: Optional['Property'] = None
376
376
 
377
377
 
378
+ def get_primary_key_property(self) -> Optional['Property']:
379
+ """Return the first property marked as primaryKey, or None."""
380
+ return next(
381
+ (p for p in self.properties.values() if getattr(p, "primaryKey", False)),
382
+ None,
383
+ )
384
+
378
385
  def get_extends_topics(self, l: List['Topic'] = None) -> List['Topic']:
379
386
  """
380
387
  Get the topics this topic is extending.
@@ -34,3 +34,30 @@ class TestMetaModel(BaseMediawikiTest):
34
34
  if debug:
35
35
  print(smw_type)
36
36
  self.assertIsInstance(smw_type, SMW_Type)
37
+
38
+
39
+ from meta.metamodel import Property, Topic
40
+ from tests.basetest import Basetest
41
+
42
+
43
+ class TestTopic(Basetest):
44
+ """
45
+ test Topic methods - see https://github.com/WolfgangFahl/pyMetaModel/issues/36
46
+ """
47
+
48
+ def test_get_primary_key_property(self):
49
+ """test get_primary_key_property returns the primaryKey property or None"""
50
+ topic = Topic()
51
+ topic.properties = {
52
+ "name": Property(name="name", primaryKey=True),
53
+ "at": Property(name="at"),
54
+ }
55
+ pk = topic.get_primary_key_property()
56
+ self.assertIsNotNone(pk)
57
+ self.assertEqual(pk.name, "name")
58
+
59
+ def test_get_primary_key_property_none(self):
60
+ """test get_primary_key_property returns None when no primaryKey exists"""
61
+ topic = Topic()
62
+ topic.properties = {"at": Property(name="at")}
63
+ self.assertIsNone(topic.get_primary_key_property())
@@ -1 +0,0 @@
1
- __version__ = "0.6.6"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes