nucliadb 6.6.1.post4573__py3-none-any.whl → 6.6.1.post4584__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.
@@ -59,6 +59,7 @@ async def ask_knowledgebox_endpoint(
59
59
  kbid: str,
60
60
  item: AskRequest,
61
61
  x_ndb_client: NucliaDBClientType = Header(NucliaDBClientType.API),
62
+ x_show_consumption: bool = Header(default=False),
62
63
  x_nucliadb_user: str = Header(""),
63
64
  x_forwarded_for: str = Header(""),
64
65
  x_synchronous: bool = Header(
@@ -97,7 +98,13 @@ async def ask_knowledgebox_endpoint(
97
98
  return HTTPClientError(status_code=422, detail=detail)
98
99
 
99
100
  return await create_ask_response(
100
- kbid, item, x_nucliadb_user, x_ndb_client, x_forwarded_for, x_synchronous
101
+ kbid=kbid,
102
+ ask_request=item,
103
+ user_id=x_nucliadb_user,
104
+ client_type=x_ndb_client,
105
+ origin=x_forwarded_for,
106
+ x_synchronous=x_synchronous,
107
+ extra_predict_headers={"X-Show-Consumption": str(x_show_consumption).lower()},
101
108
  )
102
109
 
103
110
 
@@ -110,6 +117,7 @@ async def create_ask_response(
110
117
  origin: str,
111
118
  x_synchronous: bool,
112
119
  resource: Optional[str] = None,
120
+ extra_predict_headers: Optional[dict[str, str]] = None,
113
121
  ) -> Response:
114
122
  maybe_log_request_payload(kbid, "/ask", ask_request)
115
123
  ask_request.max_tokens = parse_max_tokens(ask_request.max_tokens)
@@ -122,6 +130,7 @@ async def create_ask_response(
122
130
  client_type=client_type,
123
131
  origin=origin,
124
132
  resource=resource,
133
+ extra_predict_headers=extra_predict_headers,
125
134
  )
126
135
  except AnswerJsonSchemaTooLong as err:
127
136
  return HTTPClientError(status_code=400, detail=str(err))
@@ -48,6 +48,7 @@ async def resource_ask_endpoint_by_uuid(
48
48
  kbid: str,
49
49
  rid: str,
50
50
  item: AskRequest,
51
+ x_show_consumption: bool = Header(default=False),
51
52
  x_ndb_client: NucliaDBClientType = Header(NucliaDBClientType.API),
52
53
  x_nucliadb_user: str = Header(""),
53
54
  x_forwarded_for: str = Header(""),
@@ -58,13 +59,14 @@ async def resource_ask_endpoint_by_uuid(
58
59
  ),
59
60
  ) -> Union[StreamingResponse, HTTPClientError, Response]:
60
61
  return await create_ask_response(
61
- kbid,
62
- item,
63
- x_nucliadb_user,
64
- x_ndb_client,
65
- x_forwarded_for,
66
- x_synchronous,
62
+ kbid=kbid,
63
+ ask_request=item,
64
+ user_id=x_nucliadb_user,
65
+ client_type=x_ndb_client,
66
+ origin=x_forwarded_for,
67
+ x_synchronous=x_synchronous,
67
68
  resource=rid,
69
+ extra_predict_headers={"X-Show-Consumption": str(x_show_consumption).lower()},
68
70
  )
69
71
 
70
72
 
@@ -83,6 +85,7 @@ async def resource_ask_endpoint_by_slug(
83
85
  kbid: str,
84
86
  slug: str,
85
87
  item: AskRequest,
88
+ x_show_consumption: bool = Header(default=False),
86
89
  x_ndb_client: NucliaDBClientType = Header(NucliaDBClientType.API),
87
90
  x_nucliadb_user: str = Header(""),
88
91
  x_forwarded_for: str = Header(""),
@@ -96,11 +99,12 @@ async def resource_ask_endpoint_by_slug(
96
99
  if resource_id is None:
97
100
  return HTTPClientError(status_code=404, detail="Resource not found")
98
101
  return await create_ask_response(
99
- kbid,
100
- item,
101
- x_nucliadb_user,
102
- x_ndb_client,
103
- x_forwarded_for,
104
- x_synchronous,
102
+ kbid=kbid,
103
+ ask_request=item,
104
+ user_id=x_nucliadb_user,
105
+ client_type=x_ndb_client,
106
+ origin=x_forwarded_for,
107
+ x_synchronous=x_synchronous,
105
108
  resource=resource_id,
109
+ extra_predict_headers={"X-Show-Consumption": str(x_show_consumption).lower()},
106
110
  )
@@ -19,7 +19,7 @@
19
19
  #
20
20
  from typing import Union
21
21
 
22
- from fastapi import Request
22
+ from fastapi import Header, Request
23
23
  from fastapi_versioning import version
24
24
 
25
25
  from nucliadb.common.datamanagers.exceptions import KnowledgeBoxNotFound
@@ -47,9 +47,14 @@ async def summarize_endpoint(
47
47
  request: Request,
48
48
  kbid: str,
49
49
  item: SummarizeRequest,
50
+ x_show_consumption: bool = Header(default=False),
50
51
  ) -> Union[SummarizedResponse, HTTPClientError]:
51
52
  try:
52
- return await summarize(kbid, item)
53
+ return await summarize(
54
+ kbid=kbid,
55
+ request=item,
56
+ extra_predict_headers={"X-Show-Consumption": str(x_show_consumption).lower()},
57
+ )
53
58
  except KnowledgeBoxNotFound:
54
59
  return HTTPClientError(status_code=404, detail="Knowledge box not found")
55
60
  except NoResourcesToSummarize:
@@ -293,7 +293,7 @@ class PredictEngine:
293
293
 
294
294
  @predict_observer.wrap({"type": "chat_ndjson"})
295
295
  async def chat_query_ndjson(
296
- self, kbid: str, item: ChatModel
296
+ self, kbid: str, item: ChatModel, extra_headers: Optional[dict[str, str]] = None
297
297
  ) -> tuple[str, str, AsyncGenerator[GenerativeChunk, None]]:
298
298
  """
299
299
  Chat query using the new stream format
@@ -314,7 +314,7 @@ class PredictEngine:
314
314
  "POST",
315
315
  url=self.get_predict_url(CHAT, kbid),
316
316
  json=item.model_dump(),
317
- headers=headers,
317
+ headers={**headers, **(extra_headers or {})},
318
318
  timeout=None,
319
319
  )
320
320
  await self.check_response(kbid, resp, expected_status=200)
@@ -396,7 +396,9 @@ class PredictEngine:
396
396
  return convert_relations(data)
397
397
 
398
398
  @predict_observer.wrap({"type": "summarize"})
399
- async def summarize(self, kbid: str, item: SummarizeModel) -> SummarizedResponse:
399
+ async def summarize(
400
+ self, kbid: str, item: SummarizeModel, extra_headers: Optional[dict[str, str]] = None
401
+ ) -> SummarizedResponse:
400
402
  try:
401
403
  self.check_nua_key_is_configured_for_onprem()
402
404
  except NUAKeyMissingError:
@@ -407,7 +409,7 @@ class PredictEngine:
407
409
  "POST",
408
410
  url=self.get_predict_url(SUMMARIZE, kbid),
409
411
  json=item.model_dump(),
410
- headers=self.get_predict_headers(kbid),
412
+ headers={**self.get_predict_headers(kbid), **(extra_headers or {})},
411
413
  timeout=None,
412
414
  )
413
415
  await self.check_response(kbid, resp, expected_status=200)
@@ -489,7 +491,7 @@ class DummyPredictEngine(PredictEngine):
489
491
  return RephraseResponse(rephrased_query=DUMMY_REPHRASE_QUERY, use_chat_history=None)
490
492
 
491
493
  async def chat_query_ndjson(
492
- self, kbid: str, item: ChatModel
494
+ self, kbid: str, item: ChatModel, extra_headers: Optional[dict[str, str]] = None
493
495
  ) -> tuple[str, str, AsyncGenerator[GenerativeChunk, None]]:
494
496
  self.calls.append(("chat_query_ndjson", item))
495
497
 
@@ -559,7 +561,9 @@ class DummyPredictEngine(PredictEngine):
559
561
  else:
560
562
  return DUMMY_RELATION_NODE
561
563
 
562
- async def summarize(self, kbid: str, item: SummarizeModel) -> SummarizedResponse:
564
+ async def summarize(
565
+ self, kbid: str, item: SummarizeModel, extra_headers: Optional[dict[str, str]] = None
566
+ ) -> SummarizedResponse:
563
567
  self.calls.append(("summarize", (kbid, item)))
564
568
  response = SummarizedResponse(
565
569
  summary="global summary",
@@ -22,6 +22,7 @@ import functools
22
22
  import json
23
23
  from typing import AsyncGenerator, Optional, cast
24
24
 
25
+ from nuclia_models.common.consumption import Consumption
25
26
  from nuclia_models.predict.generative_responses import (
26
27
  CitationsGenerativeResponse,
27
28
  GenerativeChunk,
@@ -83,6 +84,7 @@ from nucliadb_models.search import (
83
84
  ChatModel,
84
85
  ChatOptions,
85
86
  CitationsAskResponseItem,
87
+ ConsumptionResponseItem,
86
88
  DebugAskResponseItem,
87
89
  ErrorAskResponseItem,
88
90
  FindOptions,
@@ -106,6 +108,7 @@ from nucliadb_models.search import (
106
108
  StatusAskResponseItem,
107
109
  SyncAskMetadata,
108
110
  SyncAskResponse,
111
+ TokensDetail,
109
112
  UserPrompt,
110
113
  parse_custom_prompt,
111
114
  parse_rephrase_prompt,
@@ -169,6 +172,7 @@ class AskResult:
169
172
  self._citations: Optional[CitationsGenerativeResponse] = None
170
173
  self._metadata: Optional[MetaGenerativeResponse] = None
171
174
  self._relations: Optional[Relations] = None
175
+ self._consumption: Optional[Consumption] = None
172
176
 
173
177
  @property
174
178
  def status_code(self) -> AnswerStatusCode:
@@ -299,6 +303,20 @@ class AskResult:
299
303
  ),
300
304
  )
301
305
 
306
+ if self._consumption is not None:
307
+ yield ConsumptionResponseItem(
308
+ normalized_tokens=TokensDetail(
309
+ input=self._consumption.normalized_tokens.input,
310
+ output=self._consumption.normalized_tokens.output,
311
+ image=self._consumption.normalized_tokens.image,
312
+ ),
313
+ customer_key_tokens=TokensDetail(
314
+ input=self._consumption.customer_key_tokens.input,
315
+ output=self._consumption.customer_key_tokens.output,
316
+ image=self._consumption.customer_key_tokens.image,
317
+ ),
318
+ )
319
+
302
320
  # Stream out the relations results
303
321
  should_query_relations = (
304
322
  self.ask_request_with_relations and self.status_code == AnswerStatusCode.SUCCESS
@@ -341,6 +359,7 @@ class AskResult:
341
359
  generative_total=self._metadata.timings.get("generative"),
342
360
  ),
343
361
  )
362
+
344
363
  citations = {}
345
364
  if self._citations is not None:
346
365
  citations = self._citations.citations
@@ -373,6 +392,7 @@ class AskResult:
373
392
  prequeries=prequeries_results,
374
393
  citations=citations,
375
394
  metadata=metadata,
395
+ consumption=self._consumption,
376
396
  learning_id=self.nuclia_learning_id or "",
377
397
  augmented_context=self.augmented_context,
378
398
  )
@@ -424,6 +444,8 @@ class AskResult:
424
444
  self._citations = item
425
445
  elif isinstance(item, MetaGenerativeResponse):
426
446
  self._metadata = item
447
+ elif isinstance(item, Consumption):
448
+ self._consumption = item
427
449
  else:
428
450
  logger.warning(
429
451
  f"Unexpected item in predict answer stream: {item}",
@@ -486,6 +508,7 @@ async def ask(
486
508
  client_type: NucliaDBClientType,
487
509
  origin: str,
488
510
  resource: Optional[str] = None,
511
+ extra_predict_headers: Optional[dict[str, str]] = None,
489
512
  ) -> AskResult:
490
513
  metrics = AskMetrics()
491
514
  chat_history = ask_request.chat_history or []
@@ -613,7 +636,9 @@ async def ask(
613
636
  nuclia_learning_id,
614
637
  nuclia_learning_model,
615
638
  predict_answer_stream,
616
- ) = await predict.chat_query_ndjson(kbid, chat_model)
639
+ ) = await predict.chat_query_ndjson(
640
+ kbid=kbid, item=chat_model, extra_headers=extra_predict_headers
641
+ )
617
642
 
618
643
  auditor = ChatAuditor(
619
644
  kbid=kbid,
@@ -63,6 +63,7 @@ class PredictProxiedEndpoints(str, Enum):
63
63
 
64
64
  ALLOWED_HEADERS = [
65
65
  "Accept", # To allow 'application/x-ndjson' on the /chat endpoint
66
+ "X-show-consumption", # To show token consumption in the response
66
67
  ]
67
68
 
68
69
  PREDICT_ANSWER_METRIC = "predict_answer_proxy_metric"
@@ -45,7 +45,9 @@ class NoResourcesToSummarize(Exception):
45
45
  pass
46
46
 
47
47
 
48
- async def summarize(kbid: str, request: SummarizeRequest) -> SummarizedResponse:
48
+ async def summarize(
49
+ kbid: str, request: SummarizeRequest, extra_predict_headers: Optional[dict[str, str]]
50
+ ) -> SummarizedResponse:
49
51
  predict_request = SummarizeModel()
50
52
  predict_request.generative_model = request.generative_model
51
53
  predict_request.user_prompt = request.user_prompt
@@ -62,7 +64,7 @@ async def summarize(kbid: str, request: SummarizeRequest) -> SummarizedResponse:
62
64
  raise NoResourcesToSummarize()
63
65
 
64
66
  predict = get_predict()
65
- return await predict.summarize(kbid, predict_request)
67
+ return await predict.summarize(kbid=kbid, item=predict_request, extra_headers=extra_predict_headers)
66
68
 
67
69
 
68
70
  async def get_extracted_texts(kbid: str, resource_uuids_or_slugs: list[str]) -> ExtractedTexts:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nucliadb
3
- Version: 6.6.1.post4573
3
+ Version: 6.6.1.post4584
4
4
  Summary: NucliaDB
5
5
  Author-email: Nuclia <nucliadb@nuclia.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -19,13 +19,13 @@ 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.6.1.post4573
23
- Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.6.1.post4573
24
- Requires-Dist: nucliadb-protos>=6.6.1.post4573
25
- Requires-Dist: nucliadb-models>=6.6.1.post4573
26
- Requires-Dist: nidx-protos>=6.6.1.post4573
22
+ Requires-Dist: nucliadb-telemetry[all]>=6.6.1.post4584
23
+ Requires-Dist: nucliadb-utils[cache,fastapi,storages]>=6.6.1.post4584
24
+ Requires-Dist: nucliadb-protos>=6.6.1.post4584
25
+ Requires-Dist: nucliadb-models>=6.6.1.post4584
26
+ Requires-Dist: nidx-protos>=6.6.1.post4584
27
27
  Requires-Dist: nucliadb-admin-assets>=1.0.0.post1224
28
- Requires-Dist: nuclia-models>=0.24.2
28
+ Requires-Dist: nuclia-models>=0.43.0
29
29
  Requires-Dist: uvicorn[standard]
30
30
  Requires-Dist: argdantic
31
31
  Requires-Dist: aiohttp>=3.11.11
@@ -212,7 +212,7 @@ nucliadb/search/__init__.py,sha256=tnypbqcH4nBHbGpkINudhKgdLKpwXQCvDtPchUlsyY4,1
212
212
  nucliadb/search/app.py,sha256=-WEX1AZRA8R_9aeOo9ovOTwjXW_7VfwWN7N2ccSoqXg,3387
213
213
  nucliadb/search/lifecycle.py,sha256=hiylV-lxsAWkqTCulXBg0EIfMQdejSr8Zar0L_GLFT8,2218
214
214
  nucliadb/search/openapi.py,sha256=t3Wo_4baTrfPftg2BHsyLWNZ1MYn7ZRdW7ht-wFOgRs,1016
215
- nucliadb/search/predict.py,sha256=__0qwIU2CIRYRTYsbG9zZEjXXrxNe8puZWYJIyOT6dg,23492
215
+ nucliadb/search/predict.py,sha256=xZtZaydg1pzXOSEDg0xyWNbbgA4zMQ59gbHi0wNuAxk,23770
216
216
  nucliadb/search/predict_models.py,sha256=pm4ykuWH9bTXxj5RlI2F6pmXSXOVt64WL_sRlc2u6Tk,6144
217
217
  nucliadb/search/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  nucliadb/search/run.py,sha256=aFb-CXRi_C8YMpP_ivNj8KW1BYhADj88y8K9Lr_nUPI,1402
@@ -220,7 +220,7 @@ nucliadb/search/settings.py,sha256=vem3EcyYlTPSim0kEK-xe-erF4BZg0CT_LAb8ZRQAE8,1
220
220
  nucliadb/search/utilities.py,sha256=9SsRDw0rJVXVoLBfF7rBb6q080h-thZc7u8uRcTiBeY,1037
221
221
  nucliadb/search/api/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
222
222
  nucliadb/search/api/v1/__init__.py,sha256=DH16OYnw9jQ38OpKlmdXeoq2j40ZPXZRtGvClKOkMhw,1239
223
- nucliadb/search/api/v1/ask.py,sha256=b4tz33HNsfT5DXv_2DMc_jirnFsHuobreWkbAKkzj5o,5337
223
+ nucliadb/search/api/v1/ask.py,sha256=hZUnk1opZuXp1IwTiingSatlUefg2CZ9r_Z9sUwZMaU,5698
224
224
  nucliadb/search/api/v1/catalog.py,sha256=5ZY3d8sVia1traUxVS0Q4aQJmgcOuXzbxis_uY4ulE4,8077
225
225
  nucliadb/search/api/v1/feedback.py,sha256=kNLc4dHz2SXHzV0PwC1WiRAwY88fDptPcP-kO0q-FrQ,2620
226
226
  nucliadb/search/api/v1/find.py,sha256=j6mxEyxjlLnZSqCT_N2LmOJlytsm1vkY4KFFmJRrtP8,10904
@@ -230,10 +230,10 @@ nucliadb/search/api/v1/predict_proxy.py,sha256=TnXKAqf_Go-9QVi6L5z4cXjnuNRe7XLJj
230
230
  nucliadb/search/api/v1/router.py,sha256=mtT07rBZcVfpa49doaw9b1tj3sdi3qLH0gn9Io6NYM0,988
231
231
  nucliadb/search/api/v1/search.py,sha256=eqlrvRE7IlMpunNwD1RJwt6RgMV01sIDJLgxxE7CFcE,12297
232
232
  nucliadb/search/api/v1/suggest.py,sha256=gaJE60r8-z6TVO05mQRKBITwXn2_ofM3B4-OtpOgZEk,6343
233
- nucliadb/search/api/v1/summarize.py,sha256=VAHJvE6V3xUgEBfqNKhgoxmDqCvh30RnrEIBVhMcNLU,2499
233
+ nucliadb/search/api/v1/summarize.py,sha256=eJzgFJWUO80STx3lHc_0h9RZVaBCWF196nZUecfmqbE,2700
234
234
  nucliadb/search/api/v1/utils.py,sha256=5Ve-frn7LAE2jqAgB85F8RSeqxDlyA08--gS-AdOLS4,1434
235
235
  nucliadb/search/api/v1/resource/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
236
- nucliadb/search/api/v1/resource/ask.py,sha256=nsVzBSanSSlf0Ody6LSTjdEy75Vg283_YhbkAtWEjh8,3637
236
+ nucliadb/search/api/v1/resource/ask.py,sha256=PlOXa17lnmj3KA9bARNfDqvnx7Pe9OTnwz-OwgGTUjU,4035
237
237
  nucliadb/search/api/v1/resource/ingestion_agents.py,sha256=AZ5_cH1jbf7d5wh_gz6EHLEKAzEOMrQZwEZAu1Q_3FE,4846
238
238
  nucliadb/search/api/v1/resource/search.py,sha256=PZR7fs5oYD0RKqKoD38NZMAnOJzBv35NB2YOr2xy1ck,4923
239
239
  nucliadb/search/api/v1/resource/utils.py,sha256=-NjZqAQtFEXKpIh8ui5S26ItnJ5rzmmG0BHxGSS9QPw,1141
@@ -255,15 +255,15 @@ nucliadb/search/search/merge.py,sha256=XiRBsxhYPshPV7lZXD-9E259KZOPIf4I2tKosY0lP
255
255
  nucliadb/search/search/metrics.py,sha256=3I6IN0qDSmqIvUaWJmT3rt-Jyjs6LcvnKI8ZqCiuJPY,3501
256
256
  nucliadb/search/search/paragraphs.py,sha256=pNAEiYqJGGUVcEf7xf-PFMVqz0PX4Qb-WNG-_zPGN2o,7799
257
257
  nucliadb/search/search/pgcatalog.py,sha256=_AiyW6it66UX6BsZbM3-230IQhiEG4utoKYboviyOFI,16799
258
- nucliadb/search/search/predict_proxy.py,sha256=jJj9LrxBOFo5AMn_EB7MNo1hqiTN-PkeBYINIpVKzl8,8735
258
+ nucliadb/search/search/predict_proxy.py,sha256=Df8F5K-oS4TIXJc_y8UDViJTo7st5L0kMgxYPFZ39Vk,8806
259
259
  nucliadb/search/search/query.py,sha256=0qIQdt548L3jtKOyKo06aGJ73SLBxAW3N38_Hc1M3Uw,11528
260
260
  nucliadb/search/search/rank_fusion.py,sha256=xZtXhbmKb_56gs73u6KkFm2efvTATOSMmpOV2wrAIqE,9613
261
261
  nucliadb/search/search/rerankers.py,sha256=E2J1QdKAojqbhHM3KAyaOXKf6tJyETUxKs4tf_BEyqk,7472
262
262
  nucliadb/search/search/shards.py,sha256=mc5DK-MoCv9AFhlXlOFHbPvetcyNDzTFOJ5rimK8PC8,2636
263
- nucliadb/search/search/summarize.py,sha256=ksmYPubEQvAQgfPdZHfzB_rR19B2ci4IYZ6jLdHxZo8,4996
263
+ nucliadb/search/search/summarize.py,sha256=S4-mUS8d-rvHFcsr8Pa8N5NTxU6ZTxLFZTMKTTOOpr4,5098
264
264
  nucliadb/search/search/utils.py,sha256=ajRIXfdTF67dBVahQCXW-rSv6gJpUMPt3QhJrWqArTQ,2175
265
265
  nucliadb/search/search/chat/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
266
- nucliadb/search/search/chat/ask.py,sha256=0sgfiCbNaCZrTvYaRGtf5xL6VnzRgzofINiEP4IvhWs,38278
266
+ nucliadb/search/search/chat/ask.py,sha256=vJ3TSdr-cT_xh43UnoYugqxnHv_-LFSCYoU7o0NnI1M,39368
267
267
  nucliadb/search/search/chat/exceptions.py,sha256=Siy4GXW2L7oPhIR86H3WHBhE9lkV4A4YaAszuGGUf54,1356
268
268
  nucliadb/search/search/chat/images.py,sha256=PA8VWxT5_HUGfW1ULhKTK46UBsVyINtWWqEM1ulzX1E,3095
269
269
  nucliadb/search/search/chat/prompt.py,sha256=QwHULUDqe_pS2HZvQH1vzqpYEHQG_-UagXCNtLLtJEI,52997
@@ -375,8 +375,8 @@ nucliadb/writer/tus/local.py,sha256=7jYa_w9b-N90jWgN2sQKkNcomqn6JMVBOVeDOVYJHto,
375
375
  nucliadb/writer/tus/s3.py,sha256=vF0NkFTXiXhXq3bCVXXVV-ED38ECVoUeeYViP8uMqcU,8357
376
376
  nucliadb/writer/tus/storage.py,sha256=ToqwjoYnjI4oIcwzkhha_MPxi-k4Jk3Lt55zRwaC1SM,2903
377
377
  nucliadb/writer/tus/utils.py,sha256=MSdVbRsRSZVdkaum69_0wku7X3p5wlZf4nr6E0GMKbw,2556
378
- nucliadb-6.6.1.post4573.dist-info/METADATA,sha256=Qs_hupFPWx7a2jlWX2rRG9RNDF9avNHSxN079rwtP5E,4158
379
- nucliadb-6.6.1.post4573.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
380
- nucliadb-6.6.1.post4573.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
381
- nucliadb-6.6.1.post4573.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
382
- nucliadb-6.6.1.post4573.dist-info/RECORD,,
378
+ nucliadb-6.6.1.post4584.dist-info/METADATA,sha256=1YXr0ZLW8EuBsP9B8fzdG8R__ktC5ANI378Dw50dRjM,4158
379
+ nucliadb-6.6.1.post4584.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
380
+ nucliadb-6.6.1.post4584.dist-info/entry_points.txt,sha256=XqGfgFDuY3zXQc8ewXM2TRVjTModIq851zOsgrmaXx4,1268
381
+ nucliadb-6.6.1.post4584.dist-info/top_level.txt,sha256=hwYhTVnX7jkQ9gJCkVrbqEG1M4lT2F_iPQND1fCzF80,20
382
+ nucliadb-6.6.1.post4584.dist-info/RECORD,,