simple persisted events
Eventstream is an embedded events storage component based on SQLite. It allows you to store events and query them based on time, making it trivial in storing data which is time based. Events are represented as tags with optional metadata attached, which allows you to model most data effectively.
from datetime import datetime, timedelta from eventstream import connect, Event t = connect(uri=':memory:') t.emit(Event('status.update'), 1) today = datetime.utcnow() yesterday = today - timedelta(days=1) t.find.since(yesterday)\ .to(today)\ .tagged('status.*')
Like Graphlite, Eventstream is thread safe. All emits are atomic and operate under a lock (if you want to store many events use the transaction-based emit_many instead). Eventstream also emphasizes on API usability and overall ease of use. You can query by time, tag, or node, but not the metadata.
If you want to contribute, we follow the Github workflow, so fork the repo, work on the code and just make a pull request (make sure all tests pass beforehand, at least in the last commit of your pull request). In short:
$ git clone ssh://email@example.com/$USERNAME/eventstream.git $ cd graphlite $ git checkout -b $FEATURE $ # hackedy hack hack $ py.test tests $ git commit -a $ git push
Note that we use py.test for testing so if you haven’t, make sure you pip install pytest. But you should.