GitXplorerGitXplorer
j

coalringbuf

public
15 stars
2 forks
0 issues

Commits

List of commits on branch master.
Unverified
0c891c6182139d2b0152ee4d280473e7f62d6f5c

Remove unnecessary pass statement

jjstasiak committed 11 years ago
Unverified
d54b5e292d1c74fcc4a429180614220e82dae0d9

Update README.rst

jjstasiak committed 11 years ago
Unverified
29713d5e18ddfab17f25d6fccfd25e8e95d12bcb

Move this import to the right file

jjstasiak committed 11 years ago
Unverified
42737d83ece767de45d0303a687865757f50fc27

Fix one more Python 2.5 incompatibility

jjstasiak committed 11 years ago
Unverified
46b0696065d0b9b1530cd610a54b1f5e35c44a80

Clean up a bit

jjstasiak committed 11 years ago
Unverified
062907802d97f9ec61b50cae47bf1ded665757f0

Present test input in more reasonable way

jjstasiak committed 11 years ago

README

The README file for this repository.

coalringbuf

.. image:: https://travis-ci.org/jstasiak/coalringbuf.png?branch=master :alt: Build status :target: https://travis-ci.org/jstasiak/coalringbuf

coalringbuf is Python port of CoalescingRingBuffer from LMAXCollections <https://github.com/LMAX-Exchange/LMAXCollections>_. coalringbuf works with:

  • CPython 2.x >= 2.5, 3.x >= 3.2
  • PyPy 1.9+

Supported platforms: platform independent.

Status

It's usable and it passes port of original test suite. It's currently based on LMAXCollections 1.1.0.

Usage

This port mimics original CoalescingRingBuffer API as closely as possible, however it was modified to make it more Pythonic.

Example intepreter session:

.. code-block:: python

>>> from coalringbuf import CoalescingRingBuffer
>>> buffer = CoalescingRingBuffer(3)
>>> buffer.capacity
4
>>> buffer.empty
True
>>> buffer.offer('something')
True
>>> buffer.empty
False
>>> buffer.offer('something else')
True
>>> buffer.offer('quack')
True
>>> buffer.offer('id', 'value')
True
>>> buffer.size
4
>>> buffer.full
True
>>> buffer.offer('id', 'this will overwrite "value"')
True
>>> buffer.size
4
>>> buffer.offer('this will be rejected')
False
>>> buffer.size
4
>>> bucket = []
>>> buffer.poll(bucket)
4
>>> bucket
['something', 'something else', 'quack', 'this will overwrite "value"']
>>> buffer.empty
True

TODO

  • implement performance tests
  • provide more efficient bucket class if needed

Copyright

Original implementation (C) LMAX <https://github.com/LMAX-Exchange>/Nick Zeeb <https://github.com/nickzeeb>.

Python implementation (C) 2013 Jakub Stasiak <https://github.com/jstasiak>_.

This project is licensed under MIT license, see LICENSE file for details.