Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/messersm/replay
Python library to replay the results of (random) function calls.
https://github.com/messersm/replay
Last synced: about 1 month ago
JSON representation
Python library to replay the results of (random) function calls.
- Host: GitHub
- URL: https://github.com/messersm/replay
- Owner: messersm
- License: agpl-3.0
- Created: 2015-06-21T20:51:07.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-10-21T06:32:53.000Z (about 8 years ago)
- Last Synced: 2024-11-09T19:07:15.936Z (about 2 months ago)
- Language: Python
- Size: 29.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# replay [![Build Status](https://travis-ci.org/messersm/replay.svg?branch=master)](https://travis-ci.org/messersm/replay) [![Coverage Status](https://coveralls.io/repos/messersm/replay/badge.svg?branch=master&service=github)](https://coveralls.io/github/messersm/replay?branch=master)
Python library to replay the results of (random) function calls.
## Introduction
replay is a simple package that enables you to save the results of
time intensive deterministic function calls or random function calls
(and by function I mean any kind of callables), that should be replayed,
within a file using a simple API.replay will never execute any code from a replay file. It hashes the
calls and looks for the hashes in the replay file, so there's no
security risk in changing replay files (other then, that you could
get other results...).Replay files can have different formats. Right now only a human-readable
and -editable format is implemented. This format looks mostly like python
except that the actual values are encoded with json.Here's an example script:
```python
#!/usr/bin/env python
# -*- coding: utf-8 -*-import random
import replayr = replay.Replay('random.replay')
for i in range(5):
print(r(random.random))
r.save()
```The output is:
```
0.471306418755
0.954368067794
0.975113533495
0.155125371588
0.50165523797
```Running this for the first time will create the file 'random.replay',
which will look like this:```
random() = 0.4713064187546834
random() = 0.9543680677943641
random() = 0.9751135334950991
random() = 0.15512537158813866
random() = 0.501655237970431
```Running the script for the second time will result in the same output.
Here's another example for a replay file:
```
random() = 0.3
pow(2, 3) = 8
# This is a comment.
random() = 0.2
sorted([7, 2, 3], reverse=true) = [7, 3, 2]
```You can freely edit such a file and future calls to these functions
will return the results you write into them. Example:
```
>>> import os
>>> import random
>>> import replay
>>> import tempfile
>>> fd, tmpname = tempfile.mkstemp(suffix='.replay')
>>> with open(tmpname, 'w') as f: n = f.write('random() = 40\n')
>>> r = Replay(tmpname)
>>> r(random.random)
40
>>> os.remove(tmpname)
```## Installation
replay is registred in the Python Package Index (PyPi). You can simply
install the package using pip:```shell
pip install replay
```