plexus-python-common 1.0.69__tar.gz → 1.0.70__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 (91) hide show
  1. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/PKG-INFO +1 -1
  2. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/tagutils.py +16 -8
  3. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus_python_common.egg-info/PKG-INFO +1 -1
  4. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/tagutils_test.py +5 -3
  5. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/.editorconfig +0 -0
  6. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/.github/workflows/pr.yml +0 -0
  7. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/.github/workflows/push.yml +0 -0
  8. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/.gitignore +0 -0
  9. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/MANIFEST.in +0 -0
  10. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/README.md +0 -0
  11. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/VERSION +0 -0
  12. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/pyproject.toml +0 -0
  13. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/jsonutils/dummy.0.jsonl +0 -0
  14. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/jsonutils/dummy.1.jsonl +0 -0
  15. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/jsonutils/dummy.2.jsonl +0 -0
  16. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/0-dummy +0 -0
  17. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/1-dummy +0 -0
  18. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/2-dummy +0 -0
  19. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.0.0.jsonl +0 -0
  20. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.0.0.vol-0.jsonl +0 -0
  21. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.0.jsonl +0 -0
  22. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.1.1.jsonl +0 -0
  23. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.1.1.vol-1.jsonl +0 -0
  24. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.1.jsonl +0 -0
  25. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.2.2.jsonl +0 -0
  26. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.2.2.vol-2.jsonl +0 -0
  27. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.2.jsonl +0 -0
  28. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.csv.part0 +0 -0
  29. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.csv.part1 +0 -0
  30. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.csv.part2 +0 -0
  31. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/pathutils/dummy.txt +0 -0
  32. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.baz/file.bar.baz +0 -0
  33. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.baz/file.foo.bar +0 -0
  34. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.baz/file.foo.baz +0 -0
  35. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.foo/dir.foo.bar/dir.foo.bar.baz/file.foo.bar.baz +0 -0
  36. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.bar.baz +0 -0
  37. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.bar +0 -0
  38. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.baz +0 -0
  39. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.foo/file.bar +0 -0
  40. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.foo/file.baz +0 -0
  41. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils/dir.foo/file.foo +0 -0
  42. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils_archive/archive.compressed.zip +0 -0
  43. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/resources/unittest/s3utils_archive/archive.uncompressed.zip +0 -0
  44. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/setup.cfg +0 -0
  45. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/setup.py +0 -0
  46. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/__init__.py +0 -0
  47. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/carto/OSMFile.py +0 -0
  48. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/carto/OSMNode.py +0 -0
  49. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/carto/OSMTags.py +0 -0
  50. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/carto/OSMWay.py +0 -0
  51. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/carto/__init__.py +0 -0
  52. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/resources/__init__.py +0 -0
  53. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/resources/tags/__init__.py +0 -0
  54. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/resources/tags/unittest-1.0.0.tagset.yaml +0 -0
  55. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/resources/tags/universal-1.0.0.tagset.yaml +0 -0
  56. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/__init__.py +0 -0
  57. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/apiutils.py +0 -0
  58. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/bagutils.py +0 -0
  59. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/config.py +0 -0
  60. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/datautils.py +0 -0
  61. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/dockerutils.py +0 -0
  62. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/gisutils.py +0 -0
  63. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/jsonutils.py +0 -0
  64. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/ormutils.py +0 -0
  65. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/pathutils.py +0 -0
  66. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/s3utils.py +0 -0
  67. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/sqlutils.py +0 -0
  68. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/strutils.py +0 -0
  69. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus/common/utils/testutils.py +0 -0
  70. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus_python_common.egg-info/SOURCES.txt +0 -0
  71. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus_python_common.egg-info/dependency_links.txt +0 -0
  72. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus_python_common.egg-info/not-zip-safe +0 -0
  73. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus_python_common.egg-info/requires.txt +0 -0
  74. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/src/plexus_python_common.egg-info/top_level.txt +0 -0
  75. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/__init__.py +0 -0
  76. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/__init__.py +0 -0
  77. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/carto/__init__.py +0 -0
  78. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/carto/osm_file_test.py +0 -0
  79. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/carto/osm_tags_test.py +0 -0
  80. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/__init__.py +0 -0
  81. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/bagutils_test.py +0 -0
  82. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/datautils_test.py +0 -0
  83. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/dockerutils_test.py +0 -0
  84. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/gisutils_test.py +0 -0
  85. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/jsonutils_test.py +0 -0
  86. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/ormutils_test.py +0 -0
  87. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/pathutils_test.py +0 -0
  88. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/s3utils_test.py +0 -0
  89. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/strutils_test.py +0 -0
  90. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/test/plexus_tests/common/utils/testutils_test.py +0 -0
  91. {plexus_python_common-1.0.69 → plexus_python_common-1.0.70}/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.69
3
+ Version: 1.0.70
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Programming Language :: Python :: 3.13
@@ -394,15 +394,20 @@ def make_tag_target_model_mixin() -> type[pdt.BaseModel]:
394
394
  )
395
395
  vehicle_name: str = Field(
396
396
  sa_column=sa.Column(sa_sqlite.VARCHAR(128), nullable=False),
397
- description="Vehicle name associated with the tag record",
397
+ description="Name of the tagger's applicability vehicle",
398
398
  )
399
399
  begin_dt: datetime.datetime = Field(
400
400
  sa_column=sa.Column(SQLiteDateTime, nullable=False),
401
- description="Begin datetime of the target range associated with the tag record",
401
+ description="Beginning of the tagger's applicability time range",
402
402
  )
