python3-commons 0.16.2__tar.gz → 0.16.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 (73) hide show
  1. {python3_commons-0.16.2 → python3_commons-0.16.4}/PKG-INFO +1 -1
  2. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/log/formatters.py +6 -25
  3. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons.egg-info/PKG-INFO +1 -1
  4. {python3_commons-0.16.2 → python3_commons-0.16.4}/.coveragerc +0 -0
  5. {python3_commons-0.16.2 → python3_commons-0.16.4}/.devcontainer/Dockerfile +0 -0
  6. {python3_commons-0.16.2 → python3_commons-0.16.4}/.devcontainer/devcontainer.json +0 -0
  7. {python3_commons-0.16.2 → python3_commons-0.16.4}/.devcontainer/docker-compose.yml +0 -0
  8. {python3_commons-0.16.2 → python3_commons-0.16.4}/.env_template +0 -0
  9. {python3_commons-0.16.2 → python3_commons-0.16.4}/.github/workflows/checks.yml +0 -0
  10. {python3_commons-0.16.2 → python3_commons-0.16.4}/.github/workflows/python-publish.yaml +0 -0
  11. {python3_commons-0.16.2 → python3_commons-0.16.4}/.github/workflows/release-on-tag-push.yml +0 -0
  12. {python3_commons-0.16.2 → python3_commons-0.16.4}/.gitignore +0 -0
  13. {python3_commons-0.16.2 → python3_commons-0.16.4}/.pre-commit-config.yaml +0 -0
  14. {python3_commons-0.16.2 → python3_commons-0.16.4}/.python-version +0 -0
  15. {python3_commons-0.16.2 → python3_commons-0.16.4}/AUTHORS.rst +0 -0
  16. {python3_commons-0.16.2 → python3_commons-0.16.4}/CHANGELOG.rst +0 -0
  17. {python3_commons-0.16.2 → python3_commons-0.16.4}/LICENSE +0 -0
  18. {python3_commons-0.16.2 → python3_commons-0.16.4}/README.md +0 -0
  19. {python3_commons-0.16.2 → python3_commons-0.16.4}/README.rst +0 -0
  20. {python3_commons-0.16.2 → python3_commons-0.16.4}/docs/Makefile +0 -0
  21. {python3_commons-0.16.2 → python3_commons-0.16.4}/docs/_static/.gitignore +0 -0
  22. {python3_commons-0.16.2 → python3_commons-0.16.4}/docs/authors.rst +0 -0
  23. {python3_commons-0.16.2 → python3_commons-0.16.4}/docs/changelog.rst +0 -0
  24. {python3_commons-0.16.2 → python3_commons-0.16.4}/docs/conf.py +0 -0
  25. {python3_commons-0.16.2 → python3_commons-0.16.4}/docs/index.rst +0 -0
  26. {python3_commons-0.16.2 → python3_commons-0.16.4}/docs/license.rst +0 -0
  27. {python3_commons-0.16.2 → python3_commons-0.16.4}/pyproject.toml +0 -0
  28. {python3_commons-0.16.2 → python3_commons-0.16.4}/setup.cfg +0 -0
  29. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/__init__.py +0 -0
  30. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/api_client.py +0 -0
  31. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/async_functools.py +0 -0
  32. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/audit.py +0 -0
  33. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/auth.py +0 -0
  34. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/cache.py +0 -0
  35. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/conf.py +0 -0
  36. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/db/__init__.py +0 -0
  37. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/db/helpers.py +0 -0
  38. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/db/models/__init__.py +0 -0
  39. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/db/models/auth.py +0 -0
  40. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/db/models/common.py +0 -0
  41. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/db/models/rbac.py +0 -0
  42. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/db/models/users.py +0 -0
  43. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/exceptions.py +0 -0
  44. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/fs.py +0 -0
  45. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/generators.py +0 -0
  46. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/helpers.py +0 -0
  47. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/log/__init__.py +0 -0
  48. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/log/filters.py +0 -0
  49. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/object_storage.py +0 -0
  50. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/permissions.py +0 -0
  51. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/serializers/__init__.py +0 -0
  52. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/serializers/common.py +0 -0
  53. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/serializers/json.py +0 -0
  54. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/serializers/msgpack.py +0 -0
  55. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons/serializers/msgspec.py +0 -0
  56. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons.egg-info/SOURCES.txt +0 -0
  57. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons.egg-info/dependency_links.txt +0 -0
  58. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons.egg-info/requires.txt +0 -0
  59. {python3_commons-0.16.2 → python3_commons-0.16.4}/src/python3_commons.egg-info/top_level.txt +0 -0
  60. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/__init__.py +0 -0
  61. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/integration/__init__.py +0 -0
  62. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/integration/test_cache.py +0 -0
  63. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/integration/test_osc.py +0 -0
  64. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/__init__.py +0 -0
  65. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/conftest.py +0 -0
  66. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/log/__init__.py +0 -0
  67. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/log/test_formatters.py +0 -0
  68. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/test_async_functools.py +0 -0
  69. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/test_audit.py +0 -0
  70. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/test_helpers.py +0 -0
  71. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/test_msgpack.py +0 -0
  72. {python3_commons-0.16.2 → python3_commons-0.16.4}/tests/unit/test_msgspec.py +0 -0
  73. {python3_commons-0.16.2 → python3_commons-0.16.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.16.2
3
+ Version: 0.16.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
@@ -1,14 +1,11 @@
1
1
  import logging
2
2
  import traceback
3
- from contextvars import ContextVar
4
3
  from datetime import UTC, datetime, date
5
4
  from decimal import Decimal
6
- from typing import Any, Final, Callable
5
+ from typing import Any, Final
7
6
 
8
7
  import msgspec
9
8
 
10
- correlation_id: ContextVar[str | None] = ContextVar('correlation_id', default=None)
11
-
12
9
  _DEFAULT_MAX_TB_CHARS: Final[int] = 8_000
13
10
  _STD_LOG_FIELDS: Final[frozenset[str]] = frozenset(
14
11
  {
@@ -36,7 +33,6 @@ _STD_LOG_FIELDS: Final[frozenset[str]] = frozenset(
36
33
  )
37
34
 
38
35
 
39
- # Keep normalization minimal and branch-based (unchanged)
40
36
  def _normalize(v: Any) -> Any:
41
37
  if isinstance(v, datetime | date):
42
38
  return v.isoformat()
@@ -54,38 +50,26 @@ def _normalize(v: Any) -> Any:
54
50
 
55
51
 
56
52
  class JSONFormatter(logging.Formatter):
57
- __slots__ = ('_get_correlation_id', '_max_tb_chars', '_encoder')
53
+ __slots__ = ('_max_tb_chars', '_encoder')
58
54
 
59
55
  def __init__(
60
- self,
61
- *,
62
- get_correlation_id: Callable[[], str | None] = lambda: correlation_id.get(),
63
- max_exc_tb_chars: int = _DEFAULT_MAX_TB_CHARS,
64
- **kwargs: Any,
56
+ self,
57
+ *,
58
+ max_exc_tb_chars: int = _DEFAULT_MAX_TB_CHARS,
59
+ **kwargs: Any,
65
60
  ) -> None:
66
61
  super().__init__(**kwargs)
67
62
 
68
- self._get_correlation_id = get_correlation_id
69
63
  self._max_tb_chars = max_exc_tb_chars
70
64
  self._encoder = msgspec.json.Encoder()
71
65
 
72
66
  def format(self, record: logging.LogRecord) -> str:
73
- # -------------------------
74
- # message (fast path)
75
- # -------------------------
76
67
  try:
77
68
  message = record.getMessage()
78
69
  except Exception:
79
70
  message = str(record.msg)
80
71
 
81
- # -------------------------
82
- # timestamp (no Formatter overhead)
83
- # -------------------------
84
72
  timestamp = datetime.fromtimestamp(record.created, UTC).isoformat().replace('+00:00', 'Z')
85
-
86
- # -------------------------
87
- # base log object (plain dict)
88
- # -------------------------
89
73
  log: dict[str, Any] = {
90
74
  'message': message,
91
75
  'level': record.levelname,
@@ -93,9 +77,6 @@ class JSONFormatter(logging.Formatter):
93
77
  'timestamp': timestamp,
94
78
  }
95
79
 
96
- if (corr_id := self._get_correlation_id()) is not None:
97
- log['correlation_id'] = corr_id
98
-
99
80
  if (exc_info := record.exc_info) and exc_info[0] is not None:
100
81
  exc_type, exc_value, exc_tb = exc_info
101
82
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python3-commons
3
- Version: 0.16.2
3
+ Version: 0.16.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