oarepo-runtime 1.5.69__py3-none-any.whl → 1.5.70__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
File without changes
@@ -0,0 +1,14 @@
1
+ from invenio_records_resources.services.base.config import ServiceConfig
2
+
3
+ from ..results import ArrayRecordItem, ArrayRecordList
4
+ from .schema import KeywordEntitySchema
5
+
6
+
7
+ class EntityServiceConfig(ServiceConfig):
8
+ links_item = {}
9
+ result_item_cls = ArrayRecordItem
10
+ result_list_cls = ArrayRecordList
11
+
12
+
13
+ class KeywordEntityServiceConfig(EntityServiceConfig):
14
+ schema = KeywordEntitySchema
@@ -0,0 +1,9 @@
1
+ from marshmallow import Schema, fields
2
+
3
+
4
+ #
5
+ # The default record schema
6
+ #
7
+ class KeywordEntitySchema(Schema):
8
+ keyword = fields.Str()
9
+ id = fields.Str()
@@ -0,0 +1,48 @@
1
+ import abc
2
+ from typing import Iterable
3
+
4
+ from invenio_records_resources.services.base.links import LinksTemplate
5
+ from invenio_records_resources.services.base.service import Service
6
+ from invenio_records_resources.services.records.schema import ServiceSchemaWrapper
7
+
8
+
9
+ class EntityService(Service):
10
+ @property
11
+ def links_item_tpl(self):
12
+ """Item links template."""
13
+ return LinksTemplate(
14
+ self.config.links_item,
15
+ )
16
+
17
+ @property
18
+ def schema(self):
19
+ """Returns the data schema instance."""
20
+ return ServiceSchemaWrapper(self, schema=self.config.schema)
21
+
22
+ @abc.abstractmethod
23
+ def read(self, identity, id_, **kwargs):
24
+ raise NotImplementedError()
25
+
26
+ @abc.abstractmethod
27
+ def read_many(self, identity, ids: Iterable[str], fields=None, **kwargs):
28
+ raise NotImplementedError()
29
+
30
+
31
+ class KeywordEntityService(EntityService):
32
+
33
+ def read(self, identity, id_, **kwargs):
34
+ result = {"keyword": self.config.keyword, "id": id_}
35
+ return self.result_item(
36
+ self, identity, record=result, links_tpl=self.links_item_tpl
37
+ )
38
+
39
+ def read_many(self, identity, ids: Iterable[str], fields=None, **kwargs):
40
+ if not ids:
41
+ return []
42
+ results = [{"keyword": self.config.keyword, "id": id} for id in ids]
43
+ return self.result_list(
44
+ self,
45
+ identity,
46
+ results=results,
47
+ links_item_tpl=self.links_item_tpl,
48
+ )
@@ -88,3 +88,53 @@ class RecordList(BaseRecordList):
88
88
  expand=self._expand,
89
89
  )
90
90
  yield projection
91
+
92
+
93
+ class ArrayRecordItem(RecordItem):
94
+ """Single record result."""
95
+
96
+ @property
97
+ def id(self):
98
+ """Get the record id."""
99
+ return self._record["id"]
100
+
101
+
102
+ class ArrayRecordList(RecordList):
103
+ # move to runtime
104
+
105
+ @property
106
+ def total(self):
107
+ """Get total number of hits."""
108
+ return len(self._results)
109
+
110
+ @property
111
+ def aggregations(self):
112
+ """Get the search result aggregations."""
113
+ return None
114
+
115
+ @property
116
+ def hits(self):
117
+ """Iterator over the hits."""
118
+ for hit in self._results:
119
+ # Project the record
120
+ projection = self._schema.dump(
121
+ hit,
122
+ context=dict(
123
+ identity=self._identity,
124
+ record=hit,
125
+ ),
126
+ )
127
+ if self._links_item_tpl:
128
+ projection["links"] = self._links_item_tpl.expand(self._identity, hit)
129
+ if self._nested_links_item:
130
+ for link in self._nested_links_item:
131
+ link.expand(self._identity, hit, projection)
132
+
133
+ for c in self.components:
134
+ c.update_data(
135
+ identity=self._identity,
136
+ record=hit,
137
+ projection=projection,
138
+ expand=self._expand,
139
+ )
140
+ yield projection
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.69
3
+ Version: 1.5.70
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -73,13 +73,17 @@ oarepo_runtime/resources/localized_ui_json_serializer.py,sha256=3V9cJaG_e1PMXKVX
73
73
  oarepo_runtime/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  oarepo_runtime/services/components.py,sha256=zaZroTqzV5fz8yVAtRFLbbkTT9iD_dx9jFYANm3JIfI,3285