403
403
  end_dt: datetime.datetime = Field(
404
404
  sa_column=sa.Column(SQLiteDateTime, nullable=False),
405
- description="End datetime of the target range associated with the tag record",
405
+ description="End of the tagger's applicability time range",
406
+ )
407
+ props: JsonType | None = Field(
408
+ sa_column=sa.Column(sa_sqlite.JSON, nullable=True),
409
+ default=None,
410
+ description="Additional properties of the tag target in JSON format",
406
411
  )
407
412
 
408
413
  @pdt.field_validator("identifier", mode="after")
@@ -414,7 +419,7 @@ def make_tag_target_model_mixin() -> type[pdt.BaseModel]:
414
419
  @pdt.field_validator("tagger_name", mode="after")
415
420
  @classmethod
416
421
  def validate_tagger_name(cls, v: str) -> str:
417
- validate_snake_case(v)
422
+ validate_slash_tag(v)
418
423
  return v
419
424
 
420
425
  @pdt.field_validator("tagger_version", mode="after")
@@ -466,21 +471,21 @@ def make_tag_record_model_mixin() -> type[pdt.BaseModel]:
466
471
  )
467
472
  begin_dt: datetime.datetime = Field(
468
473
  sa_column=sa.Column(SQLiteDateTime, nullable=False),
469
- description="Begin datetime of the tag record",
474
+ description="Begin of the tag record time range",
470
475
  )
471
476
  end_dt: datetime.datetime = Field(
472
477
  sa_column=sa.Column(SQLiteDateTime, nullable=False),
473
- description="End datetime of the tag record",
478
+ description="End of the tag record time range",
474
479
  )
475
480
  tagset_namespace: str | None = Field(
476
481
  sa_column=sa.Column(sa_sqlite.VARCHAR(64), nullable=True),
477
482
  default=None,
478
- description="Namespace of the tagset that the tag belongs to",
483
+ description="Namespace of the tagset that the tag in this record belongs to",
479
484
  )
480
485
  tagset_version: str | None = Field(
481
486
  sa_column=sa.Column(sa_sqlite.VARCHAR(32), nullable=True),
482
487
  default=None,
483
- description="Version of the tagset that the tag belongs to",
488
+ description="Version of the tagset that the tag in this record belongs to",
484
489
  )
485
490
  tag: str = Field(
486
491
  sa_column=sa.Column(sa_sqlite.VARCHAR(256), nullable=False),
@@ -573,6 +578,7 @@ if typing.TYPE_CHECKING:
573
578
  vehicle_name: sa_orm.Mapped[str] = ...
574
579
  begin_dt: sa_orm.Mapped[datetime.datetime] = ...
575
580
  end_dt: sa_orm.Mapped[datetime.datetime] = ...
581
+ props: sa_orm.Mapped[JsonType | None] = ...
576
582
 
577
583
 
578
584
  class TagTargetTable(TagTarget, SequenceModelMixinProtocol):
@@ -669,6 +675,7 @@ class TagCache(object):
669
675
  vehicle_name: str,
670
676
  begin_dt: datetime.datetime,
671
677
  end_dt: datetime.datetime,
678
+ props: JsonType | None = None,
672
679
  ) -> TagTargetTable:
673
680
  with self.make_session() as session:
674
681
  tag_target = TagTarget(
@@ -678,6 +685,7 @@ class TagCache(object):
678
685
  vehicle_name=vehicle_name,
679
686
  begin_dt=begin_dt,
680
687
  end_dt=end_dt,
688
+ props=props,
681
689
  )
682
690
  db_tag_target = clone_sequence_model_instance(TagTargetTable, tag_target)
683
691
  session.add(db_tag_target)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plexus-python-common
3
- Version: 1.0.69
3
+ Version: 1.0.70
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Programming Language :: Python :: 3.13
@@ -121,7 +121,8 @@ class TagUtilsTest(unittest.TestCase):
121
121
  "1.0.0",
122
122
  "dummy_vehicle",
123
123
  dt_parse_iso("2020-01-01T00:00:00+00:00"),
124
- dt_parse_iso("2020-01-01T01:00:00+00:00"))
124
+ dt_parse_iso("2020-01-01T01:00:00+00:00"),
125
+ {"dummy_target_prop": "dummy_value"})
125
126
 
126
127
  target_cache = cache.with_target("awesome_tagger/20200101_000000/dummy_vehicle/0")
127
128
 
@@ -270,11 +271,12 @@ class TagUtilsTest(unittest.TestCase):
270
271
 
271
272
  for i in range(target_caches_count):
272
273
  cache.add_target(f"concurrent_tagger/20200101_000000/dummy_vehicle/{i}",
273
- "concurrent_tagger",
274
+ f"concurrent_tagger/tagger_{i}",
274
275
  f"1.0.{i}",
275
276
  "dummy_vehicle",
276
277
  dt_parse_iso("2020-01-01T00:00:00+00:00"),
277
- dt_parse_iso("2020-01-01T01:00:00+00:00"))
278
+ dt_parse_iso("2020-01-01T01:00:00+00:00"),
279
+ {"dummy_target_prop": "dummy_value"})
278
280
 
279
281
  target_caches = [cache.with_target(f"concurrent_tagger/20200101_000000/dummy_vehicle/{i}")
280
282
  for i in range(target_caches_count)]