python3-commons 0.8.2__py3-none-any.whl → 0.8.4__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.
python3_commons/conf.py CHANGED
@@ -1,5 +1,5 @@
1
- from pydantic import SecretStr, PostgresDsn
2
- from pydantic_settings import BaseSettings
1
+ from pydantic import SecretStr, PostgresDsn, Field
2
+ from pydantic_settings import BaseSettings, SettingsConfigDict
3
3
 
4
4
 
5
5
  class CommonSettings(BaseSettings):
@@ -9,16 +9,15 @@ class CommonSettings(BaseSettings):
9
9
 
10
10
 
11
11
  class DBSettings(BaseSettings):
12
- dsn: PostgresDsn | None = None
12
+ model_config = SettingsConfigDict(env_prefix='DB_')
13
+
14
+ dsn: PostgresDsn | None = Field(default=None, serialization_alias='url')
13
15
  echo: bool = False
14
16
  pool_size: int = 20
15
17
  max_overflow: int = 0
16
18
  pool_timeout: int = 30
17
19
  pool_recycle: int = 1800 # 30 minutes
18
20
 
19
- class Config:
20
- env_prefix = 'DB_'
21
-
22
21
 
23
22
  class S3Settings(BaseSettings):
24
23
  s3_endpoint_url: str | None = None
@@ -15,25 +15,31 @@ Base = declarative_base(metadata=metadata)
15
15
 
16
16
 
17
17
  class AsyncSessionManager:
18
- def __init__(self, config: Mapping[str: DBSettings]):
19
- self.config: Mapping[str: DBSettings] = config
18
+ def __init__(self, db_settings: Mapping[str, DBSettings]):
19
+ self.db_settings: Mapping[str, DBSettings] = db_settings
20
20
  self.engines: dict[str, AsyncEngine] = {}
21
21
  self.session_makers: dict = {}
22
22
 
23
- def get_config(self, name: str) -> Mapping[str, str | int]:
23
+ def get_db_settings(self, name: str) -> DBSettings:
24
24
  try:
25
- return self.config[name]
25
+ return self.db_settings[name]
26
26
  except KeyError:
27
- logger.error(f'Missing database config: {name}')
27
+ logger.error(f'Missing database settings: {name}')
28
28
 
29
29
  raise
30
30
 
31
+ def async_engine_from_db_settings(self, name):
32
+ db_settings = self.get_db_settings(name)
33
+ engine = async_engine_from_config(db_settings.model_dump(by_alias=True))
34
+
35
+ return engine
36
+
31
37
  def get_engine(self, name: str) -> AsyncEngine:
32
38
  try:
33
39
  engine = self.engines[name]
34
40
  except KeyError:
35
41
  logger.debug(f'Creating engine: {name}')
36
- engine = async_engine_from_config(self.config[name])
42
+ engine = self.async_engine_from_db_settings(name)
37
43
  self.engines[name] = engine
38
44
 
39
45
  return engine
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.8.2
3
+ Version: 0.8.4
4
4
  Summary: Re-usable Python3 code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License: gpl-3
@@ -1,12 +1,12 @@
1
1
  python3_commons/__init__.py,sha256=0KgaYU46H_IMKn-BuasoRN3C4Hi45KlkHHoPbU9cwiA,189
2
2
  python3_commons/api_client.py,sha256=zj6zTF-DhUMu4bjj9VWLi63mVODG_SB47Q5qlmG-Sxg,4539
3
3
  python3_commons/audit.py,sha256=DMQ-nrWSs0qilD7wkz_8PV4jXcee75O8FgAm2YIuOiY,6256
4
- python3_commons/conf.py,sha256=p1wBPbDR8x6MgY7Lc707RVBnpVXVM9UotjYCgM2Qqls,935
4
+ python3_commons/conf.py,sha256=jRk6kraRHVXsajmUPl0NjcZsH4_MgrN1IHlzdg06cSw,1015
5
5
  python3_commons/fs.py,sha256=wfLjybXndwLqNlOxTpm_HRJnuTcC4wbrHEOaEeCo9Wc,337