75
75
  oarepo_runtime/services/generators.py,sha256=j87HitHA_w2awsz0C5IAAJ0qjg9JMtvdO3dvh6FQyfg,250
76
- oarepo_runtime/services/results.py,sha256=gPmQ7DzX4da5zuvqQE7u-AUn_Yvz-YHt8W8DaxPbQ-M,2706
76
+ oarepo_runtime/services/results.py,sha256=_Din6CxQH7E5TP0TVZjIXJb2vyJRL_o_97jkUQo-GOc,4062
77
77
  oarepo_runtime/services/search.py,sha256=9xGTN5Yg6eTdptQ9qjO_umbacf9ooMuHYGXWYfla4-M,6227
78
78
  oarepo_runtime/services/config/__init__.py,sha256=dtlD84pJ6xI77UF22IPrCOt7tHD3g5DAEDApUdjDVFE,406
79
79
  oarepo_runtime/services/config/permissions_presets.py,sha256=zApeA-2DYAlD--SzVz3vq_OFjq48Ko0pe08e4o2vxr4,6114
80
80
  oarepo_runtime/services/config/service.py,sha256=s-dVbGkLICpsce6jgu7b5kzYFz9opWjSQFDBgbIhKio,4002
81
81
  oarepo_runtime/services/custom_fields/__init__.py,sha256=_gqMcA_I3rdEZcBtCuDjO4wdVCqFML5NzaccuPx5a3o,2565
82
82
  oarepo_runtime/services/custom_fields/mappings.py,sha256=tg9CAdxGOkd_n6RB5Z2_wSwo_A0wqEey8RMcZ79AHo0,6906
83
+ oarepo_runtime/services/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ oarepo_runtime/services/entity/config.py,sha256=1jfdPrxSbMuKj7eOUNKRWTCPbBPyRV6MrWE4Vgf9rX0,399
85
+ oarepo_runtime/services/entity/schema.py,sha256=8TBpUFRITaBO7qCMz36cly1Hj4I1nLa9PeSAfWSa2YM,157
86
+ oarepo_runtime/services/entity/service.py,sha256=Y8QJ4sWZpX89IKTyo90pJlRfEN-iWg9tFN_5_RGMiaQ,1475
83
87
  oarepo_runtime/services/expansions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
88
  oarepo_runtime/services/expansions/expandable_fields.py,sha256=7DWKFL6ml8J7zGI6wm9LO7Xd6R0LSylsuq4lyRumNHQ,745
85
89
  oarepo_runtime/services/expansions/service.py,sha256=HaEy76XOhDf__sQ91hi-8iH1hthM9q07pRhOmyZyVrs,144
@@ -126,9 +130,9 @@ tests/marshmallow_to_json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
126
130
  tests/marshmallow_to_json/test_datacite_ui_schema.py,sha256=82iLj8nW45lZOUewpWbLX3mpSkpa9lxo-vK-Qtv_1bU,48552
127
131
  tests/marshmallow_to_json/test_simple_schema.py,sha256=izZN9p0v6kovtSZ6AdxBYmK_c6ZOti2_z_wPT_zXIr0,1500
128
132
  tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
- oarepo_runtime-1.5.69.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
130
- oarepo_runtime-1.5.69.dist-info/METADATA,sha256=ranFL-8dQ8SoPzHNr8aFnYsGttb6i68bMA0ySqFjBmk,4720
131
- oarepo_runtime-1.5.69.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
132
- oarepo_runtime-1.5.69.dist-info/entry_points.txt,sha256=0cschM0RHc6UJ1uudhu4EP0hrVStPGpgMO-XEDGRtY4,430
133
- oarepo_runtime-1.5.69.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
134
- oarepo_runtime-1.5.69.dist-info/RECORD,,
133
+ oarepo_runtime-1.5.70.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
134
+ oarepo_runtime-1.5.70.dist-info/METADATA,sha256=cTigl40zh7RbRJmxmOuElSMoWYL8OaKTlTfqgVTjVtY,4720
135
+ oarepo_runtime-1.5.70.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
136
+ oarepo_runtime-1.5.70.dist-info/entry_points.txt,sha256=0cschM0RHc6UJ1uudhu4EP0hrVStPGpgMO-XEDGRtY4,430
137
+ oarepo_runtime-1.5.70.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
138
+ oarepo_runtime-1.5.70.dist-info/RECORD,,