python3-commons 0.17.3__tar.gz → 0.17.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.
- {python3_commons-0.17.3/src/python3_commons.egg-info → python3_commons-0.17.4}/PKG-INFO +1 -1
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/conf.py +5 -6
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/object_storage.py +4 -7
- {python3_commons-0.17.3 → python3_commons-0.17.4/src/python3_commons.egg-info}/PKG-INFO +1 -1
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.coveragerc +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.devcontainer/Dockerfile +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.devcontainer/devcontainer.json +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.devcontainer/docker-compose.yml +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.env_template +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.github/workflows/checks.yml +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.github/workflows/python-publish.yaml +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.github/workflows/release-on-tag-push.yml +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.gitignore +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.pre-commit-config.yaml +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/.python-version +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/AUTHORS.rst +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/CHANGELOG.rst +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/LICENSE +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/README.md +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/README.rst +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/docs/Makefile +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/docs/_static/.gitignore +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/docs/authors.rst +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/docs/changelog.rst +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/docs/conf.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/docs/index.rst +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/docs/license.rst +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/pyproject.toml +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/setup.cfg +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/api_client.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/async_functools.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/audit.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/auth.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/cache.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/db/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/db/helpers.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/db/models/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/db/models/auth.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/db/models/common.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/db/models/rbac.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/db/models/users.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/exceptions.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/fs.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/generators.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/helpers.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/log/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/log/filters.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/log/formatters.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/permissions.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/common.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/json.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/msgpack.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/msgspec.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons.egg-info/SOURCES.txt +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons.egg-info/dependency_links.txt +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons.egg-info/requires.txt +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons.egg-info/top_level.txt +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/integration/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/integration/test_cache.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/integration/test_osc.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/conftest.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/log/__init__.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/log/test_formatters.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/test_async_functools.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/test_audit.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/test_helpers.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/test_msgpack.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/tests/unit/test_msgspec.py +0 -0
- {python3_commons-0.17.3 → python3_commons-0.17.4}/uv.lock +0 -0
|
@@ -58,11 +58,11 @@ class DBSettings(BaseSettings):
|
|
|
58
58
|
@model_validator(mode='after')
|
|
59
59
|
def build_dsn_if_missing(self) -> DBSettings:
|
|
60
60
|
if self.dsn is None and all(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
(
|
|
62
|
+
self.user,
|
|
63
|
+
self.password,
|
|
64
|
+
self.name,
|
|
65
|
+
)
|
|
66
66
|
):
|
|
67
67
|
self.dsn = PostgresDsn.build(
|
|
68
68
|
scheme=self.scheme,
|
|
@@ -82,7 +82,6 @@ class S3Settings(BaseSettings):
|
|
|
82
82
|
aws_access_key_id: SecretStr | None = None
|
|
83
83
|
aws_secret_access_key: SecretStr | None = None
|
|
84
84
|
|
|
85
|
-
s3_endpoint_url: str | None = None
|
|
86
85
|
s3_addressing_style: Literal['path', 'virtual'] = 'virtual'
|
|
87
86
|
s3_secure: bool = True
|
|
88
87
|
s3_bucket: str | None = None
|
|
@@ -50,9 +50,6 @@ class ObjectStorage(metaclass=SingletonMeta):
|
|
|
50
50
|
'config': Config(s3={'addressing_style': settings.s3_addressing_style}, signature_version='s3v4'),
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
if s3_endpoint_url := settings.s3_endpoint_url:
|
|
54
|
-
config['endpoint_url'] = s3_endpoint_url
|
|
55
|
-
|
|
56
53
|
if aws_access_key_id := settings.aws_access_key_id:
|
|
57
54
|
config['aws_access_key_id'] = aws_access_key_id.get_secret_value()
|
|
58
55
|
|
|
@@ -143,7 +140,7 @@ async def list_objects(bucket_name: str, prefix: str, *, recursive: bool = True)
|
|
|
143
140
|
|
|
144
141
|
|
|
145
142
|
async def get_object_streams(
|
|
146
|
-
|
|
143
|
+
bucket_name: str, path: str, *, recursive: bool = True
|
|
147
144
|
) -> AsyncGenerator[tuple[str, datetime, StreamingBody]]:
|
|
148
145
|
async for obj in list_objects(bucket_name, path, recursive=recursive):
|
|
149
146
|
object_name = obj['Key']
|
|
@@ -154,7 +151,7 @@ async def get_object_streams(
|
|
|
154
151
|
|
|
155
152
|
|
|
156
153
|
async def get_objects(
|
|
157
|
-
|
|
154
|
+
bucket_name: str, path: str, *, recursive: bool = True
|
|
158
155
|
) -> AsyncGenerator[tuple[str, datetime, bytes]]:
|
|
159
156
|
async for object_name, last_modified, stream in get_object_streams(bucket_name, path, recursive=recursive):
|
|
160
157
|
data = await stream.read()
|
|
@@ -176,7 +173,7 @@ async def remove_object(bucket_name: str, object_name: str) -> None:
|
|
|
176
173
|
|
|
177
174
|
|
|
178
175
|
async def remove_objects(
|
|
179
|
-
|
|
176
|
+
bucket_name: str, prefix: str | None = None, object_names: Iterable[str] | None = None
|
|
180
177
|
) -> Sequence[Mapping] | None:
|
|
181
178
|
storage = ObjectStorage(s3_settings)
|
|
182
179
|
|
|
@@ -199,7 +196,7 @@ async def remove_objects(
|
|
|
199
196
|
chunk_size = 1000
|
|
200
197
|
|
|
201
198
|
for i in range(0, len(objects_to_delete), chunk_size):
|
|
202
|
-
chunk = objects_to_delete[i
|
|
199
|
+
chunk = objects_to_delete[i: i + chunk_size]
|
|
203
200
|
|
|
204
201
|
response = await s3_client.delete_objects(Bucket=bucket_name, Delete={'Objects': chunk})
|
|
205
202
|
|
|
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
|
|
File without changes
|
{python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/msgpack.py
RENAMED
|
File without changes
|
{python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons/serializers/msgspec.py
RENAMED
|
File without changes
|
|
File without changes
|
{python3_commons-0.17.3 → python3_commons-0.17.4}/src/python3_commons.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
{python3_commons-0.17.3 → python3_commons-0.17.4}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|