nucliadb-utils 3.2.0.post513__py3-none-any.whl → 4.0.0.post516__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.
@@ -19,7 +19,7 @@
19
19
 
20
20
  from typing import List, Optional
21
21
 
22
- from pydantic import BaseSettings
22
+ from pydantic_settings import BaseSettings
23
23
 
24
24
 
25
25
  class Settings(BaseSettings):
@@ -21,14 +21,14 @@ import json
21
21
  from typing import Any, Optional
22
22
 
23
23
  import mrflagly
24
- import pydantic
24
+ import pydantic_settings
25
25
 
26
26
  from nucliadb_utils import const
27
27
  from nucliadb_utils.settings import nuclia_settings, running_settings
28
28
 
29
29
 
30
- class Settings(pydantic.BaseSettings):
31
- flag_settings_url: Optional[str]
30
+ class Settings(pydantic_settings.BaseSettings):
31
+ flag_settings_url: Optional[str] = None
32
32
 
33
33
 
34
34
  DEFAULT_FLAG_DATA: dict[str, Any] = {
@@ -20,8 +20,8 @@
20
20
  from enum import Enum
21
21
  from typing import Dict, List, Optional
22
22
 
23
- from pydantic import BaseSettings, Field
24
- from pydantic.class_validators import root_validator
23
+ from pydantic import AliasChoices, Field, model_validator
24
+ from pydantic_settings import BaseSettings
25
25
 
26
26
 
27
27
  class RunningSettings(BaseSettings):
@@ -29,7 +29,7 @@ class RunningSettings(BaseSettings):
29
29
  sentry_url: Optional[str] = None
30
30
  running_environment: str = Field(
31
31
  default="local",
32
- env=["environment", "running_environment"],
32
+ validation_alias=AliasChoices("environment", "running_environment"),
33
33
  description="Running environment. One of: local, test, stage, prod",
34
34
  )
35
35
  metrics_port: int = 3030
@@ -48,7 +48,7 @@ class HTTPSettings(BaseSettings):
48
48
  http_settings = HTTPSettings()
49
49
 
50
50
 
51
- class FileBackendConfig(str, Enum):
51
+ class FileBackendConfig(Enum):
52
52
  GCS = "gcs"
53
53
  S3 = "s3"
54
54
  PG = "pg"
@@ -130,7 +130,9 @@ class NucliaSettings(BaseSettings):
130
130
  "http://processing-api.processing.svc.cluster.local:8080"
131
131
  )
132
132
  nuclia_inner_predict_url: str = "http://predict.learning.svc.cluster.local:8080"
133
- learning_internal_svc_base_url = "http://{service}.learning.svc.cluster.local:8080"
133
+ learning_internal_svc_base_url: str = (
134
+ "http://{service}.learning.svc.cluster.local:8080"
135
+ )
134
136
 
135
137
  nuclia_zone: str = "europe-1"
136
138
  onprem: bool = True
@@ -145,7 +147,8 @@ class NucliaSettings(BaseSettings):
145
147
  local_predict: bool = False
146
148
  local_predict_headers: Dict[str, str] = {}
147
149
 
148
- @root_validator(pre=True)
150
+ @model_validator(mode="before")
151
+ @classmethod
149
152
  def check_onprem_does_not_use_jwt_key(cls, values):
150
153
  if values.get("onprem") and values.get("jwt_key") is not None:
151
154
  raise ValueError("Invalid validation")
@@ -20,7 +20,7 @@
20
20
  import os
21
21
  from typing import Dict, Optional
22
22
 
23
- from pydantic import BaseSettings
23
+ from pydantic_settings import BaseSettings
24
24
 
25
25
 
26
26
  class Settings(BaseSettings):
@@ -24,6 +24,7 @@ import pytest
24
24
 
25
25
  from nucliadb_utils import featureflagging, utilities
26
26
  from nucliadb_utils.exceptions import ConfigurationError
27
+ from nucliadb_utils.settings import FileBackendConfig
27
28
 
28
29
 
29
30
  @pytest.fixture(autouse=True)
@@ -42,7 +43,9 @@ def test_clean_utility():
42
43
  async def test_get_storage_s3():
43
44
  s3 = AsyncMock()
44
45
  with (
45
- patch.object(utilities.storage_settings, "file_backend", "s3"),
46
+ patch.object(
47
+ utilities.storage_settings, "file_backend", FileBackendConfig("s3")
48
+ ),
46
49
  patch("nucliadb_utils.storages.s3.S3Storage", return_value=s3),
47
50
  ):
