nucliadb 6.3.1.post3560__py3-none-any.whl → 6.3.1.post3570__py3-none-any.whl

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.
@@ -45,6 +45,7 @@ from nucliadb_protos.resources_pb2 import (
45
45
  Metadata,
46
46
  Origin,
47
47
  Paragraph,
48
+ Relations,
48
49
  UserFieldMetadata,
49
50
  UserMetadata,
50
51
  )
@@ -375,10 +376,10 @@ class ResourceBrain:
375
376
  return "EMPTY"
376
377
  return METADATA_STATUS_PB_TYPE_TO_NAME_MAP[metadata.status]
377
378
 
378
- def set_resource_metadata(self, basic: Basic, origin: Optional[Origin]):
379
+ def set_resource_metadata(self, basic: Basic, origin: Optional[Origin], user_relations: Relations):
379
380
  self._set_resource_dates(basic, origin)
380
381
  self._set_resource_labels(basic, origin)
381
- self._set_resource_relations(basic, origin)
382
+ self._set_resource_relations(basic, origin, user_relations)
382
383
 
383
384
  def _set_resource_dates(self, basic: Basic, origin: Optional[Origin]):
384
385
  if basic.created.seconds > 0:
@@ -401,7 +402,7 @@ class ResourceBrain:
401
402
  if origin.HasField("modified") and origin.modified.seconds > 0:
402
403
  self.brain.metadata.modified.CopyFrom(origin.modified)
403
404
 
404
- def _set_resource_relations(self, basic: Basic, origin: Optional[Origin]):
405
+ def _set_resource_relations(self, basic: Basic, origin: Optional[Origin], user_relations: Relations):
405
406
  relationnodedocument = RelationNode(value=self.rid, ntype=RelationNode.NodeType.RESOURCE)
406
407
  if origin is not None:
407
408
  # origin contributors
@@ -430,7 +431,7 @@ class ResourceBrain:
430
431
  )
431
432
 
432
433
  # relations
433
- self.brain.relations.extend(basic.usermetadata.relations)
434
+ self.brain.relations.extend(user_relations.relations)
434
435
 
435
436
  def _set_resource_labels(self, basic: Basic, origin: Optional[Origin]):
436
437
  if origin is not None:
@@ -577,6 +577,9 @@ class Processor:
577
577
  if message.HasField("security"):
578
578
  await resource.set_security(message.security)
579
579
 
580
+ if message.HasField("user_relations"):
581
+ await resource.set_user_relations(message.user_relations)
582
+
580
583
  await resource.apply_fields(message)
581
584
  await resource.apply_extracted(message)
582
585
 
@@ -129,6 +129,7 @@ class Resource:
129
129
  self.basic = basic
130
130
  self.disable_vectors = disable_vectors
131
131
  self._previous_status: Optional[Metadata.Status.ValueType] = None
132
+ self.user_relations: Optional[PBRelations] = None
132
133
 
133
134
  @property
134
135
  def indexer(self) -> ResourceBrain:
@@ -301,6 +302,23 @@ class Resource:
301
302
  self.modified = True
302
303
  self.relations = relations
303
304
 
305
+ async def get_user_relations(self) -> PBRelations:
306
+ if self.user_relations is None:
307
+ sf = self.storage.user_relations(self.kb.kbid, self.uuid)
308
+ relations = await self.storage.download_pb(sf, PBRelations)
309
+ if relations is None:
310
+ # Key not found = no relations
311
+ self.user_relations = PBRelations()
312
+ else:
313
+ self.user_relations = relations
314
+ return self.user_relations
315
+
316
+ async def set_user_relations(self, payload: PBRelations):
317
+ sf = self.storage.user_relations(self.kb.kbid, self.uuid)
318
+ await self.storage.upload_pb(sf, payload)
319
+ self.modified = True
320
+ self.user_relations = payload
321
+
304
322
  @processor_observer.wrap({"type": "generate_index_message"})
305
323
  async def generate_index_message(self, reindex: bool = False) -> ResourceBrain:
