python3-commons 0.20.8__tar.gz → 0.20.9__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.20.8/src/python3_commons.egg-info → python3_commons-0.20.9}/PKG-INFO +2 -2
- {python3_commons-0.20.8 → python3_commons-0.20.9}/pyproject.toml +1 -1
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/api_client.py +1 -1
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/auth.py +19 -35
- {python3_commons-0.20.8 → python3_commons-0.20.9/src/python3_commons.egg-info}/PKG-INFO +2 -2
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons.egg-info/requires.txt +1 -1
- {python3_commons-0.20.8 → python3_commons-0.20.9}/uv.lock +45 -45
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.coveragerc +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.devcontainer/Dockerfile +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.devcontainer/devcontainer.json +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.devcontainer/docker-compose.yml +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.env_template +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.github/workflows/checks.yml +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.github/workflows/python-publish.yaml +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.github/workflows/release-on-tag-push.yml +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.gitignore +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.pre-commit-config.yaml +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/.python-version +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/AUTHORS.rst +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/CHANGELOG.rst +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/LICENSE +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/README.md +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/README.rst +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/docs/Makefile +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/docs/_static/.gitignore +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/docs/authors.rst +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/docs/changelog.rst +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/docs/conf.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/docs/index.rst +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/docs/license.rst +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/setup.cfg +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/async_functools.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/audit.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/cache.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/conf.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/db/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/db/helpers.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/db/models/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/db/models/auth.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/db/models/common.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/db/models/rbac.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/db/models/users.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/exceptions.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/fs.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/generators.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/helpers.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/log/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/log/filters.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/log/formatters.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/object_storage.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/permissions.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/common.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/json.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/msgpack.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/msgspec.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/soap_client.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons.egg-info/SOURCES.txt +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons.egg-info/dependency_links.txt +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons.egg-info/top_level.txt +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/integration/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/integration/conftest.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/integration/test_auth.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/integration/test_cache.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/integration/test_osc.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/conftest.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/db/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/db/test_async_session_manager.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/log/__init__.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/log/test_formatters.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/test_async_functools.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/test_audit.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/test_helpers.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/test_msgpack.py +0 -0
- {python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/test_msgspec.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python3-commons
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.9
|
|
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
|
|
@@ -36,7 +36,7 @@ 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.
|
|
39
|
+
Requires-Dist: SQLAlchemy[asyncio]~=2.0.50; extra == "database"
|
|
40
40
|
Provides-Extra: object-storage
|
|
41
41
|
Requires-Dist: aiobotocore~=3.7.0; extra == "object-storage"
|
|
42
42
|
Requires-Dist: object-storage-client==0.0.30; extra == "object-storage"
|
|
@@ -60,7 +60,7 @@ async def request(
|
|
|
60
60
|
request_id = str(uuid4())[-12:]
|
|
61
61
|
uri_path = uri.removesuffix('/')
|
|
62
62
|
uri_path = uri_path.removeprefix('/')
|
|
63
|
-
url = f'{u[:-1] if (u := str(base_url)).endswith("/") else u}{uri}'
|
|
63
|
+
url = f'{u[:-1] if (u := str(base_url)).endswith("/") else u}{uri}' if uri else base_url
|
|
64
64
|
|
|
65
65
|
if audit_name:
|
|
66
66
|
curl_request = None
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import threading
|
|
3
3
|
from collections.abc import Mapping, Sequence
|
|
4
|
-
from http import HTTPStatus
|
|
5
4
|
from typing import Any, Self, TypeVar
|
|
6
5
|
|
|
7
6
|
from pydantic import HttpUrl
|
|
@@ -10,8 +9,10 @@ from python3_commons.helpers import replace_origin
|
|
|
10
9
|
|
|
11
10
|
try:
|
|
12
11
|
import aiohttp
|
|
12
|
+
|
|
13
|
+
from python3_commons import api_client
|
|
13
14
|
except ImportError as e:
|
|
14
|
-
msg = 'Install python3-commons[
|
|
15
|
+
msg = 'Install python3-commons[api-client] to use this feature'
|
|
15
16
|
raise RuntimeError(msg) from e
|
|
16
17
|
|
|
17
18
|
import msgspec
|
|
@@ -70,7 +71,6 @@ class OIDCAuthError(OIDCError):
|
|
|
70
71
|
pass
|
|
71
72
|
|
|
72
73
|
|
|
73
|
-
# TODO: use api_client
|
|
74
74
|
class OIDCClient:
|
|
75
75
|
def __init__(
|
|
76
76
|
self,
|
|
@@ -82,6 +82,7 @@ class OIDCClient:
|
|
|
82
82
|
verify_cert: bool = True,
|
|
83
83
|
connection_limit: int = 100,
|
|
84
84
|
authority_internal_host: HttpUrl | None = None,
|
|
85
|
+
audit_name: str | None = None,
|
|
85
86
|
) -> None:
|
|
86
87
|
if authority_internal_host:
|
|
87
88
|
authority_url = replace_origin(authority_url, authority_internal_host)
|
|
@@ -98,8 +99,9 @@ class OIDCClient:
|
|
|
98
99
|
|
|
99
100
|
self._config: Mapping[str, Any] | None = None
|
|
100
101
|
self._jwks: Mapping[str, Any] | None = None
|
|
102
|
+
self._audit_name: str | None = audit_name
|
|
101
103
|
|
|
102
|
-
def
|
|
104
|
+
def _get_session(self) -> aiohttp.ClientSession:
|
|
103
105
|
if self._session:
|
|
104
106
|
return self._session
|
|
105
107
|
|
|
@@ -115,7 +117,7 @@ class OIDCClient:
|
|
|
115
117
|
return session
|
|
116
118
|
|
|
117
119
|
async def __aenter__(self) -> Self:
|
|
118
|
-
self.
|
|
120
|
+
self._get_session()
|
|
119
121
|
|
|
120
122
|
return self
|
|
121
123
|
|
|
@@ -127,20 +129,12 @@ class OIDCClient:
|
|
|
127
129
|
"""
|
|
128
130
|
Fetch the OpenID configuration (including JWKS URI) from OIDC authority.
|
|
129
131
|
"""
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
logger.debug('Fetching OpenID configuration from: %s', oidc_config_url)
|
|
137
|
-
|
|
138
|
-
async with self._session.get(oidc_config_url) as response:
|
|
139
|
-
if response.status != HTTPStatus.OK:
|
|
140
|
-
_msg = 'Failed to fetch OpenID configuration'
|
|
141
|
-
|
|
142
|
-
raise RuntimeError(_msg)
|
|
143
|
-
|
|
132
|
+
async with api_client.request(
|
|
133
|
+
self._get_session(),
|
|
134
|
+
str(self._authority_url),
|
|
135
|
+
'/.well-known/openid-configuration',
|
|
136
|
+
audit_name=self._audit_name,
|
|
137
|
+
) as response:
|
|
144
138
|
return await response.json()
|
|
145
139
|
|
|
146
140
|
async def get_config(self) -> Mapping[str, Any]:
|
|
@@ -160,22 +154,13 @@ class OIDCClient:
|
|
|
160
154
|
"""
|
|
161
155
|
Fetch the JSON Web Key Set (JWKS) for validating the token's signature.
|
|
162
156
|
"""
|
|
163
|
-
if self._session is None:
|
|
164
|
-
msg = 'ClientSession not initialized'
|
|
165
|
-
raise RuntimeError(msg)
|
|
166
|
-
|
|
167
157
|
if authority_internal_host := self._authority_internal_host:
|
|
168
158
|
logger.debug('Received jwks_uri: %s', jwks_uri)
|
|
169
159
|
logger.debug('Replacing OIDC authority host with: %s', authority_internal_host)
|
|
170
160
|
jwks_uri = str(replace_origin(HttpUrl(jwks_uri), authority_internal_host))
|
|
171
161
|
logger.debug('Modified jwks_uri: %s', jwks_uri)
|
|
172
162
|
|
|
173
|
-
async with self.
|
|
174
|
-
if response.status != HTTPStatus.OK:
|
|
175
|
-
_msg = 'Failed to fetch JWKS'
|
|
176
|
-
|
|
177
|
-
raise RuntimeError(_msg)
|
|
178
|
-
|
|
163
|
+
async with api_client.request(self._get_session(), jwks_uri, '', audit_name=self._audit_name) as response:
|
|
179
164
|
return await response.json()
|
|
180
165
|
|
|
181
166
|
async def get_jwks(self) -> Mapping[str, Any]:
|
|
@@ -200,10 +185,6 @@ class OIDCClient:
|
|
|
200
185
|
password: str,
|
|
201
186
|
scope: str = 'openid profile email',
|
|
202
187
|
) -> OIDCTokenResponse:
|
|
203
|
-
if self._session is None:
|
|
204
|
-
msg = 'ClientSession not initialized'
|
|
205
|
-
raise RuntimeError(msg)
|
|
206
|
-
|
|
207
188
|
data = {
|
|
208
189
|
'grant_type': 'password',
|
|
209
190
|
'username': username,
|
|
@@ -218,9 +199,12 @@ class OIDCClient:
|
|
|
218
199
|
openid_config = await self.get_config()
|
|
219
200
|
|
|
220
201
|
try:
|
|
221
|
-
async with
|
|
202
|
+
async with api_client.request(
|
|
203
|
+
self._get_session(),
|
|
222
204
|
openid_config['token_endpoint'],
|
|
223
|
-
|
|
205
|
+
'',
|
|
206
|
+
method='post',
|
|
207
|
+
json=data,
|
|
224
208
|
headers={'Content-Type': 'application/x-www-form-urlencoded'},
|
|
225
209
|
) as response:
|
|
226
210
|
payload = await response.read()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python3-commons
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.9
|
|
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
|
|
@@ -36,7 +36,7 @@ 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.
|
|
39
|
+
Requires-Dist: SQLAlchemy[asyncio]~=2.0.50; extra == "database"
|
|
40
40
|
Provides-Extra: object-storage
|
|
41
41
|
Requires-Dist: aiobotocore~=3.7.0; extra == "object-storage"
|
|
42
42
|
Requires-Dist: object-storage-client==0.0.30; extra == "object-storage"
|
|
@@ -190,14 +190,14 @@ wheels = [
|
|
|
190
190
|
|
|
191
191
|
[[package]]
|
|
192
192
|
name = "botocore-stubs"
|
|
193
|
-
version = "1.
|
|
193
|
+
version = "1.43.14"
|
|
194
194
|
source = { registry = "https://pypi.org/simple" }
|
|
195
195
|
dependencies = [
|
|
196
196
|
{ name = "types-awscrt" },
|
|
197
197
|
]
|
|
198
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
198
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7f/81/79693e833291c00dc89ee610e5e915381b6f08233912e28df50106840780/botocore_stubs-1.43.14.tar.gz", hash = "sha256:9e3bc1fdd51da7473f0df726c82747a1b0ae913449d629659765c247fecc2039", size = 42738, upload-time = "2026-05-25T06:06:37.484Z" }
|
|
199
199
|
wheels = [
|
|
200
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
200
|
+
{ url = "https://files.pythonhosted.org/packages/89/ca/f017727b11895908c5dedc829cf2ec35e0c4b2a26ba875db325fef2cefdf/botocore_stubs-1.43.14-py3-none-any.whl", hash = "sha256:fb98f1475c92fd718644e786b5c543a20f1b1f610e89e0a7191c3f1f429c75aa", size = 67093, upload-time = "2026-05-25T06:06:34.532Z" },
|
|
201
201
|
]
|
|
202
202
|
|
|
203
203
|
[[package]]
|
|
@@ -356,41 +356,41 @@ wheels = [
|
|
|
356
356
|
|
|
357
357
|
[[package]]
|
|
358
358
|
name = "coverage"
|
|
359
|
-
version = "7.14.
|
|
360
|
-
source = { registry = "https://pypi.org/simple" }
|
|
361
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
362
|
-
wheels = [
|
|
363
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
364
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
365
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
366
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
367
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
368
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
369
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
370
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
371
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
372
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
373
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
374
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
375
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
376
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
377
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
378
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
379
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
380
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
381
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
382
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
383
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
384
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
385
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
386
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
387
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
388
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
389
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
390
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
391
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
392
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
393
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
359
|
+
version = "7.14.1"
|
|
360
|
+
source = { registry = "https://pypi.org/simple" }
|
|
361
|
+
sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", hash = "sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be", size = 920132, upload-time = "2026-05-26T20:41:36.783Z" }
|
|
362
|
+
wheels = [
|
|
363
|
+
{ url = "https://files.pythonhosted.org/packages/d6/34/fc2f101b151af3799a101f0550b0454aa008afdc0add677394ec4aa8ea10/coverage-7.14.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee", size = 220091, upload-time = "2026-05-26T20:40:27.249Z" },
|
|
364
|
+
{ url = "https://files.pythonhosted.org/packages/3d/a7/1ebae2ab5b961b5c79bb09fe7b3ac99edb190d8be4a8c510b2cf66f46468/coverage-7.14.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500", size = 220421, upload-time = "2026-05-26T20:40:30.084Z" },
|
|
365
|
+
{ url = "https://files.pythonhosted.org/packages/5e/90/92aca9cf0acc95123c96cd1eb1f08917897a7f5dee01e15738922971ec31/coverage-7.14.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906", size = 251466, upload-time = "2026-05-26T20:40:32.542Z" },
|
|
366
|
+
{ url = "https://files.pythonhosted.org/packages/26/2b/78048cbe3b999f6cbf9cc0d90abba6a88a3e0863a8c1c6cbc762f3f8802f/coverage-7.14.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42", size = 253973, upload-time = "2026-05-26T20:40:34.473Z" },
|
|
367
|
+
{ url = "https://files.pythonhosted.org/packages/8e/21/c2e33b29d1cfde484a19d437afc343c6cd30b08d78cbbf9f5aff14e57b2b/coverage-7.14.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8", size = 255318, upload-time = "2026-05-26T20:40:38.154Z" },
|
|
368
|
+
{ url = "https://files.pythonhosted.org/packages/8e/ee/aad2f108d63b769121005302f16bf66db8625c88ceaba466942e09a2607e/coverage-7.14.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851", size = 257633, upload-time = "2026-05-26T20:40:40.164Z" },
|
|
369
|
+
{ url = "https://files.pythonhosted.org/packages/c2/f8/11a2c29b4fd76d9849f81d0bb812ec0017a9396df3217214e38934a8c837/coverage-7.14.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034", size = 251488, upload-time = "2026-05-26T20:40:42.631Z" },
|
|
370
|
+
{ url = "https://files.pythonhosted.org/packages/c9/b8/9a5820de4b8ac2b71d85e3b5fb49108d7469c665f0e2ad0dd7569023e305/coverage-7.14.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c", size = 253329, upload-time = "2026-05-26T20:40:45.208Z" },
|
|
371
|
+
{ url = "https://files.pythonhosted.org/packages/6b/ff/f33e4823667e27548e8fd8df44217515303f9808d0ff29817db56f87d990/coverage-7.14.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36", size = 251291, upload-time = "2026-05-26T20:40:47.502Z" },
|
|
372
|
+
{ url = "https://files.pythonhosted.org/packages/68/9b/489db0ebb209054766b90a9014a45f6d26eb724c02ec21311c3733b5a644/coverage-7.14.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5", size = 255564, upload-time = "2026-05-26T20:40:49.372Z" },
|
|
373
|
+
{ url = "https://files.pythonhosted.org/packages/27/b5/16bc2d4c2409b23c7737edb68c83bc89e345f378050549fe1d75ac7d34d5/coverage-7.14.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4", size = 251107, upload-time = "2026-05-26T20:40:51.677Z" },
|
|
374
|
+
{ url = "https://files.pythonhosted.org/packages/7d/0c/2629997469a00cd069d588a41c9dc887610f2775ae89d250c4791e65272a/coverage-7.14.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d", size = 252764, upload-time = "2026-05-26T20:40:54.267Z" },
|
|
375
|
+
{ url = "https://files.pythonhosted.org/packages/d2/ee/f78d63c8f079e0d7211c7e2401fa17e311514534ba61bae03e4b287ce4ab/coverage-7.14.1-cp314-cp314-win32.whl", hash = "sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee", size = 222837, upload-time = "2026-05-26T20:40:56.496Z" },
|
|
376
|
+
{ url = "https://files.pythonhosted.org/packages/dc/b9/be539854f93a70dfbeec69117f33ec70dc42ff0b65b5b07ab8d40d04228e/coverage-7.14.1-cp314-cp314-win_amd64.whl", hash = "sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7", size = 223650, upload-time = "2026-05-26T20:40:58.351Z" },
|
|
377
|
+
{ url = "https://files.pythonhosted.org/packages/fe/9e/24e2842fef40f35ac82ba3a7719c8023d011bf3bf652d0675316a9d088a1/coverage-7.14.1-cp314-cp314-win_arm64.whl", hash = "sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343", size = 222218, upload-time = "2026-05-26T20:41:00.321Z" },
|
|
378
|
+
{ url = "https://files.pythonhosted.org/packages/0a/1d/ac0a9df5fe31c1e8bdd658074905fc12844a05c1a7e3fdb8417e97c31e23/coverage-7.14.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1", size = 220822, upload-time = "2026-05-26T20:41:02.281Z" },
|
|
379
|
+
{ url = "https://files.pythonhosted.org/packages/32/cf/f964fd9aff20323f9f1a726c97135f8a76bcd87b92dad141a456a43f3c64/coverage-7.14.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b", size = 221084, upload-time = "2026-05-26T20:41:04.593Z" },
|
|
380
|
+
{ url = "https://files.pythonhosted.org/packages/d8/5e/7e5ef2aba844de2b80d678619fcf0841b42e3f37f16411226f3fe4c1016f/coverage-7.14.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474", size = 262454, upload-time = "2026-05-26T20:41:06.641Z" },
|
|
381
|
+
{ url = "https://files.pythonhosted.org/packages/64/62/75809bded87015cc4935524218a2a8ed8dd1a8498bfed30a2f4f7a4b4d34/coverage-7.14.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86", size = 264578, upload-time = "2026-05-26T20:41:08.556Z" },
|
|
382
|
+
{ url = "https://files.pythonhosted.org/packages/f3/42/d33392dc14633525012d2d504fa1a33b05538bf535f5c1d64675e5754b78/coverage-7.14.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e", size = 266981, upload-time = "2026-05-26T20:41:10.824Z" },
|
|
383
|
+
{ url = "https://files.pythonhosted.org/packages/2a/49/0157c4428c2aca7f1e09d5565930586fd5ae36f1655f08b0daa7cf1fcae1/coverage-7.14.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65", size = 268112, upload-time = "2026-05-26T20:41:12.966Z" },
|
|
384
|
+
{ url = "https://files.pythonhosted.org/packages/96/26/86b9ce71f4092b1ed325ce1421698081df1286b833400b6836912834d6e0/coverage-7.14.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e", size = 261558, upload-time = "2026-05-26T20:41:15Z" },
|
|
385
|
+
{ url = "https://files.pythonhosted.org/packages/20/4c/c311210c5472cf5401d8422b0d7812cdd520f24417673afabda6c323faca/coverage-7.14.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8", size = 264447, upload-time = "2026-05-26T20:41:17.369Z" },
|
|
386
|
+
{ url = "https://files.pythonhosted.org/packages/fb/71/59513f8710ed3e6b0ac0a050a5b7e977bb9c9e880354863b5d00d8809256/coverage-7.14.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07", size = 262048, upload-time = "2026-05-26T20:41:19.309Z" },
|
|
387
|
+
{ url = "https://files.pythonhosted.org/packages/84/8d/bceed32dc494f5bbf50f775cd2e78ca814953942b5ea28d3c1c3ac316f14/coverage-7.14.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de", size = 265781, upload-time = "2026-05-26T20:41:21.559Z" },
|
|
388
|
+
{ url = "https://files.pythonhosted.org/packages/e7/c5/9348fe40dbfd4991aaf78df2c6c3098bfb2cc834d1fd362a64b4efef855a/coverage-7.14.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890", size = 260896, upload-time = "2026-05-26T20:41:23.428Z" },
|
|
389
|
+
{ url = "https://files.pythonhosted.org/packages/ca/92/1ea0f03929da7cf87206b1fa24f4c8e9c158be0455481af29ec0a1f3503f/coverage-7.14.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd", size = 263214, upload-time = "2026-05-26T20:41:25.419Z" },
|
|
390
|
+
{ url = "https://files.pythonhosted.org/packages/f6/a9/b2493c054c0e01a643266742ab45e15744e60743f9260cd930c7142b1124/coverage-7.14.1-cp314-cp314t-win32.whl", hash = "sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e", size = 223624, upload-time = "2026-05-26T20:41:27.795Z" },
|
|
391
|
+
{ url = "https://files.pythonhosted.org/packages/fc/bd/3e1e6a57fccd2d7c83fcdf338e93ba98eb85c6e877dd34731ac585375490/coverage-7.14.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c", size = 224728, upload-time = "2026-05-26T20:41:30.098Z" },
|
|
392
|
+
{ url = "https://files.pythonhosted.org/packages/bb/d7/31066cf1d2f0c6c797fce911bcfa01dd35642dc6da992a950256097c5860/coverage-7.14.1-cp314-cp314t-win_arm64.whl", hash = "sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af", size = 222752, upload-time = "2026-05-26T20:41:32.123Z" },
|
|
393
|
+
{ url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", hash = "sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2", size = 211815, upload-time = "2026-05-26T20:41:34.078Z" },
|
|
394
394
|
]
|
|
395
395
|
|
|
396
396
|
[[package]]
|
|
@@ -985,14 +985,14 @@ wheels = [
|
|
|
985
985
|
|
|
986
986
|
[[package]]
|
|
987
987
|
name = "pytest-asyncio"
|
|
988
|
-
version = "1.
|
|
988
|
+
version = "1.4.0"
|
|
989
989
|
source = { registry = "https://pypi.org/simple" }
|
|
990
990
|
dependencies = [
|
|
991
991
|
{ name = "pytest" },
|
|
992
992
|
]
|
|
993
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
993
|
+
sdist = { url = "https://files.pythonhosted.org/packages/43/7c/d36d04db312ecf4298932ef77e6e4a9e8ad017906e24e34f0b0c361a2473/pytest_asyncio-1.4.0.tar.gz", hash = "sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42", size = 58514, upload-time = "2026-05-26T09:56:04.083Z" }
|
|
994
994
|
wheels = [
|
|
995
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
995
|
+
{ url = "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl", hash = "sha256:933ca923a23075a87fb7070c0ec272a6848489824d887c85c812670932835aa1", size = 16930, upload-time = "2026-05-26T09:56:02.576Z" },
|
|
996
996
|
]
|
|
997
997
|
|
|
998
998
|
[[package]]
|
|
@@ -1171,7 +1171,7 @@ requires-dist = [
|
|
|
1171
1171
|
{ name = "python3-commons", extras = ["database"], marker = "extra == 'authz'" },
|
|
1172
1172
|
{ name = "python3-commons", extras = ["object-storage"], marker = "extra == 'audit'" },
|
|
1173
1173
|
{ name = "requests", marker = "extra == 'soap-client'", specifier = "~=2.34.2" },
|
|
1174
|
-
{ name = "sqlalchemy", extras = ["asyncio"], marker = "extra == 'database'", specifier = "~=2.0.
|
|
1174
|
+
{ name = "sqlalchemy", extras = ["asyncio"], marker = "extra == 'database'", specifier = "~=2.0.50" },
|
|
1175
1175
|
{ name = "valkey", extras = ["libvalkey"], marker = "extra == 'cache'", specifier = "~=6.1.1" },
|
|
1176
1176
|
{ name = "zeep", extras = ["async"], marker = "extra == 'audit'", specifier = "~=4.3.2" },
|
|
1177
1177
|
{ name = "zeep", extras = ["async"], marker = "extra == 'soap-client'", specifier = "~=4.3.2" },
|
|
@@ -1414,11 +1414,11 @@ wheels = [
|
|
|
1414
1414
|
|
|
1415
1415
|
[[package]]
|
|
1416
1416
|
name = "types-awscrt"
|
|
1417
|
-
version = "0.
|
|
1417
|
+
version = "0.33.0"
|
|
1418
1418
|
source = { registry = "https://pypi.org/simple" }
|
|
1419
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1419
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e2/e3/40e8148a07a3c1c6fb151eddcfdd94083560e759e954b1f5a67ca0b36bcf/types_awscrt-0.33.0.tar.gz", hash = "sha256:803bc7e7e2f6172a0abd71df6593368f82fc23127ca15d287f360e9fcbd3a977", size = 19038, upload-time = "2026-05-25T06:56:04.027Z" }
|
|
1420
1420
|
wheels = [
|
|
1421
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1421
|
+
{ url = "https://files.pythonhosted.org/packages/a0/a6/704fbf052edf2497d09292e5f9555b400594924f1154d6c86f2173c2fc11/types_awscrt-0.33.0-py3-none-any.whl", hash = "sha256:95adb57388e1cacc6e7e96fb7ddc735e60096a6151930640bdbe496d9400493a", size = 45687, upload-time = "2026-05-25T06:56:02.549Z" },
|
|
1422
1422
|
]
|
|
1423
1423
|
|
|
1424
1424
|
[[package]]
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/msgpack.py
RENAMED
|
File without changes
|
{python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons/serializers/msgspec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python3_commons-0.20.8 → python3_commons-0.20.9}/src/python3_commons.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{python3_commons-0.20.8 → python3_commons-0.20.9}/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
|
{python3_commons-0.20.8 → python3_commons-0.20.9}/tests/unit/db/test_async_session_manager.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
|