48
51
  assert await utilities.get_storage() == s3
@@ -52,7 +55,9 @@ async def test_get_storage_s3():
52
55
  async def test_get_storage_gcs():
53
56
  gcs = AsyncMock()
54
57
  with (
55
- patch.object(utilities.storage_settings, "file_backend", "gcs"),
58
+ patch.object(
59
+ utilities.storage_settings, "file_backend", FileBackendConfig("gcs")
60
+ ),
56
61
  patch("nucliadb_utils.storages.gcs.GCSStorage", return_value=gcs),
57
62
  ):
58
63
  assert await utilities.get_storage() == gcs
@@ -62,7 +67,9 @@ async def test_get_storage_gcs():
62
67
  async def test_get_storage_pg():
63
68
  pg = AsyncMock()
64
69
  with (
65
- patch.object(utilities.storage_settings, "file_backend", "pg"),
70
+ patch.object(
71
+ utilities.storage_settings, "file_backend", FileBackendConfig("pg")
72
+ ),
66
73
  patch("nucliadb_utils.storages.pg.PostgresStorage", return_value=pg),
67
74
  ):
68
75
  assert await utilities.get_storage() == pg
@@ -72,7 +79,9 @@ async def test_get_storage_pg():
72
79
  async def test_get_storage_local():
73
80
  local = AsyncMock()
74
81
  with (
75
- patch.object(utilities.storage_settings, "file_backend", "local"),
82
+ patch.object(
83
+ utilities.storage_settings, "file_backend", FileBackendConfig("local")
84
+ ),
76
85
  patch.object(utilities.storage_settings, "local_files", "/files"),
77
86
  patch("nucliadb_utils.storages.local.LocalStorage", return_value=local),
78
87
  ):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nucliadb-utils
3
- Version: 3.2.0.post513
3
+ Version: 4.0.0.post516
4
4
  Home-page: https://nuclia.com
5
5
  License: BSD
6
6
  Classifier: Development Status :: 4 - Beta
@@ -11,7 +11,8 @@ Classifier: Programming Language :: Python :: 3.11
11
11
  Classifier: Programming Language :: Python :: 3 :: Only
12
12
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
13
13
  Requires-Python: >=3.9, <4
14
- Requires-Dist: pydantic <2.0,>=1.8.2
14
+ Requires-Dist: pydantic >=2.7
15
+ Requires-Dist: pydantic-settings >=2.2
15
16
  Requires-Dist: aiohttp >=3.9.4
16
17
  Requires-Dist: prometheus-client >=0.12.0
17
18
  Requires-Dist: types-requests >=2.27.7
@@ -20,8 +21,8 @@ Requires-Dist: nats-py[nkeys] >=2.6.0
20
21
  Requires-Dist: pyjwt >=2.4.0
21
22
  Requires-Dist: memorylru >=1.1.2
22
23
  Requires-Dist: mrflagly
23
- Requires-Dist: nucliadb-protos >=3.2.0.post513
24
- Requires-Dist: nucliadb-telemetry >=3.2.0.post513
24
+ Requires-Dist: nucliadb-protos >=4.0.0.post516
25
+ Requires-Dist: nucliadb-telemetry >=4.0.0.post516
25
26
  Provides-Extra: cache
26
27
  Requires-Dist: redis >=4.3.4 ; extra == 'cache'
27
28
  Requires-Dist: orjson >=3.6.7 ; extra == 'cache'
@@ -4,7 +4,7 @@ nucliadb_utils/authentication.py,sha256=HTj6kFFrfdN4-DW_MNqldAPqNPdPwGHnSWl-Sigi
4
4
  nucliadb_utils/const.py,sha256=V9SWXB_Nfy0qqgPkQcEYN_zj90WkOpLubeixRKUprfM,2391
5
5
  nucliadb_utils/debug.py,sha256=saSfh_CDQoQl-35KCyqef5hdB_OVdrIEnlmWnZU18vg,2470
6
6
  nucliadb_utils/exceptions.py,sha256=y_3wk77WLVUtdo-5FtbBsdSkCtK_DsJkdWb5BoPn3qo,1094
