nucliadb 6.3.4.post3675__py3-none-any.whl → 6.3.4.post3686__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.
@@ -0,0 +1,73 @@
1
+ # Copyright (C) 2021 Bosutech XXI S.L.
2
+ #
3
+ # nucliadb is offered under the AGPL v3.0 and as commercial software.
4
+ # For commercial licensing, contact us at info@nuclia.com.
5
+ #
6
+ # AGPL:
7
+ # This program is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU Affero General Public License as
9
+ # published by the Free Software Foundation, either version 3 of the
10
+ # License, or (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU Affero General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Affero General Public License
18
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
19
+ #
20
+
21
+ """Migration #32
22
+
23
+ Remove the old resource relations keys from maindb. It has been moved to user_relations which
24
+ is stored in object storage.
25
+
26
+ """
27
+
28
+ import logging
29
+ from typing import Optional
30
+
31
+ from nucliadb.migrator.context import ExecutionContext
32
+
33
+ logger = logging.getLogger(__name__)
34
+
35
+
36
+ async def migrate(context: ExecutionContext) -> None:
37
+ start: Optional[str] = ""
38
+ while True:
39
+ if start is None:
40
+ break
41
+ start = await do_batch(context, start)
42
+
43
+
44
+ async def migrate_kb(context: ExecutionContext, kbid: str) -> None:
45
+ pass
46
+
47
+
48
+ async def do_batch(context: ExecutionContext, start: str) -> Optional[str]:
49
+ logger.info(f"Running batch from {start}")
50
+ async with context.kv_driver.transaction(read_only=False) as txn:
51
+ async with txn.connection.cursor() as cur: # type: ignore
52
+ # Retrieve a batch of fields
53
+ await cur.execute(
54
+ """
55
+ SELECT key FROM resources
56
+ WHERE key ~ '^/kbs/[^/]*/r/[^/]*/relations$'
57
+ AND key > %s
58
+ ORDER BY key
59
+ LIMIT 500""",
60
+ (start,),
61
+ )
62
+ records = await cur.fetchall()
63
+ if len(records) == 0:
64
+ return None
65
+
66
+ keys = [r[0] for r in records]
67
+ await cur.execute(
68
+ "DELETE FROM resources WHERE key = ANY (%s)",
69
+ (keys,),
70
+ )
71
+ await txn.commit()
72
+
73
+ return keys[-1]
@@ -41,7 +41,6 @@ KB_RESOURCE_BASIC_FS = "/kbs/{kbid}/r/{uuid}/basic" # Only used on FS driver
41
41
  KB_RESOURCE_ORIGIN = "/kbs/{kbid}/r/{uuid}/origin"
42
42
  KB_RESOURCE_EXTRA = "/kbs/{kbid}/r/{uuid}/extra"
43
43
  KB_RESOURCE_SECURITY = "/kbs/{kbid}/r/{uuid}/security"
44
- KB_RESOURCE_RELATIONS = "/kbs/{kbid}/r/{uuid}/relations"
45
44
 
46
45
  KB_RESOURCE_SLUG_BASE = "/kbs/{kbid}/s/"
47
46
  KB_RESOURCE_SLUG = f"{KB_RESOURCE_SLUG_BASE}{{slug}}"
@@ -187,19 +186,6 @@ async def set_security(txn: Transaction, *, kbid: str, rid: str, security: resou
187
186
  await txn.set(key, security.SerializeToString())
188
187
 
189
188
 
190
- # Relations
191
-
192
-
193
- async def get_relations(txn: Transaction, *, kbid: str, rid: str) -> Optional[resources_pb2.Relations]:
194
- key = KB_RESOURCE_RELATIONS.format(kbid=kbid, uuid=rid)
195
- return await get_kv_pb(txn, key, resources_pb2.Relations)
196
-
197
-
198
- async def set_relations(txn: Transaction, *, kbid: str, rid: str, relations: resources_pb2.Relations):
199
- key = KB_RESOURCE_RELATIONS.format(kbid=kbid, uuid=rid)
200
- await txn.set(key, relations.SerializeToString())
201
-
202
-
203
189
  # KB resource ids (this functions use internal transactions, breaking the
204
190
  # datamanager contract. We should rethink them at some point)
205
191
 
@@ -121,7 +121,6 @@ def user_metadata(message: resources_pb2.UserMetadata) -> UserMetadata:
121
121
  preserving_proto_field_name=True,
122
122
  including_default_value_fields=True,
123
123
  )
