python3-commons 0.24.2__tar.gz → 0.24.4__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 (82) hide show
  1. {python3_commons-0.24.2 → python3_commons-0.24.4}/.pre-commit-config.yaml +1 -1
  2. {python3_commons-0.24.2 → python3_commons-0.24.4}/PKG-INFO +5 -5
  3. {python3_commons-0.24.2 → python3_commons-0.24.4}/pyproject.toml +4 -4
  4. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/conf.py +2 -0
  5. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/db/__init__.py +2 -2
  6. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons.egg-info/PKG-INFO +5 -5
  7. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons.egg-info/requires.txt +4 -4
  8. python3_commons-0.24.4/src/python3_commons.egg-info/scm_version.json +8 -0
  9. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/db/test_async_session_manager.py +2 -0
  10. {python3_commons-0.24.2 → python3_commons-0.24.4}/uv.lock +196 -174
  11. python3_commons-0.24.2/src/python3_commons.egg-info/scm_version.json +0 -8
  12. {python3_commons-0.24.2 → python3_commons-0.24.4}/.coveragerc +0 -0
  13. {python3_commons-0.24.2 → python3_commons-0.24.4}/.devcontainer/Dockerfile +0 -0
  14. {python3_commons-0.24.2 → python3_commons-0.24.4}/.devcontainer/devcontainer.json +0 -0
  15. {python3_commons-0.24.2 → python3_commons-0.24.4}/.devcontainer/docker-compose.yml +0 -0
  16. {python3_commons-0.24.2 → python3_commons-0.24.4}/.env_template +0 -0
  17. {python3_commons-0.24.2 → python3_commons-0.24.4}/.github/workflows/checks.yml +0 -0
  18. {python3_commons-0.24.2 → python3_commons-0.24.4}/.github/workflows/python-publish.yaml +0 -0
  19. {python3_commons-0.24.2 → python3_commons-0.24.4}/.github/workflows/release-on-tag-push.yml +0 -0
  20. {python3_commons-0.24.2 → python3_commons-0.24.4}/.gitignore +0 -0
  21. {python3_commons-0.24.2 → python3_commons-0.24.4}/.python-version +0 -0
  22. {python3_commons-0.24.2 → python3_commons-0.24.4}/AUTHORS.rst +0 -0
  23. {python3_commons-0.24.2 → python3_commons-0.24.4}/CHANGELOG.rst +0 -0
  24. {python3_commons-0.24.2 → python3_commons-0.24.4}/LICENSE +0 -0
  25. {python3_commons-0.24.2 → python3_commons-0.24.4}/README.md +0 -0
  26. {python3_commons-0.24.2 → python3_commons-0.24.4}/README.rst +0 -0
  27. {python3_commons-0.24.2 → python3_commons-0.24.4}/docs/Makefile +0 -0
  28. {python3_commons-0.24.2 → python3_commons-0.24.4}/docs/_static/.gitignore +0 -0
  29. {python3_commons-0.24.2 → python3_commons-0.24.4}/docs/authors.rst +0 -0
  30. {python3_commons-0.24.2 → python3_commons-0.24.4}/docs/changelog.rst +0 -0
  31. {python3_commons-0.24.2 → python3_commons-0.24.4}/docs/conf.py +0 -0
  32. {python3_commons-0.24.2 → python3_commons-0.24.4}/docs/index.rst +0 -0
  33. {python3_commons-0.24.2 → python3_commons-0.24.4}/docs/license.rst +0 -0
  34. {python3_commons-0.24.2 → python3_commons-0.24.4}/setup.cfg +0 -0
  35. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/__init__.py +0 -0
  36. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/api_client.py +0 -0
  37. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/async_functools.py +0 -0
  38. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/audit.py +0 -0
  39. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/auth.py +0 -0
  40. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/cache.py +0 -0
  41. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/db/helpers.py +0 -0
  42. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/db/models/__init__.py +0 -0
  43. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/db/models/auth.py +0 -0
  44. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/db/models/common.py +0 -0
  45. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/db/models/rbac.py +0 -0
  46. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/db/models/users.py +0 -0
  47. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/exceptions.py +0 -0
  48. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/fs.py +0 -0
  49. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/generators.py +0 -0
  50. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/helpers.py +0 -0
  51. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/log/__init__.py +0 -0
  52. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/log/filters.py +0 -0
  53. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/log/formatters.py +0 -0
  54. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/object_storage.py +0 -0
  55. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/permissions.py +0 -0
  56. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/serializers/__init__.py +0 -0
  57. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/serializers/common.py +0 -0
  58. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/serializers/json.py +0 -0
  59. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/serializers/msgpack.py +0 -0
  60. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/serializers/msgspec.py +0 -0
  61. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons/soap_client.py +0 -0
  62. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons.egg-info/SOURCES.txt +0 -0
  63. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons.egg-info/dependency_links.txt +0 -0
  64. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons.egg-info/scm_file_list.json +0 -0
  65. {python3_commons-0.24.2 → python3_commons-0.24.4}/src/python3_commons.egg-info/top_level.txt +0 -0
  66. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/__init__.py +0 -0
  67. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/integration/__init__.py +0 -0
  68. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/integration/conftest.py +0 -0
  69. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/integration/test_auth.py +0 -0
  70. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/integration/test_cache.py +0 -0
  71. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/integration/test_osc.py +0 -0
  72. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/__init__.py +0 -0
  73. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/conftest.py +0 -0
  74. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/db/__init__.py +0 -0
  75. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/log/__init__.py +0 -0
  76. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/log/test_formatters.py +0 -0
  77. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/test_async_functools.py +0 -0
  78. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/test_audit.py +0 -0
  79. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/test_auth.py +0 -0
  80. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/test_helpers.py +0 -0
  81. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/test_msgpack.py +0 -0
  82. {python3_commons-0.24.2 → python3_commons-0.24.4}/tests/unit/test_msgspec.py +0 -0
