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.
Files changed (94) hide show
  1. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/PKG-INFO +1 -1
  2. 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
  3. 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
  4. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/bagutils.py +2 -2
  5. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/ormutils.py +13 -3
  6. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/s3utils.py +13 -10
  7. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/tagutils.py +194 -58
  8. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/testutils.py +0 -1
  9. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/PKG-INFO +1 -1
  10. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/SOURCES.txt +2 -2
  11. plexus_python_common-1.0.58/test/plexus_tests/common/utils/jsonutils_test.py +37 -0
  12. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/tagutils_test.py +176 -102
  13. plexus_python_common-1.0.56/test/plexus_tests/common/utils/jsonutils_test.py +0 -15
  14. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.editorconfig +0 -0
  15. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.github/workflows/pr.yml +0 -0
  16. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.github/workflows/push.yml +0 -0
  17. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/.gitignore +0 -0
  18. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/MANIFEST.in +0 -0
  19. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/README.md +0 -0
  20. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/VERSION +0 -0
  21. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/pyproject.toml +0 -0
  22. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/jsonutils/dummy.0.jsonl +0 -0
  23. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/jsonutils/dummy.1.jsonl +0 -0
  24. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/jsonutils/dummy.2.jsonl +0 -0
  25. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/0-dummy +0 -0
  26. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/1-dummy +0 -0
  27. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/2-dummy +0 -0
  28. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.0.0.jsonl +0 -0
  29. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.0.0.vol-0.jsonl +0 -0
  30. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.0.jsonl +0 -0
  31. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.1.1.jsonl +0 -0
  32. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.1.1.vol-1.jsonl +0 -0
  33. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.1.jsonl +0 -0
  34. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.2.2.jsonl +0 -0
  35. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.2.2.vol-2.jsonl +0 -0
  36. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.2.jsonl +0 -0
  37. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.csv.part0 +0 -0
  38. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.csv.part1 +0 -0
  39. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.csv.part2 +0 -0
  40. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/pathutils/dummy.txt +0 -0
  41. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.baz/file.bar.baz +0 -0
  42. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.baz/file.foo.bar +0 -0
  43. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.baz/file.foo.baz +0 -0
  44. {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
  45. {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
  46. {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
  47. {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
  48. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/file.bar +0 -0
  49. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/file.baz +0 -0
  50. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils/dir.foo/file.foo +0 -0
  51. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils_archive/archive.compressed.zip +0 -0
  52. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/resources/unittest/s3utils_archive/archive.uncompressed.zip +0 -0
  53. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/setup.cfg +0 -0
  54. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/setup.py +0 -0
  55. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/__init__.py +0 -0
  56. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMFile.py +0 -0
  57. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMNode.py +0 -0
  58. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMTags.py +0 -0
  59. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/OSMWay.py +0 -0
  60. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/carto/__init__.py +0 -0
  61. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/pose.py +0 -0
  62. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/proj.py +0 -0
  63. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/resources/__init__.py +0 -0
  64. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/resources/tags/__init__.py +0 -0
  65. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/__init__.py +0 -0
  66. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/apiutils.py +0 -0
  67. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/config.py +0 -0
  68. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/datautils.py +0 -0
  69. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/dockerutils.py +0 -0
  70. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/jsonutils.py +0 -0
  71. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/pathutils.py +0 -0
  72. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/sqlutils.py +0 -0
  73. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus/common/utils/strutils.py +0 -0
  74. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/dependency_links.txt +0 -0
  75. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/not-zip-safe +0 -0
  76. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/requires.txt +0 -0
  77. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/src/plexus_python_common.egg-info/top_level.txt +0 -0
  78. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/__init__.py +0 -0
  79. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/__init__.py +0 -0
  80. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/carto/__init__.py +0 -0
  81. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/carto/osm_file_test.py +0 -0
  82. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/carto/osm_tags_test.py +0 -0
  83. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/pose_test.py +0 -0
  84. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/proj_test.py +0 -0
  85. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/__init__.py +0 -0
  86. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/bagutils_test.py +0 -0
  87. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/datautils_test.py +0 -0
  88. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/dockerutils_test.py +0 -0
  89. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/ormutils_test.py +0 -0
  90. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/pathutils_test.py +0 -0
  91. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/s3utils_test.py +0 -0
  92. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/strutils_test.py +0 -0
  93. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/plexus_tests/common/utils/testutils_test.py +0 -0
  94. {plexus_python_common-1.0.56 → plexus_python_common-1.0.58}/test/testenv.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plexus-python-common
3
- Version: 1.0.56
3
+ Version: 1.0.58
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Programming Language :: Python :: 3.13
@@ -1,4 +1,5 @@
1
1
  $namespace: "unittest"
2
+ $version: "1.0.0"
2
3
  # language=markdown
3
4
  $desc: !markdown |
4
5
  **Unit Test Tagset**
@@ -1,4 +1,5 @@
1
1
  $namespace: "universal"
2
+ $version: "1.0.0"
2
3
  # language=markdown
3
4
  $desc: !markdown |
4
5
  **Universal Tagset**
@@ -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
- exists, a FileExistsError is raised. If True, the existing file is deleted and a new one is created.
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
- a FileExistsError is raised. If True, the existing file is used and no new file is created.
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
 
@@ -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
- updatable records.
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
- record snapshots.
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
- record revisions.
635
+ record revisions.
626
636
  """
627
637
 
628
638
  class ModelMixin(SQLModel):
@@ -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
- "dir1/": (ZipInfo, {
554
- "file1.txt": (ZipInfo, None),
555
- "subdir/": (ZipInfo, {
556
- "file2.txt": (ZipInfo, None)
557
- })
558
- }),
559
- "file3.txt": (ZipInfo, None)
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
- >>> archive_size, member_zip_infos, missed_members = s3_archive_list_files(client, bucket, key, members=["file1.txt", "dir1/"])
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: