plexus-python-common 1.0.58__tar.gz → 1.0.60__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.58 → plexus_python_common-1.0.60}/PKG-INFO +1 -1
  2. plexus_python_common-1.0.60/README.md +5 -0
  3. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/bagutils.py +14 -12
  4. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/ormutils.py +9 -9
  5. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/tagutils.py +20 -15
  6. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus_python_common.egg-info/PKG-INFO +1 -1
  7. plexus_python_common-1.0.58/README.md +0 -4
  8. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/.editorconfig +0 -0
  9. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/.github/workflows/pr.yml +0 -0
  10. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/.github/workflows/push.yml +0 -0
  11. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/.gitignore +0 -0
  12. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/MANIFEST.in +0 -0
  13. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/VERSION +0 -0
  14. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/pyproject.toml +0 -0
  15. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/jsonutils/dummy.0.jsonl +0 -0
  16. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/jsonutils/dummy.1.jsonl +0 -0
  17. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/jsonutils/dummy.2.jsonl +0 -0
  18. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/0-dummy +0 -0
  19. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/1-dummy +0 -0
  20. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/2-dummy +0 -0
  21. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.0.0.jsonl +0 -0
  22. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.0.0.vol-0.jsonl +0 -0
  23. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.0.jsonl +0 -0
  24. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.1.1.jsonl +0 -0
  25. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.1.1.vol-1.jsonl +0 -0
  26. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.1.jsonl +0 -0
  27. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.2.2.jsonl +0 -0
  28. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.2.2.vol-2.jsonl +0 -0
  29. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.2.jsonl +0 -0
  30. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.csv.part0 +0 -0
  31. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.csv.part1 +0 -0
  32. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.csv.part2 +0 -0
  33. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/pathutils/dummy.txt +0 -0
  34. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.baz/file.bar.baz +0 -0
  35. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.baz/file.foo.bar +0 -0
  36. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.baz/file.foo.baz +0 -0
  37. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.foo/dir.foo.bar/dir.foo.bar.baz/file.foo.bar.baz +0 -0
  38. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.bar.baz +0 -0
  39. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.bar +0 -0
  40. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.baz +0 -0
  41. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.foo/file.bar +0 -0
  42. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.foo/file.baz +0 -0
  43. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils/dir.foo/file.foo +0 -0
  44. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils_archive/archive.compressed.zip +0 -0
  45. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/resources/unittest/s3utils_archive/archive.uncompressed.zip +0 -0
  46. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/setup.cfg +0 -0
  47. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/setup.py +0 -0
  48. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/__init__.py +0 -0
  49. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/carto/OSMFile.py +0 -0
  50. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/carto/OSMNode.py +0 -0
  51. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/carto/OSMTags.py +0 -0
  52. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/carto/OSMWay.py +0 -0
  53. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/carto/__init__.py +0 -0
  54. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/pose.py +0 -0
  55. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/proj.py +0 -0
  56. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/resources/__init__.py +0 -0
  57. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/resources/tags/__init__.py +0 -0
  58. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/resources/tags/unittest-1.0.0.tagset.yaml +0 -0
  59. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/resources/tags/universal-1.0.0.tagset.yaml +0 -0
  60. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/__init__.py +0 -0
  61. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/apiutils.py +0 -0
  62. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/config.py +0 -0
  63. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/datautils.py +0 -0
  64. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/dockerutils.py +0 -0
  65. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/jsonutils.py +0 -0
  66. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/pathutils.py +0 -0
  67. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/s3utils.py +0 -0
  68. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/sqlutils.py +0 -0
  69. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/strutils.py +0 -0
  70. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus/common/utils/testutils.py +0 -0
  71. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus_python_common.egg-info/SOURCES.txt +0 -0
  72. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus_python_common.egg-info/dependency_links.txt +0 -0
  73. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus_python_common.egg-info/not-zip-safe +0 -0
  74. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus_python_common.egg-info/requires.txt +0 -0
  75. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/src/plexus_python_common.egg-info/top_level.txt +0 -0
  76. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/__init__.py +0 -0
  77. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/__init__.py +0 -0
  78. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/carto/__init__.py +0 -0
  79. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/carto/osm_file_test.py +0 -0
  80. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/carto/osm_tags_test.py +0 -0
  81. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/pose_test.py +0 -0
  82. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/proj_test.py +0 -0
  83. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/__init__.py +0 -0
  84. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/bagutils_test.py +0 -0
  85. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/datautils_test.py +0 -0
  86. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/dockerutils_test.py +0 -0
  87. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/jsonutils_test.py +0 -0
  88. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/ormutils_test.py +0 -0
  89. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/pathutils_test.py +0 -0
  90. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/s3utils_test.py +0 -0
  91. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/strutils_test.py +0 -0
  92. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/tagutils_test.py +0 -0
  93. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/test/plexus_tests/common/utils/testutils_test.py +0 -0
  94. {plexus_python_common-1.0.58 → plexus_python_common-1.0.60}/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.58