7
- nucliadb_utils/featureflagging.py,sha256=c__VxSnYmH7oI9MSaUBLXghE8zE-q45neJWbc8hYejU,2715
7
+ nucliadb_utils/featureflagging.py,sha256=M94p2qQROCmeMX_N3PPvzAR3iaNBGvjwdE1-aAAWp1k,2740
8
8
  nucliadb_utils/grpc.py,sha256=USXwPRuCJiSyLf0JW4isIKZne6od8gM_GGLWaHHjknk,3336
9
9
  nucliadb_utils/helpers.py,sha256=fOL6eImdvKO3NV39ymmo2UOCT-GAK1dfXKoMKdzdmFo,1599
10
10
  nucliadb_utils/indexing.py,sha256=ELJ9bTnrxcb6tmO77HzzO1SDLPmKXTc_nBiLnJocz5I,3462
@@ -12,7 +12,7 @@ nucliadb_utils/nats.py,sha256=7hRKMflwxK-p_L0KFO5jibOGhzSw2F24mKvPG-A_iN8,8224
12
12
  nucliadb_utils/partition.py,sha256=0tmXuwRM_v-OmKoRkB--OMDzomVEkmgxqMmNNomI_24,1173
13
13
  nucliadb_utils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  nucliadb_utils/run.py,sha256=bKMfsPEK6WdWfiPyWPUxCqcLo4tq6eOwyaf910TOwBk,1713
15
- nucliadb_utils/settings.py,sha256=D3ZTeOVE1YvZ_DAgop8flNqWbwGWNpRJURjbJPbmmzM,7209
15
+ nucliadb_utils/settings.py,sha256=sFvYT903OFoIz1do0kDnxVLLucQ1nJDxPPJZJyofqow,7280
16
16
  nucliadb_utils/signals.py,sha256=KxV4UUNWf4wrEbt1iJzy6PxYuTEhi6IRisKlYlq5OtM,2702
17
17
  nucliadb_utils/store.py,sha256=kQ35HemE0v4_Qg6xVqNIJi8vSFAYQtwI3rDtMsNy62Y,890
18
18
  nucliadb_utils/transaction.py,sha256=CQpsuF-E2omh4gGMxXCn0dv7vL9ctxooWpSgWGbGfBA,7212
@@ -25,7 +25,7 @@ nucliadb_utils/cache/__init__.py,sha256=itSI7dtTwFP55YMX4iK7JzdMHS5CQVUiB1XzQu4U
25
25
  nucliadb_utils/cache/exceptions.py,sha256=Zu-O_-0-yctOEgoDGI92gPzWfBMRrpiAyESA62ld6MA,975
26
26
  nucliadb_utils/cache/nats.py,sha256=h0x894QNLkkvyOcmqH8ncC-d0AiHm9SjDgvPPiwxYao,7089
27
27
  nucliadb_utils/cache/pubsub.py,sha256=l8i_RwRf7OPzfmPy-gyn66xgYFs5aHidCIjEaU9VOHE,1654
28
- nucliadb_utils/cache/settings.py,sha256=tG8SWwnJjeE_AovEgCisfxhl-hzklm1Yb9nvwYSgW1A,1050
28
+ nucliadb_utils/cache/settings.py,sha256=WVeHOE6Re5i4k2hUHdFKfkoL4n83v_Z6UPBK6GHYb8g,1059
29
29
  nucliadb_utils/fastapi/__init__.py,sha256=itSI7dtTwFP55YMX4iK7JzdMHS5CQVUiB1XzQu4UBh8,833
30
30
  nucliadb_utils/fastapi/openapi.py,sha256=b0pLuri0QuzQd0elDyOVXM42YYmES_cmT-jEfsQ1G6Y,1737
31
31
  nucliadb_utils/fastapi/run.py,sha256=n6vOX64QqF1I5n4UlKnpm_ZJ24rmwfRGi-J9YMGpZzA,3631
@@ -37,7 +37,7 @@ nucliadb_utils/storages/local.py,sha256=SZrBkxnGg8DoMHlT4GaBP5LqMwi6QAe-d_eLU2MJ
37
37
  nucliadb_utils/storages/nuclia.py,sha256=UfvRu92eqG1v-PE-UWH2x8KEJFqDqATMmUGFmEuqSSs,2097
38
38
  nucliadb_utils/storages/pg.py,sha256=vxx8FQIToA_C6CO1uu9W080yZl0SgUVtTEWd6lQhPJc,18610
