GitXplorerGitXplorer
j

coalringbuf

public
15 stars
2 forks
0 issues

Commits

List of commits on branch master.
Unverified
c0720fe95121dab18ed084c528c836c7193682bf

Add performance test

jjstasiak committed 11 years ago
Unverified
b5f77587ec8582ab724ac86628b3cd3c80ee1423

Update readme and setup

jjstasiak committed 11 years ago
Unverified
5446679b8115cc2d0a952056e2f9227d6fa5fe38

Clean up test file names

jjstasiak committed 11 years ago
Unverified
ed6ea0d987e2bae5745b1c6c77880c5521b14f51

Make asserts more consistent

jjstasiak committed 11 years ago
Unverified
2e11a0ba59cb796e2e2403c02c29fdf51e292964

Disable code coverage checking on PyPy

jjstasiak committed 11 years ago
Unverified
863b12469150a7500c8ab95132eea90f1e7f7f4e

Show code coverage

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.