plexus-python-common 1.0.24__tar.gz → 1.0.25__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.
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/PKG-INFO +2 -1
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/pyproject.toml +2 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/s3utils.py +27 -3
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/testutils.py +7 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus_python_common.egg-info/PKG-INFO +2 -1
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus_python_common.egg-info/requires.txt +1 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/.editorconfig +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/.github/workflows/pr.yml +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/.github/workflows/push.yml +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/.gitignore +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/MANIFEST.in +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/README.md +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/VERSION +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/jsonutils/dummy.0.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/jsonutils/dummy.1.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/jsonutils/dummy.2.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.baz/file.bar.baz +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.baz/file.foo.bar +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.baz/file.foo.baz +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.foo/dir.foo.bar/dir.foo.bar.baz/file.foo.bar.baz +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.bar.baz +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.bar +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.baz +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.foo/file.bar +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.foo/file.baz +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/s3utils/dir.foo/file.foo +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/0-dummy +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/1-dummy +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/2-dummy +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.0.0.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.0.0.vol-0.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.0.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.1.1.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.1.1.vol-1.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.1.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.2.2.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.2.2.vol-2.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.2.jsonl +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.csv.part0 +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.csv.part1 +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.csv.part2 +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.txt +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/setup.cfg +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/setup.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/__init__.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMFile.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMNode.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMTags.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMWay.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/__init__.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/config.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/pose.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/proj.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/__init__.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/apiutils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/bagutils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/datautils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/jsonutils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/ormutils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/shutils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/sqlutils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/strutils.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus_python_common.egg-info/SOURCES.txt +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus_python_common.egg-info/dependency_links.txt +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus_python_common.egg-info/not-zip-safe +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus_python_common.egg-info/top_level.txt +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/__init__.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/carto/osm_file_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/carto/osm_tags_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/pose_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/proj_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/bagutils_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/datautils_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/jsonutils_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/ormutils_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/s3utils_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/shutils_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/strutils_test.py +0 -0
- {plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/utils/testutils_test.py +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plexus-python-common
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.25
|
|
4
4
|
Classifier: Programming Language :: Python :: 3
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.12
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.13
|
|
7
7
|
Classifier: Programming Language :: Python :: 3.14
|
|
8
8
|
Requires-Python: <3.15,>=3.12
|
|
9
9
|
Requires-Dist: boto3>=1.41
|
|
10
|
+
Requires-Dist: boto3-stubs>=1.41
|
|
10
11
|
Requires-Dist: cloudpathlib>=0.21
|
|
11
12
|
Requires-Dist: lxml>=6.0
|
|
12
13
|
Requires-Dist: numpy>=2.3
|
|
@@ -9,6 +9,7 @@ build-backend = "setuptools.build_meta"
|
|
|
9
9
|
[dependency-groups]
|
|
10
10
|
dev = [
|
|
11
11
|
"boto3>=1.41",
|
|
12
|
+
"boto3-stubs>=1.41",
|
|
12
13
|
"cloudpathlib>=0.21",
|
|
13
14
|
"lxml>=6.0",
|
|
14
15
|
"numpy>=2.3",
|
|
@@ -48,6 +49,7 @@ classifiers = [
|
|
|
48
49
|
]
|
|
49
50
|
dependencies = [
|
|
50
51
|
"boto3>=1.41",
|
|
52
|
+
"boto3-stubs>=1.41",
|
|
51
53
|
"cloudpathlib>=0.21",
|
|
52
54
|
"lxml>=6.0",
|
|
53
55
|
"numpy>=2.3",
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/s3utils.py
RENAMED
|
@@ -7,6 +7,7 @@ import mimetypes
|
|
|
7
7
|
import os
|
|
8
8
|
import os.path
|
|
9
9
|
import tempfile
|
|
10
|
+
import typing
|
|
10
11
|
from collections.abc import Callable, Generator
|
|
11
12
|
from pathlib import Path
|
|
12
13
|
from typing import Literal
|
|
@@ -34,20 +35,29 @@ __all__ = [
|
|
|
34
35
|
]
|
|
35
36
|
|
|
36
37
|
|
|
37
|
-
@dataclasses.dataclass
|
|
38
|
+
@dataclasses.dataclass(frozen=True, eq=True)
|
|
38
39
|
class S3ObjectMeta(object):
|
|
39
40
|
key: str
|
|
40
41
|
last_modified: datetime.datetime
|
|
41
42
|
size: int
|
|
42
43
|
|
|
43
44
|
|
|
45
|
+
if typing.TYPE_CHECKING:
|
|
46
|
+
def s3_make_client(
|
|
47
|
+
access_key_id: str = None,
|
|
48
|
+
secret_access_key: str = None,
|
|
49
|
+
region_name: str = None,
|
|
50
|
+
endpoint_url: str = None,
|
|
51
|
+
) -> contextlib.AbstractContextManager[S3Client]: ...
|
|
52
|
+
|
|
53
|
+
|
|
44
54
|
@contextlib.contextmanager
|
|
45
55
|
def s3_make_client(
|
|
46
56
|
access_key_id: str = None,
|
|
47
57
|
secret_access_key: str = None,
|
|
48
58
|
region_name: str = None,
|
|
49
59
|
endpoint_url: str = None,
|
|
50
|
-
) -> Generator[S3Client]:
|
|
60
|
+
) -> Generator[S3Client, None, None]:
|
|
51
61
|
"""
|
|
52
62
|
Creates an S3 client as a context manager for safe resource handling.
|
|
53
63
|
|
|
@@ -60,7 +70,12 @@ def s3_make_client(
|
|
|
60
70
|
session = boto3.Session(aws_access_key_id=trim_to_none(access_key_id),
|
|
61
71
|
aws_secret_access_key=trim_to_none(secret_access_key),
|
|
62
72
|
region_name=trim_to_none(region_name))
|
|
63
|
-
|
|
73
|
+
client = S3Client(boto3_session=session, endpoint_url=trim_to_none(endpoint_url))
|
|
74
|
+
try:
|
|
75
|
+
yield client
|
|
76
|
+
finally:
|
|
77
|
+
if hasattr(client, "close"):
|
|
78
|
+
client.close()
|
|
64
79
|
|
|
65
80
|
|
|
66
81
|
def s3_list_objects(client: S3Client, bucket: str, prefix: str, limit: int = None) -> Generator[S3ObjectMeta]:
|
|
@@ -386,6 +401,15 @@ def s3_make_progress_callback(
|
|
|
386
401
|
return progress_callback
|
|
387
402
|
|
|
388
403
|
|
|
404
|
+
if typing.TYPE_CHECKING:
|
|
405
|
+
def s3_make_progressed_client(
|
|
406
|
+
access_key_id: str = None,
|
|
407
|
+
secret_access_key: str = None,
|
|
408
|
+
region_name: str = None,
|
|
409
|
+
endpoint_url: str = None,
|
|
410
|
+
) -> contextlib.AbstractContextManager[S3Client]: ...
|
|
411
|
+
|
|
412
|
+
|
|
389
413
|
@contextlib.contextmanager
|
|
390
414
|
def s3_make_progressed_client(
|
|
391
415
|
access_key_id: str = None,
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/testutils.py
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import uuid as py_uuid
|
|
2
|
+
|
|
1
3
|
import textcase
|
|
2
4
|
from iker.common.utils.jsonutils import JsonType
|
|
3
5
|
from iker.common.utils.jsonutils import json_difference, json_reformat
|
|
@@ -6,6 +8,7 @@ from plexus.common.utils.datautils import compute_vin_code_check_digit
|
|
|
6
8
|
|
|
7
9
|
__all__ = [
|
|
8
10
|
"generate_dummy_uuid_str",
|
|
11
|
+
"generate_dummy_uuid",
|
|
9
12
|
"generate_dummy_vin_code",
|
|
10
13
|
"case_insensitive_json_compare",
|
|
11
14
|
]
|
|
@@ -20,6 +23,10 @@ def generate_dummy_uuid_str(*nums: int) -> str:
|
|
|
20
23
|
return f"{i0:04x}{i1:04x}-{i2:04x}-{i3:04x}-{i4:04x}-{i5:04x}{i6:04x}{i7:04x}"
|
|
21
24
|
|
|
22
25
|
|
|
26
|
+
def generate_dummy_uuid(*nums: int) -> py_uuid.UUID:
|
|
27
|
+
return py_uuid.UUID(generate_dummy_uuid_str(*nums))
|
|
28
|
+
|
|
29
|
+
|
|
23
30
|
def generate_dummy_vin_code(*nums: int) -> str:
|
|
24
31
|
if len(nums) > 4:
|
|
25
32
|
raise ValueError("a maximum of 4 integers can be provided")
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plexus-python-common
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.25
|
|
4
4
|
Classifier: Programming Language :: Python :: 3
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.12
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.13
|
|
7
7
|
Classifier: Programming Language :: Python :: 3.14
|
|
8
8
|
Requires-Python: <3.15,>=3.12
|
|
9
9
|
Requires-Dist: boto3>=1.41
|
|
10
|
+
Requires-Dist: boto3-stubs>=1.41
|
|
10
11
|
Requires-Dist: cloudpathlib>=0.21
|
|
11
12
|
Requires-Dist: lxml>=6.0
|
|
12
13
|
Requires-Dist: numpy>=2.3
|
|
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
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/0-dummy
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/1-dummy
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/2-dummy
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.0.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.1.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.2.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/resources/unittest/shutils/dummy.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMFile.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMNode.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMTags.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/OSMWay.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/carto/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/__init__.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/apiutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/bagutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/datautils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/jsonutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/ormutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/shutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/sqlutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/src/plexus/common/utils/strutils.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
|
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/pose_test.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.24 → plexus_python_common-1.0.25}/test/plexus_tests/common/proj_test.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
|
|
File without changes
|