smartem-epuplayer
EPU Recording and Replay Tool for cryo-EM development and testing.
Records all filesystem changes in a directory and can replay them elsewhere with configurable timing. Cross-platform support for Windows and Linux with diff-based incremental recording.
Installation
From PyPI
pip install smartem-epuplayer
From GitHub Releases (Windows executable)
Download the latest epuplayer-windows-vX.Y.Z.exe from GitHub Releases.
Usage
Recording
Record filesystem changes in a directory:
# Basic recording
epuplayer record /path/to/watch -o recording.tar.gz
# Include binary file content (larger archives)
epuplayer record /path/to/watch -o recording.tar.gz --no-skip-binary-content
# Force specific extensions to be treated as text/binary
epuplayer record /path/to/watch -o recording.tar.gz \
--force-text-extensions dm dat \
--force-binary-extensions log
Press Ctrl+C to stop recording.
Replaying
Replay a recording to a target directory:
# Default fast mode (100x speed, 1s max delay)
epuplayer replay recording.tar.gz /path/to/target
# Development mode (maximum speed for smoke tests)
epuplayer replay recording.tar.gz /path/to/target --dev-mode
# Exact timing (1x speed, original delays)
epuplayer replay recording.tar.gz /path/to/target --exact
# Custom settings
epuplayer replay recording.tar.gz /path/to/target --speed 50 --max-delay 2.0
# Burst mode (process events as fast as possible)
epuplayer replay recording.tar.gz /path/to/target --burst
# Skip integrity verification
epuplayer replay recording.tar.gz /path/to/target --no-verify
# Skip files that were unreadable during recording
epuplayer replay recording.tar.gz /path/to/target --skip-unreadable
Information
View recording metadata and statistics:
epuplayer info recording.tar.gz
Replay Modes
| Mode | Speed | Max Delay | Use Case |
|---|---|---|---|
--dev-mode |
1000x + burst | 0.1s | Smoke tests, rapid iteration |
--fast (default) |
100x | 1s | Integration testing |
--exact |
1x | None | Timing-sensitive debugging |
| Custom | Configurable | Configurable | Specific requirements |
Python API
from smartem_epuplayer import EPURecorder, EPUReplayer
# Recording
recorder = EPURecorder(
watch_dir="/path/to/watch",
output_file="recording.tar.gz",
skip_binary_content=True,
)
recorder.start_recording() # Blocks until Ctrl+C
# Replaying
replayer = EPUReplayer("recording.tar.gz", "/path/to/target")
replayer.replay(
speed_multiplier=100.0,
verify_integrity=True,
max_delay=1.0,
burst_mode=False,
)
Features
- Cross-platform: Works on Windows and Linux
- Diff-based recording: Tracks appends, truncations, and modifications efficiently
- Binary placeholder mode: Reduces archive size by replacing binary files with placeholders
- Integrity verification: SHA256 hash verification during replay
- Configurable timing: Multiple replay speed options for different testing scenarios
- Portable archives: POSIX path format for cross-platform replay
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check .
ruff format --check .
License
Apache-2.0
Metadata
Release files for smartem-epuplayer 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| smartem_epuplayer-1.1.0.tar.gz | 20.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| smartem_epuplayer-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.0 kB
Release files / smartem_epuplayer-1.1.0.tar.gz
| Download URL | smartem_epuplayer-1.1.0.tar.gz |
|---|---|
| Size | 20.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
34f6cf880f0210abc1355fa115c8979d44393215b9c2d5d8b0c67fb280fe581c
|
|
BLAKE2b-256 checksum How to use checksums |
54d7b958f79b7cb5e7b23976a2384ef768c4eb91ad898e813e2ccc3e85d8dd54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 22, 2026.
Transparency logRelease files / smartem_epuplayer-1.1.0-py3-none-any.whl
| Download URL | smartem_epuplayer-1.1.0-py3-none-any.whl |
|---|---|
| Size | 15.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fb54806ecbd15fd02d8cf4254814a071b06be00cb289160fcbde7667f515d064
|
|
BLAKE2b-256 checksum How to use checksums |
c0b272cb0d2b8ceb55cb300306bd630d0404cddc79d9f8bd5c3ff8713f3b4cb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 22, 2026.
Transparency log