Skip to main content

Filesystem Recording and Replay Tool for cryo-EM development and testing

Project description

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

Project details


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.

Supported by

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