plexus-python-common 1.0.56__tar.gz → 1.0.58__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.56 → plexus_python_common-1.0.58}/PKG-INFO +1 -1
- plexus_python_common-1.0.56/src/plexus/common/resources/tags/unittest.tagset.yaml → plexus_python_common-1.0.58/src/plexus/common/resources/tags/unittest-1.0.0.tagset.yaml +1 -0
- plexus_python_common-1.0.56/src/plexus/common/resources/tags/universal.tagset.yaml → plexus_python_common-1.0.58/src/plexus/common/resources/tags/universal-1.0.0.tagset.yaml +1 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/bagutils.py +2 -2
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/ormutils.py +13 -3
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/s3utils.py +13 -10
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/tagutils.py +194 -58
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/testutils.py +0 -1
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/PKG-INFO +1 -1
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/SOURCES.txt +2 -2
- plexus_python_common-1.0.58/test/plexus_tests/common/utils/jsonutils_test.py +37 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/tagutils_test.py +176 -102
- plexus_python_common-1.0.56/test/plexus_tests/common/utils/jsonutils_test.py +0 -15
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.editorconfig +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.github/workflows/pr.yml +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.github/workflows/push.yml +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.gitignore +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/MANIFEST.in +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/README.md +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/VERSION +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/pyproject.toml +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/jsonutils/dummy.0.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/jsonutils/dummy.1.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/jsonutils/dummy.2.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/0-dummy +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/1-dummy +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/2-dummy +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.0.0.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.0.0.vol-0.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.0.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.1.1.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.1.1.vol-1.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.1.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.2.2.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.2.2.vol-2.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.2.jsonl +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.csv.part0 +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.csv.part1 +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.csv.part2 +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.txt +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.baz/file.bar.baz +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.baz/file.foo.bar +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.baz/file.foo.baz +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/dir.foo.bar/dir.foo.bar.baz/file.foo.bar.baz +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.bar.baz +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.bar +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.baz +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/file.bar +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/file.baz +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/file.foo +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils_archive/archive.compressed.zip +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils_archive/archive.uncompressed.zip +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/setup.cfg +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/setup.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMFile.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMNode.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMTags.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMWay.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/pose.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/proj.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/resources/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/resources/tags/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/apiutils.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/config.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/datautils.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/dockerutils.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/jsonutils.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/pathutils.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/sqlutils.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/strutils.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/dependency_links.txt +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/not-zip-safe +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/requires.txt +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/top_level.txt +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/carto/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/carto/osm_file_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/carto/osm_tags_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/pose_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/proj_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/__init__.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/bagutils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/datautils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/dockerutils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/ormutils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/pathutils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/s3utils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/strutils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/testutils_test.py +0 -0
- {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/testenv.py +0 -0
{plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/bagutils.py
RENAMED
|
@@ -217,9 +217,9 @@ class BagWriter(AbstractContextManager, BagIOBase):
|
|
|
217
217
|
|
|
218
218
|
:param bag_file_path: path to the SQLite DB file to create.
|
|
219
219
|
:param overwrite: whether to overwrite the SQLite DB file if it already exists. If False and the file already
|
|
220
|
-
|
|
220
|
+
exists, a FileExistsError is raised. If True, the existing file is deleted and a new one is created.
|
|
221
221
|
:param exist_ok: whether to ignore if the SQLite DB file already exists. If False and the file already exists,
|
|
222
|
-
|
|
222
|
+
a FileExistsError is raised. If True, the existing file is used and no new file is created.
|
|
223
223
|
"""
|
|
224
224
|
super().__init__(bag_file_path)
|
|
225
225
|
|
{plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/ormutils.py
RENAMED
|
@@ -267,6 +267,7 @@ class ChangingModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
267
267
|
def make_index_created_at(cls, index_name: str) -> sa.Index:
|
|
268
268
|
"""
|
|
269
269
|
Helper to create an index on the ``created_at`` field with the given index name.
|
|
270
|
+
|
|
270
271
|
:param index_name: Name of the index to create.
|
|
271
272
|
:return: The created SQLAlchemy Index object.
|
|
272
273
|
"""
|
|
@@ -282,6 +283,7 @@ class SnapshotModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
282
283
|
def make_index_created_at_expired_at(cls, index_name: str) -> sa.Index:
|
|
283
284
|
"""
|
|
284
285
|
Helper to create an index on the ``created_at`` and ``expired_at`` fields with the given index name.
|
|
286
|
+
|
|
285
287
|
:param index_name: Name of the index to create.
|
|
286
288
|
:return: The created SQLAlchemy Index object.
|
|
287
289
|
"""
|
|
@@ -292,6 +294,7 @@ class SnapshotModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
292
294
|
"""
|
|
293
295
|
Helper to create a unique index on the ``record_sqn`` field for active records (where ``expired_at`` is NULL).
|
|
294
296
|
This ensures that there is only one active snapshot per record at any given time.
|
|
297
|
+
|
|
295
298
|
:param index_name: Name of the index to create.
|
|
296
299
|
:return: The created SQLAlchemy Index object.
|
|
297
300
|
"""
|
|
@@ -302,6 +305,7 @@ class SnapshotModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
302
305
|
"""
|
|
303
306
|
Helper to create a non-unique index on the specified fields for active records (where ``expired_at`` is NULL).
|
|
304
307
|
This allows efficient querying of active snapshots based on the specified fields.
|
|
308
|
+
|
|
305
309
|
:param index_name: Name of the index to create.
|
|
306
310
|
:param fields: Fields to include in the index.
|
|
307
311
|
:return: The created SQLAlchemy Index object.
|
|
@@ -314,6 +318,7 @@ class SnapshotModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
314
318
|
Helper to create a unique index on the specified fields for active records (where ``expired_at`` is NULL).
|
|
315
319
|
This ensures that there is only one active snapshot per combination of the specified fields at any given
|
|
316
320
|
time.
|
|
321
|
+
|
|
317
322
|
:param index_name: Name of the index to create.
|
|
318
323
|
:param fields: Fields to include in the unique index.
|
|
319
324
|
:return: The created SQLAlchemy Index object.
|
|
@@ -333,6 +338,7 @@ class RevisionModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
333
338
|
"""
|
|
334
339
|
Helper to create an index on the ``created_at``, ``updated_at``, and ``expired_at`` fields with the given
|
|
335
340
|
index name.
|
|
341
|
+
|
|
336
342
|
:param index_name: Name of the index to create.
|
|
337
343
|
:return: The created SQLAlchemy Index object.
|
|
338
344
|
"""
|
|
@@ -343,6 +349,7 @@ class RevisionModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
343
349
|
"""
|
|
344
350
|
Helper to create a unique index on the ``record_sqn`` and ``revision`` fields.
|
|
345
351
|
This ensures that each revision number is unique per record.
|
|
352
|
+
|
|
346
353
|
:param index_name: Name of the index to create.
|
|
347
354
|
:return: The created SQLAlchemy Index object.
|
|
348
355
|
"""
|
|
@@ -353,6 +360,7 @@ class RevisionModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
353
360
|
"""
|
|
354
361
|
Helper to create a unique index on the ``record_sqn`` field for active records (where ``expired_at`` is NULL).
|
|
355
362
|
This ensures that there is only one active revision per record at any given time.
|
|
363
|
+
|
|
356
364
|
:param index_name: Name of the index to create.
|
|
357
365
|
:return: The created SQLAlchemy Index object.
|
|
358
366
|
"""
|
|
@@ -363,6 +371,7 @@ class RevisionModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
363
371
|
"""
|
|
364
372
|
Helper to create a non-unique index on the specified fields for active records (where ``expired_at`` is NULL).
|
|
365
373
|
This allows efficient querying of active revisions based on the specified fields.
|
|
374
|
+
|
|
366
375
|
:param index_name: Name of the index to create.
|
|
367
376
|
:param fields: Fields to include in the index.
|
|
368
377
|
:return: The created SQLAlchemy Index object.
|
|
@@ -375,6 +384,7 @@ class RevisionModelMixinProtocol(SequenceModelMixinProtocol):
|
|
|
375
384
|
Helper to create a unique index on the specified fields for active records (where ``expired_at`` is NULL).
|
|
376
385
|
This ensures that there is only one active revision per combination of the specified fields at any given
|
|
377
386
|
time.
|
|
387
|
+
|
|
378
388
|
:param index_name: Name of the index to create.
|
|
379
389
|
:param fields: Fields to include in the unique index.
|
|
380
390
|
:return: The created SQLAlchemy Index object.
|
|
@@ -465,7 +475,7 @@ def make_changing_model_mixin(dialect: str | None = None) -> type[ChangingModelM
|
|
|
465
475
|
|
|
466
476
|
:param dialect: The database dialect to determine the column types for the fields.
|
|
467
477
|
:return: A mixin class that can be used with SQLModel models to add the common fields and validation logic for
|
|
468
|
-
|
|
478
|
+
updatable records.
|
|
469
479
|
"""
|
|
470
480
|
|
|
471
481
|
class ModelMixin(SQLModel):
|
|
@@ -527,7 +537,7 @@ def make_snapshot_model_mixin(dialect: str | None = None) -> type[SnapshotModelM
|
|
|
527
537
|
|
|
528
538
|
:param dialect: The database dialect to determine the column types for the fields.
|
|
529
539
|
:return: A mixin class that can be used with SQLModel models to add the common fields and validation logic for
|
|
530
|
-
|
|
540
|
+
record snapshots.
|
|
531
541
|
"""
|
|
532
542
|
|
|
533
543
|
class ModelMixin(SQLModel):
|
|
@@ -622,7 +632,7 @@ def make_revision_model_mixin(dialect: str | None = None) -> type[RevisionModelM
|
|
|
622
632
|
|
|
623
633
|
:param dialect: The database dialect to determine the column types for the fields.
|
|
624
634
|
:return: A mixin class that can be used with SQLModel models to add the common fields and validation logic for
|
|
625
|
-
|
|
635
|
+
record revisions.
|
|
626
636
|
"""
|
|
627
637
|
|
|
628
638
|
class ModelMixin(SQLModel):
|
{plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/s3utils.py
RENAMED
|
@@ -549,15 +549,16 @@ def s3_archive_member_tree(
|
|
|
549
549
|
Directory members are recognized by names ending with a trailing slash ("/").
|
|
550
550
|
|
|
551
551
|
Example:
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
552
|
+
|
|
553
|
+
>>> {
|
|
554
|
+
... "dir1/": (ZipInfo, {
|
|
555
|
+
... "file1.txt": (ZipInfo, None),
|
|
556
|
+
... "subdir/": (ZipInfo, {
|
|
557
|
+
... "file2.txt": (ZipInfo, None)
|
|
558
|
+
... })
|
|
559
|
+
... }),
|
|
560
|
+
... "file3.txt": (ZipInfo, None)
|
|
561
|
+
... }
|
|
561
562
|
|
|
562
563
|
:param client: An instance of ``S3Client``.
|
|
563
564
|
:param bucket: Bucket name.
|
|
@@ -602,7 +603,9 @@ def s3_archive_list_files(
|
|
|
602
603
|
under that directory will be included in the results.
|
|
603
604
|
|
|
604
605
|
Example usage:
|
|
605
|
-
|
|
606
|
+
|
|
607
|
+
>>> archive_size, member_zip_infos, missed_members = s3_archive_list_files(
|
|
608
|
+
... client, bucket, key, members=["file1.txt", "dir1/"])
|
|
606
609
|
>>> for info in member_zip_infos:
|
|
607
610
|
... print(info.filename, info.file_size)
|
|
608
611
|
>>> if missed_members:
|