124
- value["relations"] = [convert_pb_relation_to_api(rel) for rel in message.relations]
125
124
  return UserMetadata(**value)
126
125
 
127
126
 
@@ -76,7 +76,6 @@ BM_FIELDS = {
76
76
  "field_vectors",
77
77
  "field_large_metadata",
78
78
  "question_answers",
79
- "relations",
80
79
  "field_statuses",
81
80
  ],
82
81
  # These fields are mostly used for internal purposes and they are not part of
@@ -56,6 +56,7 @@ class Conversation(Field[PBConversation]):
56
56
  async def set_value(self, payload: PBConversation):
57
57
  last_page: Optional[PBConversation] = None
58
58
  metadata = await self.get_metadata()
59
+ metadata.extract_strategy = payload.extract_strategy
59
60
  if self._created is False and metadata.pages > 0:
60
61
  try:
61
62
  last_page = await self.db_get_value(page=metadata.pages)
@@ -66,10 +66,10 @@ class _BrokerMessageBuilder:
66
66
  origin = await resource.get_origin()
67
67
  if origin is not None:
68
68
  self.bm.origin.CopyFrom(origin)
69
- relations = await resource.get_relations()
69
+
70
+ relations = await resource.get_user_relations()
70
71
  if relations is not None:
71
- for relation in relations.relations:
72
- self.bm.relations.append(relation)
72
+ self.bm.user_relations.CopyFrom(relations)
73
73
 
74
74
  fields = await resource.get_fields(force=True)
75
75
  for (type_id, field_id), field in fields.items():
@@ -67,7 +67,6 @@ from nucliadb_protos.resources_pb2 import Extra as PBExtra
67
67
  from nucliadb_protos.resources_pb2 import Metadata as PBMetadata
68
68
  from nucliadb_protos.resources_pb2 import Origin as PBOrigin
69
69
  from nucliadb_protos.resources_pb2 import Relations as PBRelations
70
- from nucliadb_protos.utils_pb2 import Relation as PBRelation
71
70
  from nucliadb_protos.writer_pb2 import BrokerMessage
72
71
  from nucliadb_utils.storages.storage import Storage
73
72
 
@@ -284,24 +283,6 @@ class Resource:
284
283
  self.security = payload
285
284
 
286
285
  # Relations
287
- async def get_relations(self) -> Optional[PBRelations]:
288
- if self.relations is None:
289
- relations = await datamanagers.resources.get_relations(
290
- self.txn, kbid=self.kb.kbid, rid=self.uuid
291
- )
292
- self.relations = relations
293
- return self.relations
294
-
295
- async def set_relations(self, payload: list[PBRelation]):
296
- relations = PBRelations()
297
- for relation in payload:
298
- relations.relations.append(relation)
299
- await datamanagers.resources.set_relations(
300
- self.txn, kbid=self.kb.kbid, rid=self.uuid, relations=relations
301
- )
302
- self.modified = True
303
- self.relations = relations
304
-
305
286
  async def get_user_relations(self) -> PBRelations:
306
287
  if self.user_relations is None:
307
288
  sf = self.storage.user_relations(self.kb.kbid, self.uuid)
@@ -536,6 +517,7 @@ class Resource:
536
517
  deleted=message.delete_fields, # type: ignore
537
518
  errors=message.errors, # type: ignore
538
519
  )
520
+ self.modified = True
539
521
 
540
522
  @processor_observer.wrap({"type": "apply_fields_status"})
541
523
  async def apply_fields_status(self, message: BrokerMessage, updated_fields: list[FieldID]):
@@ -593,6 +575,7 @@ class Resource:
593
575
  # status to the default value, which is PROCESSING. This covers the case of new field creation.
594
576
 
595
577
  await field_obj.set_status(status)
578
+ self.modified = True
596
579
 
597
580
  async def update_status(self):
598
581
  field_ids = await self.get_all_field_ids(for_update=False)
@@ -681,14 +664,11 @@ class Resource:
681
664
  for field_large_metadata in message.field_large_metadata:
682
665
  await self._apply_field_large_metadata(field_large_metadata)
683
666
 
684
- for relation in message.relations:
685
- self.indexer.brain.relations.append(relation)
686
- await self.set_relations(message.relations) # type: ignore
687
-
688
667
  # Basic proto may have been modified in some apply functions but we only
689
668
  # want to set it once
690
669
  if self.basic != previous_basic:
691
670
  await self.set_basic(self.basic)
671
+ self.modified = True
692
672
 
