wavekit 0.5.4__tar.gz → 0.5.5__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 (23) hide show
  1. {wavekit-0.5.4 → wavekit-0.5.5}/PKG-INFO +1 -1
  2. {wavekit-0.5.4 → wavekit-0.5.5}/pyproject.toml +1 -1
  3. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/waveform.py +19 -6
  4. {wavekit-0.5.4 → wavekit-0.5.5}/LICENSE +0 -0
  5. {wavekit-0.5.4 → wavekit-0.5.5}/README.md +0 -0
  6. {wavekit-0.5.4 → wavekit-0.5.5}/build.py +0 -0
  7. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/__init__.py +0 -0
  8. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/pattern/__init__.py +0 -0
  9. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/pattern/dsl.py +0 -0
  10. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/pattern/engine.py +0 -0
  11. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/pattern/instance.py +0 -0
  12. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/pattern/result.py +0 -0
  13. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/pattern/steps.py +0 -0
  14. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/base.py +0 -0
  15. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/expr_parser.py +0 -0
  16. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/fsdb/npi_fsdb.pxd +0 -0
  17. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/fsdb/npi_fsdb_reader.pyx +0 -0
  18. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/fsdb/reader.py +0 -0
  19. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/pattern_parser.py +0 -0
  20. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/value_change.pyx +0 -0
  21. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/readers/vcd/reader.py +0 -0
  22. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/scope.py +0 -0
  23. {wavekit-0.5.4 → wavekit-0.5.5}/src/wavekit/signal.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wavekit
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Summary: a fundamental package for digital circuit waveform analysis
5
5
  License-File: LICENSE
6
6
  Author: cxzzzz
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "wavekit"
3
- version = "0.5.4"
3
+ version = "0.5.5"
4
4
  description = "a fundamental package for digital circuit waveform analysis"
5
5
  authors = ["cxzzzz <cxz19961010@outlook.com>"]
6
6
  readme = "README.md"
@@ -130,17 +130,30 @@ class Waveform:
130
130
  dense sampled waveform to just the value-change events.
131
131
 
132
132
  Returns a new :class:`Waveform` where no two adjacent entries have the
133
- same value. :meth:`compress` is an alias for this method.
133
+ same value. Behavior matches :func:`numpy.unique_consecutive`.
134
134
  """
135
135
  if len(self.value) <= 1:
136
136
  return self.copy()
137
- diff_mask = np.diff(self.value) != 0
138
- padded_diff_mask = np.concatenate(([1], diff_mask[:-1], [1]))
139
- diff_indices = np.where(padded_diff_mask)[0]
140
- return self.take(diff_indices)
137
+ # Keep first element, then keep elements where value changed from previous
138
+ mask = np.concatenate(([True], np.diff(self.value) != 0))
139
+ return self.take(np.where(mask)[0])
141
140
 
142
141
  def compress(self) -> Waveform:
143
- return self.unique_consecutive()
142
+ """Remove consecutive duplicate values, keeping the last occurrence.
143
+
144
+ Unlike :meth:`unique_consecutive`, this preserves the final timestamp
145
+ and value, which is useful for waveforms where the end time matters.
146
+
147
+ Returns a new :class:`Waveform` where no two adjacent entries have the
148
+ same value, except the last sample is always preserved.
149
+ """
150
+ if len(self.value) <= 1:
151
+ return self.copy()
152
+ diff_mask = np.diff(self.value) != 0
153
+ # Keep where next value changed (which means current is last of its group)
154
+ # plus always keep last element
155
+ mask = np.concatenate((diff_mask, [True]))
156
+ return self.take(np.where(mask)[0])
144
157
 
145
158
  def vectorized_filter(
146
159
  self,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes