Skip to main content

smartem-epuplayer

PyPI version Python Versions License CI

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)

Source distribution for smartem-epuplayer 1.1.0
File Size Uploaded
smartem_epuplayer-1.1.0.tar.gz 20.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for smartem-epuplayer 1.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page