nucliadb 6.2.1.post3281__py3-none-any.whl → 6.2.1.post3300__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.
@@ -82,14 +82,12 @@ class KBShardManager:
82
82
  kbid: str,
83
83
  aw: Callable[[AbstractIndexNode, str], Awaitable[Any]],
84
84
  timeout: float,
85
- *,
86
- use_read_replica_nodes: bool = False,
87
85
  ) -> list[Any]:
88
86
  shards = await self.get_shards_by_kbid(kbid)
89
87
  ops = []
90
88
 
91
89
  for shard_obj in shards:
92
- node, shard_id = choose_node(shard_obj, use_read_replica_nodes=use_read_replica_nodes)
90
+ node, shard_id = choose_node(shard_obj)
93
91
  if shard_id is None:
94
92
  raise ShardNotFound("Found a node but not a shard")
95
93
 
@@ -280,9 +278,7 @@ class KBShardManager:
280
278
  f"Unable to create vectorset {vectorset_id} in kb {kbid} shard {shard_id}"
281
279
  )
282
280
 
283
- await self.apply_for_all_shards(
284
- kbid, _create_vectorset, timeout=10, use_read_replica_nodes=False
285
- )
281
+ await self.apply_for_all_shards(kbid, _create_vectorset, timeout=10)
286
282
 
287
283
  async def delete_vectorset(self, kbid: str, vectorset_id: str):
288
284
  """Delete a vectorset from all KB shards"""
@@ -294,9 +290,7 @@ class KBShardManager:
294
290
  f"Unable to delete vectorset {vectorset_id} in kb {kbid} shard {shard_id}"
295
291
  )
296
292
 
297
- await self.apply_for_all_shards(
298
- kbid, _delete_vectorset, timeout=10, use_read_replica_nodes=False
299
- )
293
+ await self.apply_for_all_shards(kbid, _delete_vectorset, timeout=10)
300
294
 
301
295
 
302
296
  class StandaloneKBShardManager(KBShardManager):
@@ -370,9 +364,6 @@ class StandaloneKBShardManager(KBShardManager):
370
364
 
371
365
  def choose_node(
372
366
  shard: writer_pb2.ShardObject,
373
- *,
374
- target_shard_replicas: Optional[list[str]] = None,
375
- use_read_replica_nodes: bool = False,
376
367
  ) -> tuple[AbstractIndexNode, str]:
377
368
  fake_node = get_nidx_fake_node()
378
369
  return fake_node, shard.nidx_shard_id
@@ -28,9 +28,7 @@ from nucliadb_protos import nodereader_pb2, noderesources_pb2
28
28
  from nucliadb_telemetry import errors
29
29
  from nucliadb_telemetry.logs import setup_logging
30
30
  from nucliadb_telemetry.utils import setup_telemetry
31
- from nucliadb_utils import const
32
31
  from nucliadb_utils.fastapi.run import serve_metrics
33
- from nucliadb_utils.utilities import has_feature
34
32
 
35
33
  from .settings import settings
36
34
  from .utils import delete_resource_from_shard, index_resource_to_shard, wait_for_node
@@ -163,9 +161,6 @@ async def move_set_of_kb_resources(
163
161
 
164
162
 
165
163
  async def rebalance_kb(context: ApplicationContext, kbid: str) -> None:
166
- if not has_feature(const.Features.REBALANCE_KB, context={"kbid": kbid}):
167
- return
168
-
169
164
  await maybe_add_shard(kbid)
170
165
 
171
166
  shard_paragraphs = await get_shards_paragraphs(kbid)
@@ -42,7 +42,6 @@ from nucliadb_utils.cache.pubsub import PubSubDriver
42
42
  from nucliadb_utils.nats import MessageProgressUpdater, NatsConnectionManager
43
43
  from nucliadb_utils.settings import nats_consumer_settings
44
44
  from nucliadb_utils.storages.storage import Storage
45
- from nucliadb_utils.utilities import has_feature
46
45
 
47
46
  consumer_observer = metrics.Observer(
48
47
  "message_processor",
@@ -89,13 +88,7 @@ class IngestConsumer:
89
88
  self.subscription: Optional[JetStreamContext.PullSubscription] = None
90
89
 
91
90
  async def ack_message(self, msg: Msg, kbid: Optional[str] = None):
92
- context = {}
93
- if kbid:
94
- context["kbid"] = kbid
95
- if has_feature(const.Features.NATS_SYNC_ACK, default=False, context=context):
96
- await msg.ack_sync(timeout=10)
97
- else:
98
- await msg.ack()
91
+ await msg.ack()
99
92
 
100
93
  async def initialize(self):
101
94
  await self.setup_nats_subscription()
@@ -65,12 +65,10 @@ class EntitiesManager:
65
65
  self,
66
66
  knowledgebox: KnowledgeBox,
67
67
  txn: Transaction,
68
- use_read_replica_nodes: bool = False,
69
68
  ):
70
69
  self.kb = knowledgebox
71
70
  self.txn = txn
72
71
  self.kbid = self.kb.kbid
73
- self.use_read_replica_nodes = use_read_replica_nodes
74
72
 
75
73
  async def create_entities_group(self, group: str, entities: EntitiesGroup):
76
74
  if await self.entities_group_exists(group):
@@ -222,7 +220,6 @@ class EntitiesManager:
222
220
  self.kbid,
223
221
  do_entities_search,
224
222
  settings.relation_search_timeout,
225
- use_read_replica_nodes=self.use_read_replica_nodes,
226
223
  )
227
224
 
228
225
  entities = {}
@@ -318,10 +315,7 @@ class EntitiesManager:
318
315
  return {facet.tag.split("/")[-1] for facet in facetresults}
319
316
 
320
317
  results = await shard_manager.apply_for_all_shards(
321
- self.kbid,
322
- query_indexed_entities_group_names,
323
- settings.relation_types_timeout,
324
- use_read_replica_nodes=self.use_read_replica_nodes,
318
+ self.kbid, query_indexed_entities_group_names, settings.relation_types_timeout
325
319
  )
326
320
 
327
321
  if not results:
@@ -69,9 +69,7 @@ from nucliadb_protos.resources_pb2 import Origin as PBOrigin
69
69
  from nucliadb_protos.resources_pb2 import Relations as PBRelations
70
70
  from nucliadb_protos.utils_pb2 import Relation as PBRelation
71
71
  from nucliadb_protos.writer_pb2 import BrokerMessage
72
- from nucliadb_utils import const
73
72
  from nucliadb_utils.storages.storage import Storage
74
- from nucliadb_utils.utilities import has_feature
75
73
 
76
74
  if TYPE_CHECKING: # pragma: no cover
77
75
  from nucliadb.ingest.orm.knowledgebox import KnowledgeBox
@@ -602,12 +600,6 @@ class Resource:
602
600
 
603
601
  @processor_observer.wrap({"type": "apply_extracted"})
604
602
  async def apply_extracted(self, message: BrokerMessage):
605
- if not has_feature(const.Features.FIELD_STATUS):
606
- field_obj: Field
607
- for error in message.errors:
608
- field_obj = await self.get_field(error.field, error.field_type, load=False)
609
- await field_obj.set_error(error)
610
-
611
603
  await self.get_basic()
612
604
  if self.basic is None:
613
605
  raise KeyError("Resource Not Found")
@@ -628,15 +620,9 @@ class Resource:
628
620
 
629
621
  # Update field and resource status depending on processing results
630
622
  await self.apply_fields_status(message, self._modified_extracted_text)
631
- if has_feature(const.Features.FIELD_STATUS):
632
- # Compute resource status based on all fields statuses
633
- await self.update_status()
634
- else:
635
- # Old code path, compute resource status based on the presence of errors in this BrokerMessage
636
- if message.errors:
637
- self.basic.metadata.status = PBMetadata.Status.ERROR
638
- elif message.source is message.MessageSource.PROCESSOR:
639
- self.basic.metadata.status = PBMetadata.Status.PROCESSED
623
+
624
+ # Compute resource status based on all fields statuses
625
+ await self.update_status()
640
626
 
641
627
  extracted_languages = []
642
628
 
@@ -52,8 +52,7 @@ from nucliadb_models.resource import (
52
52
  from nucliadb_models.search import ResourceProperties
53
53
  from nucliadb_models.security import ResourceSecurity
54
54
  from nucliadb_protos.writer_pb2 import FieldStatus
55
- from nucliadb_utils import const
56
- from nucliadb_utils.utilities import get_storage, has_feature
55
+ from nucliadb_utils.utilities import get_storage
57
56
 
58
57
 
59
58
  async def set_resource_field_extracted_data(
@@ -154,32 +153,22 @@ async def serialize_field_errors(
154
153
  TextFieldData, FileFieldData, LinkFieldData, ConversationFieldData, GenericFieldData
155
154
  ],
156
155
  ):
157
- if has_feature(const.Features.FIELD_STATUS):
158
- status = await field.get_status()
159
- if status is None:
160
- status = FieldStatus()
161
- serialized.status = status.Status.Name(status.status)
162
- if status.errors:
163
- serialized.errors = []
164
- for error in status.errors:
165
- serialized.errors.append(
166
- Error(
167
- body=error.source_error.error,
168
- code=error.source_error.code,
169
- code_str=error.source_error.ErrorCode.Name(error.source_error.code),
170
- created=error.created.ToDatetime(),
171
- )
156
+ status = await field.get_status()
157
+ if status is None:
158
+ status = FieldStatus()
159
+ serialized.status = status.Status.Name(status.status)
160
+ if status.errors:
161
+ serialized.errors = []
162
+ for error in status.errors:
163
+ serialized.errors.append(
164
+ Error(
165
+ body=error.source_error.error,
166
+ code=error.source_error.code,
167
+ code_str=error.source_error.ErrorCode.Name(error.source_error.code),
168
+ created=error.created.ToDatetime(),
172
169
  )
173
- serialized.error = serialized.errors[-1]
174
- else:
175
- field_error = await field.get_error()
176
- if field_error is not None:
177
- serialized.error = Error(
178
- body=field_error.error,
179
- code=field_error.code,
180
- code_str=field_error.ErrorCode.Name(field_error.code),
181
- created=None,
182
170
  )
171
+ serialized.error = serialized.errors[-1]
183
172
 
184
173
 
185
174
  async def managed_serialize(
@@ -272,7 +272,7 @@ class WriterServicer(writer_pb2_grpc.WriterServicer):
272
272
  response.status = ListEntitiesGroupsResponse.Status.NOTFOUND
273
273
  return response
274
274
 
275
- entities_manager = EntitiesManager(kbobj, txn, use_read_replica_nodes=True)
275
+ entities_manager = EntitiesManager(kbobj, txn)
276
276
  try:
277
277
  entities_groups = await entities_manager.list_entities_groups()
278
278
  except Exception as e:
@@ -79,7 +79,6 @@ async def catalog_get(
79
79
  sort_order: SortOrder = fastapi_query(SearchParamDefaults.sort_order),
80
80
  page_number: int = fastapi_query(SearchParamDefaults.catalog_page_number),
81
81
  page_size: int = fastapi_query(SearchParamDefaults.catalog_page_size),
82
- shards: list[str] = fastapi_query(SearchParamDefaults.shards, deprecated=True),
83
82
  with_status: Optional[ResourceProcessingStatus] = fastapi_query(
84
83
  SearchParamDefaults.with_status, deprecated="Use filters instead"
85
84
  ),
@@ -100,7 +99,6 @@ async def catalog_get(
100
99
  faceted=faceted,
101
100
  page_number=page_number,
102
101
  page_size=page_size,
103
- shards=shards,
104
102
  debug=debug,
105
103
  with_status=with_status,
106
104
  range_creation_start=range_creation_start,
@@ -76,7 +76,6 @@ async def resource_search(
76
76
  highlight: bool = fastapi_query(SearchParamDefaults.highlight),
77
77
  x_ndb_client: NucliaDBClientType = Header(NucliaDBClientType.API),
78
78
  debug: bool = fastapi_query(SearchParamDefaults.debug),
79
- shards: list[str] = fastapi_query(SearchParamDefaults.shards),
80
79
  ) -> Union[ResourceSearchResults, HTTPClientError]:
81
80
  top_k = top_k or SearchParamDefaults.top_k # type: ignore
82
81
  top_k = cast(int, top_k)
@@ -101,9 +100,7 @@ async def resource_search(
101
100
  except InvalidQueryError as exc:
102
101
  return HTTPClientError(status_code=412, detail=str(exc))
103
102
 
104
- results, incomplete_results, queried_nodes = await node_query(
105
- kbid, Method.SEARCH, pb_query, shards
106
- )
103
+ results, incomplete_results, queried_nodes = await node_query(kbid, Method.SEARCH, pb_query)
107
104
 
108
105
  # We need to merge
109
106
  search_results = await merge_paragraphs_results(
@@ -146,7 +146,6 @@ async def search_knowledgebox(
146
146
  SearchParamDefaults.field_type_filter, alias="field_type"
147
147
  ),
148
148
  extracted: list[ExtractedDataTypeName] = fastapi_query(SearchParamDefaults.extracted),
149
- shards: list[str] = fastapi_query(SearchParamDefaults.shards),
150
149
  with_duplicates: bool = fastapi_query(SearchParamDefaults.with_duplicates),
151
150
  with_synonyms: bool = fastapi_query(SearchParamDefaults.with_synonyms),
152
151
  autofilter: bool = fastapi_query(SearchParamDefaults.autofilter),
@@ -183,7 +182,6 @@ async def search_knowledgebox(
183
182
  show=show,
184
183
  field_type_filter=field_type_filter,
185
184
  extracted=extracted,
186
- shards=shards,
187
185
  with_duplicates=with_duplicates,
188
186
  with_synonyms=with_synonyms,
189
187
  autofilter=autofilter,
@@ -295,9 +293,7 @@ async def search(
295
293
  )
296
294
  pb_query, incomplete_results, autofilters, _ = await query_parser.parse()
297
295
 
298
- results, query_incomplete_results, queried_nodes = await node_query(
299
- kbid, Method.SEARCH, pb_query, target_shard_replicas=item.shards
300
- )
296
+ results, query_incomplete_results, queried_nodes = await node_query(kbid, Method.SEARCH, pb_query)
301
297
 
302
298
  incomplete_results = incomplete_results or query_incomplete_results
303
299
 
@@ -49,10 +49,9 @@ from nucliadb_models.search import (
49
49
  )
50
50
  from nucliadb_protos.utils_pb2 import RelationNode
51
51
  from nucliadb_telemetry import errors, metrics
52
- from nucliadb_utils.const import Features
53
52
  from nucliadb_utils.exceptions import LimitsExceededError
54
53
  from nucliadb_utils.settings import nuclia_settings
55
- from nucliadb_utils.utilities import Utility, has_feature, set_utility
54
+ from nucliadb_utils.utilities import Utility, set_utility
56
55
 
57
56
 
58
57
  class SendToPredictError(Exception):
@@ -89,7 +88,6 @@ DUMMY_LEARNING_MODEL = "chatgpt"
89
88
 
90
89
  PUBLIC_PREDICT = "/api/v1/predict"
91
90
  PRIVATE_PREDICT = "/api/internal/predict"
92
- VERSIONED_PRIVATE_PREDICT = "/api/v1/internal/predict"
93
91
  SENTENCE = "/sentence"
94
92
  TOKENS = "/tokens"
95
93
  QUERY = "/query"
@@ -199,10 +197,7 @@ class PredictEngine:
199
197
  # /api/v1/predict/rephrase/{kbid}
200
198
  return f"{self.public_url}{PUBLIC_PREDICT}{endpoint}/{kbid}"
201
199
  else:
202
- if has_feature(Features.VERSIONED_PRIVATE_PREDICT):
203
- return f"{self.cluster_url}{VERSIONED_PRIVATE_PREDICT}{endpoint}"
204
- else:
205
- return f"{self.cluster_url}{PRIVATE_PREDICT}{endpoint}"
200
+ return f"{self.cluster_url}{PRIVATE_PREDICT}{endpoint}"
206
201
 
207
202
  def get_predict_headers(self, kbid: str) -> dict[str, str]:
208
203
  if self.onprem:
@@ -45,8 +45,6 @@ from nucliadb_protos.nodereader_pb2 import (
45
45
  )
46
46
  from nucliadb_protos.writer_pb2 import ShardObject as PBShardObject
47
47
  from nucliadb_telemetry import errors
48
- from nucliadb_utils import const
49
- from nucliadb_utils.utilities import has_feature
50
48
 
51
49
 
52
50
  class Method(Enum):
@@ -73,10 +71,7 @@ async def node_query(
73
71
  kbid: str,
74
72
  method: Method,
75
73
  pb_query: SuggestRequest,
76
- target_shard_replicas: Optional[list[str]] = None,
77
- use_read_replica_nodes: bool = True,
78
74
  timeout: Optional[float] = None,
79
- retry_on_primary: bool = True,
80
75
  ) -> tuple[list[SuggestResponse], bool, list[tuple[AbstractIndexNode, str]]]: ...
81
76
 
82
77
 
@@ -85,10 +80,7 @@ async def node_query(
85
80
  kbid: str,
86
81
  method: Method,
87
82
  pb_query: SearchRequest,
88
- target_shard_replicas: Optional[list[str]] = None,
89
- use_read_replica_nodes: bool = True,
90
83
  timeout: Optional[float] = None,
91
- retry_on_primary: bool = True,
92
84
  ) -> tuple[list[SearchResponse], bool, list[tuple[AbstractIndexNode, str]]]: ...
93
85
 
94
86
 
@@ -96,16 +88,9 @@ async def node_query(
96
88
  kbid: str,
97
89
  method: Method,
98
90
  pb_query: REQUEST_TYPE,
99
- target_shard_replicas: Optional[list[str]] = None,
100
- use_read_replica_nodes: bool = True,
101
91
  timeout: Optional[float] = None,
102
- retry_on_primary: bool = True,
103
92
  ) -> tuple[Sequence[Union[T, BaseException]], bool, list[tuple[AbstractIndexNode, str]]]:
104
93
  timeout = timeout or settings.search_timeout
105
- use_read_replica_nodes = use_read_replica_nodes and has_feature(
106
- const.Features.READ_REPLICA_SEARCHES, context={"kbid": kbid}
107
- )
108
-
109
94
  shard_manager = get_shard_manager()
110
95
  try:
111
96
  shard_groups: list[PBShardObject] = await shard_manager.get_shards_by_kbid(kbid)
@@ -121,11 +106,7 @@ async def node_query(
121
106
 
122
107
  for shard_obj in shard_groups:
123
108
  try:
124
- node, shard_id = cluster_manager.choose_node(
125
- shard_obj,
126
- use_read_replica_nodes=use_read_replica_nodes,
127
- target_shard_replicas=target_shard_replicas,
128
- )
109
+ node, shard_id = cluster_manager.choose_node(shard_obj)
129
110
  except KeyError:
130
111
  incomplete_results = True
131
112
  else:
@@ -166,29 +147,6 @@ async def node_query(
166
147
  "query": json.dumps(query_dict),
167
148
  },
168
149
  )
169
- if (
170
- error.status_code >= 500
171
- and use_read_replica_nodes
172
- and any([node.is_read_replica() for node, _ in queried_nodes])
173
- and retry_on_primary
174
- ):
175
- # We had an error querying a secondary node, instead of raising an
176
- # error directly, retry query to primaries and hope it works
177
- logger.warning(
178
- "Query to read replica failed. Trying again with primary",
179
- extra={"nodes": debug_nodes_info(queried_nodes)},
180
- )
181
-
182
- results, incomplete_results, primary_queried_nodes = await node_query( # type: ignore
183
- kbid,
184
- method,
185
- pb_query,
186
- target_shard_replicas,
187
- use_read_replica_nodes=False,
188
- )
189
- queried_nodes.extend(primary_queried_nodes)
190
- return results, incomplete_results, queried_nodes
191
-
192
150
  raise error
193
151
 
194
152
  return results, incomplete_results, queried_nodes
@@ -383,7 +383,6 @@ class AskResult:
383
383
  self._relations = await get_relations_results(
384
384
  kbid=self.kbid,
385
385
  text_answer=self._answer_text,
386
- target_shard_replicas=self.ask_request.shards,
387
386
  timeout=5.0,
388
387
  )
389
388
  return self._relations
@@ -741,7 +740,6 @@ async def retrieval_in_kb(
741
740
  origin=origin,
742
741
  graph_strategy=graph_strategy,
743
742
  metrics=metrics,
744
- shards=ask_request.shards,
745
743
  )
746
744
 
747
745
  if prequeries_results is None:
@@ -173,7 +173,6 @@ def find_request_from_ask_request(item: AskRequest, query: str) -> FindRequest:
173
173
  find_request.range_modification_end = item.range_modification_end
174
174
  find_request.show = item.show
175
175
  find_request.extracted = item.extracted
176
- find_request.shards = item.shards
177
176
  find_request.autofilter = item.autofilter
178
177
  find_request.highlight = item.highlight
179
178
  find_request.security = item.security
@@ -219,7 +218,6 @@ async def get_relations_results(
219
218
  *,
220
219
  kbid: str,
221
220
  text_answer: str,
222
- target_shard_replicas: Optional[list[str]],
223
221
  timeout: Optional[float] = None,
224
222
  only_with_metadata: bool = False,
225
223
  only_agentic_relations: bool = False,
@@ -231,7 +229,6 @@ async def get_relations_results(
231
229
  return await get_relations_results_from_entities(
232
230
  kbid=kbid,
233
231
  entities=detected_entities,
234
- target_shard_replicas=target_shard_replicas,
235
232
  timeout=timeout,
236
233
  only_with_metadata=only_with_metadata,
237
234
  only_agentic_relations=only_agentic_relations,
@@ -246,7 +243,6 @@ async def get_relations_results_from_entities(
246
243
  *,
247
244
  kbid: str,
248
245
  entities: Iterable[RelationNode],
249
- target_shard_replicas: Optional[list[str]],
250
246
  timeout: Optional[float] = None,
251
247
  only_with_metadata: bool = False,
252
248
  only_agentic_relations: bool = False,
@@ -269,10 +265,7 @@ async def get_relations_results_from_entities(
269
265
  kbid,
270
266
  Method.SEARCH,
271
267
  request,
272
- target_shard_replicas=target_shard_replicas,
273
268
  timeout=timeout,
274
- use_read_replica_nodes=True,
275
- retry_on_primary=False,
276
269
  )
277
270
  relations_results: list[RelationSearchResponse] = [result.relation for result in results]
278
271
  return await merge_relations_results(
@@ -110,7 +110,7 @@ async def _index_node_retrieval(
110
110
 
111
111
  with metrics.time("node_query"):
112
112
  results, query_incomplete_results, queried_nodes = await node_query(
113
- kbid, Method.SEARCH, pb_query, target_shard_replicas=item.shards
113
+ kbid, Method.SEARCH, pb_query
114
114
  )
115
115
  incomplete_results = incomplete_results or query_incomplete_results
116
116
 
@@ -368,7 +368,6 @@ async def get_graph_results(
368
368
  new_relations = await get_relations_results_from_entities(
369
369
  kbid=kbid,
370
370
  entities=entities_to_explore,
371
- target_shard_replicas=shards,
372
371
  timeout=5.0,
373
372
  only_with_metadata=True,
374
373
  only_agentic_relations=graph_strategy.agentic_graph_only,
@@ -455,8 +454,6 @@ async def fuzzy_search_entities(
455
454
  kbid,
456
455
  Method.SEARCH,
457
456
  request,
458
- use_read_replica_nodes=True,
459
- retry_on_primary=False,
460
457
  )
461
458
  return merge_relation_prefix_results(results)
462
459
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nucliadb
3
- Version: 6.2.1.post3281
3
+ Version: 6.2.1.post3300
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.2.1.post3281
24
- Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.2.1.post3281
25
- Requires-Dist: nucliadb-protos>=6.2.1.post3281
26
- Requires-Dist: nucliadb-models>=6.2.1.post3281
27
- Requires-Dist: nidx-protos>=6.2.1.post3281
23
+ Requires-Dist: nucliadb-telemetry[all]>=6.2.1.post3300
24
+ Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.2.1.post3300
25
+ Requires-Dist: nucliadb-protos>=6.2.1.post3300
26
+ Requires-Dist: nucliadb-models>=6.2.1.post3300
27
+ Requires-Dist: nidx-protos>=6.2.1.post3300
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
@@ -48,8 +48,8 @@ nucliadb/common/cluster/base.py,sha256=kklDqyvsubNX0W494ttl9f3E58lGaX6AXqAd8XX8Z
48
48
  nucliadb/common/cluster/exceptions.py,sha256=V3c_fgH00GyJ-a5CaGLhwTuhwhUNR9YAGvS5jaRuc_Y,1495
49
49
  nucliadb/common/cluster/grpc_node_dummy.py,sha256=L85wBnfab7Rev0CfsfUjPxQC6DiHPsETKrZAOLx9XHg,3510
50
50
  nucliadb/common/cluster/index_node.py,sha256=g38H1kiAliF3Y6et_CWYInpn_xPxf7THAFJ7RtgLNZo,3246
51
- nucliadb/common/cluster/manager.py,sha256=cj8yNIspsmdyGUq3vbyW--r-LcxAUqA4S9tocz6MsCM,15695
52
- nucliadb/common/cluster/rebalance.py,sha256=jSEYsPgs_Dobv3FOaKl5arBko4s8JlWkahm8LOzgNnE,9135
51
+ nucliadb/common/cluster/manager.py,sha256=-y5PCUzxrvvUCBopmi8JztPiSBYYbUBeLer0XtO4Ukk,15383
52
+ nucliadb/common/cluster/rebalance.py,sha256=P3P45m390ImOYBmjuufNpBRXijWvcNpkYqPiDPcdbHg,8960
53
53
  nucliadb/common/cluster/rollover.py,sha256=dx6AF9ywKP10iBNlcoJgRV40921fOPpVWaCUU54hztE,25823
54
54
  nucliadb/common/cluster/settings.py,sha256=TMoym-cZsQ2soWfLAce0moSa2XncttQyhahL43LrWTo,3384
55
55
  nucliadb/common/cluster/utils.py,sha256=Vu0f6026EBELe-ff3d5B0ihD0HtjSWKDCr4dy7LmKqg,5848
@@ -106,12 +106,12 @@ nucliadb/ingest/cache.py,sha256=w7jMMzamOmQ7gwXna6Dqm6isRNBVv6l5BTBlTxaYWjE,1005
106
106
  nucliadb/ingest/partitions.py,sha256=2NIhMYbNT0TNBL6bX1UMSi7vxFGICstCKEqsB0TXHOE,2410
107
107
  nucliadb/ingest/processing.py,sha256=gg1DqbMFwqdOsmCSGsZc2abRdYz86xOZJun9vrHOCzs,20618
108
108
  nucliadb/ingest/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
- nucliadb/ingest/serialize.py,sha256=13NcAP0Tw0zxMsjdudnSnedsg1YpiqFrA-TTIxQA6Ww,16634
109
+ nucliadb/ingest/serialize.py,sha256=lIxPbt-Kz0eXXrefDltKbCRiyvkhHTR_AFwPUC6-nHU,16151
110
110
  nucliadb/ingest/settings.py,sha256=0B-wQNa8FLqtNcQgRzh-fuIuGptM816XHcbH1NQKfmE,3050
111
111
  nucliadb/ingest/utils.py,sha256=l1myURu3r8oA11dx3GpHw-gNTUc1AFX8xdPm9Lgl2rA,2275
112
112
  nucliadb/ingest/consumer/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
113
113
  nucliadb/ingest/consumer/auditing.py,sha256=QLffHz49oz9h9P080oBB7eTBL4cqWI-JTTDeg3SmFQ8,7264
114
- nucliadb/ingest/consumer/consumer.py,sha256=Lej1d6jqmaeR3vjzD0mnfKcVzZTT4TQ3lb1DOfyNWM4,14117
114
+ nucliadb/ingest/consumer/consumer.py,sha256=YIfkUmBqKeyAkJU1y1Vlld4pwFAKDdC_sX-snKsPH8E,13848
115
115
  nucliadb/ingest/consumer/materializer.py,sha256=7ofLbwjldJA8TWXDRZRM4U5EviZt3qNSQ8oadmkzS0Y,3840
116
116
  nucliadb/ingest/consumer/metrics.py,sha256=ji1l_4cKiHJthQd8YNem1ft4iMbw9KThmVvJmLcv3Xg,1075
117
117
  nucliadb/ingest/consumer/pull.py,sha256=EYT0ImngMQgatStG68p2GSrPQBbJxeuq8nFm8DdAbwk,9280
@@ -129,11 +129,11 @@ nucliadb/ingest/fields/text.py,sha256=tFvSQJAe0W7ePpp2_WDfLiE2yglR1OTU0Zht9acvOF
129
129
  nucliadb/ingest/orm/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
130
130
  nucliadb/ingest/orm/brain.py,sha256=UND5EsNUdd7XdjScYqRqg4r_xCx3l-My8alGw5M9CWg,28398
131
131
  nucliadb/ingest/orm/broker_message.py,sha256=ZEMueoGuuRKO4tHgzc0P0AM1Ls1TTYey_4UvRQf0BpY,6915
132
- nucliadb/ingest/orm/entities.py,sha256=sBhg8eahsWVwO34KoAJV2YRix4Uw5GINx3srJWxRC9k,15148
132
+ nucliadb/ingest/orm/entities.py,sha256=3_n6lKhBy2GsdmNmkh0_mvxP8md20OZsbtTNEmfJ8Hg,14888
133
133
  nucliadb/ingest/orm/exceptions.py,sha256=k4Esv4NtL4TrGTcsQpwrSfDhPQpiYcRbB1SpYmBX5MY,1432
134
134
  nucliadb/ingest/orm/knowledgebox.py,sha256=IGOPvBR1qXqDxE5DeiOdYCLdPgjzOVVpsASJ2zYvWwQ,23651
135
135
  nucliadb/ingest/orm/metrics.py,sha256=OkwMSPKLZcKba0ZTwtTiIxwBgaLMX5ydhGieKvi2y7E,1096
136
- nucliadb/ingest/orm/resource.py,sha256=u1iiq0qkMPmvOD9pgNxjgm98pFSsfQ09_T28bxbQNNw,44992
136
+ nucliadb/ingest/orm/resource.py,sha256=9J1O9VW2ZNTEbJ9Fv0J3yIGR5Gf_FFJJjiBzO0SeRXE,44219
137
137
  nucliadb/ingest/orm/utils.py,sha256=vCe_9UxHu26JDFGLwQ0wH-XyzJIpQCTK-Ow9dtZR5Vg,2716
138
138
  nucliadb/ingest/orm/processor/__init__.py,sha256=Aqd9wCNTvggkMkCY3WvoI8spdr94Jnqk-0iq9XpLs18,922
139
139
  nucliadb/ingest/orm/processor/auditing.py,sha256=TeYhXGJRyQ7ROytbb2u8R0fIh_FYi3HgTu3S1ribY3U,4623
@@ -143,7 +143,7 @@ nucliadb/ingest/orm/processor/processor.py,sha256=2FxAetUvtHvg6l-24xYrmBdsyqc0RU
143
143
  nucliadb/ingest/orm/processor/sequence_manager.py,sha256=uqEphtI1Ir_yk9jRl2gPf7BlzzXWovbARY5MNZSBI_8,1704
144
144
  nucliadb/ingest/service/__init__.py,sha256=MME_G_ERxzJR6JW_hfE2qcfXpmpH1kdG-S0a-M0qRm8,2043
145
145
  nucliadb/ingest/service/exceptions.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
146
- nucliadb/ingest/service/writer.py,sha256=IJOuSmetWq0oajtJiq5KmFvZMaYX5LGJa6pa9eGBtHY,20406
146
+ nucliadb/ingest/service/writer.py,sha256=yLFQhB1vruKviO1Lo4vgGkNw8pidQahDyQ0IVehqWL0,20377
147
147
  nucliadb/middleware/__init__.py,sha256=A8NBlBuEkunCFMKpR9gnfNELsVn0Plc55BIQMbWDM8Q,2202
148
148
  nucliadb/migrator/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
149
149
  nucliadb/migrator/command.py,sha256=dKbJ1tAmP6X4lMVRSSlz351euaqs2wBPpOczLjATUes,2089
@@ -181,7 +181,7 @@ nucliadb/search/__init__.py,sha256=tnypbqcH4nBHbGpkINudhKgdLKpwXQCvDtPchUlsyY4,1
181
181
  nucliadb/search/app.py,sha256=6UV7rO0f3w5bNFXLdQM8bwUwXayMGnM4hF6GGv7WPv4,4260
182
182
  nucliadb/search/lifecycle.py,sha256=DW8v4WUi4rZqc7xTOi3rE67W7877WG7fH9oTZbolHdE,2099
183
183
  nucliadb/search/openapi.py,sha256=t3Wo_4baTrfPftg2BHsyLWNZ1MYn7ZRdW7ht-wFOgRs,1016
184
- nucliadb/search/predict.py,sha256=EWOiWVUX9U_TE19Cl6bpCr6Mjs7hjuvCcG26C7e6KnQ,20919
184
+ nucliadb/search/predict.py,sha256=j51l_Zb8K9j6YAXIx1aafspqvdeZuANpyv96_pVfUEg,20641
185
185
  nucliadb/search/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
186
  nucliadb/search/run.py,sha256=aFb-CXRi_C8YMpP_ivNj8KW1BYhADj88y8K9Lr_nUPI,1402
187
187
  nucliadb/search/settings.py,sha256=vem3EcyYlTPSim0kEK-xe-erF4BZg0CT_LAb8ZRQAE8,1684
@@ -189,30 +189,30 @@ nucliadb/search/utilities.py,sha256=9SsRDw0rJVXVoLBfF7rBb6q080h-thZc7u8uRcTiBeY,
189
189
  nucliadb/search/api/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
190
190
  nucliadb/search/api/v1/__init__.py,sha256=NSbOVF6toiHX9WMpGgqpFrjJKT50EcHzOILp-2iHk5I,1249
191
191
  nucliadb/search/api/v1/ask.py,sha256=F2dR3-swb3Xz8MfZPYL3G65KY2R_mgef4YVBbu8kLi4,4352
192
- nucliadb/search/api/v1/catalog.py,sha256=ubYPS1wmPHzOgH9LR0qJmmV-9ELZPtHRSs5TYJ1pA9A,7117
192
+ nucliadb/search/api/v1/catalog.py,sha256=TF19WN-qgZZLkqBwVH5xNsMxYTrmdEflPvy7qft_4lE,7010
193
193
  nucliadb/search/api/v1/feedback.py,sha256=kNLc4dHz2SXHzV0PwC1WiRAwY88fDptPcP-kO0q-FrQ,2620
194
194
  nucliadb/search/api/v1/find.py,sha256=DsnWkySu_cFajDWJIxN8DYvLL_Rm2yiCjHD8TsqPfRk,9304
195
195
  nucliadb/search/api/v1/knowledgebox.py,sha256=rWhx3PYWryingu19qwwFDbVvVYynq5Ky23FSlzmTutQ,8721
196
196
  nucliadb/search/api/v1/predict_proxy.py,sha256=QrGzo0hKjtmyGZ6pjlJHYAh4hxwVUIOTcVcerRCw7eE,3047
197
197
  nucliadb/search/api/v1/router.py,sha256=mtT07rBZcVfpa49doaw9b1tj3sdi3qLH0gn9Io6NYM0,988
198
- nucliadb/search/api/v1/search.py,sha256=aP_Iv9mi6PvmXNDX2v_t8Xhr7orD4peCY9NKo0oEnQg,13641
198
+ nucliadb/search/api/v1/search.py,sha256=k80su3UaucHiYflQFSilW10QW4ZxRVRp0kT8zrJXbcU,13498
199
199
  nucliadb/search/api/v1/suggest.py,sha256=S0YUTAWukzZSYZJzN3T5MUgPM3599HQvG76GOCBuAbQ,5907
200
200
  nucliadb/search/api/v1/summarize.py,sha256=VAHJvE6V3xUgEBfqNKhgoxmDqCvh30RnrEIBVhMcNLU,2499
201
201
  nucliadb/search/api/v1/utils.py,sha256=5Ve-frn7LAE2jqAgB85F8RSeqxDlyA08--gS-AdOLS4,1434
202
202
  nucliadb/search/api/v1/resource/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
203
203
  nucliadb/search/api/v1/resource/ask.py,sha256=XMEP9_Uwy37yaXLcIYKMXGiZYNASD8RTByzQGjd9LPQ,3847
204
- nucliadb/search/api/v1/resource/search.py,sha256=X0rQU14r_s4_CPpoE2sc84AJPX68gvCftcP4bosWHhA,4812
204
+ nucliadb/search/api/v1/resource/search.py,sha256=oSU5lwG7XRnD7oBFct31JaECGjTjX5R8mxNF1mskINc,4715
205
205
  nucliadb/search/requesters/__init__.py,sha256=itSI7dtTwFP55YMX4iK7JzdMHS5CQVUiB1XzQu4UBh8,833
206
- nucliadb/search/requesters/utils.py,sha256=ZTiWDkDihJ7rcvs7itCe8hr6OclVcvu_2EAPFeyGhF4,8389
206
+ nucliadb/search/requesters/utils.py,sha256=qL81UVPNgBftUMLpcxIYVr7ILsMqpKCo-9SY2EvAaXw,6681
207
207
  nucliadb/search/search/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
208
208
  nucliadb/search/search/cache.py,sha256=n9vkN6Y6Xnr2RBJyoH0WzjzGTJOMfKekU9tfPTWWCPc,6810
209
209
  nucliadb/search/search/cut.py,sha256=ytY0_GY7ocNjfxTb4aosxEp4ZfhQNDP--JkhEMGD298,1153
210
210
  nucliadb/search/search/exceptions.py,sha256=klGLgAGGrXcSGix_W6418ZBMqDchAIGjN77ofkOScEI,1039
211
211
  nucliadb/search/search/fetch.py,sha256=XJHIFnZmXM_8Kb37lb4lg1GYG7cZ1plT-qAIb_QziX4,6184
212
212
  nucliadb/search/search/filters.py,sha256=1MkHlJjAQqoRCj7e5cEzK2HvBxGLE17I_omsjiklbtw,6476
213
- nucliadb/search/search/find.py,sha256=EprmlVVPHbPvcJezEJou4Msf9JlM7LD5xaVuKbk4XtY,10065
213
+ nucliadb/search/search/find.py,sha256=AocqiH_mWvF_szUaW0ONqWrZAbX-k_VhM0Lpv7D669M,10030
214
214
  nucliadb/search/search/find_merge.py,sha256=3FnzKFEnVemg6FO_6zveulbAU7klvsiPEBvLrpBBMg8,17450
215
- nucliadb/search/search/graph_strategy.py,sha256=Egcq_zn895gTUYmyQTsXj8YaUMa3HBKhcSa1GBvgzAM,31877
215
+ nucliadb/search/search/graph_strategy.py,sha256=ahwcUTQZ0Ll-rnS285DO9PmRyiM-1p4BM3UvmOYVwhM,31750
216
216
  nucliadb/search/search/hydrator.py,sha256=-R37gCrGxkyaiHQalnTWHNG_FCx11Zucd7qA1vQCxuw,6985
217
217
  nucliadb/search/search/merge.py,sha256=i_PTBFRqC5iTTziOMEltxLIlmokIou5hjjgR4BnoLBE,22635
218
218
  nucliadb/search/search/metrics.py,sha256=81X-tahGW4n2CLvUzCPdNxNClmZqUWZjcVOGCUHoiUM,2872
@@ -226,11 +226,11 @@ nucliadb/search/search/shards.py,sha256=JSRSrHgHcF4sXyuZZoJdMfK0v_LHpoSRf1lCr5-K
226
226
  nucliadb/search/search/summarize.py,sha256=ksmYPubEQvAQgfPdZHfzB_rR19B2ci4IYZ6jLdHxZo8,4996
227
227
  nucliadb/search/search/utils.py,sha256=iF2tbBA56gRMJH1TlE2hMrqeXqjoeOPt4KgRdp2m9Ek,3313
228
228
  nucliadb/search/search/chat/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
229
- nucliadb/search/search/chat/ask.py,sha256=JQpfAd8qePI5gr9-kPWhCjzKSSfDdgwYhB9a04CHM5o,36413
229
+ nucliadb/search/search/chat/ask.py,sha256=SfnixWdSdwCE8o8zN0_bYpRuqw0VPc62DF4Wbft_GvQ,36303
230
230
  nucliadb/search/search/chat/exceptions.py,sha256=Siy4GXW2L7oPhIR86H3WHBhE9lkV4A4YaAszuGGUf54,1356
231
231
  nucliadb/search/search/chat/images.py,sha256=PA8VWxT5_HUGfW1ULhKTK46UBsVyINtWWqEM1ulzX1E,3095
232
232
  nucliadb/search/search/chat/prompt.py,sha256=Jnja-Ss7skgnnDY8BymVfdeYsFPnIQFL8tEvcRXTKUE,47356
233
- nucliadb/search/search/chat/query.py,sha256=rBssR6MPSx8h2DASRMTLODaz9oGE5tNVVVeDncSrEp4,15684
233
+ nucliadb/search/search/chat/query.py,sha256=sFRJag80ahpXA7q3oP0XfIsUyRMNz0Y6K6nz8q4wP2A,15371
234
234
  nucliadb/search/search/query_parser/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
235
235
  nucliadb/search/search/query_parser/exceptions.py,sha256=szAOXUZ27oNY-OSa9t2hQ5HHkQQC0EX1FZz_LluJHJE,1224
236
236
  nucliadb/search/search/query_parser/fetcher.py,sha256=jhr__J0KmAzjdsTTadWQmD9qf6lZvqlKAfZdYjZH_UY,15742
@@ -331,8 +331,8 @@ nucliadb/writer/tus/local.py,sha256=7jYa_w9b-N90jWgN2sQKkNcomqn6JMVBOVeDOVYJHto,
331
331
  nucliadb/writer/tus/s3.py,sha256=vF0NkFTXiXhXq3bCVXXVV-ED38ECVoUeeYViP8uMqcU,8357
332
332
  nucliadb/writer/tus/storage.py,sha256=ToqwjoYnjI4oIcwzkhha_MPxi-k4Jk3Lt55zRwaC1SM,2903
333
333
  nucliadb/writer/tus/utils.py,sha256=MSdVbRsRSZVdkaum69_0wku7X3p5wlZf4nr6E0GMKbw,2556
334
- nucliadb-6.2.1.post3281.dist-info/METADATA,sha256=JtIhqlAL-FgxnSzKXfcxXsLF4XsEzEaBNIeTSVpze7c,4291
335
- nucliadb-6.2.1.post3281.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
336
- nucliadb-6.2.1.post3281.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
337
- nucliadb-6.2.1.post3281.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
338
- nucliadb-6.2.1.post3281.dist-info/RECORD,,
334
+ nucliadb-6.2.1.post3300.dist-info/METADATA,sha256=l6vw8CYUu4GOIR52rTVGg4JPYERH3YUHCHAPIwHkJfs,4291
335
+ nucliadb-6.2.1.post3300.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
336
+ nucliadb-6.2.1.post3300.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
337
+ nucliadb-6.2.1.post3300.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
338
+ nucliadb-6.2.1.post3300.dist-info/RECORD,,