python3-commons 0.14.15__tar.gz → 0.14.17__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.
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.pre-commit-config.yaml +1 -1
- {python3_commons-0.14.15 → python3_commons-0.14.17}/PKG-INFO +1 -1
- {python3_commons-0.14.15 → python3_commons-0.14.17}/pyproject.toml +2 -1
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/api_client.py +1 -1
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/audit.py +2 -2
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/db/__init__.py +3 -3
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/helpers.py +1 -1
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/log/formatters.py +10 -3
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/object_storage.py +9 -9
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons.egg-info/PKG-INFO +1 -1
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons.egg-info/SOURCES.txt +3 -1
- python3_commons-0.14.17/tests/unit/log/__init__.py +0 -0
- python3_commons-0.14.17/tests/unit/log/test_formatters.py +34 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/uv.lock +31 -31
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.coveragerc +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.devcontainer/Dockerfile +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.devcontainer/devcontainer.json +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.devcontainer/docker-compose.yml +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.env_template +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.github/workflows/checks.yml +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.github/workflows/python-publish.yaml +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.github/workflows/release-on-tag-push.yml +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.gitignore +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/.python-version +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/AUTHORS.rst +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/CHANGELOG.rst +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/LICENSE +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/README.md +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/README.rst +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/docs/Makefile +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/docs/_static/.gitignore +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/docs/authors.rst +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/docs/changelog.rst +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/docs/conf.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/docs/index.rst +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/docs/license.rst +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/setup.cfg +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/__init__.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/auth.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/cache.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/conf.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/db/helpers.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/db/models/__init__.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/db/models/auth.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/db/models/common.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/exceptions.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/fs.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/generators.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/log/__init__.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/log/filters.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/__init__.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/common.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/json.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/msgpack.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/msgspec.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons.egg-info/dependency_links.txt +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons.egg-info/requires.txt +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons.egg-info/top_level.txt +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/__init__.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/integration/__init__.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/integration/test_cache.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/unit/__init__.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/unit/conftest.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/unit/test_audit.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/unit/test_helpers.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/unit/test_msgpack.py +0 -0
- {python3_commons-0.14.15 → python3_commons-0.14.17}/tests/unit/test_msgspec.py +0 -0
|
@@ -94,7 +94,7 @@ select = [
|
|
|
94
94
|
"FBT",
|
|
95
95
|
"FLY",
|
|
96
96
|
"FURB",
|
|
97
|
-
|
|
97
|
+
"G",
|
|
98
98
|
"ICN",
|
|
99
99
|
"INP",
|
|
100
100
|
"ISC",
|
|
@@ -142,6 +142,7 @@ indent-style = "space"
|
|
|
142
142
|
quote-style = "single"
|
|
143
143
|
|
|
144
144
|
[tool.pyright]
|
|
145
|
+
pythonVersion = "3.14"
|
|
145
146
|
venvPath = "."
|
|
146
147
|
venv = ".venv"
|
|
147
148
|
reportMatchNotExhaustive = "error"
|
|
@@ -26,9 +26,9 @@ async def write_audit_data(settings: S3Settings, key: str, data: bytes) -> None:
|
|
|
26
26
|
except Exception:
|
|
27
27
|
logger.exception('Failed storing object in storage.')
|
|
28
28
|
else:
|
|
29
|
-
logger.debug(
|
|
29
|
+
logger.debug('Stored object in storage: %s', key)
|
|
30
30
|
else:
|
|
31
|
-
logger.debug(
|
|
31
|
+
logger.debug('S3 is not configured, not storing object in storage: %s', key)
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class ZeepAuditPlugin(Plugin):
|
|
@@ -26,7 +26,7 @@ class AsyncSessionManager:
|
|
|
26
26
|
try:
|
|
27
27
|
return self.db_settings[name]
|
|
28
28
|
except KeyError:
|
|
29
|
-
logger.exception(
|
|
29
|
+
logger.exception('Missing database settings: %s', name)
|
|
30
30
|
|
|
31
31
|
raise
|
|
32
32
|
|
|
@@ -47,7 +47,7 @@ class AsyncSessionManager:
|
|
|
47
47
|
try:
|
|
48
48
|
engine = self.engines[name]
|
|
49
49
|
except KeyError:
|
|
50
|
-
logger.debug(
|
|
50
|
+
logger.debug('Creating engine: %s', name)
|
|
51
51
|
engine = self.async_engine_from_db_settings(name)
|
|
52
52
|
self.engines[name] = engine
|
|
53
53
|
|
|
@@ -57,7 +57,7 @@ class AsyncSessionManager:
|
|
|
57
57
|
try:
|
|
58
58
|
session_maker = self.session_makers[name]
|
|
59
59
|
except KeyError:
|
|
60
|
-
logger.debug(
|
|
60
|
+
logger.debug('Creating session maker: %s', name)
|
|
61
61
|
engine = self.get_engine(name)
|
|
62
62
|
session_maker = async_sessionmaker(engine, expire_on_commit=False)
|
|
63
63
|
self.session_makers[name] = session_maker
|
|
@@ -133,7 +133,7 @@ def log_execution_time(func):
|
|
|
133
133
|
return await func(*args, **kwargs)
|
|
134
134
|
finally:
|
|
135
135
|
elapsed = time.monotonic() - start_time
|
|
136
|
-
_logger.info(
|
|
136
|
+
_logger.info('%s.%s executed in %.4f seconds', func.__module__, func.__name__, elapsed)
|
|
137
137
|
|
|
138
138
|
wrapper.__signature__ = inspect.signature(func)
|
|
139
139
|
|
|
@@ -10,16 +10,23 @@ correlation_id: ContextVar[str | None] = ContextVar('correlation_id', default=No
|
|
|
10
10
|
|
|
11
11
|
class JSONFormatter(logging.Formatter):
|
|
12
12
|
@staticmethod
|
|
13
|
-
def format_exception(exc_info):
|
|
13
|
+
def format_exception(exc_info: logging._SysExcInfoType):
|
|
14
14
|
return ''.join(traceback.format_exception(*exc_info))
|
|
15
15
|
|
|
16
|
-
def format(self, record):
|
|
16
|
+
def format(self, record: logging.LogRecord):
|
|
17
17
|
if corr_id := correlation_id.get():
|
|
18
18
|
record.correlation_id = corr_id
|
|
19
19
|
|
|
20
|
+
record.message = record.getMessage()
|
|
21
|
+
|
|
20
22
|
if record.exc_info:
|
|
21
23
|
record.exc_text = self.format_exception(record.exc_info)
|
|
22
24
|
else:
|
|
23
25
|
record.exc_text = None
|
|
24
26
|
|
|
25
|
-
|
|
27
|
+
record_dict = record.__dict__
|
|
28
|
+
|
|
29
|
+
del record_dict['args']
|
|
30
|
+
del record_dict['msg']
|
|
31
|
+
|
|
32
|
+
return json.dumps(record_dict, cls=CustomJSONEncoder)
|
|
@@ -66,9 +66,9 @@ async def put_object(bucket_name: str, path: str, data: io.BytesIO, length: int,
|
|
|
66
66
|
|
|
67
67
|
await s3_client.put_object(Bucket=bucket_name, Key=path, Body=data, ContentLength=length)
|
|
68
68
|
|
|
69
|
-
logger.debug(
|
|
69
|
+
logger.debug('Stored object into object storage: %s:%s', bucket_name, path)
|
|
70
70
|
except Exception as e:
|
|
71
|
-
logger.exception(
|
|
71
|
+
logger.exception('Failed to put object to object storage: %s:%s', bucket_name, path, exc_info=e)
|
|
72
72
|
|
|
73
73
|
raise
|
|
74
74
|
|
|
@@ -80,7 +80,7 @@ async def get_object_stream(bucket_name: str, path: str) -> AsyncGenerator[Strea
|
|
|
80
80
|
storage = ObjectStorage(s3_settings)
|
|
81
81
|
|
|
82
82
|
async with storage.get_client() as s3_client:
|
|
83
|
-
logger.debug(
|
|
83
|
+
logger.debug('Getting object from object storage: %s:%s', bucket_name, path)
|
|
84
84
|
|
|
85
85
|
try:
|
|
86
86
|
response = await s3_client.get_object(Bucket=bucket_name, Key=path)
|
|
@@ -88,7 +88,7 @@ async def get_object_stream(bucket_name: str, path: str) -> AsyncGenerator[Strea
|
|
|
88
88
|
async with response['Body'] as stream:
|
|
89
89
|
yield stream
|
|
90
90
|
except Exception as e:
|
|
91
|
-
logger.exception(
|
|
91
|
+
logger.exception('Failed getting object from object storage: %s:%s', bucket_name, path, exc_info=e)
|
|
92
92
|
|
|
93
93
|
raise
|
|
94
94
|
|
|
@@ -97,7 +97,7 @@ async def get_object(bucket_name: str, path: str) -> bytes:
|
|
|
97
97
|
async with get_object_stream(bucket_name, path) as stream:
|
|
98
98
|
body = await stream.read()
|
|
99
99
|
|
|
100
|
-
logger.debug(
|
|
100
|
+
logger.debug('Loaded object from object storage: %s:%s', bucket_name, path)
|
|
101
101
|
|
|
102
102
|
return body
|
|
103
103
|
|
|
@@ -142,9 +142,9 @@ async def remove_object(bucket_name: str, object_name: str) -> None:
|
|
|
142
142
|
async with storage.get_client() as s3_client:
|
|
143
143
|
try:
|
|
144
144
|
await s3_client.delete_object(Bucket=bucket_name, Key=object_name)
|
|
145
|
-
logger.debug(
|
|
145
|
+
logger.debug('Removed object from object storage: %s:%s', bucket_name, object_name)
|
|
146
146
|
except Exception as e:
|
|
147
|
-
logger.exception(
|
|
147
|
+
logger.exception('Failed to remove object from object storage: %s:%s', bucket_name, object_name, exc_info=e)
|
|
148
148
|
|
|
149
149
|
raise
|
|
150
150
|
|
|
@@ -180,9 +180,9 @@ async def remove_objects(
|
|
|
180
180
|
if 'Errors' in response:
|
|
181
181
|
errors.extend(response['Errors'])
|
|
182
182
|
|
|
183
|
-
logger.debug(
|
|
183
|
+
logger.debug('Removed %d objects from object storage: %s', len(objects_to_delete), bucket_name)
|
|
184
184
|
except Exception as e:
|
|
185
|
-
logger.exception(
|
|
185
|
+
logger.exception('Failed to remove objects from object storage: %s', bucket_name, exc_info=e)
|
|
186
186
|
|
|
187
187
|
raise
|
|
188
188
|
|
|
File without changes
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from logging import INFO, LogRecord
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
from python3_commons.log.formatters import JSONFormatter
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_json_formatter_info_record() -> None:
|
|
10
|
+
formatter = JSONFormatter()
|
|
11
|
+
record = LogRecord(
|
|
12
|
+
name='test.log',
|
|
13
|
+
level=INFO,
|
|
14
|
+
pathname='/dev/null',
|
|
15
|
+
lineno=12345,
|
|
16
|
+
msg='This is a %s, %d, %s',
|
|
17
|
+
args=(
|
|
18
|
+
'test',
|
|
19
|
+
1234,
|
|
20
|
+
'magic',
|
|
21
|
+
),
|
|
22
|
+
exc_info=None,
|
|
23
|
+
)
|
|
24
|
+
expected_message = 'This is a test, 1234, magic'
|
|
25
|
+
formatted_record_str = formatter.format(record)
|
|
26
|
+
formatted_record = json.loads(formatted_record_str)
|
|
27
|
+
|
|
28
|
+
with pytest.raises(KeyError):
|
|
29
|
+
_ = formatted_record['msg']
|
|
30
|
+
|
|
31
|
+
with pytest.raises(KeyError):
|
|
32
|
+
_ = formatted_record['args']
|
|
33
|
+
|
|
34
|
+
assert formatted_record['message'] == expected_message
|
|
@@ -250,14 +250,14 @@ wheels = [
|
|
|
250
250
|
|
|
251
251
|
[[package]]
|
|
252
252
|
name = "botocore-stubs"
|
|
253
|
-
version = "1.42.
|
|
253
|
+
version = "1.42.8"
|
|
254
254
|
source = { registry = "https://pypi.org/simple" }
|
|
255
255
|
dependencies = [
|
|
256
256
|
{ name = "types-awscrt" },
|
|
257
257
|
]
|
|
258
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
258
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c7/df/d2be0d6d485edfcf44e3b92d55b643a3e0a38555e2202fa0ef95ef998008/botocore_stubs-1.42.8.tar.gz", hash = "sha256:9656c43dcfdadf92b7a87d7997cd941a0ed6cb111374ed879ecdd07c9ab301dd", size = 42408, upload-time = "2025-12-11T22:26:51.474Z" }
|
|
259
259
|
wheels = [
|
|
260
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
260
|
+
{ url = "https://files.pythonhosted.org/packages/13/6d/01635795111d6622280f52678f32f7399502c90af045a15a98fb81b2f55e/botocore_stubs-1.42.8-py3-none-any.whl", hash = "sha256:ebcd1c6a136f99cba54a30d1214a0e9ff2f2adcc43e627d8bcd371f6dd887e5e", size = 66749, upload-time = "2025-12-11T22:26:49.916Z" },
|
|
261
261
|
]
|
|
262
262
|
|
|
263
263
|
[[package]]
|
|
@@ -1443,28 +1443,28 @@ wheels = [
|
|
|
1443
1443
|
|
|
1444
1444
|
[[package]]
|
|
1445
1445
|
name = "ruff"
|
|
1446
|
-
version = "0.14.
|
|
1447
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1448
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1449
|
-
wheels = [
|
|
1450
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1451
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1452
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1453
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1454
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1455
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1456
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1457
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1458
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1459
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1460
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1461
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1462
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1463
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1464
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1465
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1466
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1467
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1446
|
+
version = "0.14.9"
|
|
1447
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1448
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f6/1b/ab712a9d5044435be8e9a2beb17cbfa4c241aa9b5e4413febac2a8b79ef2/ruff-0.14.9.tar.gz", hash = "sha256:35f85b25dd586381c0cc053f48826109384c81c00ad7ef1bd977bfcc28119d5b", size = 5809165, upload-time = "2025-12-11T21:39:47.381Z" }
|
|
1449
|
+
wheels = [
|
|
1450
|
+
{ url = "https://files.pythonhosted.org/packages/b8/1c/d1b1bba22cffec02351c78ab9ed4f7d7391876e12720298448b29b7229c1/ruff-0.14.9-py3-none-linux_armv6l.whl", hash = "sha256:f1ec5de1ce150ca6e43691f4a9ef5c04574ad9ca35c8b3b0e18877314aba7e75", size = 13576541, upload-time = "2025-12-11T21:39:14.806Z" },
|
|
1451
|
+
{ url = "https://files.pythonhosted.org/packages/94/ab/ffe580e6ea1fca67f6337b0af59fc7e683344a43642d2d55d251ff83ceae/ruff-0.14.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ed9d7417a299fc6030b4f26333bf1117ed82a61ea91238558c0268c14e00d0c2", size = 13779363, upload-time = "2025-12-11T21:39:20.29Z" },
|
|
1452
|
+
{ url = "https://files.pythonhosted.org/packages/7d/f8/2be49047f929d6965401855461e697ab185e1a6a683d914c5c19c7962d9e/ruff-0.14.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d5dc3473c3f0e4a1008d0ef1d75cee24a48e254c8bed3a7afdd2b4392657ed2c", size = 12925292, upload-time = "2025-12-11T21:39:38.757Z" },
|
|
1453
|
+
{ url = "https://files.pythonhosted.org/packages/9e/e9/08840ff5127916bb989c86f18924fd568938b06f58b60e206176f327c0fe/ruff-0.14.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84bf7c698fc8f3cb8278830fb6b5a47f9bcc1ed8cb4f689b9dd02698fa840697", size = 13362894, upload-time = "2025-12-11T21:39:02.524Z" },
|
|
1454
|
+
{ url = "https://files.pythonhosted.org/packages/31/1c/5b4e8e7750613ef43390bb58658eaf1d862c0cc3352d139cd718a2cea164/ruff-0.14.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa733093d1f9d88a5d98988d8834ef5d6f9828d03743bf5e338bf980a19fce27", size = 13311482, upload-time = "2025-12-11T21:39:17.51Z" },
|
|
1455
|
+
{ url = "https://files.pythonhosted.org/packages/5b/3a/459dce7a8cb35ba1ea3e9c88f19077667a7977234f3b5ab197fad240b404/ruff-0.14.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a1cfb04eda979b20c8c19550c8b5f498df64ff8da151283311ce3199e8b3648", size = 14016100, upload-time = "2025-12-11T21:39:41.948Z" },
|
|
1456
|
+
{ url = "https://files.pythonhosted.org/packages/a6/31/f064f4ec32524f9956a0890fc6a944e5cf06c63c554e39957d208c0ffc45/ruff-0.14.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1e5cb521e5ccf0008bd74d5595a4580313844a42b9103b7388eca5a12c970743", size = 15477729, upload-time = "2025-12-11T21:39:23.279Z" },
|
|
1457
|
+
{ url = "https://files.pythonhosted.org/packages/7a/6d/f364252aad36ccd443494bc5f02e41bf677f964b58902a17c0b16c53d890/ruff-0.14.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd429a8926be6bba4befa8cdcf3f4dd2591c413ea5066b1e99155ed245ae42bb", size = 15122386, upload-time = "2025-12-11T21:39:33.125Z" },
|
|
1458
|
+
{ url = "https://files.pythonhosted.org/packages/20/02/e848787912d16209aba2799a4d5a1775660b6a3d0ab3944a4ccc13e64a02/ruff-0.14.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab208c1b7a492e37caeaf290b1378148f75e13c2225af5d44628b95fd7834273", size = 14497124, upload-time = "2025-12-11T21:38:59.33Z" },
|
|
1459
|
+
{ url = "https://files.pythonhosted.org/packages/f3/51/0489a6a5595b7760b5dbac0dd82852b510326e7d88d51dbffcd2e07e3ff3/ruff-0.14.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72034534e5b11e8a593f517b2f2f2b273eb68a30978c6a2d40473ad0aaa4cb4a", size = 14195343, upload-time = "2025-12-11T21:39:44.866Z" },
|
|
1460
|
+
{ url = "https://files.pythonhosted.org/packages/f6/53/3bb8d2fa73e4c2f80acc65213ee0830fa0c49c6479313f7a68a00f39e208/ruff-0.14.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:712ff04f44663f1b90a1195f51525836e3413c8a773574a7b7775554269c30ed", size = 14346425, upload-time = "2025-12-11T21:39:05.927Z" },
|
|
1461
|
+
{ url = "https://files.pythonhosted.org/packages/ad/04/bdb1d0ab876372da3e983896481760867fc84f969c5c09d428e8f01b557f/ruff-0.14.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a111fee1db6f1d5d5810245295527cda1d367c5aa8f42e0fca9a78ede9b4498b", size = 13258768, upload-time = "2025-12-11T21:39:08.691Z" },
|
|
1462
|
+
{ url = "https://files.pythonhosted.org/packages/40/d9/8bf8e1e41a311afd2abc8ad12be1b6c6c8b925506d9069b67bb5e9a04af3/ruff-0.14.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8769efc71558fecc25eb295ddec7d1030d41a51e9dcf127cbd63ec517f22d567", size = 13326939, upload-time = "2025-12-11T21:39:53.842Z" },
|
|
1463
|
+
{ url = "https://files.pythonhosted.org/packages/f4/56/a213fa9edb6dd849f1cfbc236206ead10913693c72a67fb7ddc1833bf95d/ruff-0.14.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:347e3bf16197e8a2de17940cd75fd6491e25c0aa7edf7d61aa03f146a1aa885a", size = 13578888, upload-time = "2025-12-11T21:39:35.988Z" },
|
|
1464
|
+
{ url = "https://files.pythonhosted.org/packages/33/09/6a4a67ffa4abae6bf44c972a4521337ffce9cbc7808faadede754ef7a79c/ruff-0.14.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:7715d14e5bccf5b660f54516558aa94781d3eb0838f8e706fb60e3ff6eff03a8", size = 14314473, upload-time = "2025-12-11T21:39:50.78Z" },
|
|
1465
|
+
{ url = "https://files.pythonhosted.org/packages/12/0d/15cc82da5d83f27a3c6b04f3a232d61bc8c50d38a6cd8da79228e5f8b8d6/ruff-0.14.9-py3-none-win32.whl", hash = "sha256:df0937f30aaabe83da172adaf8937003ff28172f59ca9f17883b4213783df197", size = 13202651, upload-time = "2025-12-11T21:39:26.628Z" },
|
|
1466
|
+
{ url = "https://files.pythonhosted.org/packages/32/f7/c78b060388eefe0304d9d42e68fab8cffd049128ec466456cef9b8d4f06f/ruff-0.14.9-py3-none-win_amd64.whl", hash = "sha256:c0b53a10e61df15a42ed711ec0bda0c582039cf6c754c49c020084c55b5b0bc2", size = 14702079, upload-time = "2025-12-11T21:39:11.954Z" },
|
|
1467
|
+
{ url = "https://files.pythonhosted.org/packages/26/09/7a9520315decd2334afa65ed258fed438f070e31f05a2e43dd480a5e5911/ruff-0.14.9-py3-none-win_arm64.whl", hash = "sha256:8e821c366517a074046d92f0e9213ed1c13dbc5b37a7fc20b07f79b64d62cc84", size = 13744730, upload-time = "2025-12-11T21:39:29.659Z" },
|
|
1468
1468
|
]
|
|
1469
1469
|
|
|
1470
1470
|
[[package]]
|
|
@@ -1585,11 +1585,11 @@ wheels = [
|
|
|
1585
1585
|
|
|
1586
1586
|
[[package]]
|
|
1587
1587
|
name = "types-awscrt"
|
|
1588
|
-
version = "0.
|
|
1588
|
+
version = "0.30.0"
|
|
1589
1589
|
source = { registry = "https://pypi.org/simple" }
|
|
1590
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1590
|
+
sdist = { url = "https://files.pythonhosted.org/packages/30/1f/febd2df22e24f77b759db0dd9ecdd7f07f055e6a4dbbb699c5eb34b617ef/types_awscrt-0.30.0.tar.gz", hash = "sha256:362fd8f5eaebcfcd922cb9fd8274fb375df550319f78031ee3779eac0b9ecc79", size = 17761, upload-time = "2025-12-12T01:55:59.626Z" }
|
|
1591
1591
|
wheels = [
|
|
1592
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1592
|
+
{ url = "https://files.pythonhosted.org/packages/5b/5f/15999051fca2949a67562c3f80fae2dd5d3404a3f97b326b614533843281/types_awscrt-0.30.0-py3-none-any.whl", hash = "sha256:8204126e01a00eaa4a746e7a0076538ca0e4e3f52408adec0ab9b471bb0bb64b", size = 42392, upload-time = "2025-12-12T01:55:58.194Z" },
|
|
1593
1593
|
]
|
|
1594
1594
|
|
|
1595
1595
|
[[package]]
|
|
@@ -1615,11 +1615,11 @@ wheels = [
|
|
|
1615
1615
|
|
|
1616
1616
|
[[package]]
|
|
1617
1617
|
name = "urllib3"
|
|
1618
|
-
version = "2.6.
|
|
1618
|
+
version = "2.6.2"
|
|
1619
1619
|
source = { registry = "https://pypi.org/simple" }
|
|
1620
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1620
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1e/24/a2a2ed9addd907787d7aa0355ba36a6cadf1768b934c652ea78acbd59dcd/urllib3-2.6.2.tar.gz", hash = "sha256:016f9c98bb7e98085cb2b4b17b87d2c702975664e4f060c6532e64d1c1a5e797", size = 432930, upload-time = "2025-12-11T15:56:40.252Z" }
|
|
1621
1621
|
wheels = [
|
|
1622
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1622
|
+
{ url = "https://files.pythonhosted.org/packages/6d/b9/4095b668ea3678bf6a0af005527f39de12fb026516fb3df17495a733b7f8/urllib3-2.6.2-py3-none-any.whl", hash = "sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd", size = 131182, upload-time = "2025-12-11T15:56:38.584Z" },
|
|
1623
1623
|
]
|
|
1624
1624
|
|
|
1625
1625
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/.github/workflows/release-on-tag-push.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/db/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/__init__.py
RENAMED
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/common.py
RENAMED
|
File without changes
|
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/msgpack.py
RENAMED
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons/serializers/msgspec.py
RENAMED
|
File without changes
|
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons.egg-info/requires.txt
RENAMED
|
File without changes
|
{python3_commons-0.14.15 → python3_commons-0.14.17}/src/python3_commons.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|