@@ -6,7 +6,7 @@ repos:
6
6
  # - id: uv-export
7
7
 
8
8
  - repo: https://github.com/astral-sh/ruff-pre-commit
9
- rev: v0.16.2
9
+ rev: v0.16.3
10
10
  hooks:
11
11
  # Run the linter.
12
12
  - id: ruff-check
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.24.2
3
+ Version: 0.24.4
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
@@ -18,11 +18,11 @@ Requires-Dist: pydantic-settings~=2.15.0
18
18
  Provides-Extra: all
19
19
  Requires-Dist: python3_commons[api-client,audit,authn,authz,cache,database,object-storage,soap-client]; extra == "all"
20
20
  Provides-Extra: api-client
21
- Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.1; extra == "api-client"
21
+ Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.3; extra == "api-client"
22
22
  Requires-Dist: certifi~=2026.7.22; extra == "api-client"
23
23
  Requires-Dist: python3_commons[audit,object-storage]; extra == "api-client"
24
24
  Provides-Extra: audit
25
- Requires-Dist: lxml~=6.1.1; extra == "audit"
25
+ Requires-Dist: lxml~=6.1.2; extra == "audit"
26
26
  Requires-Dist: zeep[async]~=4.3.3; extra == "audit"
27
27
  Requires-Dist: python3_commons[object-storage]; extra == "audit"
28
28
  Provides-Extra: authn
@@ -36,14 +36,14 @@ Provides-Extra: cache
36
36
  Requires-Dist: valkey[libvalkey]~=6.1.1; extra == "cache"
37
37
  Provides-Extra: database
38
38
  Requires-Dist: asyncpg~=0.31.0; extra == "database"
39
- Requires-Dist: SQLAlchemy[asyncio]~=2.0.51; extra == "database"
39
+ Requires-Dist: SQLAlchemy[asyncio]~=2.0.52; extra == "database"
40
40
  Provides-Extra: object-storage
