shacl2code 0.0.23__tar.gz → 0.0.25__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 (128) hide show
  1. shacl2code-0.0.25/.github/dependabot.yml +6 -0
  2. {shacl2code-0.0.23 → shacl2code-0.0.25}/.github/workflows/test.yaml +15 -7
  3. {shacl2code-0.0.23 → shacl2code-0.0.25}/.gitignore +5 -0
  4. {shacl2code-0.0.23 → shacl2code-0.0.25}/PKG-INFO +3 -1
  5. {shacl2code-0.0.23 → shacl2code-0.0.25}/pyproject.toml +9 -0
  6. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/context.py +8 -5
  7. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/Doxyfile.j2 +791 -457
  8. shacl2code-0.0.25/src/shacl2code/lang/templates/cpp/Makefile.j2 +114 -0
  9. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/encode.hpp.j2 +3 -2
  10. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/python.j2 +14 -4
  11. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/model.py +32 -18
  12. shacl2code-0.0.25/src/shacl2code/version.py +1 -0
  13. {shacl2code-0.0.23 → shacl2code-0.0.25}/testfixtures/testfixtures/jsonvalidation.py +136 -136
  14. {shacl2code-0.0.23 → shacl2code-0.0.25}/testfixtures/testfixtures/timetests.py +53 -52
  15. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/model/test-context.json +12 -9
  16. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/model/test.ttl +14 -0
  17. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/roundtrip.json +2 -1
  18. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_context.py +3 -1
  19. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_cpp.py +88 -33
  20. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_model_source.py +2 -1
  21. shacl2code-0.0.23/src/shacl2code/lang/templates/cpp/Makefile.j2 +0 -90
  22. shacl2code-0.0.23/src/shacl2code/version.py +0 -1
  23. shacl2code-0.0.23/testfixtures/testfixtures/utils.py +0 -18
  24. {shacl2code-0.0.23 → shacl2code-0.0.25}/.flake8 +0 -0
  25. {shacl2code-0.0.23 → shacl2code-0.0.25}/.github/workflows/coverage-generate.yaml +0 -0
  26. {shacl2code-0.0.23 → shacl2code-0.0.25}/.github/workflows/coverage-report.yaml +0 -0
  27. {shacl2code-0.0.23 → shacl2code-0.0.25}/.github/workflows/publish.yaml +0 -0
  28. {shacl2code-0.0.23 → shacl2code-0.0.25}/.github/workflows/scorecard.yml +0 -0
  29. {shacl2code-0.0.23 → shacl2code-0.0.25}/LICENSE +0 -0
  30. {shacl2code-0.0.23 → shacl2code-0.0.25}/README.md +0 -0
  31. {shacl2code-0.0.23 → shacl2code-0.0.25}/SECURITY.md +0 -0
  32. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/__init__.py +0 -0
  33. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/__main__.py +0 -0
  34. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/__init__.py +0 -0
  35. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/common.py +0 -0
  36. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/cpp.py +0 -0
  37. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/golang.py +0 -0
  38. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/jinja.py +0 -0
  39. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/jsonschema.py +0 -0
  40. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/lang.py +0 -0
  41. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/python.py +0 -0
  42. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/sources/cpp/json.hpp +0 -0
  43. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/api.hpp.j2 +0 -0
  44. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/datetime.cpp.j2 +0 -0
  45. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/datetime.hpp.j2 +0 -0
  46. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/decode.cpp.j2 +0 -0
  47. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/decode.hpp.j2 +0 -0
  48. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/encode.cpp.j2 +0 -0
  49. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/errorhandler.cpp.j2 +0 -0
  50. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/errorhandler.hpp.j2 +0 -0
  51. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/exceptions.hpp.j2 +0 -0
  52. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/extensible.cpp.j2 +0 -0
  53. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/extensible.hpp.j2 +0 -0
  54. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/header.j2 +0 -0
  55. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/jsonld-header.j2 +0 -0
  56. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/jsonld-source.j2 +0 -0
  57. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/link.cpp.j2 +0 -0
  58. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/link.hpp.j2 +0 -0
  59. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/namedindividual.cpp.j2 +0 -0
  60. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/namedindividual.hpp.j2 +0 -0
  61. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/object.cpp.j2 +0 -0
  62. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/object.hpp.j2 +0 -0
  63. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/objectpath.cpp.j2 +0 -0
  64. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/objectpath.hpp.j2 +0 -0
  65. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/objectset.cpp.j2 +0 -0
  66. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/objectset.hpp.j2 +0 -0
  67. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/pkgconfig.pc.j2 +0 -0
  68. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/prop.hpp.j2 +0 -0
  69. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/property.cpp.j2 +0 -0
  70. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/property.hpp.j2 +0 -0
  71. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/propertyvalue.cpp.j2 +0 -0
  72. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/propertyvalue.hpp.j2 +0 -0
  73. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/ref.hpp.j2 +0 -0
  74. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/refproperty.cpp.j2 +0 -0
  75. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/refproperty.hpp.j2 +0 -0
  76. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/source.j2 +0 -0
  77. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/type.cpp.j2 +0 -0
  78. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/type.hpp.j2 +0 -0
  79. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/util.cpp.j2 +0 -0
  80. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/util.hpp.j2 +0 -0
  81. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/validate.j2 +0 -0
  82. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/cpp/walk.hpp.j2 +0 -0
  83. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/classes.go.j2 +0 -0
  84. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/decode.go.j2 +0 -0
  85. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/encode.go.j2 +0 -0
  86. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/errorhandler.go.j2 +0 -0
  87. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/errors.go.j2 +0 -0
  88. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/extensible.go.j2 +0 -0
  89. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/linkstate.go.j2 +0 -0
  90. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/listproperty.go.j2 +0 -0
  91. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/optional.go.j2 +0 -0
  92. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/path.go.j2 +0 -0
  93. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/property.go.j2 +0 -0
  94. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/ref.go.j2 +0 -0
  95. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/reflistproperty.go.j2 +0 -0
  96. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/refproperty.go.j2 +0 -0
  97. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/shaclobject.go.j2 +0 -0
  98. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/shaclobjectset.go.j2 +0 -0
  99. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/shacltype.go.j2 +0 -0
  100. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/util.go.j2 +0 -0
  101. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/golang/validator.go.j2 +0 -0
  102. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/lang/templates/jsonschema.j2 +0 -0
  103. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/main.py +0 -0
  104. {shacl2code-0.0.23 → shacl2code-0.0.25}/src/shacl2code/urlcontext.py +0 -0
  105. {shacl2code-0.0.23 → shacl2code-0.0.25}/testfixtures/testfixtures/__init__.py +0 -0
  106. {shacl2code-0.0.23 → shacl2code-0.0.25}/testfixtures/testfixtures/httpserver.py +0 -0
  107. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/conftest.py +0 -0
  108. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/abort.j2 +0 -0
  109. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/bad-id.j2 +0 -0
  110. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/bad-node-kind.ttl +0 -0
  111. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/bad-pattern-class.ttl +0 -0
  112. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/bad-pattern-integer.ttl +0 -0
  113. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/bad-prop-type.ttl +0 -0
  114. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/bad-reference.jsonld +0 -0
  115. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/context-url.j2 +0 -0
  116. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/context.j2 +0 -0
  117. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/links.json +0 -0
  118. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/missing-range.ttl +0 -0
  119. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/python/bad-object-type-inline.json +0 -0
  120. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/python/bad-object-type-ref-after.json +0 -0
  121. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/python/bad-object-type-ref-before.json +0 -0
  122. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/data/raw.j2 +0 -0
  123. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_cli.py +0 -0
  124. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_common_jinja.py +0 -0
  125. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_common_prefix.py +0 -0
  126. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_golang.py +0 -0
  127. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_jsonschema.py +0 -0
  128. {shacl2code-0.0.23 → shacl2code-0.0.25}/tests/test_python.py +0 -0
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
@@ -7,15 +7,14 @@ on:
7
7
 