39
39
  nucliadb_utils/storages/s3.py,sha256=EYfn2CjoVL0tPFUqMaHgJYHjrSQaIUzLeNYoRa1qp-A,18809
40
- nucliadb_utils/storages/settings.py,sha256=bUl3D7To-s3OVXPFFF7LwJbEKGF2WvDM14pwqQdkyoQ,1276
40
+ nucliadb_utils/storages/settings.py,sha256=ugCPy1zxBOmA2KosT-4tsjpvP002kg5iQyi42yCGCJA,1285
41
41
  nucliadb_utils/storages/storage.py,sha256=W8pDa5pXTvfDY5ugEPVESpnkpDE7hnj7jnQQaKdlXk8,20559
42
42
  nucliadb_utils/tests/__init__.py,sha256=Oo9CAE7B0eW5VHn8sHd6o30SQzOWUhktLPRXdlDOleA,1456
43
43
  nucliadb_utils/tests/asyncbenchmark.py,sha256=rN_NNDk4ras0qgFp0QlRyAi9ZU9xITdzxl2s5CigzBo,10698
@@ -57,14 +57,14 @@ nucliadb_utils/tests/unit/test_run.py,sha256=VHeojVBj_AfV_uNch9eEi4zCT-O94VKjwb_
57
57
  nucliadb_utils/tests/unit/test_signals.py,sha256=Br3BjBZpAtKPqeSmfHSGf1Seu4mB2OBWFCgLcNEH0PQ,2647
58
58
  nucliadb_utils/tests/unit/test_tests.py,sha256=-YHgVMKJr_3WYwrBj9TnwpVLIkP80PLZpWnvAIYvnz8,1189
59
59
  nucliadb_utils/tests/unit/test_transaction.py,sha256=ULVALWbMWEkH2Gq5Q8olEL8k8Kqyh5RAe0Lp9qdF1V4,3917
60
- nucliadb_utils/tests/unit/test_utilities.py,sha256=ngJSkqqr4XnFWcaRNb8hqsffEMx7KwZ2crMW7ALr8v4,5159
60
+ nucliadb_utils/tests/unit/test_utilities.py,sha256=KcHSPp3RZyKAnscJrIwc2M3PCD3l1DWb6WuqtI6cl5o,5377
61
61
  nucliadb_utils/tests/unit/storages/__init__.py,sha256=itSI7dtTwFP55YMX4iK7JzdMHS5CQVUiB1XzQu4UBh8,833
62
62
  nucliadb_utils/tests/unit/storages/test_aws.py,sha256=GCsB_jwCUNV3Ogt8TZZEmNKAHvOlR0HGU7blrFbtJqs,1924
63
63
  nucliadb_utils/tests/unit/storages/test_gcs.py,sha256=2XzJwgNpfjVGjtE-QdZhu3ayuT1EMEXINdM-_SatPCY,3554
64
64
  nucliadb_utils/tests/unit/storages/test_pg.py,sha256=sJfUttMSzq8W1XYolAUcMxl_R5HcEzb5fpCklPeMJiY,17000
65
65
  nucliadb_utils/tests/unit/storages/test_storage.py,sha256=VFpRq6Q6BjnIrBQCumYzR8DQUacwhxt5CzTKSlqqD24,6892
66
- nucliadb_utils-3.2.0.post513.dist-info/METADATA,sha256=lENwTrBsXrXC5Y7v4BIUezoHAQVh9YsG5sQwD5zm6Tc,1925
67
- nucliadb_utils-3.2.0.post513.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
68
- nucliadb_utils-3.2.0.post513.dist-info/top_level.txt,sha256=fE3vJtALTfgh7bcAWcNhcfXkNPp_eVVpbKK-2IYua3E,15
69
- nucliadb_utils-3.2.0.post513.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
70
- nucliadb_utils-3.2.0.post513.dist-info/RECORD,,
66
+ nucliadb_utils-4.0.0.post516.dist-info/METADATA,sha256=LNMe6roe8eKyLIbxDOI5aPaOLus4afnwlVPt0Kk3pTM,1957
67
+ nucliadb_utils-4.0.0.post516.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
68
+ nucliadb_utils-4.0.0.post516.dist-info/top_level.txt,sha256=fE3vJtALTfgh7bcAWcNhcfXkNPp_eVVpbKK-2IYua3E,15
69
+ nucliadb_utils-4.0.0.post516.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
70
+ nucliadb_utils-4.0.0.post516.dist-info/RECORD,,