41
41
  Requires-Dist: aiobotocore==3.9.0; extra == "object-storage"
42
42
  Requires-Dist: object-storage-client~=0.1.5; extra == "object-storage"
43
43
  Provides-Extra: soap-client
44
44
  Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.3; extra == "soap-client"
45
45
  Requires-Dist: certifi~=2026.7.22; extra == "soap-client"
46
- Requires-Dist: lxml~=6.1.1; extra == "soap-client"
46
+ Requires-Dist: lxml~=6.1.2; extra == "soap-client"
47
47
  Requires-Dist: requests~=2.34.2; extra == "soap-client"
48
48
  Requires-Dist: zeep[async]~=4.3.3; extra == "soap-client"
49
49
  Dynamic: license-file
@@ -28,12 +28,12 @@ all = [
28
28
  "python3_commons[api-client,audit,authn,authz,cache,database,object-storage,soap-client]"
29
29
  ]
30
30
  api-client = [
31
- "aiohttp[speedups]>=3.14.1,<3.15.0",
31
+ "aiohttp[speedups]>=3.14.3,<3.15.0",
32
32
  "certifi~=2026.7.22",
33
33
  "python3_commons[audit,object-storage]"
34
34
  ]
35
35
  audit = [
36
- "lxml~=6.1.1",
36
+ "lxml~=6.1.2",
37
37
  "zeep[async]~=4.3.3",
38
38
  "python3_commons[object-storage]"
39
39
  ]
@@ -51,7 +51,7 @@ cache = [
51
51
  ]
52
52
  database = [
53
53
  "asyncpg~=0.31.0",
54
- "SQLAlchemy[asyncio]~=2.0.51",
54
+ "SQLAlchemy[asyncio]~=2.0.52",
55
55
  ]