8
8
  jobs:
9
9
  build:
10
- runs-on: ubuntu-latest
10
+ runs-on: ${{ matrix.os }}
11
11
  strategy:
12
12
  matrix:
13
- python-version:
14
- - "3.8"
15
- - "3.9"
16
- - "3.10"
17
- - "3.11"
18
- - "3.12"
13
+ os: [ubuntu-latest]
14
+ python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
15
+ include:
16
+ - os: macos-latest
17
+ python-version: "3.10"
19
18
  steps:
20
19
  - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
21
20
  - name: Setup Python ${{ matrix.python-version }}
@@ -31,7 +30,16 @@ jobs:
31
30
  python -m pip install --upgrade pip
32
31
  pip install build
33
32
  npm install -g jsonld-cli
33
+ - name: Install Linux packages
34
+ if: runner.os == 'Linux'
35
+ run: |
36
+ sudo apt update
34
37
  sudo apt install -y build-essential doxygen graphviz
38
+ - name: Install macOS packages
39
+ if: runner.os == 'macOS'
40
+ run: |
41
+ brew update
42
+ brew install doxygen gcc go graphviz
35
43
  - name: Build package
36
44
  run: |
37
45
  python -m build
@@ -159,3 +159,8 @@ cython_debug/
159
159
  # and can be added to the global gitignore or merged into this file. For a more nuclear
