python3-commons 0.8.20__tar.gz → 0.8.22__tar.gz

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.
Files changed (54) hide show
  1. {python3_commons-0.8.20/src/python3_commons.egg-info → python3_commons-0.8.22}/PKG-INFO +1 -1
  2. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/conf.py +28 -1
  3. {python3_commons-0.8.20 → python3_commons-0.8.22/src/python3_commons.egg-info}/PKG-INFO +1 -1
  4. {python3_commons-0.8.20 → python3_commons-0.8.22}/.coveragerc +0 -0
  5. {python3_commons-0.8.20 → python3_commons-0.8.22}/.github/workflows/python-publish.yaml +0 -0
  6. {python3_commons-0.8.20 → python3_commons-0.8.22}/.gitignore +0 -0
  7. {python3_commons-0.8.20 → python3_commons-0.8.22}/.pre-commit-config.yaml +0 -0
  8. {python3_commons-0.8.20 → python3_commons-0.8.22}/.python-version +0 -0
  9. {python3_commons-0.8.20 → python3_commons-0.8.22}/AUTHORS.rst +0 -0
  10. {python3_commons-0.8.20 → python3_commons-0.8.22}/CHANGELOG.rst +0 -0
  11. {python3_commons-0.8.20 → python3_commons-0.8.22}/LICENSE +0 -0
  12. {python3_commons-0.8.20 → python3_commons-0.8.22}/README.md +0 -0
  13. {python3_commons-0.8.20 → python3_commons-0.8.22}/README.rst +0 -0
  14. {python3_commons-0.8.20 → python3_commons-0.8.22}/docs/Makefile +0 -0
  15. {python3_commons-0.8.20 → python3_commons-0.8.22}/docs/_static/.gitignore +0 -0
  16. {python3_commons-0.8.20 → python3_commons-0.8.22}/docs/authors.rst +0 -0
  17. {python3_commons-0.8.20 → python3_commons-0.8.22}/docs/changelog.rst +0 -0
  18. {python3_commons-0.8.20 → python3_commons-0.8.22}/docs/conf.py +0 -0
  19. {python3_commons-0.8.20 → python3_commons-0.8.22}/docs/index.rst +0 -0
  20. {python3_commons-0.8.20 → python3_commons-0.8.22}/docs/license.rst +0 -0
  21. {python3_commons-0.8.20 → python3_commons-0.8.22}/pyproject.toml +0 -0
  22. {python3_commons-0.8.20 → python3_commons-0.8.22}/setup.cfg +0 -0
  23. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/__init__.py +0 -0
  24. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/api_client.py +0 -0
  25. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/audit.py +0 -0
  26. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/auth.py +0 -0
  27. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/cache.py +0 -0
  28. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/db/__init__.py +0 -0
  29. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/db/helpers.py +0 -0
  30. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/db/models/__init__.py +0 -0
  31. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/db/models/auth.py +0 -0
  32. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/db/models/common.py +0 -0
  33. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/db/models/rbac.py +0 -0
  34. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/fs.py +0 -0
  35. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/helpers.py +0 -0
  36. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/log/__init__.py +0 -0
  37. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/log/filters.py +0 -0
  38. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/log/formatters.py +0 -0
  39. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/object_storage.py +0 -0
  40. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/permissions.py +0 -0
  41. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/serializers/__init__.py +0 -0
  42. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/serializers/json.py +0 -0
  43. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/serializers/msgpack.py +0 -0
  44. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons/serializers/msgspec.py +0 -0
  45. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons.egg-info/SOURCES.txt +0 -0
  46. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons.egg-info/dependency_links.txt +0 -0
  47. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons.egg-info/requires.txt +0 -0
  48. {python3_commons-0.8.20 → python3_commons-0.8.22}/src/python3_commons.egg-info/top_level.txt +0 -0
  49. {python3_commons-0.8.20 → python3_commons-0.8.22}/tests/conftest.py +0 -0
  50. {python3_commons-0.8.20 → python3_commons-0.8.22}/tests/test_audit.py +0 -0
  51. {python3_commons-0.8.20 → python3_commons-0.8.22}/tests/test_helpers.py +0 -0
  52. {python3_commons-0.8.20 → python3_commons-0.8.22}/tests/test_msgpack.py +0 -0
  53. {python3_commons-0.8.20 → python3_commons-0.8.22}/tests/test_msgspec.py +0 -0
  54. {python3_commons-0.8.20 → python3_commons-0.8.22}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.8.20
3
+ Version: 0.8.22
4
4
  Summary: Re-usable Python3 code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License-Expression: GPL-3.0
@@ -1,4 +1,4 @@
1
- from pydantic import Field, HttpUrl, PostgresDsn, RedisDsn, SecretStr
1
+ from pydantic import Field, HttpUrl, PostgresDsn, RedisDsn, SecretStr, model_validator
2
2
  from pydantic_settings import BaseSettings, SettingsConfigDict
3
3
 
4
4
 
@@ -27,12 +27,39 @@ class DBSettings(BaseSettings):
27
27
  model_config = SettingsConfigDict(env_prefix='DB_')
28
28
 
29
29
  dsn: PostgresDsn | None = Field(default=None, serialization_alias='url')
30
+ scheme: str = 'postgresql+asyncpg'
31
+ host: str = 'localhost'
32
+ port: int = 5432
33
+ name: str | None = None
34
+ user: str | None = None
35
+ password: SecretStr | None = Field(default=None, alias='pass')
36
+
30
37
  echo: bool = False
31
38
  pool_size: int = 20
32
39
  max_overflow: int = 0
33
40
  pool_timeout: int = 30
34
41
  pool_recycle: int = 1800 # 30 minutes
35
42
 
43
+ @model_validator(mode='after')
44
+ def build_dsn_if_missing(self) -> 'DBSettings':
45
+ if self.dsn is None and all(
46
+ (
47
+ self.user,
48
+ self.password,
49
+ self.name,
50
+ )
51
+ ):
52
+ self.dsn = PostgresDsn.build(
53
+ scheme=self.scheme,
54
+ username=self.user,
55
+ password=self.password.get_secret_value() if self.password else None,
56
+ host=self.host,
57
+ port=self.port,
58
+ path=f'/{self.name}',
59
+ )
60
+
61
+ return self
62
+
36
63
 
37
64
  class S3Settings(BaseSettings):
38
65
  s3_endpoint_url: str | None = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.8.20
3
+ Version: 0.8.22
4
4
  Summary: Re-usable Python3 code
5
5
  Author-email: Oleg Korsak <kamikaze.is.waiting.you@gmail.com>
6
6
  License-Expression: GPL-3.0