Skip to content

Commit 6bc1648

Browse files
authored
Merge pull request #418 from softwarepub/refactor/385-test-ld_list
Test ld_list
2 parents e86d5fe + 0999f44 commit 6bc1648

File tree

8 files changed

+1630
-228
lines changed

8 files changed

+1630
-228
lines changed

src/hermes/model/types/__init__.py

Lines changed: 41 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# SPDX-License-Identifier: Apache-2.0
44

55
# SPDX-FileContributor: Michael Meinel
6+
# SPDX-FileContributor: Michael Fritzsche
67

78
from datetime import date, time, datetime
89

@@ -19,57 +20,51 @@
1920
lambda c: isinstance(c, ld_container),
2021
{
2122
"ld_container": lambda c, **_: c,
22-
2323
"json": lambda c, **_: c.compact(),
2424
"expanded_json": lambda c, **_: c.ld_value,
2525
}
2626
),
2727

28-
# Wrap expanded_json to ld_container
29-
(ld_container.is_ld_id, dict(python=lambda c, **_: c[0]['@id'])),
30-
(ld_container.is_typed_ld_value, dict(python=ld_container.typed_ld_to_py)),
31-
(ld_container.is_ld_value, dict(python=lambda c, **_: c[0]['@value'])),
32-
(ld_list.is_ld_list, dict(ld_container=ld_list)),
33-
(ld_dict.is_ld_dict, dict(ld_container=ld_dict)),
34-
35-
# Expand and access JSON data
36-
(ld_container.is_json_id, dict(python=lambda c, **_: c["@id"], expanded_json=lambda c, **_: [c])),
37-
(ld_container.is_typed_json_value, dict(python=ld_container.typed_ld_to_py)),
38-
(ld_container.is_json_value, dict(python=lambda c, **_: c["@value"], expanded_json=lambda c, **_: [c])),
39-
(ld_list.is_container, dict(ld_container=lambda c, **kw: ld_list([c], **kw))),
40-
41-
# FIXME: add conversion from list and json dict to expanded_json
42-
# to parse nested dicts and lists when using for example __setitem__(key, value) from ld_dict
43-
# where value is converted to expanded_json bevor adding it to data_dict
44-
# Suggested:
45-
# (
46-
# ld_dict.is_json_dict,
47-
# {
48-
# "ld_container": ld_dict.from_dict,
49-
# "expanded_json": lambda c, **kw: kw["parent"]._to_expanded_json(kw["key"], ld_dict.from_dict(c, **kw))
50-
# }
51-
# ),
52-
#
53-
# (
54-
# lambda c: isinstance(c, list),
55-
# {
56-
# "ld_container": ld_list.from_list,
57-
# "expanded_json": lambda c, **kw: kw["parent"]._to_expanded_json(kw["key"], ld_list.from_list(c, **kw))
58-
# }
59-
# ),
60-
(ld_dict.is_json_dict, dict(ld_container=ld_dict.from_dict)),
61-
62-
(lambda c: isinstance(c, list), dict(ld_container=ld_list.from_list)),
63-
64-
# Wrap internal data types
65-
(lambda v: isinstance(v, (int, float, str, bool)), dict(expanded_json=lambda v, **_: [{"@value": v}])),
66-
67-
(lambda v: isinstance(v, datetime),
68-
dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:DateTime"]}])),
69-
(lambda v: isinstance(v, date),
70-
dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Date"]}])),
71-
(lambda v: isinstance(v, time),
72-
dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Time"]}])),
28+
# Wrap item from ld_dict in ld_list
29+
(ld_list.is_ld_list, {"ld_container": ld_list}),
30+
(lambda c: isinstance(c, list), {"ld_container": lambda c, **kw: ld_list(c, **kw)}),
31+
32+
# pythonize items from lists (expanded set is already handled above)
33+
(ld_container.is_json_id, {"python": lambda c, **_: c["@id"]}),
34+
(ld_container.is_typed_json_value, {"python": lambda c, **kw: ld_container.typed_ld_to_py([c], **kw)}),
35+
(ld_container.is_json_value, {"python": lambda c, **_: c["@value"]}),
36+
(ld_list.is_container, {"ld_container": lambda c, **kw: ld_list([c], **kw)}),
37+
(ld_dict.is_json_dict, {"ld_container": lambda c, **kw: ld_dict([c], **kw)}),
38+
(lambda v: isinstance(v, str), {"python": lambda v, parent, **_: parent.ld_proc.compact_iri(parent.active_ctx, v)}),
39+
40+
# Convert internal data types to expanded_json
41+
(ld_container.is_json_id, {"expanded_json": lambda c, **_: [c]}),
42+
(ld_container.is_ld_id, {"expanded_json": lambda c, **_: c}),
43+
(ld_container.is_json_value, {"expanded_json": lambda c, **_: [c]}),
44+
(ld_container.is_ld_value, {"expanded_json": lambda c, **_: c}),
45+
(ld_dict.is_json_dict, {"expanded_json": lambda c, **kw: ld_dict.from_dict(c, **kw).ld_value}),
46+
(
47+
ld_list.is_container,
48+
{"expanded_json": lambda c, **kw: ld_list.from_list(ld_list.get_item_list_from_container(c), **kw).ld_value}
49+
),
50+
(
51+
ld_list.is_ld_list,
52+
{"expanded_json": lambda c, **kw: ld_list.from_list(ld_list.get_item_list_from_container(c[0]), **kw).ld_value}
53+
),
54+
(lambda c: isinstance(c, list), {"expanded_json": lambda c, **kw: ld_list.from_list(c, **kw).ld_value}),
55+
(lambda v: isinstance(v, (int, float, str, bool)), {"expanded_json": lambda v, **_: [{"@value": v}]}),
56+
(
57+
lambda v: isinstance(v, datetime),
58+
{"expanded_json": lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:DateTime"]}]}
59+
),
60+
(
61+
lambda v: isinstance(v, date),
62+
{"expanded_json": lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Date"]}]}
63+
),
64+
(
65+
lambda v: isinstance(v, time),
66+
{"expanded_json": lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Time"]}]}
67+
),
7368
]
7469

7570

0 commit comments

Comments
 (0)