160
160
  # option (not recommended) you can uncomment the following to ignore the entire idea folder.
161
161
  #.idea/
162
+
163
+ # macOS system files
164
+ .DS_Store
165
+ .DS_Store?
166
+ .Trashes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shacl2code
3
- Version: 0.0.23
3
+ Version: 0.0.25
4
4
  Summary: Convert SHACL model file to code bindings
5
5
  Project-URL: Homepage, https://github.com/JPEWdev/shacl2code
6
6
  Project-URL: Repository, https://github.com/JPEWdev/shacl2code.git
@@ -16,6 +16,8 @@ Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
19
21
  Classifier: Topic :: Software Development :: Build Tools
20
22
  Requires-Python: >=3.8
21
23
  Requires-Dist: jinja2>=3.1.2
@@ -21,6 +21,8 @@ classifiers = [
21
21
  "Programming Language :: Python :: 3.10",
22
22
  "Programming Language :: Python :: 3.11",
23
23
  "Programming Language :: Python :: 3.12",
24
+ "Programming Language :: Python :: 3.13",
25
+ "Programming Language :: Python :: 3.14",
24
26
  ]
25
27
  license = "MIT"
26
28
 
@@ -56,12 +58,19 @@ addopts = [
56
58
  "--import-mode=importlib",
57
59
  "--cov=shacl2code",
58
60
  ]
61
+ # Suppress 3rd-party warnings to reduce log noise. Remove after libraries get updated.
62
+ filterwarnings = [
63
+ "ignore:.*ConjunctiveGraph is deprecated.*:DeprecationWarning", # From rdflib
64
+ "ignore:.*Dataset.default_context is deprecated.*:DeprecationWarning", # From rdflib, pyshacl
65
+ "ignore:.*Dataset.contexts is deprecated.*:DeprecationWarning", # From rdflib
66
+ ]
59
67
  pythonpath = [
60
68
  "testfixtures"
61
69
  ]
62
70
 
63
71
  [tool.coverage.run]
64
72
  relative_files = true
73
+ patch = ["subprocess"]
65
74
 
66
75
  [tool.black]
67
76
  include = '(\.pyi?$)|(python\.j2$)'
@@ -45,11 +45,11 @@ class Context(object):
45
45
  contexts = []
46
46
 
47
47
  for v in self.__vocabs:
48
- for name, value in foreach_context(self.contexts):
48
+ for _, value in foreach_context(self.contexts):
49
49
  if (
50
50
  isinstance(value, dict)
51
- and value["@type"] == "@vocab"
52
- and v == self.expand_iri(value["@id"])
51
+ and value.get("@type", "") == "@vocab"
52
+ and v == self.expand_iri(value.get("@id", ""))
53
53
  ):
54
54
  if "@context" in value:
55
55
  contexts.insert(0, value["@context"])
@@ -93,7 +93,7 @@ class Context(object):
93
93
  continue
94
94
 
95
95
  if isinstance(value, dict):
96
- value = value["@id"]
96
+ value = value.get("@id", "")
97
97
 
98
98
  if term == self.expand_iri(value):
99
99
  if exact and name not in possible:
@@ -248,7 +248,10 @@ class Context(object):
248
248
  continue
249
249
 
250
250
  if isinstance(value, dict):
251
- value = value["@id"]
251
+ value = value.get("@id", "")
252
+
253
+ if not value:
254
+ continue
252
255
 
253
256
  if term == name:
254
257
  if exact: