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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smartem_epuplayer-1.1.0.tar.gz (20.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartem_epuplayer-1.1.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file smartem_epuplayer-1.1.0.tar.gz.

File metadata

  • Download URL: smartem_epuplayer-1.1.0.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for smartem_epuplayer-1.1.0.tar.gz
Algorithm Hash digest
SHA256 34f6cf880f0210abc1355fa115c8979d44393215b9c2d5d8b0c67fb280fe581c
MD5 46ed24d1056b6728d6020f45cee9bc01
BLAKE2b-256 54d7b958f79b7cb5e7b23976a2384ef768c4eb91ad898e813e2ccc3e85d8dd54

See more details on using hashes here.

Provenance

The following attestation bundles were made for smartem_epuplayer-1.1.0.tar.gz:

Publisher: release-smartem-epuplayer.yml on DiamondLightSource/smartem-devtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smartem_epuplayer-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for smartem_epuplayer-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb54806ecbd15fd02d8cf4254814a071b06be00cb289160fcbde7667f515d064
MD5 9f9d1edcd8bc83c63af67f2c5d017553
BLAKE2b-256 c0b272cb0d2b8ceb55cb300306bd630d0404cddc79d9f8bd5c3ff8713f3b4cb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for smartem_epuplayer-1.1.0-py3-none-any.whl:

Publisher: release-smartem-epuplayer.yml on DiamondLightSource/smartem-devtools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 files

1.0.2

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page