3
+ Version: 1.0.60
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Python :: 3.12
6
6
  Classifier: Programming Language :: Python :: 3.13
@@ -0,0 +1,5 @@
1
+ # Plexus Python Common Module
2
+
3
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/plexus-python-common?style=for-the-badge)
4
+ ![PyPI - Version](https://img.shields.io/pypi/v/plexus-python-common?style=for-the-badge)
5
+ ![Codecov](https://img.shields.io/codecov/c/github/ruyangshou/plexus-python-common?token=U8EPB2JZ70&style=for-the-badge)
@@ -148,18 +148,18 @@ class BagReader(AbstractContextManager, BagIOBase):
148
148
  @staticmethod
149
149
  def open_ros2(db_dir: str | os.PathLike[str], db_filename: str = default_bag_db_file, **kwargs) -> "BagReader":
150
150
  """
151
- Creates a BagReader instance to read messages from a ROS2 bag file in the specified directory.
151
+ Creates a ``BagReader`` instance to read messages from a ROS2 bag file in the specified directory.
152
152
 
153
153
  :param db_dir: path to the directory where the SQLite DB file is located.
154
154
  :param db_filename: name of the SQLite DB file to read. Default is "bag.db".
155
- :param kwargs: additional keyword arguments to pass to the BagReader constructor.
156
- :return: a BagReader instance.
155
+ :param kwargs: additional keyword arguments to pass to the ``BagReader`` constructor.
156
+ :return: a ``BagReader`` instance.
157
157
  """
158
158
  return BagReader(make_path(db_dir) / db_filename)
159
159
 
160
160
  def __init__(self, bag_file_path: str | os.PathLike[str]):
161
161
  """
162
- Creates a BagReader instance to read messages from a ROS2 bag file.
162
+ Creates a ``BagReader`` instance to read messages from a ROS2 bag file.
163
163
 
164
164
  :param bag_file_path: path to the SQLite DB file to read.
165
165
  """
@@ -202,24 +202,26 @@ class BagWriter(AbstractContextManager, BagIOBase):
202
202
  @staticmethod
203
203
  def open_ros2(db_dir: str | os.PathLike[str], db_filename: str = default_bag_db_file, **kwargs) -> "BagWriter":
204
204
  """
205
- Creates a BagWriter instance to write messages to a ROS2 bag file in the specified directory.
205
+ Creates a ``BagWriter`` instance to write messages to a ROS2 bag file in the specified directory.
206
206
 
207
207
  :param db_dir: path to the directory where the SQLite DB file will be created.
208
208
  :param db_filename: name of the SQLite DB file to create. Default is "bag.db".
209
- :param kwargs: additional keyword arguments to pass to the BagWriter constructor.
210
- :return: a BagWriter instance.
209
+ :param kwargs: additional keyword arguments to pass to the ``BagWriter`` constructor.
210
+ :return: a ``BagWriter`` instance.
211
211
  """
212
212
  return BagWriter(make_path(db_dir) / db_filename, **kwargs)
213
213
 
214
214
  def __init__(self, bag_file_path: str | os.PathLike[str], *, overwrite: bool = True, exist_ok: bool = False):
215
215
  """
216
- Creates a BagWriter instance to write messages to a ROS2 bag file.
216
+ Creates a ``BagWriter`` instance to write messages to a ROS2 bag file.
217
217
 
218
218
  :param bag_file_path: path to the SQLite DB file to create.
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.
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.
219
+ :param overwrite: whether to overwrite the SQLite DB file if it already exists. If ``False`` and the file
220
+ already exists, a ``FileExistsError`` is raised. If ``True``, the existing file is deleted
221
+ and a new one is created.
222
+ :param exist_ok: whether to ignore if the SQLite DB file already exists. If ``False`` and the file already
223
+ exists, a ``FileExistsError`` is raised. If ``True``, the existing file is used and no new
224
+ file is created.
223
225
  """
224
226
  super().__init__(bag_file_path)
225
227
 
@@ -451,11 +451,11 @@ def model_revision_type(dialect: str | None = None) -> sa.types.TypeEngine[int]:
451
451
 
452
452
  def make_sequence_model_mixin(dialect: str | None = None) -> type[SequenceModelMixin]:
453
453
  """
454
- Creates a mixin class for SQLModel models that adds a unique identifier field `sqn`.
454
+ Creates a mixin class for SQLModel models that adds a unique identifier field ``sqn``.
455
455
  Use this mixin to add an auto-incremented primary key to your models.
456
456
 
457
- :param dialect: The database dialect to determine the column type for the `sqn` field.
458
- :return: A mixin class that can be used with SQLModel models to add the `sqn` field.
457
+ :param dialect: The database dialect to determine the column type for the ``sqn`` field.
458
+ :return: A mixin class that can be used with SQLModel models to add the ``sqn`` field.
459
459
  """
460
460
 
461
461
  class ModelMixin(SQLModel):
@@ -765,11 +765,11 @@ class RevisionModel(make_base_model(), make_revision_model_mixin(), table=True):
765
765
  def make_snapshot_model_trigger[SnapshotModelT: SnapshotModelMixin](engine: sa.Engine, model: type[SnapshotModelT]):
766
766
  """
767
767
  Creates the necessary database objects (sequence, function, trigger) to support automatic snapshot management
768
- for the given snapshot model. This includes a sequence for `record_sqn`, a function to handle snapshot updates,
769
- and a trigger to invoke the function before inserts. The model must extend `SnapshotModel`.
768
+ for the given snapshot model. This includes a sequence for ``record_sqn``, a function to handle snapshot updates,
769
+ and a trigger to invoke the function before inserts. The model must extend ``SnapshotModel``.
770
770
 
771
771
  :param engine: SQLAlchemy engine connected to the target database.
772
- :param model: The snapshot model class extending `SnapshotModel`.
772
+ :param model: The snapshot model class extending ``SnapshotModel``.
773
773
  """
774
774
  table_name = model_name_of(model, fallback_classname=False)
775
775
  if not table_name:
@@ -834,11 +834,11 @@ def make_snapshot_model_trigger[SnapshotModelT: SnapshotModelMixin](engine: sa.E
834
834
  def make_revision_model_trigger[RevisionModelT: RevisionModelMixin](engine: sa.Engine, model: type[RevisionModelT]):
835
835
  """
836
836
  Creates the necessary database objects (sequence, function, trigger) to support automatic revision management
837
- for the given revision model. This includes a sequence for `record_sqn`, a function to handle revision updates,
838
- and a trigger to invoke the function before inserts. The model must extend `RevisionModel`.
837
+ for the given revision model. This includes a sequence for ``record_sqn``, a function to handle revision updates,
838
+ and a trigger to invoke the function before inserts. The model must extend ``RevisionModel``.
839
839
 
840
840
  :param engine: SQLAlchemy engine connected to the target database.
841
- :param model: The revision model class extending `RevisionModel`.
841
+ :param model: The revision model class extending ``RevisionModel``.
842
842
  """
843
843
  table_name = model_name_of(model, fallback_classname=False)
844
844
  if not table_name:
@@ -688,7 +688,7 @@ class TagCache(object):
688
688
  :param tag_prefix: Filter by tag name prefix, e.g. "dummy_tag:" to match all tags starting with "dummy_tag:"
689
689
  :param tagsets: Filter by tagsets (match tags that are in any of the specified tagsets)
690
690
  :param tagset_inverted: Whether to invert the tagset filter (match tags that are NOT in any of the specified
691
- tagsets)
691
+ tagsets)
692
692
  :param batch_size: Number of records to fetch per batch from the database (for memory efficiency)
693
693
  :return: Generator of ``TagRecordTable`` instances that match the filters
694
694
  """
@@ -749,7 +749,7 @@ class TagCache(object):
749
749
  :param target_end_dt: Filter by target end time (inclusive)
750
750
  :param tagsets: Filter by tagsets (match tags that are in any of the specified tagsets)
751
751
  :param tagset_inverted: Whether to invert the tagset filter (match tags that are NOT in any of the specified
752
- tagsets)
752
+ tagsets)
753
753
  :param batch_size: Number of records to fetch per batch from the database (for memory efficiency)
754
754
  :return: Generator of ``TagRecordTable`` instances that match the filters
755
755
  """
@@ -813,7 +813,7 @@ class TagCache(object):
813
813
  :param tag_prefix: Filter by tag name prefix, e.g. "dummy_tag:" to match all tags starting with "dummy_tag:"
814
814
  :param tagsets: Filter by tagsets (match tags that are in any of the specified tagsets)
815
815
  :param tagset_inverted: Whether to invert the tagset filter (match tags that are NOT in any of the specified
816
- tagsets)
816
+ tagsets)
817
817
  """
818
818
  with self.make_session() as session:
819
819
  query = session.query(TagRecordTable)
@@ -921,7 +921,7 @@ class TargetedTagCache(object):
921
921
  :param tag_prefix: Filter by tag name prefix, e.g. "dummy_tag:" to match all tags starting with "dummy_tag:"
922
922
  :param tagsets: Filter by tagsets (match tags that are in any of the specified tagsets)
923
923
  :param tagset_inverted: Whether to invert the tagset filter (match tags that are NOT in any of the specified
924
- tagsets)
924
+ tagsets)
925
925
  :param batch_size: Number of records to fetch per batch from the database (for memory efficiency)
926
926
  :return: Generator of ``TagRecordTable`` instances that match the filters
927
927
  """
@@ -965,12 +965,13 @@ class TargetedTagCache(object):
965
965
  :param begin_dt: Begin datetime of the tag record
966
966
  :param end_dt: End datetime of the tag record
967
967
  :param tag: Tag name or ``Tag``/``BoundTag`` instance to be added. If ``Tag``/``BoundTag`` instance is provided,
968
- its name will be used.
968
+ its name will be used.
969
969
  :param props: Additional properties of the tag record in JSON format (optional)
970
970
  :param tagset_namespace: Namespace of the tagset that the tag belongs to. If the ``tag`` parameter is a
971
- ``BoundTag`` instance, this parameter will be ignored and the namespace from the instance will be used.
972
- :param tagset_version: Version of the tagset that the tag belongs to. If the ``tag`` parameter is a
973
- ``BoundTag`` instance, this parameter will be ignored and the version from the instance will be used.
971
+ ``BoundTag`` instance, this parameter will be ignored and the namespace from the
972
+ instance will be used.
973
+ :param tagset_version: Version of the tagset that the tag belongs to. If the ``tag`` parameter is a ``BoundTag``
974
+ instance, this parameter will be ignored and the version from the instance will be used.
974
975
  :return: Self instance for chaining
975
976
  """
976
977
  with self.make_session() as session:
@@ -999,12 +1000,14 @@ class TargetedTagCache(object):
999
1000
  Add a tag record to the cache for the entire target range.
1000
1001
 
1001
1002
  :param tag: Tag name or ``Tag``/``BoundTag`` instance to be added. If ``Tag``/``BoundTag`` instance is provided,
1002
- its name will be used.
1003
+ its name will be used.
1003
1004
  :param props: Additional properties of the tag record in JSON format (optional)
1004
1005
  :param tagset_namespace: Namespace of the tagset that the tag belongs to. If the ``tag`` parameter is a
1005
- ``BoundTag`` instance, this parameter will be ignored and the namespace from the instance will be used.
1006
+ ``BoundTag`` instance, this parameter will be ignored and the namespace from the
1007
+ instance will be used.
1006
1008
  :param tagset_version: Version of the tagset that the tag belongs to. If the ``tag`` parameter is a
1007
- ``BoundTag`` instance, this parameter will be ignored and the version from the instance will be used.
1009
+ ``BoundTag`` instance, this parameter will be ignored and the version from the instance
1010
+ will be used.
1008
1011
  :return: Self instance for chaining
1009
1012
  """
1010
1013
  return self.add_ranged_tag(
@@ -1037,7 +1040,7 @@ class TargetedTagCache(object):
1037
1040
  :param tag_prefix: Filter by tag name prefix, e.g. "dummy_tag:" to match all tags starting with "dummy_tag:"
1038
1041
  :param tagsets: Filter by tagsets (match tags that are in any of the specified tagsets)
1039
1042
  :param tagset_inverted: Whether to invert the tagset filter (match tags that are NOT in any of the specified
1040
- tagsets)
1043
+ tagsets)
1041
1044
  :return: Self instance for chaining
1042
1045
  """
1043
1046
  with self.make_session() as session:
@@ -1074,10 +1077,12 @@ def tag_cache(*, identifier: str | None = None, file_path: str | None = None) ->
1074
1077
  string and return a ``TagCache`` instance associated with a file path derived from the identifier.
1075
1078
 
1076
1079
  :param identifier: An optional string identifier for the tag cache. If provided, it must be in snake case format
1077
- and will be used to derive the file path for the tag cache. If not provided, a default file path will be used.
1080
+ and will be used to derive the file path for the tag cache. If not provided, a default file path
1081
+ will be used.
1078
1082
  :param file_path: An optional file path for the tag cache. If provided, it will be used directly. If not provided,
1079
- the file path will be derived from the identifier if it is provided, or a default file path will be used if the
1080
- identifier is not provided. Note that both 'identifier' and 'file_path' cannot be specified at the same time.
1083
+ the file path will be derived from the identifier if it is provided, or a default file path will
1084
+ be used if the identifier is not provided. Note that both ``identifier`` and ``file_path`` cannot
1085
+ be specified at the same time.
1081
1086
  :return: A ``TagCache`` instance associated with the specified or default file path.
1082
1087
  """
1083
1088
  if identifier is not None and file_path is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plexus-python-common
3
- Version: 1.0.58
3
+ Version: 1.0.60
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 +0,0 @@
1
- # Plexus Python Common Module
2
-
3
- [![codecov](https://codecov.io/gh/ruyangshou/plexus-python-common/graph/badge.svg?token=U8EPB2JZ70)](
4
- https://codecov.io/gh/ruyangshou/plexus-python-common)