nucliadb-utils 5.0.1.post1044__py3-none-any.whl → 5.0.1.post1075__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.
@@ -37,6 +37,7 @@ from nucliadb_utils.aiopynecone.exceptions import (
37
37
  from nucliadb_utils.aiopynecone.models import (
38
38
  CreateIndexRequest,
39
39
  CreateIndexResponse,
40
+ IndexStats,
40
41
  ListResponse,
41
42
  QueryResponse,
42
43
  UpsertRequest,
@@ -64,6 +65,7 @@ BASE_API_HEADERS = {
64
65
  # are coming from the Nuclia integration:
65
66
  # https://docs.pinecone.io/integrations/build-integration/attribute-usage-to-your-integration
66
67
  "User-Agent": "source_tag=nuclia",
68
+ "X-Pinecone-API-Version": "2024-10",
67
69
  }
68
70
  MEGA_BYTE = 1024 * 1024
69
71
  MAX_UPSERT_PAYLOAD_SIZE = 2 * MEGA_BYTE
@@ -75,6 +77,7 @@ RETRIABLE_EXCEPTIONS = (
75
77
  PineconeRateLimitError,
76
78
  httpx.ConnectError,
77
79
  httpx.NetworkError,
80
+ httpx.WriteTimeout,
78
81
  )
79
82
 
80
83
 
@@ -159,6 +162,25 @@ class DataPlane:
159
162
  def _get_request_timeout(self, timeout: Optional[float] = None) -> Optional[float]:
160
163
  return timeout or self.client_timeout
161
164
 
165
+ @pinecone_observer.wrap({"type": "stats"})
166
+ async def stats(self, filter: Optional[dict[str, Any]] = None) -> IndexStats:
167
+ """
168
+ Get the index stats.
169
+ Params:
170
+ - `filter`: to filter the stats by their metadata. See:
171
+ https://docs.pinecone.io/reference/api/2024-07/data-plane/describeindexstats
172
+ """
173
+ post_kwargs: dict[str, Any] = {
174
+ "headers": {"Api-Key": self.api_key},
175
+ }
176
+ if filter is not None:
177
+ post_kwargs["json"] = {
178
+ "filter": filter,
179
+ }
180
+ response = await self.http_session.post("/describe_index_stats", **post_kwargs)
181
+ raise_for_status("stats", response)
182
+ return IndexStats.model_validate(response.json())
183
+
162
184
  @backoff.on_exception(
163
185
  backoff.expo,
164
186
  RETRIABLE_EXCEPTIONS,
@@ -112,3 +112,13 @@ class VectorMatch(BaseModel):
112
112
 
113
113
  class QueryResponse(BaseModel):
114
114
  matches: list[VectorMatch]
115
+
116
+
117
+ class IndexNamespaceStats(BaseModel):
118
+ vectorCount: int
119
+
120
+
121
+ class IndexStats(BaseModel):
122
+ dimension: int
123
+ namespaces: dict[str, IndexNamespaceStats] = {}
124
+ totalVectorCount: int
@@ -107,10 +107,3 @@ class AuditStorage:
107
107
 
108
108
  def delete_kb(self, kbid: str):
109
109
  raise NotImplementedError
110
-
111
- def suggest(
112
- self,
113
- kbid: str,
114
- client_type: int,
115
- ):
116
- raise NotImplementedError
@@ -108,10 +108,3 @@ class BasicAuditStorage(AuditStorage):
108
108
 
109
109
  def delete_kb(self, kbid: str):
110
110
  logger.debug(f"DELETE_KB {kbid}")
111
-
112
- def suggest(
113
- self,
114
- kbid: str,
115
- client_type: int,
116
- ):
117
- logger.debug(f"SUGGEST {kbid} {client_type}")
@@ -372,27 +372,6 @@ class StreamAuditStorage(AuditStorage):
372
372
  ],
373
373
  )
374
374
 
375
- def suggest(
376
- self,
377
- kbid: str,
378
- client_type: int,
379
- ):
380
- self.kb_usage_utility.send_kb_usage(
381
- service=Service.NUCLIA_DB,
382
- account_id=None,
383
- kb_id=kbid,
384
- kb_source=KBSource.HOSTED,
385
- # TODO unify AuditRequest client type and Nuclia Usage client type
386
- searches=[
387
- Search(
388
- client=ClientTypeKbUsage.Value(ClientType.Name(client_type)), # type: ignore
389
- type=SearchType.SUGGEST,
390
- tokens=0,
391
- num_searches=1,
392
- )
393
- ],
394
- )
395
-
396
375
  def chat(
397
376
  self,
398
377
  kbid: str,
nucliadb_utils/const.py CHANGED
@@ -81,3 +81,5 @@ class Features:
81
81
  FIND_MERGE_ORDER_FIX = "nucliadb_find_merge_order_fix"
82
82
  PG_CATALOG_READ = "nucliadb_pg_catalog_read"
83
83
  PG_CATALOG_WRITE = "nucliadb_pg_catalog_write"
84
+ VECTORSETS_V0 = "vectorsets_v0_new_kbs_with_multiple_vectorsets"
85
+ SKIP_EXTERNAL_INDEX = "nucliadb_skip_external_index"
@@ -73,6 +73,14 @@ DEFAULT_FLAG_DATA: dict[str, Any] = {
73
73
  "rollout": 0,
74
74
  "variants": {"environment": ["local"]},
75
75
  },
76
+ const.Features.VECTORSETS_V0: {
77
+ "rollout": 0,
78
+ "variants": {"environment": ["local"]},
79
+ },
80
+ const.Features.SKIP_EXTERNAL_INDEX: {
81
+ "rollout": 0,
82
+ "variants": {"environment": ["none"]},
83
+ },
76
84
  }
77
85
 
78
86
 
@@ -652,7 +652,7 @@ class GCSStorage(Storage):
652
652
  return deleted
653
653
 
654
654
  @storage_ops_observer.wrap({"type": "delete"})
655
- async def delete_kb(self, kbid: str):
655
+ async def delete_kb(self, kbid: str) -> tuple[bool, bool]:
656
656
  if self.session is None:
657
657
  raise AttributeError()
658
658
  bucket_name = self.get_bucket_name(kbid)
@@ -441,7 +441,7 @@ class S3Storage(Storage):
441
441
  deleted = True
442
442
  return deleted
443
443
 
444
- async def delete_kb(self, kbid: str):
444
+ async def delete_kb(self, kbid: str) -> tuple[bool, bool]:
445
445
  bucket_name = self.get_bucket_name(kbid)
446
446
 
447
447
  missing = False
@@ -29,7 +29,6 @@ from typing import (
29
29
  AsyncIterator,
30
30
  List,
31
31
  Optional,
32
- Tuple,
33
32
  Type,
34
33
  Union,
35
34
  cast,
@@ -495,7 +494,7 @@ class Storage(abc.ABC, metaclass=abc.ABCMeta):
495
494
  async def create_kb(self, kbid: str) -> bool: ...
496
495
 
497
496
  @abc.abstractmethod
498
- async def delete_kb(self, kbid: str) -> Tuple[bool, bool]: ...
497
+ async def delete_kb(self, kbid: str) -> tuple[bool, bool]: ...
499
498
 
500
499
  @abc.abstractmethod
501
500
  async def schedule_delete_kb(self, kbid: str) -> bool: ...
@@ -31,7 +31,7 @@ from nucliadb_utils.storages.azure import AzureStorage
31
31
 
32
32
  images.settings["azurite"] = {
33
33
  "image": "mcr.microsoft.com/azure-storage/azurite",
34
- "version": "3.30.0",
34
+ "version": "3.31.0",
35
35
  "options": {
36
36
  "ports": {"10000": None},
37
37
  "command": " ".join(
@@ -51,6 +51,8 @@ class Azurite(BaseImage):
51
51
  name = "azurite"
52
52
  port = 10000
53
53
 
54
+ _errors = 0
55
+
54
56
  def check(self):
55
57
  try:
56
58
  from azure.storage.blob import BlobServiceClient # type: ignore
@@ -58,13 +60,15 @@ class Azurite(BaseImage):
58
60
  container_port = self.port
59
61
  host_port = self.get_port(port=container_port)
60
62
  conn_string = get_connection_string(self.host, host_port)
61
-
62
63
  client = BlobServiceClient.from_connection_string(conn_string)
63
64
  container_client = client.get_container_client("foo")
64
65
  container_client.create_container()
65
66
  container_client.delete_container()
66
67
  return True
67
68
  except Exception as ex:
69
+ self._errors += 1
70
+ if self._errors > 10:
71
+ raise
68
72
  print(ex)
69
73
  return False
70
74
 
@@ -0,0 +1,60 @@
1
+ Metadata-Version: 2.1
2
+ Name: nucliadb_utils
3
+ Version: 5.0.1.post1075
4
+ Home-page: https://nuclia.com
5
+ License: BSD
6
+ Classifier: Development Status :: 4 - Beta
7
+ Classifier: Programming Language :: Python
8
+ Classifier: Programming Language :: Python :: 3.9
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3 :: Only
13
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
+ Requires-Python: >=3.9, <4
15
+ Requires-Dist: pydantic>=2.6
16
+ Requires-Dist: pydantic-settings>=2.2
17
+ Requires-Dist: aiohttp>=3.9.4
18
+ Requires-Dist: httpx>=0.27.0
19
+ Requires-Dist: prometheus-client>=0.12.0
20
+ Requires-Dist: types-requests>=2.27.7
21
+ Requires-Dist: mmh3>=3.0.0
22
+ Requires-Dist: nats-py[nkeys]>=2.6.0
23
+ Requires-Dist: PyNaCl
24
+ Requires-Dist: pyjwt>=2.4.0
25
+ Requires-Dist: memorylru>=1.1.2
26
+ Requires-Dist: mrflagly>=0.2.9
27
+ Requires-Dist: nucliadb-protos>=5.0.1.post1075
28
+ Requires-Dist: nucliadb-telemetry>=5.0.1.post1075
29
+ Provides-Extra: cache
30
+ Requires-Dist: redis>=4.3.4; extra == "cache"
31
+ Requires-Dist: orjson>=3.6.7; extra == "cache"
32
+ Requires-Dist: lru-dict>=1.1.7; extra == "cache"
33
+ Provides-Extra: fastapi
34
+ Requires-Dist: fastapi>=0.95.2; extra == "fastapi"
35
+ Requires-Dist: uvicorn<0.19.0,>=0.16.0; extra == "fastapi"
36
+ Requires-Dist: starlette>=0.21.0; extra == "fastapi"
37
+ Provides-Extra: storages
38
+ Requires-Dist: oauth2client>=4.1.3; extra == "storages"
39
+ Requires-Dist: aiobotocore>=2.9.0; extra == "storages"
40
+ Requires-Dist: google-api-python-client>=2.37.0; extra == "storages"
41
+ Requires-Dist: types-aiofiles>=0.8.3; extra == "storages"
42
+ Requires-Dist: aiofiles>=0.8.0; extra == "storages"
43
+ Requires-Dist: backoff>=1.11.1; extra == "storages"
44
+ Requires-Dist: google-auth>=2.4.1; extra == "storages"
45
+ Requires-Dist: azure-storage-blob==12.20.0; extra == "storages"
46
+ Requires-Dist: azure-identity>=1.16.1; extra == "storages"
47
+
48
+ # nucliadb util python library
49
+
50
+ - Nats driver
51
+ - FastAPI fixes
52
+ - S3/GCS drivers
53
+
54
+
55
+ # Install and run tests
56
+
57
+ ```bash
58
+ pdm sync -d
59
+ make test
60
+ ```
@@ -1,10 +1,10 @@
1
1
  nucliadb_utils/__init__.py,sha256=EvBCH1iTODe-AgXm48aj4kVUt_Std3PeL8QnwimR5wI,895
2
2
  nucliadb_utils/asyncio_utils.py,sha256=h8Y-xpcFFRgNzaiIW0eidz7griAQa7ggbNk34-tAt2c,2888
3
3
  nucliadb_utils/authentication.py,sha256=N__d2Ez3JHJv5asYK5TgUcIkKqcAC8ZTLlnfLhfSneM,5837
4
- nucliadb_utils/const.py,sha256=x6QNG0dAgn87fxwlH6vB0unKl_UDsUjJOgQBINIokko,2550
4
+ nucliadb_utils/const.py,sha256=ERzAa78DCPnE7ln9ChjP7A3ILdA_qGd9HStosBZkqwQ,2676
5
5
  nucliadb_utils/debug.py,sha256=Q56Nx9Dp7V2ae3CU2H0ztaZcHTJXdlflPLKLeOPZ170,2436
6
6
  nucliadb_utils/exceptions.py,sha256=y_3wk77WLVUtdo-5FtbBsdSkCtK_DsJkdWb5BoPn3qo,1094
7
- nucliadb_utils/featureflagging.py,sha256=-Ts3syVIXKCdCu2UdzkhdsSIlw0IKd32bjuDyXNwz6k,3077
7
+ nucliadb_utils/featureflagging.py,sha256=0nN3vmtaEs6rB2uFQn0kI88It9568gcZ0GWWeWI1AOk,3308
8
8
  nucliadb_utils/grpc.py,sha256=apu0uePnkGHCAT7GRQ9YZfRYyFj26kJ440i8jitbM3U,3314
9
9
  nucliadb_utils/helpers.py,sha256=nPw8yod3hP-pxq80VF8QC36s7ygSg0dBUdfI-LatvCs,1600
10
10
  nucliadb_utils/indexing.py,sha256=Luaqcar3CySpdYOFp6Q9Fyr8ZYwhYhaKRHQ_VGL78f8,2318
@@ -18,13 +18,13 @@ nucliadb_utils/store.py,sha256=kQ35HemE0v4_Qg6xVqNIJi8vSFAYQtwI3rDtMsNy62Y,890
18
18
  nucliadb_utils/transaction.py,sha256=mwcI3aIHAvU5KOGqd_Uz_d1XQzXhk_-NWY8NqU1lfb0,7307
19
19
  nucliadb_utils/utilities.py,sha256=idajCm_4Sojh7b3HTkP0fTfG2Mb6PIB9xtMmcfB7Nl0,15758
20
20
  nucliadb_utils/aiopynecone/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
21
- nucliadb_utils/aiopynecone/client.py,sha256=N4aVWS0zUaAfKyQKxJ_0M-8p_j5vKxD0r-GL4pgxFKc,20319
21
+ nucliadb_utils/aiopynecone/client.py,sha256=EFAQbNp-OHZ55vyXWzdzzp_59FGacGs_nfM2sMBIG8A,21153
22
22
  nucliadb_utils/aiopynecone/exceptions.py,sha256=EEE0XoGs1zIB5yOJ_fy6yoG4uIb4cWIawYdJeNe4eDo,3012
23
- nucliadb_utils/aiopynecone/models.py,sha256=tUugQ-ACQAyT-lhsfLwKAOgb6ilLchLwZfnRV7xwFck,3047
23
+ nucliadb_utils/aiopynecone/models.py,sha256=ketK2IYLWiwFZ76rnJmwfcuopFJrCAtCUszdTSurm_Q,3236
24
24
  nucliadb_utils/audit/__init__.py,sha256=cp15ZcFnHvpcu_5-aK2A4uUyvuZVV_MJn4bIXMa20ks,835
25
- nucliadb_utils/audit/audit.py,sha256=ictuErJy3X36S7s_f_sdNQQrQ4ackAYCT6M2-4nyenE,3086
26
- nucliadb_utils/audit/basic.py,sha256=-Yztp0I745J6dz_zHPKdXv60OH1m9_d69NlpbhsGFZI,3717
27
- nucliadb_utils/audit/stream.py,sha256=yPWe9iCJmTKLtB1iktSOKR8HDB0I3KF7vsWOwloljGM,14299
25
+ nucliadb_utils/audit/audit.py,sha256=2OyAQ3sUfFfVqBgaA3xiAby3eSIwpey2wg7Ctf0wDxc,2968
26
+ nucliadb_utils/audit/basic.py,sha256=NC3bEuEKS1EV2v7HuH0zt8YobK_xdpM45L9SBsR-GFU,3579
27
+ nucliadb_utils/audit/stream.py,sha256=Zysj70rwxCziJtptDCc4fHoACHyC5FVjkG47NaKx214,13661
28
28
  nucliadb_utils/cache/__init__.py,sha256=itSI7dtTwFP55YMX4iK7JzdMHS5CQVUiB1XzQu4UBh8,833
29
29
  nucliadb_utils/cache/exceptions.py,sha256=Zu-O_-0-yctOEgoDGI92gPzWfBMRrpiAyESA62ld6MA,975
30
30
  nucliadb_utils/cache/nats.py,sha256=-AjCfkFgKVdJUlGR0hT9JDSNkPVFg4S6w9eW-ZIcXPM,7037
@@ -47,25 +47,25 @@ nucliadb_utils/nuclia_usage/utils/kb_usage_report.py,sha256=P1fKvrcYdSPNJ1ycd0Ar
47
47
  nucliadb_utils/storages/__init__.py,sha256=5Qc8AUWiJv9_JbGCBpAn88AIJhwDlm0OPQpg2ZdRL4U,872
48
48
  nucliadb_utils/storages/azure.py,sha256=egMDwLNIGSQyVevuySt2AswzFdNAcih05BbRg3-p8IU,16015
49
49
  nucliadb_utils/storages/exceptions.py,sha256=mm_wX4YRtp7u7enkk_4pMSlX5AQQuFbq4xLmupVDt3Y,2502
50
- nucliadb_utils/storages/gcs.py,sha256=WblkxWoa1brevsJV3ebiE6s7Wb_eXFScw41202f5uP4,26999
50
+ nucliadb_utils/storages/gcs.py,sha256=k1WXZDBQXSizO_3kEJef7EmyInnASJsAy5VTtEw8ly4,27020
51
51
  nucliadb_utils/storages/local.py,sha256=NxC_nMBd38NDsR266DSgoBLdQlvUwf0_sd50r-BLI0E,10288
52
52
  nucliadb_utils/storages/nuclia.py,sha256=vEv94xAT7QM2g80S25QyrOw2pzvP2BAX-ADgZLtuCVc,2097
53
53
  nucliadb_utils/storages/object_store.py,sha256=Tw10GmpYfM5TMqJ3Tk9pLQ9wLMBk1-snL_m6uasiZDQ,4257
54
- nucliadb_utils/storages/s3.py,sha256=8KV-V7EiqRYhXYlGN0UjzM-v1Pj2Zh7NtXDikG96knU,19272
54
+ nucliadb_utils/storages/s3.py,sha256=8c5yFcoYWOnC_xWU3HveS6bMIH2_ZwAoNpdkFu9Fl8A,19293
55
55
  nucliadb_utils/storages/settings.py,sha256=ugCPy1zxBOmA2KosT-4tsjpvP002kg5iQyi42yCGCJA,1285
56
- nucliadb_utils/storages/storage.py,sha256=gknIjRiHZ_f0EhTVYKVRgT4VqMlgDy9Ia6Av_1zz1tk,19706
56
+ nucliadb_utils/storages/storage.py,sha256=4O2vUEAQz5SA93m9tVgNxOVuuy96gDNNvMrmutXpnjM,19695
57
57
  nucliadb_utils/storages/utils.py,sha256=8g2rIwJeYIumQLOB47Yw1rx3twlhRB_cJxer65QfZmk,1479
58
58
  nucliadb_utils/tests/__init__.py,sha256=Oo9CAE7B0eW5VHn8sHd6o30SQzOWUhktLPRXdlDOleA,1456
59
59
  nucliadb_utils/tests/asyncbenchmark.py,sha256=x4be2IwCawle9zWgMOJkmwoUwk5p1tv7cLQGmybkEOg,10587
60
- nucliadb_utils/tests/azure.py,sha256=uf1Ltt1sHyoN0Yt5QwkAm7GZxx-SXST1JdB4x3P_dEY,4372
60
+ nucliadb_utils/tests/azure.py,sha256=Dg-Eb4KVScG-O6P9y-bVQZTAKTNUMQ0i-CKEd9IdrWw,4474
61
61
  nucliadb_utils/tests/fixtures.py,sha256=b-e6Ciewh7GSh9rriG01bN9GiMW6xbGgrp3KiX7HNiY,2089
62
62
  nucliadb_utils/tests/gcs.py,sha256=Bx-kxf2NoYYeyNFPpBFxbRN8kIiYFpELEvqG0V1_9Ks,4183
63
63
  nucliadb_utils/tests/indexing.py,sha256=YW2QhkhO9Q_8A4kKWJaWSvXvyQ_AiAwY1VylcfVQFxk,1513
64
64
  nucliadb_utils/tests/local.py,sha256=7nuP8EFUAiA8ZH50R1iPV9EUXBySQxOanVm3Zht_e0g,1835
65
65
  nucliadb_utils/tests/nats.py,sha256=xqpww4jZjTKY9oPGlJdDJG67L3FIBQsa9qDHxILR8r8,7687
66
66
  nucliadb_utils/tests/s3.py,sha256=IdMxK_cNdSHLvO1u8BwsKFzD87Hk1MVPDZ57zx6h-rA,3656
67
- nucliadb_utils-5.0.1.post1044.dist-info/METADATA,sha256=tb6nwHLxxxB6EkIz5H3tFkHtSskd3L8aOVkiFYCurNs,2084
68
- nucliadb_utils-5.0.1.post1044.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
69
- nucliadb_utils-5.0.1.post1044.dist-info/top_level.txt,sha256=fE3vJtALTfgh7bcAWcNhcfXkNPp_eVVpbKK-2IYua3E,15
70
- nucliadb_utils-5.0.1.post1044.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
71
- nucliadb_utils-5.0.1.post1044.dist-info/RECORD,,
67
+ nucliadb_utils-5.0.1.post1075.dist-info/METADATA,sha256=5p7gO6sOPQ7sB8B_KiftcxYaq36LbZux-OgdslnKF8Q,2071
68
+ nucliadb_utils-5.0.1.post1075.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
69
+ nucliadb_utils-5.0.1.post1075.dist-info/top_level.txt,sha256=fE3vJtALTfgh7bcAWcNhcfXkNPp_eVVpbKK-2IYua3E,15
70
+ nucliadb_utils-5.0.1.post1075.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
71
+ nucliadb_utils-5.0.1.post1075.dist-info/RECORD,,
@@ -1,59 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: nucliadb_utils
3
- Version: 5.0.1.post1044
4
- Home-page: https://nuclia.com
5
- License: BSD
6
- Classifier: Development Status :: 4 - Beta
7
- Classifier: Programming Language :: Python
8
- Classifier: Programming Language :: Python :: 3.9
9
- Classifier: Programming Language :: Python :: 3.10
10
- Classifier: Programming Language :: Python :: 3.11
11
- Classifier: Programming Language :: Python :: 3.12
12
- Classifier: Programming Language :: Python :: 3 :: Only
13
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
- Requires-Python: >=3.9, <4
15
- Requires-Dist: pydantic >=2.6
16
- Requires-Dist: pydantic-settings >=2.2
17
- Requires-Dist: aiohttp >=3.9.4
18
- Requires-Dist: prometheus-client >=0.12.0
19
- Requires-Dist: types-requests >=2.27.7
20
- Requires-Dist: mmh3 >=3.0.0
21
- Requires-Dist: nats-py[nkeys] >=2.6.0
22
- Requires-Dist: PyNaCl
23
- Requires-Dist: pyjwt >=2.4.0
24
- Requires-Dist: memorylru >=1.1.2
25
- Requires-Dist: mrflagly >=0.2.9
26
- Requires-Dist: nucliadb-protos >=5.0.1.post1044
27
- Requires-Dist: nucliadb-telemetry >=5.0.1.post1044
28
- Provides-Extra: cache
29
- Requires-Dist: redis >=4.3.4 ; extra == 'cache'
30
- Requires-Dist: orjson >=3.6.7 ; extra == 'cache'
31
- Requires-Dist: lru-dict >=1.1.7 ; extra == 'cache'
32
- Provides-Extra: fastapi
33
- Requires-Dist: fastapi >=0.95.2 ; extra == 'fastapi'
34
- Requires-Dist: uvicorn <0.19.0,>=0.16.0 ; extra == 'fastapi'
35
- Requires-Dist: starlette >=0.21.0 ; extra == 'fastapi'
36
- Provides-Extra: storages
37
- Requires-Dist: oauth2client >=4.1.3 ; extra == 'storages'
38
- Requires-Dist: aiobotocore >=2.9.0 ; extra == 'storages'
39
- Requires-Dist: google-api-python-client >=2.37.0 ; extra == 'storages'
40
- Requires-Dist: types-aiofiles >=0.8.3 ; extra == 'storages'
41
- Requires-Dist: aiofiles >=0.8.0 ; extra == 'storages'
42
- Requires-Dist: backoff >=1.11.1 ; extra == 'storages'
43
- Requires-Dist: google-auth >=2.4.1 ; extra == 'storages'
44
- Requires-Dist: azure-storage-blob >=12.20.0 ; extra == 'storages'
45
- Requires-Dist: azure-identity >=1.16.1 ; extra == 'storages'
46
-
47
- # nucliadb util python library
48
-
49
- - Nats driver
50
- - FastAPI fixes
51
- - S3/GCS drivers
52
-
53
-
54
- # Install and run tests
55
-
56
- ```bash
57
- pdm sync -d
58
- make test
59
- ```