Skip to content

feat: rename to tachy-mcap-reader + add CI/PyPI workflow - #2

Open
weedmo wants to merge 7 commits into
mainfrom
feature/mcap-raw-reader
Open

feat: rename to tachy-mcap-reader + add CI/PyPI workflow#2
weedmo wants to merge 7 commits into
mainfrom
feature/mcap-raw-reader

Conversation

@weedmo

Copy link
Copy Markdown
Contributor

Summary

  • Rename package from mcap-player to tachy-mcap-reader
  • Add GitHub Actions CI workflow for multi-platform wheel builds (linux, macos, windows)
  • PyPI release via trusted publisher on tag push (v*)
  • Fix stale import paths and remove rosidl_runtime_py from hard dependencies

Test plan

  • CI builds pass for all platforms (linux x86_64/aarch64, macos x86_64/aarch64, windows x64)
  • sdist builds successfully
  • All existing tests pass locally (16/16 passed)

weedmoand others added 7 commits March 17, 2026 15:32
- Add McapRawReader pyclass bypassing Scheduler for batch processing
- Support Python iterator protocol (__iter__/__next__) with proper bytes return
- Fix double nanosecond conversion bug in scheduler.rs play()
- Use PyBytes::new_bound() for correct Vec<u8> → Python bytes conversion
- Add 10 correctness tests and benchmark script
- Update Python exports and type stubs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implement on-demand chunk loading in McapReader using ReadMode
enum (Eager/Lazy). Lazy mode extracts owned chunk indices from
Summary, drops it to avoid self-referential structs, and uses
LinearReader + ChunkReader for decompression. Falls back to
eager MessageStream scan when Summary is unavailable.
Add pytest-benchmark tests comparing McapRawReader vs rosbag2_py
with throughput, open time, topic filter, and peak RSS metrics.
Security hardening: checked_add for chunk offsets, f64 input
validation, GIL release during chunk decompression, defensive
continue on unknown channel IDs.
- Rename Rust crate and Python module to tachy-mcap-reader
- Simplify native lib name from _mcap_player_core to _core
- Fix stale import path in player.py
- Remove rosidl_runtime_py from hard dependencies (ROS2 system pkg)
- Add test MCAP fixtures for multi-chunk and no-summary cases
Build wheels for linux (x86_64/aarch64), macos (x86_64/aarch64),
windows (x64) and sdist. Release to PyPI via trusted publisher on
tag push (v*).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@weedmo