nucliadb 6.7.0.post4773__py3-none-any.whl → 6.7.0.post4800__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.
@@ -24,7 +24,7 @@ import os
24
24
  import random
25
25
  from dataclasses import dataclass
26
26
  from enum import Enum
27
- from typing import Any, AsyncGenerator, Optional
27
+ from typing import AsyncGenerator, Optional
28
28
  from unittest.mock import AsyncMock, Mock
29
29
 
30
30
  import aiohttp
@@ -37,6 +37,7 @@ from nucliadb.search import logger
37
37
  from nucliadb.search.predict_models import (
38
38
  AppliedDataAugmentation,
39
39
  AugmentedField,
40
+ QueryModel,
40
41
  RunAgentsRequest,
41
42
  RunAgentsResponse,
42
43
  )
@@ -326,11 +327,7 @@ class PredictEngine:
326
327
  async def query(
327
328
  self,
328
329
  kbid: str,
329
- sentence: str,
330
- semantic_model: Optional[str] = None,
331
- generative_model: Optional[str] = None,
332
- rephrase: bool = False,
333
- rephrase_prompt: Optional[str] = None,
330
+ item: QueryModel,
334
331
  ) -> QueryInfo:
335
332
  """
336
333
  Query endpoint: returns information to be used by NucliaDB at retrieval time, for instance:
@@ -354,21 +351,10 @@ class PredictEngine:
354
351
  logger.warning(error)
355
352
  raise SendToPredictError(error)
356
353
 
357
- params: dict[str, Any] = {
358
- "text": sentence,
359
- "rephrase": str(rephrase),
360
- }
361
- if rephrase_prompt is not None:
362
- params["rephrase_prompt"] = rephrase_prompt
363
- if semantic_model is not None:
364
- params["semantic_models"] = [semantic_model]
365
- if generative_model is not None:
366
- params["generative_model"] = generative_model
367
-
368
354
  resp = await self.make_request(
369
- "GET",
355
+ "POST",
370
356
  url=self.get_predict_url(QUERY, kbid),
371
- params=params,
357
+ json=item.model_dump(),
372
358
  headers=self.get_predict_headers(kbid),
373
359
  )
374
360
  await self.check_response(kbid, resp, expected_status=200)
@@ -501,16 +487,13 @@ class DummyPredictEngine(PredictEngine):
501
487
 
502
488
  return (DUMMY_LEARNING_ID, DUMMY_LEARNING_MODEL, generate())
503
489
 
504
- async def query(
505
- self,
506
- kbid: str,
507
- sentence: str,
508
- semantic_model: Optional[str] = None,
509
- generative_model: Optional[str] = None,
510
- rephrase: bool = False,
511
- rephrase_prompt: Optional[str] = None,
512
- ) -> QueryInfo:
513
- self.calls.append(("query", sentence))
490
+ async def query(self, kbid: str, item: QueryModel) -> QueryInfo:
491
+ self.calls.append(
492
+ (
493
+ "query",
494
+ item,
495
+ )
496
+ )
514
497
 
515
498
  if os.environ.get("TEST_SENTENCE_ENCODER") == "multilingual-2023-02-21": # pragma: no cover
516
499
  base_vector = Qm2023
@@ -534,7 +517,7 @@ class DummyPredictEngine(PredictEngine):
534
517
  timings[vectorset_id] = 0.010
535
518
 
536
519
  # and fake data with the passed one too
537
- model = semantic_model or "<PREDICT-DEFAULT-SEMANTIC-MODEL>"
520
+ model = item.semantic_models[0] if item.semantic_models else "<PREDICT-DEFAULT-SEMANTIC-MODEL>"
538
521
  semantic_thresholds[model] = self.default_semantic_threshold
539
522
  vectors[model] = base_vector
540
523
  timings[model] = 0.0
@@ -550,7 +533,8 @@ class DummyPredictEngine(PredictEngine):
550
533
  vectors=vectors,
551
534
  timings=timings,
552
535
  ),
553
- query=sentence,
536
+ query=model,
537
+ rephrased_query="<REPHRASED-QUERY>" if item.rephrase or item.query_image else None,
554
538
  )
555
539
 
556
540
  async def detect_entities(self, kbid: str, sentence: str) -> list[RelationNode]:
@@ -25,6 +25,7 @@ from google.protobuf.message import DecodeError, Message
25
25
  from pydantic import BaseModel, ConfigDict, Field, field_validator
26
26
  from typing_extensions import TypedDict
27
27
 
28
+ from nucliadb_models.search import Image
28
29
  from nucliadb_protos.resources_pb2 import FieldMetadata, FieldText, QuestionAnswers
29
30
 
30
31
 
@@ -163,3 +164,43 @@ class RunAgentsResponse(BaseModel):
163
164
  ...,
164
165
  title="Pairs of augmented FieldMetadata and Data Augmentation results by field id",
165
166
  )
167
+
168
+
169
+ class QueryModel(BaseModel):
170
+ """
171
+ Model to represent a query request
172
+ """
173
+
174
+ text: Optional[str] = Field(default=None, description="The query text to be processed")
175
+ query_image: Optional[Image] = Field(
176
+ default=None,
177
+ description="Image to be considered as part of the query. Even if the `rephrase` parameter is set to `false`, the rephrasing process will occur, combining the provided text with the image's visual features in the rephrased query.",
178
+ )
179
+ rephrase: bool = Field(
180
+ default=False,
181
+ description="If true, the model will rephrase the input text before processing",
182
+ )
183
+ rephrase_prompt: Optional[str] = Field(
184
+ default=None,
185
+ description="Custom prompt for rephrasing the input text",
186
+ examples=[
187
+ """Rephrase this question so its better for retrieval, and keep the rephrased question in the same language as the original.
188
+ QUESTION: {question}
189
+ Please return ONLY the question without any explanation. Just the rephrased question.""",
190
+ """Rephrase this question so its better for retrieval, if in the image there are any machinery components with numeric identifiers, append them to the end of the question separated by a commas.
191
+ QUESTION: {question}
192
+ Please return ONLY the question without any explanation.""",
193
+ ],
194
+ )
195
+ generative_model: Optional[str] = Field(
196
+ default=None,
197
+ description="The generative model to use for rephrasing",
198
+ )
199
+ semantic_models: Optional[list[str]] = Field(
200
+ default=None,
201
+ description="Semantic models to compute the sentence vector for, if not provided, it will only compute the sentence vector for default semantic model in the Knowledge box's configuration.",
202
+ )
203
+ agentic_entities: bool = Field(
204
+ default=False,
205
+ description="If true, the model will return the entities detected in the sentence guided by an already defined Graph Extraction Agent in the Knowledge Box.",
206
+ )
@@ -595,6 +595,7 @@ async def ask(
595
595
  image_strategies=ask_request.rag_images_strategies,
596
596
  max_context_characters=tokens_to_chars(generation.max_context_tokens),
597
597
  visual_llm=generation.use_visual_llm,
598
+ query_image=ask_request.query_image,
598
599
  metrics=metrics.child_span("context_building"),
599
600
  )
600
601
  (
@@ -1042,6 +1042,7 @@ class PromptContextBuilder:
1042
1042
  image_strategies: Optional[Sequence[ImageRagStrategy]] = None,
1043
1043
  max_context_characters: Optional[int] = None,
1044
1044
  visual_llm: bool = False,
1045
+ query_image: Optional[Image] = None,
1045
1046
  metrics: Metrics = Metrics("prompt_context_builder"),
1046
1047
  ):
1047
1048
  self.kbid = kbid
@@ -1054,6 +1055,7 @@ class PromptContextBuilder:
1054
1055
  self.max_context_characters = max_context_characters
1055
1056
  self.visual_llm = visual_llm
1056
1057
  self.metrics = metrics
1058
+ self.query_image = query_image
1057
1059
  self.augmented_context = AugmentedContext(paragraphs={}, fields={})
1058
1060
 
1059
1061
  def prepend_user_context(self, context: CappedPromptContext):
@@ -1061,8 +1063,12 @@ class PromptContextBuilder:
1061
1063
  # it is added first, followed by the found text blocks in order of relevance
1062
1064
  for i, text_block in enumerate(self.user_context or []):
1063
1065
  context[f"USER_CONTEXT_{i}"] = text_block
1064
- for i, image in enumerate(self.user_image_context or []):
1065
- context.images[f"USER_IMAGE_CONTEXT_{i}"] = image
1066
+ # Add the query image as part of the image context
1067
+ if self.query_image is not None:
1068
+ context.images["QUERY_IMAGE"] = self.query_image
1069
+ else:
1070
+ for i, image in enumerate(self.user_image_context or []):
1071
+ context.images[f"USER_IMAGE_CONTEXT_{i}"] = image
1066
1072
 
1067
1073
  async def build(
1068
1074
  self,
@@ -1070,7 +1076,7 @@ class PromptContextBuilder:
1070
1076
  ccontext = CappedPromptContext(max_size=self.max_context_characters)
1071
1077
  self.prepend_user_context(ccontext)
1072
1078
  await self._build_context(ccontext)
1073
- if self.visual_llm:
1079
+ if self.visual_llm and not self.query_image:
1074
1080
  await self._build_context_images(ccontext)
1075
1081
  context = ccontext.cap()
1076
1082
  context_images = ccontext.images
@@ -206,6 +206,7 @@ def find_request_from_ask_request(item: AskRequest, query: str) -> FindRequest:
206
206
  find_request.debug = item.debug
207
207
  find_request.rephrase = item.rephrase
208
208
  find_request.rephrase_prompt = parse_rephrase_prompt(item)
209
+ find_request.query_image = item.query_image
209
210
  find_request.rank_fusion = item.rank_fusion
210
211
  find_request.reranker = item.reranker
211
212
  # We don't support pagination, we always get the top_k results.
@@ -85,6 +85,7 @@ async def paragraph_query_to_pb(
85
85
  rephrase=False,
86
86
  rephrase_prompt=None,
87
87
  generative_model=None,
88
+ query_image=None,
88
89
  )
89
90
  field_expr, paragraph_expr = await parse_old_filters(old, fetcher)
90
91
  if field_expr is not None:
@@ -225,6 +226,7 @@ async def suggest_query_to_pb(
225
226
  rephrase=False,
226
227
  rephrase_prompt=None,
227
228
  generative_model=None,
229
+ query_image=None,
228
230
  )
229
231
  field_expr, _ = await parse_old_filters(old, fetcher)
230
232
  if field_expr is not None and filter_expression is not None:
@@ -28,12 +28,14 @@ from nucliadb.common.exceptions import InvalidQueryError
28
28
  from nucliadb.common.maindb.utils import get_driver
29
29
  from nucliadb.search import logger
30
30
  from nucliadb.search.predict import SendToPredictError, convert_relations
31
+ from nucliadb.search.predict_models import QueryModel
31
32
  from nucliadb.search.search.metrics import (
32
33
  query_parse_dependency_observer,
33
34
  )
34
35
  from nucliadb.search.utilities import get_predict
35
36
  from nucliadb_models.internal.predict import QueryInfo
36
37
  from nucliadb_models.search import (
38
+ Image,
37
39
  MaxTokens,
38
40
  )
39
41
  from nucliadb_protos import knowledgebox_pb2, utils_pb2
@@ -93,6 +95,7 @@ class Fetcher:
93
95
  rephrase: bool,
94
96
  rephrase_prompt: Optional[str],
95
97
  generative_model: Optional[str],
98
+ query_image: Optional[Image],
96
99
  ):
97
100
  self.kbid = kbid
98
101
  self.query = query
@@ -102,6 +105,7 @@ class Fetcher:
102
105
  self.rephrase = rephrase
103
106
  self.rephrase_prompt = rephrase_prompt
104
107
  self.generative_model = generative_model
108
+ self.query_image = query_image
105
109
 
106
110
  self.cache = FetcherCache()
107
111
  self.locks: dict[str, asyncio.Lock] = {}
@@ -327,6 +331,7 @@ class Fetcher:
327
331
  self.generative_model,
328
332
  self.rephrase,
329
333
  self.rephrase_prompt,
334
+ self.query_image,
330
335
  )
331
336
  except (SendToPredictError, TimeoutError):
332
337
  query_info = None
@@ -360,9 +365,18 @@ async def query_information(
360
365
  generative_model: Optional[str] = None,
361
366
  rephrase: bool = False,
362
367
  rephrase_prompt: Optional[str] = None,
368
+ query_image: Optional[Image] = None,
363
369
  ) -> QueryInfo:
364
370
  predict = get_predict()
365
- return await predict.query(kbid, query, semantic_model, generative_model, rephrase, rephrase_prompt)
371
+ item = QueryModel(
372
+ text=query,
373
+ semantic_models=[semantic_model] if semantic_model else None,
374
+ generative_model=generative_model,
375
+ rephrase=rephrase,
376
+ rephrase_prompt=rephrase_prompt,
377
+ query_image=query_image,
378
+ )
379
+ return await predict.query(kbid, item)
366
380
 
367
381
 
368
382
  @query_parse_dependency_observer.wrap({"type": "detect_entities"})
@@ -41,6 +41,7 @@ def fetcher_for_ask(kbid: str, item: AskRequest) -> Fetcher:
41
41
  rephrase=item.rephrase,
42
42
  rephrase_prompt=None,
43
43
  generative_model=item.generative_model,
44
+ query_image=item.query_image,
44
45
  )
45
46
 
46
47
 
@@ -85,6 +85,11 @@ async def parse_keyword_query(
85
85
  fetcher: Fetcher,
86
86
  ) -> KeywordQuery:
87
87
  query = item.query
88
+ # If there was a rephrase with image, we should use the rephrased query for keyword search
89
+ rephrased_query = await fetcher.get_rephrased_query()
90
+ if item.query_image is not None and rephrased_query is not None:
91
+ query = rephrased_query
92
+
88
93
  is_synonyms_query = False
89
94
 
90
95
  if item.with_synonyms:
@@ -83,6 +83,7 @@ def fetcher_for_find(kbid: str, item: FindRequest) -> Fetcher:
83
83
  rephrase=item.rephrase,
84
84
  rephrase_prompt=item.rephrase_prompt,
85
85
  generative_model=item.generative_model,
86
+ query_image=item.query_image,
86
87
  )
87
88
 
88
89
 
@@ -79,6 +79,7 @@ def fetcher_for_search(kbid: str, item: SearchRequest) -> Fetcher:
79
79
  rephrase=item.rephrase,
80
80
  rephrase_prompt=item.rephrase_prompt,
81
81
  generative_model=None,
82
+ query_image=None,
82
83
  )
83
84
 
84
85
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nucliadb
3
- Version: 6.7.0.post4773
3
+ Version: 6.7.0.post4800
4
4
  Summary: NucliaDB
5
5
  Author-email: Nuclia <nucliadb@nuclia.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -19,11 +19,11 @@ Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3 :: Only
20
20
  Requires-Python: <4,>=3.9
21
21
  Description-Content-Type: text/markdown
22
- Requires-Dist: nucliadb-telemetry[all]>=6.7.0.post4773
23
- Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.7.0.post4773
24
- Requires-Dist: nucliadb-protos>=6.7.0.post4773
25
- Requires-Dist: nucliadb-models>=6.7.0.post4773
26
- Requires-Dist: nidx-protos>=6.7.0.post4773
22
+ Requires-Dist: nucliadb-telemetry[all]>=6.7.0.post4800
23
+ Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.7.0.post4800
24
+ Requires-Dist: nucliadb-protos>=6.7.0.post4800
25
+ Requires-Dist: nucliadb-models>=6.7.0.post4800
26
+ Requires-Dist: nidx-protos>=6.7.0.post4800
27
27
  Requires-Dist: nucliadb-admin-assets>=1.0.0.post1224
28
28
  Requires-Dist: nuclia-models>=0.46.0
29
29
  Requires-Dist: uvicorn[standard]
@@ -213,8 +213,8 @@ nucliadb/search/__init__.py,sha256=tnypbqcH4nBHbGpkINudhKgdLKpwXQCvDtPchUlsyY4,1
213
213
  nucliadb/search/app.py,sha256=-WEX1AZRA8R_9aeOo9ovOTwjXW_7VfwWN7N2ccSoqXg,3387
214
214
  nucliadb/search/lifecycle.py,sha256=hiylV-lxsAWkqTCulXBg0EIfMQdejSr8Zar0L_GLFT8,2218
215
215
  nucliadb/search/openapi.py,sha256=t3Wo_4baTrfPftg2BHsyLWNZ1MYn7ZRdW7ht-wFOgRs,1016
216
- nucliadb/search/predict.py,sha256=xZtZaydg1pzXOSEDg0xyWNbbgA4zMQ59gbHi0wNuAxk,23770
217
- nucliadb/search/predict_models.py,sha256=pm4ykuWH9bTXxj5RlI2F6pmXSXOVt64WL_sRlc2u6Tk,6144
216
+ nucliadb/search/predict.py,sha256=PdcJz--hK884GTTZ4m_QldR6dfNuI0vHpUWumJ2NGoA,23207
217
+ nucliadb/search/predict_models.py,sha256=ozuQZGWAK7v8W6UOk3xXQ_zW7YUNtRy_4l5LE5BuT_A,8172
218
218
  nucliadb/search/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
219
  nucliadb/search/run.py,sha256=aFb-CXRi_C8YMpP_ivNj8KW1BYhADj88y8K9Lr_nUPI,1402
220
220
  nucliadb/search/settings.py,sha256=vem3EcyYlTPSim0kEK-xe-erF4BZg0CT_LAb8ZRQAE8,1684
@@ -257,30 +257,30 @@ nucliadb/search/search/metrics.py,sha256=3I6IN0qDSmqIvUaWJmT3rt-Jyjs6LcvnKI8ZqCi
257
257
  nucliadb/search/search/paragraphs.py,sha256=pNAEiYqJGGUVcEf7xf-PFMVqz0PX4Qb-WNG-_zPGN2o,7799
258
258
  nucliadb/search/search/pgcatalog.py,sha256=0n_gDihZZhqrDLRHvHzS3IESvMRTcU6YShqizQMyE_Y,16807
259
259
  nucliadb/search/search/predict_proxy.py,sha256=Df8F5K-oS4TIXJc_y8UDViJTo7st5L0kMgxYPFZ39Vk,8806
260
- nucliadb/search/search/query.py,sha256=lIF1TXA35kTKC9iVJuMXDiiqgIj_BjxdG0oTOVn4kaI,11500
260
+ nucliadb/search/search/query.py,sha256=lYCesbUv-B7IyVFQoCCurcxl_Azc5nq3jtVQJ9tk1Ao,11552
261
261
  nucliadb/search/search/rank_fusion.py,sha256=xZtXhbmKb_56gs73u6KkFm2efvTATOSMmpOV2wrAIqE,9613
262
262
  nucliadb/search/search/rerankers.py,sha256=E2J1QdKAojqbhHM3KAyaOXKf6tJyETUxKs4tf_BEyqk,7472
263
263
  nucliadb/search/search/shards.py,sha256=mc5DK-MoCv9AFhlXlOFHbPvetcyNDzTFOJ5rimK8PC8,2636
264
264
  nucliadb/search/search/summarize.py,sha256=S4-mUS8d-rvHFcsr8Pa8N5NTxU6ZTxLFZTMKTTOOpr4,5098
265
265
  nucliadb/search/search/utils.py,sha256=ajRIXfdTF67dBVahQCXW-rSv6gJpUMPt3QhJrWqArTQ,2175
266
266
  nucliadb/search/search/chat/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
267
- nucliadb/search/search/chat/ask.py,sha256=vJ3TSdr-cT_xh43UnoYugqxnHv_-LFSCYoU7o0NnI1M,39368
267
+ nucliadb/search/search/chat/ask.py,sha256=c8gvGkspW5KUbDhVzcUfd7eF7SMfqzwKfCPidJniRLI,39417
268
268
  nucliadb/search/search/chat/exceptions.py,sha256=Siy4GXW2L7oPhIR86H3WHBhE9lkV4A4YaAszuGGUf54,1356
269
269
  nucliadb/search/search/chat/images.py,sha256=PA8VWxT5_HUGfW1ULhKTK46UBsVyINtWWqEM1ulzX1E,3095
270
- nucliadb/search/search/chat/prompt.py,sha256=gmYRC3aK03vrDoBElJP5H5Z7OEeu79k5yTxv3FEkN0I,53866
271
- nucliadb/search/search/chat/query.py,sha256=3jMPNbiFEOoS0ydMOPYkSx1qVlvAv51npzadWXDwkMs,16650
270
+ nucliadb/search/search/chat/prompt.py,sha256=G8Z-8amdx7527-I17U4j80Tv8j9XGt2soYn3txsAWAE,54158
271
+ nucliadb/search/search/chat/query.py,sha256=AhOPMf68p2BRjKz7CdkcUIDMANtxr00oGt42iKUUjAw,16698
272
272
  nucliadb/search/search/query_parser/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
273
273
  nucliadb/search/search/query_parser/exceptions.py,sha256=sVl9gRNzhE-s480LBBVkiXzNRbKhYRQN5F3it5tNNp8,939
274
- nucliadb/search/search/query_parser/fetcher.py,sha256=nP4EySj2BvH10QgCvgzvp13Nf22wwfHsdLbDoPlH2cQ,16831
274
+ nucliadb/search/search/query_parser/fetcher.py,sha256=dB_nQHbhdlAmztWqtuQ6Xx8UV1kozzGnpocrWwzW-X0,17253
275
275
  nucliadb/search/search/query_parser/models.py,sha256=kAslqX_-zaIdUpcpdNU2a5uQPQh7LC605qWLZ4aZ5T4,5064
276
276
  nucliadb/search/search/query_parser/old_filters.py,sha256=GsU3T3-WiSPvjucP7evHkshzAWZOli8qsuXChvWRCY0,9092
277
277
  nucliadb/search/search/query_parser/parsers/__init__.py,sha256=ySCNSdbesLXGZyR88919njulA6UE10_3PhqMG_Yj1o4,1034
278
- nucliadb/search/search/query_parser/parsers/ask.py,sha256=eTz8wS-EJHuAagR384h6TT64itymFZRpfZJGX8r6aZM,2771
278
+ nucliadb/search/search/query_parser/parsers/ask.py,sha256=mc4Rx7jLM101tRZYOxEQC-txO5C-fDJid_oMAtZTRug,2809
279
279
  nucliadb/search/search/query_parser/parsers/catalog.py,sha256=JuDiBL2wdjAuEFEPo0e2nQ4VqWjF3FXakT0ziZk3Oes,7495
280
- nucliadb/search/search/query_parser/parsers/common.py,sha256=mJMPOKurBK7-A7s3oNlPLxHP_yIn4j5Uw8rh_OQtzS4,6339
281
- nucliadb/search/search/query_parser/parsers/find.py,sha256=lHVspg-i_eWXvu7BT9WfuFVGVKYhr380y4tDX5yfTD4,12735
280
+ nucliadb/search/search/query_parser/parsers/common.py,sha256=jbQweWVufngbobr99qpHh1iiaGICOC6-e9AV33x0-Gk,6594
281
+ nucliadb/search/search/query_parser/parsers/find.py,sha256=4xQwa0BxNucenUrW_iZ2jCGd15Dm4AKS_B91BE8sDi4,12773
282
282
  nucliadb/search/search/query_parser/parsers/graph.py,sha256=zyqdUg5Afmhb2_-hvj9FUCaoLh026MUP1fgY2j-lD7c,9385
283
- nucliadb/search/search/query_parser/parsers/search.py,sha256=huhz3lk6y4n7fcHU2XB-90Q34sXIwP5-cwp2rqFtPh8,10477
283
+ nucliadb/search/search/query_parser/parsers/search.py,sha256=78KSJ9t3I7nFVY2Qk2fMw2P1RHUdGRsWzBf59FdAeTA,10503
284
284
  nucliadb/search/search/query_parser/parsers/unit_retrieval.py,sha256=xiOQ7_X6MkcZs3W_0DjdVfyk-G1AY6RBx3oG5hsq7ig,11455
285
285
  nucliadb/standalone/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
286
286
  nucliadb/standalone/api_router.py,sha256=zRSMlaRVHUDGTYA3zC03UV_aLLn-ch-kaeWn1tEjTXw,4338
@@ -376,8 +376,8 @@ nucliadb/writer/tus/local.py,sha256=7jYa_w9b-N90jWgN2sQKkNcomqn6JMVBOVeDOVYJHto,
376
376
  nucliadb/writer/tus/s3.py,sha256=vu1BGg4VqJ_x2P1u2BxqPKlSfw5orT_a3R-Ln5oPUpU,8483
377
377
  nucliadb/writer/tus/storage.py,sha256=ToqwjoYnjI4oIcwzkhha_MPxi-k4Jk3Lt55zRwaC1SM,2903
378
378
  nucliadb/writer/tus/utils.py,sha256=MSdVbRsRSZVdkaum69_0wku7X3p5wlZf4nr6E0GMKbw,2556
379
- nucliadb-6.7.0.post4773.dist-info/METADATA,sha256=QhixG_CdwX3ap13C7NraJfpH1mbqsYln_iin1WQz2oc,4158
380
- nucliadb-6.7.0.post4773.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
381
- nucliadb-6.7.0.post4773.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
382
- nucliadb-6.7.0.post4773.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
383
- nucliadb-6.7.0.post4773.dist-info/RECORD,,
379
+ nucliadb-6.7.0.post4800.dist-info/METADATA,sha256=p5YogXctzlcnUaCPjJowa0_MXNaVlxDYJdow5vfEqrs,4158
380
+ nucliadb-6.7.0.post4800.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
381
+ nucliadb-6.7.0.post4800.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
382
+ nucliadb-6.7.0.post4800.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
383
+ nucliadb-6.7.0.post4800.dist-info/RECORD,,