6
6
  python3_commons/helpers.py,sha256=OmuCF7UeJ6oe-rH1Y4ZYVW_uPQ973lCLsikj01wmNqs,3101
7
7
  python3_commons/object_storage.py,sha256=Bte49twIJ4l6VAzIqK6tLx7DFYwijErUmmhWkrZpSJE,4074
8
8
  python3_commons/permissions.py,sha256=V6kT7gBQ0fZRDQwreM9es90BvvpB3gUofuqnFvx2g-o,1553
9
- python3_commons/db/__init__.py,sha256=t9OsJXVbjsNZ0sW_96kzVMac_YKvKSlsrM5oP1uf9Vg,2338
9
+ python3_commons/db/__init__.py,sha256=DCerYVTjJn0Xy-yDfGG5JGRB9xaq9YuDwdFmnFcm9rc,2554
10
10
  python3_commons/db/helpers.py,sha256=0z-pXAxQg0KqrqfoUcRooRHNrrKi-g2mSO6euVMscpE,1891
11
11
  python3_commons/db/models/__init__.py,sha256=AeeTLUqdqQrhCTi14ACWO0ccyVyWFppZVtCeWShSvR0,193
12
12
  python3_commons/db/models/auth.py,sha256=ctHiz_5x17TdXac7a3SjfuZ0-nEgnxK7RwKOY8qflZc,1195
@@ -19,9 +19,9 @@ python3_commons/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
19
19
  python3_commons/serializers/json.py,sha256=P288wWz9ic38QWEMrpp_uwKPYkQiOgvE1cI4WZn6ZCg,808
20
20
  python3_commons/serializers/msgpack.py,sha256=tzIGGyDL3UpZnnouCtnxuYDx6InKM_C3PP1N4PN8wd4,1269
21
21
  python3_commons/serializers/msgspec.py,sha256=FuZVqOLJb0-lEKrs7dtjhwEbHIpfMUk5yu1hD64zRdc,2038
22
- python3_commons-0.8.2.dist-info/licenses/AUTHORS.rst,sha256=3R9JnfjfjH5RoPWOeqKFJgxVShSSfzQPIrEr1nxIo9Q,90
23
- python3_commons-0.8.2.dist-info/licenses/LICENSE,sha256=xxILuojHm4fKQOrMHPSslbyy6WuKAN2RiG74HbrYfzM,34575
24
- python3_commons-0.8.2.dist-info/METADATA,sha256=c2z0yPdsGqXzarP4t2XV11C6_11SLfHjPhXg8Yvi2nk,1149
25
- python3_commons-0.8.2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
26
- python3_commons-0.8.2.dist-info/top_level.txt,sha256=lJI6sCBf68eUHzupCnn2dzG10lH3jJKTWM_hrN1cQ7M,16
27
- python3_commons-0.8.2.dist-info/RECORD,,
22
+ python3_commons-0.8.4.dist-info/licenses/AUTHORS.rst,sha256=3R9JnfjfjH5RoPWOeqKFJgxVShSSfzQPIrEr1nxIo9Q,90
23
+ python3_commons-0.8.4.dist-info/licenses/LICENSE,sha256=xxILuojHm4fKQOrMHPSslbyy6WuKAN2RiG74HbrYfzM,34575
24
+ python3_commons-0.8.4.dist-info/METADATA,sha256=hGEad9-rtB4j7n17p9tkMgRnHZlMEMcIA2_Mw3j2-PQ,1149
25
+ python3_commons-0.8.4.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
26
+ python3_commons-0.8.4.dist-info/top_level.txt,sha256=lJI6sCBf68eUHzupCnn2dzG10lH3jJKTWM_hrN1cQ7M,16
27
+ python3_commons-0.8.4.dist-info/RECORD,,