56
56
  object-storage = [
57
57
  "aiobotocore==3.9.0",
@@ -60,7 +60,7 @@ object-storage = [
60
60
  soap-client = [
61
61
  "aiohttp[speedups]>=3.14.3,<3.15.0",
62
62
  "certifi~=2026.7.22",
63
- "lxml~=6.1.1",
63
+ "lxml~=6.1.2",
64
64
  "requests~=2.34.2",
65
65
  "zeep[async]~=4.3.3",
66
66
  ]
@@ -61,6 +61,8 @@ class DBSettings(BaseSettings):
61
61
  pool_pre_ping: bool = True
62
62
  statement_timeout: int = 30
63
63
 
64
+ migration_role: str | None = None
65
+
64
66
  @model_validator(mode='after')
65
67
  def build_dsn_if_missing(self) -> DBSettings:
66
68
  if self.dsn is None and all(
@@ -184,8 +184,8 @@ class AsyncSessionManager:
184
184
 
185
185
  try:
186
186
  yield session
187
- except Exception:
188
- logger.exception('Error occurred while db session %r was open; rolling back', name)
187
+ except Exception as e:
188
+ logger.debug('Error occurred while db session %r was open; rolling back: %r', name, e)
189
189
  await session.rollback()
190
190
 
191
191
  raise
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.24.2
3
+ Version: 0.24.4
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
@@ -18,11 +18,11 @@ Requires-Dist: pydantic-settings~=2.15.0
18
18
  Provides-Extra: all
19
19
  Requires-Dist: python3_commons[api-client,audit,authn,authz,cache,database,object-storage,soap-client]; extra == "all"
20
20
  Provides-Extra: api-client
21
- Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.1; extra == "api-client"
21
+ Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.3; extra == "api-client"
22
22
  Requires-Dist: certifi~=2026.7.22; extra == "api-client"
23
23
  Requires-Dist: python3_commons[audit,object-storage]; extra == "api-client"
24
24
  Provides-Extra: audit
25
- Requires-Dist: lxml~=6.1.1; extra == "audit"
25
+ Requires-Dist: lxml~=6.1.2; extra == "audit"
26
26
  Requires-Dist: zeep[async]~=4.3.3; extra == "audit"
27
27
  Requires-Dist: python3_commons[object-storage]; extra == "audit"
28
28
  Provides-Extra: authn
@@ -36,14 +36,14 @@ Provides-Extra: cache
36
36
  Requires-Dist: valkey[libvalkey]~=6.1.1; extra == "cache"
37
37
  Provides-Extra: database
38
38
  Requires-Dist: asyncpg~=0.31.0; extra == "database"
39
- Requires-Dist: SQLAlchemy[asyncio]~=2.0.51; extra == "database"
39
+ Requires-Dist: SQLAlchemy[asyncio]~=2.0.52; extra == "database"
40
40
  Provides-Extra: object-storage
41
41
  Requires-Dist: aiobotocore==3.9.0; extra == "object-storage"
42
42
  Requires-Dist: object-storage-client~=0.1.5; extra == "object-storage"
43
43
  Provides-Extra: soap-client
44
44
  Requires-Dist: aiohttp[speedups]<3.15.0,>=3.14.3; extra == "soap-client"
45
45
  Requires-Dist: certifi~=2026.7.22; extra == "soap-client"
46
- Requires-Dist: lxml~=6.1.1; extra == "soap-client"
46
+ Requires-Dist: lxml~=6.1.2; extra == "soap-client"
47
47
  Requires-Dist: requests~=2.34.2; extra == "soap-client"
48
48
  Requires-Dist: zeep[async]~=4.3.3; extra == "soap-client"
49
49
  Dynamic: license-file
@@ -6,12 +6,12 @@ pydantic-settings~=2.15.0
6
6
  python3_commons[api-client,audit,authn,authz,cache,database,object-storage,soap-client]
7
7
 
8
8
  [api-client]
9
- aiohttp[speedups]<3.15.0,>=3.14.1
9
+ aiohttp[speedups]<3.15.0,>=3.14.3
10
10
  certifi~=2026.7.22
11
11
  python3_commons[audit,object-storage]
12
12
 
13
13
  [audit]
14
- lxml~=6.1.1
14
+ lxml~=6.1.2
15
15
  zeep[async]~=4.3.3
16
16
  python3_commons[object-storage]
17
17
 
@@ -29,7 +29,7 @@ valkey[libvalkey]~=6.1.1
29
29
 
30
30
  [database]
31
31
  asyncpg~=0.31.0
32
- SQLAlchemy[asyncio]~=2.0.51
32
+ SQLAlchemy[asyncio]~=2.0.52
33
33
 
34
34
  [object-storage]
35
35
  aiobotocore==3.9.0
@@ -38,6 +38,6 @@ object-storage-client~=0.1.5
38
38
  [soap-client]
39
39
  aiohttp[speedups]<3.15.0,>=3.14.3
40
40
  certifi~=2026.7.22
41
- lxml~=6.1.1
41
+ lxml~=6.1.2
42
42
  requests~=2.34.2
43
43
  zeep[async]~=4.3.3
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.24.4",
3
+ "distance": 0,
4
+ "node": "g1fc0dd9257823a2a7a8fd69d8858ab1d66e79dda",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-19"
8
+ }
@@ -8,6 +8,7 @@ from python3_commons.db import AsyncSessionManager
8
8
 
9
9
  @pytest.mark.asyncio
10
10
  async def test_async_session_manager_timeout(mocker, caplog):
11
+ caplog.set_level('DEBUG')
11
12
  # Mock DBSettings
12
13
  db_config = DBSettings(dsn='postgresql+asyncpg://user:pass@localhost/db', statement_timeout=1)
13
14
 
@@ -51,6 +52,7 @@ async def test_async_session_manager_engine_config(mocker):
51
52
 
52
53
  @pytest.mark.asyncio
53
54
  async def test_async_session_manager_logging(mocker, caplog):
55
+ caplog.set_level('DEBUG')
54
56
  # Mock DBSettings
55
57
  db_config = DBSettings(dsn='postgresql+asyncpg://user:pass@localhost/db', statement_timeout=1)
56
58