shacl2code 0.0.23__tar.gz → 0.0.24__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.
- {shacl2code-0.0.23 → shacl2code-0.0.24}/PKG-INFO +1 -1
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/python.j2 +14 -4
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/model.py +32 -18
- shacl2code-0.0.24/src/shacl2code/version.py +1 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/testfixtures/testfixtures/jsonvalidation.py +136 -136
- {shacl2code-0.0.23 → shacl2code-0.0.24}/testfixtures/testfixtures/timetests.py +53 -52
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/model/test-context.json +4 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/model/test.ttl +14 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/roundtrip.json +2 -1
- shacl2code-0.0.23/src/shacl2code/version.py +0 -1
- shacl2code-0.0.23/testfixtures/testfixtures/utils.py +0 -18
- {shacl2code-0.0.23 → shacl2code-0.0.24}/.flake8 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/.github/workflows/coverage-generate.yaml +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/.github/workflows/coverage-report.yaml +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/.github/workflows/publish.yaml +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/.github/workflows/scorecard.yml +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/.github/workflows/test.yaml +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/.gitignore +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/LICENSE +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/README.md +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/SECURITY.md +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/pyproject.toml +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/__init__.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/__main__.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/context.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/__init__.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/common.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/cpp.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/golang.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/jinja.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/jsonschema.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/lang.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/python.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/sources/cpp/json.hpp +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/Doxyfile.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/Makefile.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/api.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/datetime.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/datetime.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/decode.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/decode.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/encode.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/encode.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/errorhandler.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/errorhandler.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/exceptions.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/extensible.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/extensible.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/header.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/jsonld-header.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/jsonld-source.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/link.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/link.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/namedindividual.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/namedindividual.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/object.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/object.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/objectpath.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/objectpath.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/objectset.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/objectset.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/pkgconfig.pc.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/prop.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/property.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/property.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/propertyvalue.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/propertyvalue.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/ref.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/refproperty.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/refproperty.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/source.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/type.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/type.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/util.cpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/util.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/validate.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/cpp/walk.hpp.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/classes.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/decode.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/encode.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/errorhandler.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/errors.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/extensible.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/linkstate.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/listproperty.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/optional.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/path.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/property.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/ref.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/reflistproperty.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/refproperty.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/shaclobject.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/shaclobjectset.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/shacltype.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/util.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/golang/validator.go.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/lang/templates/jsonschema.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/main.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/src/shacl2code/urlcontext.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/testfixtures/testfixtures/__init__.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/testfixtures/testfixtures/httpserver.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/conftest.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/abort.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/bad-id.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/bad-node-kind.ttl +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/bad-pattern-class.ttl +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/bad-pattern-integer.ttl +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/bad-prop-type.ttl +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/bad-reference.jsonld +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/context-url.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/context.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/links.json +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/missing-range.ttl +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/python/bad-object-type-inline.json +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/python/bad-object-type-ref-after.json +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/python/bad-object-type-ref-before.json +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/data/raw.j2 +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_cli.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_common_jinja.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_common_prefix.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_context.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_cpp.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_golang.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_jsonschema.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_model_source.py +0 -0
- {shacl2code-0.0.23 → shacl2code-0.0.24}/tests/test_python.py +0 -0
|
@@ -36,6 +36,7 @@ from typing import (
|
|
|
36
36
|
TypeVar,
|
|
37
37
|
Union,
|
|
38
38
|
cast,
|
|
39
|
+
overload,
|
|
39
40
|
)
|
|
40
41
|
|
|
41
42
|
|
|
@@ -616,7 +617,7 @@ def register(
|
|
|
616
617
|
|
|
617
618
|
register_lock = threading.Lock()
|
|
618
619
|
NAMED_INDIVIDUALS: Set[str] = set()
|
|
619
|
-
|
|
620
|
+
T_SHACLObject = TypeVar("T_SHACLObject", bound="SHACLObject")
|
|
620
621
|
|
|
621
622
|
|
|
622
623
|
@functools.total_ordering
|
|
@@ -1279,9 +1280,18 @@ class SHACLObjectSet(object):
|
|
|
1279
1280
|
for child in o.iter_objects(recursive=True, visited=visited):
|
|
1280
1281
|
yield child
|
|
1281
1282
|
|
|
1283
|
+
@overload
|
|
1282
1284
|
def foreach_type(
|
|
1283
|
-
self, typ:
|
|
1284
|
-
) ->
|
|
1285
|
+
self, typ: str, *, match_subclass: bool = True
|
|
1286
|
+
) -> Iterator[SHACLObject]: ...
|
|
1287
|
+
@overload
|
|
1288
|
+
def foreach_type(
|
|
1289
|
+
self, typ: Type[T_SHACLObject], *, match_subclass: bool = True
|
|
1290
|
+
) -> Iterator[T_SHACLObject]: ...
|
|
1291
|
+
|
|
1292
|
+
def foreach_type(
|
|
1293
|
+
self, typ: Union[str, Type[T_SHACLObject]], *, match_subclass: bool = True
|
|
1294
|
+
) -> Iterable[SHACLObject]:
|
|
1285
1295
|
"""
|
|
1286
1296
|
Iterate over each object of a specified type (or subclass there of)
|
|
1287
1297
|
|
|
@@ -1301,7 +1311,7 @@ class SHACLObjectSet(object):
|
|
|
1301
1311
|
|
|
1302
1312
|
for exact, o in self.obj_by_type[typ]:
|
|
1303
1313
|
if match_subclass or exact:
|
|
1304
|
-
yield cast(
|
|
1314
|
+
yield cast(T_SHACLObject, o)
|
|
1305
1315
|
|
|
1306
1316
|
def merge(self, *objectsets) -> "SHACLObjectSet":
|
|
1307
1317
|
"""
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# SPDX-License-Identifier: MIT
|
|
6
6
|
|
|
7
7
|
import typing
|
|
8
|
-
from dataclasses import dataclass
|
|
8
|
+
from dataclasses import dataclass, field
|
|
9
9
|
|
|
10
10
|
from rdflib import URIRef
|
|
11
11
|
from rdflib.namespace import RDF, RDFS, OWL, SH, XSD, DefinedNamespace, Namespace
|
|
@@ -68,7 +68,7 @@ class Property:
|
|
|
68
68
|
comment: str = ""
|
|
69
69
|
max_count: int = None
|
|
70
70
|
min_count: int = None
|
|
71
|
-
enum_values: list =
|
|
71
|
+
enum_values: list = field(default_factory=list)
|
|
72
72
|
class_id: str = ""
|
|
73
73
|
datatype: str = ""
|
|
74
74
|
pattern: str = ""
|
|
@@ -206,24 +206,40 @@ class Model(object):
|
|
|
206
206
|
c.is_abstract = True
|
|
207
207
|
continue
|
|
208
208
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
fallback=remove_common_prefix(prop, cls_iri).lstrip("/"),
|
|
216
|
-
),
|
|
209
|
+
varname = self.model.value(
|
|
210
|
+
obj_prop,
|
|
211
|
+
SH.name,
|
|
212
|
+
default=self.get_compact_id(
|
|
213
|
+
prop,
|
|
214
|
+
fallback=remove_common_prefix(prop, cls_iri).lstrip("/"),
|
|
217
215
|
),
|
|
218
|
-
path=str(prop),
|
|
219
|
-
comment=str(self.model.value(prop, RDFS.comment, default="")),
|
|
220
|
-
max_count=int_val(self.model.value(obj_prop, SH.maxCount)),
|
|
221
|
-
min_count=int_val(self.model.value(obj_prop, SH.minCount)),
|
|
222
|
-
deprecated=(prop, RDF.type, OWL.DeprecatedProperty) in self.model,
|
|
223
216
|
)
|
|
224
217
|
|
|
218
|
+
for p in c.properties:
|
|
219
|
+
if p.path == str(prop):
|
|
220
|
+
break
|
|
221
|
+
else:
|
|
222
|
+
p = Property(
|
|
223
|
+
varname=varname,
|
|
224
|
+
path=str(prop),
|
|
225
|
+
comment=str(self.model.value(prop, RDFS.comment, default="")),
|
|
226
|
+
deprecated=(prop, RDF.type, OWL.DeprecatedProperty)
|
|
227
|
+
in self.model,
|
|
228
|
+
)
|
|
229
|
+
c.properties.append(p)
|
|
230
|
+
|
|
231
|
+
if varname < p.varname:
|
|
232
|
+
p.varname = varname
|
|
233
|
+
|
|
234
|
+
if (v := int_val(self.model.value(obj_prop, SH.maxCount))) is not None:
|
|
235
|
+
p.max_count = v
|
|
236
|
+
|
|
237
|
+
if (v := int_val(self.model.value(obj_prop, SH.minCount))) is not None:
|
|
238
|
+
p.min_count = v
|
|
239
|
+
|
|
225
240
|
if in_list := self.model.value(obj_prop, SH["in"]):
|
|
226
|
-
p.enum_values
|
|
241
|
+
enum_values = set(p.enum_values) | set(self.model.items(in_list))
|
|
242
|
+
p.enum_values = sorted(list(enum_values))
|
|
227
243
|
|
|
228
244
|
if range_id := self.model.value(obj_prop, SH["class"]):
|
|
229
245
|
if not set_prop_range(p, range_id):
|
|
@@ -252,8 +268,6 @@ class Model(object):
|
|
|
252
268
|
)
|
|
253
269
|
p.pattern = str(pattern)
|
|
254
270
|
|
|
255
|
-
c.properties.append(p)
|
|
256
|
-
|
|
257
271
|
c.properties.sort(key=lambda p: p.path)
|
|
258
272
|
|
|
259
273
|
self.classes.append(c)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "0.0.24"
|