693
673
  async def _apply_extracted_text(self, extracted_text: ExtractedTextWrapper):
694
674
  field_obj = await self.get_field(
@@ -698,15 +678,18 @@ class Resource:
698
678
  self._modified_extracted_text.append(
699
679
  extracted_text.field,
700
680
  )
681
+ self.modified = True
701
682
 
702
683
  async def _apply_question_answers(self, question_answers: FieldQuestionAnswerWrapper):
703
684
  field = question_answers.field
704
685
  field_obj = await self.get_field(field.field, field.field_type, load=False)
705
686
  await field_obj.set_question_answers(question_answers)
687
+ self.modified = True
706
688
 
707
689
  async def _delete_question_answers(self, field_id: FieldID):
708
690
  field_obj = await self.get_field(field_id.field, field_id.field_type, load=False)
709
691
  await field_obj.delete_question_answers()
692
+ self.modified = True
710
693
 
711
694
  async def _apply_link_extracted_data(self, link_extracted_data: LinkExtractedData):
712
695
  assert self.basic is not None
@@ -722,6 +705,7 @@ class Resource:
722
705
  maybe_update_basic_icon(self.basic, "application/stf-link")
723
706
 
724
707
  maybe_update_basic_summary(self.basic, link_extracted_data.description)
708
+ self.modified = True
725
709
 
726
710
  async def maybe_update_resource_title_from_link(self, link_extracted_data: LinkExtractedData):
727
711
  """
@@ -736,6 +720,7 @@ class Resource:
736
720
  return
737
721
  title = link_extracted_data.title
738
722
  await self.update_resource_title(title)
723
+ self.modified = True
739
724
 
740
725
  async def update_resource_title(self, computed_title: str) -> None:
741
726
  assert self.basic is not None
@@ -760,6 +745,7 @@ class Resource:
760
745
  fcmw.metadata.metadata.paragraphs.append(paragraph)
761
746
 
762
747
  await field.set_field_metadata(fcmw)
748
+ self.modified = True
763
749
 
764
750
  async def _apply_file_extracted_data(self, file_extracted_data: FileExtractedData):
765
751
  assert self.basic is not None
@@ -772,6 +758,7 @@ class Resource:
772
758
  await field_file.set_file_extracted_data(file_extracted_data)
773
759
  maybe_update_basic_icon(self.basic, file_extracted_data.icon)
774
760
  maybe_update_basic_thumbnail(self.basic, file_extracted_data.file_thumbnail)
761
+ self.modified = True
775
762
 
776
763
  async def _should_update_resource_title_from_file_metadata(self) -> bool:
777
764
  """
@@ -862,6 +849,7 @@ class Resource:
862
849
  maybe_update_basic_thumbnail(self.basic, field_metadata.metadata.metadata.thumbnail)
863
850
 
864
851
  add_field_classifications(self.basic, field_metadata)
852
+ self.modified = True
865
853
 
866
854
  async def _apply_extracted_vectors(
867
855
  self,
@@ -906,6 +894,7 @@ class Resource:
906
894
  vo = await field_obj.set_vectors(
907
895
  field_vectors, vectorset.vectorset_id, vectorset.storage_key_kind
908
896
  )
897
+ self.modified = True
909
898
  if vo is None:
910
899
  raise AttributeError("Vector object not found on set_vectors")
911
900
 
@@ -934,6 +923,7 @@ class Resource:
934
923
  load=False,
935
924
  )
936
925
  await field_obj.set_large_field_metadata(field_large_metadata)
926
+ self.modified = True
937
927
 
938
928
  def generate_field_id(self, field: FieldID) -> str:
939
929
  return f"{FIELD_TYPE_PB_TO_STR[field.field_type]}/{field.field}"
@@ -233,13 +233,6 @@ async def managed_serialize(
233
233
  from_proto.relation(rel) for rel in relations.relations
234
234
  ]
235
235
 
236
- if ResourceProperties.RELATIONS in show:
237
- await orm_resource.get_relations()
238
- if orm_resource.relations is not None:
239
- resource.relations = [
240
- from_proto.relation(relation) for relation in orm_resource.relations.relations
241
- ]
242
-
243
236
  if ResourceProperties.ORIGIN in show:
244
237
  await orm_resource.get_origin()
245
238
  if orm_resource.origin is not None:
@@ -19,7 +19,7 @@
19
19
  #
20
20
 
21
21
 
22
- from nucliadb.common.models_utils.from_proto import RelationNodeTypePbMap
22
+ from nucliadb.common.models_utils.from_proto import RelationNodeTypePbMap, RelationTypePbMap
23
23
  from nucliadb_models.graph import responses as graph_responses
24
24
  from nucliadb_models.graph.responses import (
25
25
  GraphNodesSearchResponse,
@@ -45,6 +45,7 @@ def build_graph_response(results: list[nodereader_pb2.GraphSearchResponse]) -> G
45
45
  ),
46
46
  relation=graph_responses.GraphRelation(
47
47
  label=relation.label,
48
+ type=RelationTypePbMap[relation.relation_type],
48
49
  ),
49
50
  destination=graph_responses.GraphNode(
50
51
  value=destination.value,
@@ -84,6 +85,7 @@ def build_graph_relations_response(
84
85
  relations.append(
85
86
  graph_responses.GraphRelation(
86
87
  label=relation.label,
88
+ type=RelationTypePbMap[relation.relation_type],
87
89
  )
88
90
  )
89
91
  response = GraphRelationsSearchResponse(relations=relations)
@@ -19,7 +19,7 @@
19
19
  #
20
20
 
21
21
 
22
- from nucliadb.common.models_utils.from_proto import RelationNodeTypeMap
22
+ from nucliadb.common.models_utils.from_proto import RelationNodeTypeMap, RelationTypeMap
23
23
  from nucliadb.search.search.query_parser.models import GraphRetrieval
24
24
  from nucliadb_models.graph import requests as graph_requests
25
25
  from nucliadb_protos import nodereader_pb2
@@ -71,9 +71,7 @@ def _parse_path_query(expr: graph_requests.GraphPathQuery) -> nodereader_pb2.Gra
71
71
  _set_node_to_pb(expr.destination, pb.path.destination)
72
72
 
73
73
  if expr.relation is not None:
74
- relation = expr.relation
75
- if relation.label is not None:
76
- pb.path.relation.value = relation.label
74
+ _set_relation_to_pb(expr.relation, pb.path.relation)
77
75
 
78
76
  pb.path.undirected = expr.undirected
79
77
 
@@ -88,8 +86,7 @@ def _parse_path_query(expr: graph_requests.GraphPathQuery) -> nodereader_pb2.Gra
88
86
  pb.path.undirected = True
89
87
 
90
88
  elif isinstance(expr, graph_requests.Relation):
91
- if expr.label is not None:
92
- pb.path.relation.value = expr.label
89
+ _set_relation_to_pb(expr, pb.path.relation)
93
90
 
94
91
  else: # pragma: nocover
95
92
  # This is a trick so mypy generates an error if this branch can be reached,
@@ -142,8 +139,7 @@ def _parse_relation_query(
142
139
  pb.bool_not.CopyFrom(_parse_relation_query(expr.operand))
143
140
 
144
141
  elif isinstance(expr, graph_requests.Relation):
145
- if expr.label is not None:
146
- pb.path.relation.value = expr.label
142
+ _set_relation_to_pb(expr, pb.path.relation)
147
143
 
148
144
  else: # pragma: nocover
149
145
  # This is a trick so mypy generates an error if this branch can be reached,
@@ -172,3 +168,10 @@ def _set_node_to_pb(node: graph_requests.GraphNode, pb: nodereader_pb2.GraphQuer
172
168
 
173
169
  if node.group is not None:
174
170
  pb.node_subtype = node.group
171
+
172
+
173
+ def _set_relation_to_pb(relation: graph_requests.GraphRelation, pb: nodereader_pb2.GraphQuery.Relation):
174
+ if relation.label is not None:
175
+ pb.value = relation.label
176
+ if relation.type is not None:
177
+ pb.relation_type = RelationTypeMap[relation.type]
@@ -484,6 +484,9 @@ async def parse_conversation_field(
484
484
  convs.messages.append(processing_message)
485
485
  field_value.messages.append(cm)
486
486
  convs.classification_labels = classif_labels
487
+ if conversation_field.extract_strategy:
488
+ field_value.extract_strategy = conversation_field.extract_strategy
489
+ convs.extract_strategy = conversation_field.extract_strategy
487
490
  toprocess.conversationfield[key] = convs
488
491
  writer.conversations[key].CopyFrom(field_value)
489
492
  writer.field_statuses.append(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nucliadb
3
- Version: 6.3.4.post3675
3
+ Version: 6.3.4.post3686
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.4.post3675
24
- Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.3.4.post3675
25
- Requires-Dist: nucliadb-protos>=6.3.4.post3675
26
- Requires-Dist: nucliadb-models>=6.3.4.post3675
27
- Requires-Dist: nidx-protos>=6.3.4.post3675
23
+ Requires-Dist: nucliadb-telemetry[all]>=6.3.4.post3686
24
+ Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.3.4.post3686
25
+ Requires-Dist: nucliadb-protos>=6.3.4.post3686
26
+ Requires-Dist: nucliadb-models>=6.3.4.post3686
27
+ Requires-Dist: nidx-protos>=6.3.4.post3686
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
@@ -27,6 +27,7 @@ migrations/0028_extracted_vectors_reference.py,sha256=49DHCIlBpjofU8cYVHTdWv0EBI
27
27
  migrations/0029_backfill_field_status.py,sha256=QWF69n1da9lpRnbEpgbqPjSQ-Wfn6rMC7Enz6bBYGt4,5663
28
28
  migrations/0030_label_deduplication.py,sha256=y14TxtCMi3-TBMz_eZoyyPDHNlZb29taJujlDuHumsA,2008
29
29
  migrations/0031_languages_deduplication.py,sha256=o6va6lP3oTRT1uSzp5MIhHHBFbhCxSZ-oNlXXpiAdUo,2340
30
+ migrations/0032_remove_old_relations.py,sha256=ZaswhmRRsLgw6DVYVdT7cP-gdBf4X3PL9fklUXrmSD0,2318
30
31
  migrations/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
31
32
  migrations/pg/0001_bootstrap.py,sha256=Fsqkeof50m7fKiJN05kmNEMwiKDlOrAgcAS5sLLkutA,1256
32
33
  migrations/pg/0002_catalog.py,sha256=Rsleecu351Ty19kYZgOpqX5G3MEAY8nMxCJrAeuS2Mw,1690
@@ -76,7 +77,7 @@ nucliadb/common/datamanagers/fields.py,sha256=9KqBzTssAT68FR5hd17Xu_CSwAYdKFuYic
76
77
  nucliadb/common/datamanagers/kb.py,sha256=P7EhF4tApIUG2jw_HH1oMufTKG9__kuOLKnrCNGbDM4,6156
77
78
  nucliadb/common/datamanagers/labels.py,sha256=Zm0GQpSPoGXEEysUY7VsDIcyKSIIQsMVphj23IyM9_c,4502
78
79
  nucliadb/common/datamanagers/processing.py,sha256=ByxdZzdbAfJGqC6__mY-zryjk040TyQfcUq3rxujeoY,1587
79
- nucliadb/common/datamanagers/resources.py,sha256=5EJk7P-G4A_YiobiUexz_yuZUTuxS5zqzjMdJN6Sm6k,11297
80
+ nucliadb/common/datamanagers/resources.py,sha256=cuwcVL-GEjS1VHigJtz5SG_dRhl09UADQ9MSYOOqs70,10779
80
81
  nucliadb/common/datamanagers/rollover.py,sha256=c_DE3jtZusNL_9aOVjHOB9PV5OSVg7GJ5J-Ny0goHBE,7833
81
82
  nucliadb/common/datamanagers/search_configurations.py,sha256=O-8eW43CE46GcxO6TB5hpi27NBguv4BL4SI1vLlN8os,2463
82
83
  nucliadb/common/datamanagers/synonyms.py,sha256=zk3GEH38KF5vV_VcuL6DCg-2JwgXJfQl7Io6VPqv2cw,1566
@@ -101,7 +102,7 @@ nucliadb/common/maindb/local.py,sha256=uE9DIQX1yCNHNN8Tx4fPgSiuTtWpQhlfWkMJ8QZPa
101
102
  nucliadb/common/maindb/pg.py,sha256=FNq2clckJYj4Te-1svjQblqGoAF5OwJ5nwz2JtxD0d4,13645
102
103
  nucliadb/common/maindb/utils.py,sha256=zWLs82rWEVhpc1dYvdqTZiAcjZroB6Oo5MQaxMeFuKk,3301
103
104
  nucliadb/common/models_utils/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
104
- nucliadb/common/models_utils/from_proto.py,sha256=d-q6-JWvjVVxtI57itQVKRIY8Hzv-tBhDt-tr4aIKNM,15979
105
+ nucliadb/common/models_utils/from_proto.py,sha256=yYn5vg4SKgB57RKOmeqzfD8VfmjKSSr4UNhw-Vvb4vs,15891
105
106
  nucliadb/common/models_utils/to_proto.py,sha256=97JvOR_3odu50YvzLa2CERfEN3w_QPmAVcCJwJB5m5A,2438
106
107
  nucliadb/export_import/__init__.py,sha256=y-Is0Bxa8TMV6UiOW0deC_D3U465P65CQ5RjBjIWnow,932
107
108
  nucliadb/export_import/datamanager.py,sha256=xL8b0xvk45q6wx1l7J32JgPmpyjnF6fKiJi2F2B_UQY,6968
@@ -110,13 +111,13 @@ nucliadb/export_import/exporter.py,sha256=k2QVx1EjqFlDYiggriWiEJzwtMXzHbldsqWdpG
110
111
  nucliadb/export_import/importer.py,sha256=v5cq9Nn8c2zrY_K_00mydR52f8mdFxR7tLdtNLQ0qvk,4229
111
112
  nucliadb/export_import/models.py,sha256=dbjScNkiMRv4X3Ktudy1JRliD25bfoDTy3JmEZgQSCc,2121
112
113
  nucliadb/export_import/tasks.py,sha256=DWbdqY97ffoyfipelGXz3Jqz1iam6JCjQSh367Fc3NA,2947
113
- nucliadb/export_import/utils.py,sha256=aBBB7p05GfKknpb9LQa8Krtz0LlFoP5NUTiPy7PwPBY,22840
114
+ nucliadb/export_import/utils.py,sha256=9M81mrFV7FyBcWjsq4KrqfLIXFYbt9_vD1mkY31z4gs,22819
114
115
  nucliadb/ingest/__init__.py,sha256=fsw3C38VP50km3R-nHL775LNGPpJ4JxqXJ2Ib1f5SqE,1011
115
116
  nucliadb/ingest/app.py,sha256=TaVgh5B2riFVmcsrbPb7a5YCzmnybjx-NK0BXgTwGAY,7535
116
117
  nucliadb/ingest/partitions.py,sha256=2NIhMYbNT0TNBL6bX1UMSi7vxFGICstCKEqsB0TXHOE,2410
117
118
  nucliadb/ingest/processing.py,sha256=7NNoVxbSwsRdbo5goqVSrUc_QXZRVfOT_jZPzrmbxJQ,22207
118
119
  nucliadb/ingest/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
- nucliadb/ingest/serialize.py,sha256=42zNKu-O6g9EmLnQOXwhfagD76FSmWD6xRf69LrJxfA,16415
120
+ nucliadb/ingest/serialize.py,sha256=-TIjibJTbMqAowzRvyrG3R209vKqBZqXpdrQL9Dq4lo,16135
120
121
  nucliadb/ingest/settings.py,sha256=0B-wQNa8FLqtNcQgRzh-fuIuGptM816XHcbH1NQKfmE,3050
121
122
  nucliadb/ingest/utils.py,sha256=l1myURu3r8oA11dx3GpHw-gNTUc1AFX8xdPm9Lgl2rA,2275
122
123
  nucliadb/ingest/consumer/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
@@ -130,7 +131,7 @@ nucliadb/ingest/consumer/shard_creator.py,sha256=8SotMc-o_G8XZU52gR4Aay7tcigTdIX
130
131
  nucliadb/ingest/consumer/utils.py,sha256=jpX8D4lKzuPCpArQLZeX_Zczq3pfen_zAf8sPJfOEZU,2642
131
132
  nucliadb/ingest/fields/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
132
133
  nucliadb/ingest/fields/base.py,sha256=DTXFu_g9vSU2h7S4PlYxd-hp4SDuM_EPf8y51ALgD8w,21654
133
- nucliadb/ingest/fields/conversation.py,sha256=OcQOHvi72Pm0OyNGwxLo9gONo8f1NhwASq0_gS-E64A,7021
134
+ nucliadb/ingest/fields/conversation.py,sha256=0tVpHLvi3UmuO98puimBJUpPXv3qEOpqlWVXVYvz9Vw,7082
134
135
  nucliadb/ingest/fields/exceptions.py,sha256=2Cpntta3gNOnmGUdOe5ZMzP7k_308do14kaHVBPVCXs,1168
135
136
  nucliadb/ingest/fields/file.py,sha256=1v4jLg3balUua2VmSV8hHkAwPFShTUCOzufZvIUQcQw,4740
136
137
  nucliadb/ingest/fields/generic.py,sha256=elgtqv15aJUq3zY7X_g0bli_2BpcwPArVvzhe54Y4Ig,1547
@@ -138,12 +139,12 @@ nucliadb/ingest/fields/link.py,sha256=kN_gjRUEEj5cy8K_BwPijYg3TiWhedc24apXYlTbRJ
138
139
  nucliadb/ingest/fields/text.py,sha256=tFvSQJAe0W7ePpp2_WDfLiE2yglR1OTU0Zht9acvOFw,1594
139
140
  nucliadb/ingest/orm/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
140
141
  nucliadb/ingest/orm/brain.py,sha256=JwHRneyE2sAo6PwYJnnyUMXKiGBWXLv4JI_aemodB3U,28479
141
- nucliadb/ingest/orm/broker_message.py,sha256=vFDdfo_kz_GRai2MGq_3qKRynRXOGR7lawogNx6ZsfA,7553
142
+ nucliadb/ingest/orm/broker_message.py,sha256=XWaiZgDOz94NPOPT-hqbRr5ZkpVimUw6PjUJNftfoVw,7514
142
143
  nucliadb/ingest/orm/entities.py,sha256=3_n6lKhBy2GsdmNmkh0_mvxP8md20OZsbtTNEmfJ8Hg,14888
143
144
  nucliadb/ingest/orm/exceptions.py,sha256=k4Esv4NtL4TrGTcsQpwrSfDhPQpiYcRbB1SpYmBX5MY,1432
144
145
  nucliadb/ingest/orm/knowledgebox.py,sha256=IGOPvBR1qXqDxE5DeiOdYCLdPgjzOVVpsASJ2zYvWwQ,23651
145
146
  nucliadb/ingest/orm/metrics.py,sha256=OkwMSPKLZcKba0ZTwtTiIxwBgaLMX5ydhGieKvi2y7E,1096
146
- nucliadb/ingest/orm/resource.py,sha256=waSV2GWJ_o9gzBObY8JNCR5mVJmWCJ1oQOGUsY1AVTQ,45489
147
+ nucliadb/ingest/orm/resource.py,sha256=tukAbD32HrRbVa_Ppo9H2YaYQyq659BzOQ45643sp7E,44964
147
148
  nucliadb/ingest/orm/utils.py,sha256=vCe_9UxHu26JDFGLwQ0wH-XyzJIpQCTK-Ow9dtZR5Vg,2716
148
149
  nucliadb/ingest/orm/processor/__init__.py,sha256=Aqd9wCNTvggkMkCY3WvoI8spdr94Jnqk-0iq9XpLs18,922
149
150
  nucliadb/ingest/orm/processor/auditing.py,sha256=TeYhXGJRyQ7ROytbb2u8R0fIh_FYi3HgTu3S1ribY3U,4623
@@ -226,7 +227,7 @@ nucliadb/search/search/fetch.py,sha256=XJHIFnZmXM_8Kb37lb4lg1GYG7cZ1plT-qAIb_Qzi
226
227
  nucliadb/search/search/filters.py,sha256=1MkHlJjAQqoRCj7e5cEzK2HvBxGLE17I_omsjiklbtw,6476
227
228
  nucliadb/search/search/find.py,sha256=p7Odx3hjPwTsHEhQrVYsR_ufq0meMmCnQV0YihfOmlg,10237
228
229
  nucliadb/search/search/find_merge.py,sha256=3FnzKFEnVemg6FO_6zveulbAU7klvsiPEBvLrpBBMg8,17450
229
- nucliadb/search/search/graph_merge.py,sha256=7LzzU09HCFu6wm3LfgJ3Lm6Uuh_qPDmM2tWZS-fHmw8,3250
230
+ nucliadb/search/search/graph_merge.py,sha256=OiUNiXOWwrUVKqStuRcoUJwvDbDYamqIgiAy_FwPdMI,3405
230
231
  nucliadb/search/search/graph_strategy.py,sha256=gisL2GpbSIa_SucyOwEt7TWdqURyAQqxvD_-PkXQct8,32339
231
232
  nucliadb/search/search/hydrator.py,sha256=-R37gCrGxkyaiHQalnTWHNG_FCx11Zucd7qA1vQCxuw,6985
232
233
  nucliadb/search/search/ingestion_agents.py,sha256=NeJr4EEX-bvFFMGvXOOwLv8uU7NuQ-ntJnnrhnKfMzY,3174
@@ -256,7 +257,7 @@ nucliadb/search/search/query_parser/old_filters.py,sha256=-zbfN-RsXoj_DRjh3Lfp-w
256
257
  nucliadb/search/search/query_parser/parsers/__init__.py,sha256=ySCNSdbesLXGZyR88919njulA6UE10_3PhqMG_Yj1o4,1034
257
258
  nucliadb/search/search/query_parser/parsers/catalog.py,sha256=XdBiTweGTQkj8m_V_i2xbwp7P5pPO8K1Tud692XKhMw,7149
258
259
  nucliadb/search/search/query_parser/parsers/find.py,sha256=q3wH_i0DGceeKckYEH3c5MqM5EvRiMCL7r-6nCAId9Q,4666
259
- nucliadb/search/search/query_parser/parsers/graph.py,sha256=stD17_cXhLagJgNZu4Vqk0YJTU15BVSANHrB4sX2qCQ,6244
260
+ nucliadb/search/search/query_parser/parsers/graph.py,sha256=fdzKzwnwhSkMXgt8bKXsvBFR8zWjb12lKAgtPzGr37c,6396
260
261
  nucliadb/standalone/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
261
262
  nucliadb/standalone/api_router.py,sha256=hgq9FXpihzgjHkwcVGfGCSwyXy67fqXTfLFHuINzIi0,5567
262
263
  nucliadb/standalone/app.py,sha256=mAApNK_iVsQgJyd-mtwCeZq5csSimwnXmlQGH9a70pE,5586
@@ -341,7 +342,7 @@ nucliadb/writer/api/v1/vectorsets.py,sha256=mESaXkkI9f-jWWMW61ZZgv7E5YWXKemyc6vw
341
342
  nucliadb/writer/resource/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
342
343
  nucliadb/writer/resource/audit.py,sha256=FvxMZPzrNHtd31HgpZEvxzwAkbxJTZRhPLqRYYJi3tA,1426
343
344
  nucliadb/writer/resource/basic.py,sha256=_zdAr110C7rtEzOKoBRMzPjAnQ0pAtRfGjB8qCzodvI,11767
344
- nucliadb/writer/resource/field.py,sha256=qnj31lM9F0AFlj3QhPcPj90vHg7SMbbYW098fMtYt9o,20053
345
+ nucliadb/writer/resource/field.py,sha256=e5QGkR5ZDT1VUQgMXK7v6GGXJ2eek6jxGA0nPqjq_g4,20241
345
346
  nucliadb/writer/resource/origin.py,sha256=pvhUDdU0mlWPUcpoQi4LDUJaRtfjzVVrA8XcGVI_N8k,2021
346
347
  nucliadb/writer/tus/__init__.py,sha256=huWpKnDnjsrKlBBJk30ta5vamlA-4x0TbPs_2Up8hyM,5443
347
348
  nucliadb/writer/tus/azure.py,sha256=XhWAlWTM0vmXcXtuEPYjjeEhuZjiZXZu8q9WsJ7omFE,4107
@@ -352,8 +353,8 @@ nucliadb/writer/tus/local.py,sha256=7jYa_w9b-N90jWgN2sQKkNcomqn6JMVBOVeDOVYJHto,
352
353
  nucliadb/writer/tus/s3.py,sha256=vF0NkFTXiXhXq3bCVXXVV-ED38ECVoUeeYViP8uMqcU,8357
353
354
  nucliadb/writer/tus/storage.py,sha256=ToqwjoYnjI4oIcwzkhha_MPxi-k4Jk3Lt55zRwaC1SM,2903
354
355
  nucliadb/writer/tus/utils.py,sha256=MSdVbRsRSZVdkaum69_0wku7X3p5wlZf4nr6E0GMKbw,2556
355
- nucliadb-6.3.4.post3675.dist-info/METADATA,sha256=WfRjwWmeEZALPK3kwAm8Yh2VuYhd3KvyxNzEcrs5IWs,4291
356
- nucliadb-6.3.4.post3675.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
357
- nucliadb-6.3.4.post3675.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
358
- nucliadb-6.3.4.post3675.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
359
- nucliadb-6.3.4.post3675.dist-info/RECORD,,
356
+ nucliadb-6.3.4.post3686.dist-info/METADATA,sha256=cSrjjD1x_Ca774OeHXlnYuqpXYq9WX3NdCCRGvCREzc,4291
357
+ nucliadb-6.3.4.post3686.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
358
+ nucliadb-6.3.4.post3686.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
359
+ nucliadb-6.3.4.post3686.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
360
+ nucliadb-6.3.4.post3686.dist-info/RECORD,,