306
324
  brain = ResourceBrain(rid=self.uuid)
@@ -930,11 +948,12 @@ class Resource:
930
948
  async def compute_global_tags(self, brain: ResourceBrain):
931
949
  origin = await self.get_origin()
932
950
  basic = await self.get_basic()
951
+ user_relations = await self.get_user_relations()
933
952
  if basic is None:
934
953
  raise KeyError("Resource not found")
935
954
 
936
955
  brain.set_processing_status(basic=basic, previous_status=self._previous_status)
937
- brain.set_resource_metadata(basic=basic, origin=origin)
956
+ brain.set_resource_metadata(basic=basic, origin=origin, user_relations=user_relations)
938
957
  for type, field in await self.get_fields_ids(force=True):
939
958
  fieldobj = await self.get_field(field, type, load=False)
940
959
  fieldid = FieldID(field_type=type, field=field)
@@ -227,6 +227,12 @@ async def managed_serialize(
227
227
  )
228
228
  resource.queue = QueueType[orm_resource.basic.QueueType.Name(orm_resource.basic.queue)]
229
229
 
230
+ if ResourceProperties.RELATIONS in show:
231
+ relations = await orm_resource.get_user_relations()
232
+ resource.usermetadata.relations = [
233
+ from_proto.relation(rel) for rel in relations.relations
234
+ ]
235
+
230
236
  if ResourceProperties.RELATIONS in show:
231
237
  await orm_resource.get_relations()
232
238
  if orm_resource.relations is not None:
@@ -195,8 +195,8 @@ def parse_basic_modify(bm: BrokerMessage, item: ComingResourcePayload, toprocess
195
195
 
196
196
  # protobuferrs repeated fields don't support assignment so
197
197
  # in order to replace relations, we need to clear them first
198
- bm.basic.usermetadata.ClearField("relations")
199
- bm.basic.usermetadata.relations.extend(relations)
198
+ bm.user_relations.ClearField("relations")
199
+ bm.user_relations.relations.extend(relations)
200
200
 
201
201
  if item.security is not None:
202
202
  unique_groups = list(set(item.security.access_groups))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nucliadb
3
- Version: 6.3.1.post3560
3
+ Version: 6.3.1.post3570
4
4
  Summary: NucliaDB
5
5
  Author-email: Nuclia <nucliadb@nuclia.com>
6
6
  License: AGPL
@@ -20,11 +20,11 @@ Classifier: Programming Language :: Python :: 3.12
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
21
  Requires-Python: <4,>=3.9
22
22
  Description-Content-Type: text/markdown
23
- Requires-Dist: nucliadb-telemetry[all]>=6.3.1.post3560
24
- Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.3.1.post3560
25
- Requires-Dist: nucliadb-protos>=6.3.1.post3560
26
- Requires-Dist: nucliadb-models>=6.3.1.post3560
27
- Requires-Dist: nidx-protos>=6.3.1.post3560
23
+ Requires-Dist: nucliadb-telemetry[all]>=6.3.1.post3570
24
+ Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.3.1.post3570
25
+ Requires-Dist: nucliadb-protos>=6.3.1.post3570
26
+ Requires-Dist: nucliadb-models>=6.3.1.post3570
27
+ Requires-Dist: nidx-protos>=6.3.1.post3570
28
28
  Requires-Dist: nucliadb-admin-assets>=1.0.0.post1224
29
29
  Requires-Dist: nuclia-models>=0.24.2
30
30
  Requires-Dist: uvicorn
@@ -115,7 +115,7 @@ nucliadb/ingest/app.py,sha256=rX1KE5vsAzG9hlArBk8WE2SOlvdYylcb-jNkMQNPJdQ,7407
115
115
  nucliadb/ingest/partitions.py,sha256=2NIhMYbNT0TNBL6bX1UMSi7vxFGICstCKEqsB0TXHOE,2410
116
116
  nucliadb/ingest/processing.py,sha256=8OggvuxNzktTTKDTUwsIuazhDParEWhn46CBZaMYAy8,20659
117
117
  nucliadb/ingest/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
- nucliadb/ingest/serialize.py,sha256=pTXpfoADsKax2gF5Xw5XAmn0ygRGxSC9vETv9y8xVH0,16147
118
+ nucliadb/ingest/serialize.py,sha256=42zNKu-O6g9EmLnQOXwhfagD76FSmWD6xRf69LrJxfA,16415
119
119
  nucliadb/ingest/settings.py,sha256=0B-wQNa8FLqtNcQgRzh-fuIuGptM816XHcbH1NQKfmE,3050
120
120
  nucliadb/ingest/utils.py,sha256=l1myURu3r8oA11dx3GpHw-gNTUc1AFX8xdPm9Lgl2rA,2275
121
121
  nucliadb/ingest/consumer/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
@@ -136,19 +136,19 @@ nucliadb/ingest/fields/generic.py,sha256=elgtqv15aJUq3zY7X_g0bli_2BpcwPArVvzhe54
136
136
  nucliadb/ingest/fields/link.py,sha256=kN_gjRUEEj5cy8K_BwPijYg3TiWhedc24apXYlTbRJs,4172
137
137
  nucliadb/ingest/fields/text.py,sha256=tFvSQJAe0W7ePpp2_WDfLiE2yglR1OTU0Zht9acvOFw,1594
138
138
  nucliadb/ingest/orm/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
139
- nucliadb/ingest/orm/brain.py,sha256=UND5EsNUdd7XdjScYqRqg4r_xCx3l-My8alGw5M9CWg,28398
139
+ nucliadb/ingest/orm/brain.py,sha256=JwHRneyE2sAo6PwYJnnyUMXKiGBWXLv4JI_aemodB3U,28479
140
140
  nucliadb/ingest/orm/broker_message.py,sha256=ZEMueoGuuRKO4tHgzc0P0AM1Ls1TTYey_4UvRQf0BpY,6915
141
141
  nucliadb/ingest/orm/entities.py,sha256=3_n6lKhBy2GsdmNmkh0_mvxP8md20OZsbtTNEmfJ8Hg,14888
142
142
  nucliadb/ingest/orm/exceptions.py,sha256=k4Esv4NtL4TrGTcsQpwrSfDhPQpiYcRbB1SpYmBX5MY,1432
143
143
  nucliadb/ingest/orm/knowledgebox.py,sha256=IGOPvBR1qXqDxE5DeiOdYCLdPgjzOVVpsASJ2zYvWwQ,23651
144
144
  nucliadb/ingest/orm/metrics.py,sha256=OkwMSPKLZcKba0ZTwtTiIxwBgaLMX5ydhGieKvi2y7E,1096
145
- nucliadb/ingest/orm/resource.py,sha256=t2raRJpkJb5O8K4UhQdfyHx2e4JagcHS0eZqHV-a0io,44625
145
+ nucliadb/ingest/orm/resource.py,sha256=waSV2GWJ_o9gzBObY8JNCR5mVJmWCJ1oQOGUsY1AVTQ,45489
146
146
  nucliadb/ingest/orm/utils.py,sha256=vCe_9UxHu26JDFGLwQ0wH-XyzJIpQCTK-Ow9dtZR5Vg,2716
147
147
  nucliadb/ingest/orm/processor/__init__.py,sha256=Aqd9wCNTvggkMkCY3WvoI8spdr94Jnqk-0iq9XpLs18,922
148
148
  nucliadb/ingest/orm/processor/auditing.py,sha256=TeYhXGJRyQ7ROytbb2u8R0fIh_FYi3HgTu3S1ribY3U,4623
149
149
  nucliadb/ingest/orm/processor/data_augmentation.py,sha256=HpSU9olDHcTfECDYCsmm4yA-Hu0mBrd_zTtx50XDGFE,5164
150
150
  nucliadb/ingest/orm/processor/pgcatalog.py,sha256=f32PIEXWktWzGDws6Ffife37OAfrseP5IOti_Cb4ir8,3012
151
- nucliadb/ingest/orm/processor/processor.py,sha256=oaiZ9HUszhUbvNMCmDq5Xj_jtXiCDjMEyw2GqqQxFdY,31550
151
+ nucliadb/ingest/orm/processor/processor.py,sha256=wjZmfJumypdGoKVB0BEJ51ha3xNRs1CzDZbFGj7z4_8,31668
152
152
  nucliadb/ingest/orm/processor/sequence_manager.py,sha256=uqEphtI1Ir_yk9jRl2gPf7BlzzXWovbARY5MNZSBI_8,1704
153
153
  nucliadb/ingest/service/__init__.py,sha256=MME_G_ERxzJR6JW_hfE2qcfXpmpH1kdG-S0a-M0qRm8,2043
154
154
  nucliadb/ingest/service/exceptions.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
@@ -335,7 +335,7 @@ nucliadb/writer/api/v1/upload.py,sha256=VOeqNTrZx1_z8iaKjM7p8fVlVcIYMtnQNK1dm72c
335
335
  nucliadb/writer/api/v1/vectorsets.py,sha256=mESaXkkI9f-jWWMW61ZZgv7E5YWXKemyc6vwT0lFXns,6747
336
336
  nucliadb/writer/resource/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
337
337
  nucliadb/writer/resource/audit.py,sha256=FvxMZPzrNHtd31HgpZEvxzwAkbxJTZRhPLqRYYJi3tA,1426
338
- nucliadb/writer/resource/basic.py,sha256=wo5VDyp9VBekoJaQAbhE7uPFkpB5auAoRnsdrh3Ny3s,11222
338
+ nucliadb/writer/resource/basic.py,sha256=cHhh5hQRHFIoKd-6fEteHuGWW6fGN56ornIWPBuSpHg,11214
339
339
  nucliadb/writer/resource/field.py,sha256=HsOERELyAsb9e0dx2IkSQ9lk0SThALFRcDKCVBw8ifU,15478
340
340
  nucliadb/writer/resource/origin.py,sha256=pvhUDdU0mlWPUcpoQi4LDUJaRtfjzVVrA8XcGVI_N8k,2021
341
341
  nucliadb/writer/tus/__init__.py,sha256=huWpKnDnjsrKlBBJk30ta5vamlA-4x0TbPs_2Up8hyM,5443
@@ -347,8 +347,8 @@ nucliadb/writer/tus/local.py,sha256=7jYa_w9b-N90jWgN2sQKkNcomqn6JMVBOVeDOVYJHto,
347
347
  nucliadb/writer/tus/s3.py,sha256=vF0NkFTXiXhXq3bCVXXVV-ED38ECVoUeeYViP8uMqcU,8357
348
348
  nucliadb/writer/tus/storage.py,sha256=ToqwjoYnjI4oIcwzkhha_MPxi-k4Jk3Lt55zRwaC1SM,2903
349
349
  nucliadb/writer/tus/utils.py,sha256=MSdVbRsRSZVdkaum69_0wku7X3p5wlZf4nr6E0GMKbw,2556
350
- nucliadb-6.3.1.post3560.dist-info/METADATA,sha256=xRmPeYhCFeFqvdPnWCIqn232dIiuJleIE7T6YZqbTPE,4291
351
- nucliadb-6.3.1.post3560.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
352
- nucliadb-6.3.1.post3560.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
353
- nucliadb-6.3.1.post3560.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
354
- nucliadb-6.3.1.post3560.dist-info/RECORD,,
350
+ nucliadb-6.3.1.post3570.dist-info/METADATA,sha256=a5FFqexlq9oEflkrfSYCAW8j3sV62OJnY1LCgPtpbJg,4291
351
+ nucliadb-6.3.1.post3570.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
352
+ nucliadb-6.3.1.post3570.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
353
+ nucliadb-6.3.1.post3570.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
354
+ nucliadb-6.3.1.post3570.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.2)
2
+ Generator: setuptools (76.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5