Metadata-Version: 1.1
Name: skiplistcollections
Version: 0.0.5
Summary: Skip list based sorted collections
Home-page: https://github.com/jstasiak/skiplistcollections
Author: Jakub Stasiak
Author-email: jakub@stasiak.at
License: MIT
Description: skiplistcollections
        ===================
        
        .. image:: https://travis-ci.org/jstasiak/skiplistcollections.png?branch=master
           :alt: Build status
           :target: https://travis-ci.org/jstasiak/skiplistcollections
        
        *skiplistcollections* is a Python module containing skip list based sorted collections. *skiplistcollections* is written in Python and works with:
        
        * CPython 2.6+, 3.2+
        * PyPy 1.9+
        
        Project page on GitHub: https://github.com/jstasiak/skiplistcollections
        
        Project page on PyPI: https://pypi.python.org/pypi/skiplistcollections
        
        SkipListDict
        ------------
        
        ``SkipListDict`` is container providing dict-like interface and implemented using skip list. It's permanently sorted by key.
        
        * Iterating the container (starting with any key, supports reverse ordering) is *O(n)*
        * Getting, setting and deleting arbitrary key is *O(log n)* on average, *O(n)* in worst case (degenerated skip list)
        
        See http://pythonsweetness.tumblr.com/post/45227295342/fast-pypy-compatible-ordered-map-in-89-lines-of-python for details.
        
        .. code-block:: python
        
           >>> from skiplistcollections import SkipListDict
           >>> things = SkipListDict(capacity=16)
           >>> len(things)
           0
           >>> things['x'] = 1
           >>> things.setdefault('x', 'DEFAULT')
           1
           >>> 'x' in things
           True
           >>> len(things)
           1
           >>> things['g'] = 2
           >>> things['z'] = 3
           >>> tuple(things.keys())
           ('g', 'x', 'z')
           >>> tuple(things.values())
           (2, 1, 3)
           >>> tuple(things.items())
           (('g', 2), ('x', 1), ('z', 3))
           >>> tuple(things.items(start_key='x'))
           (('x', 1), ('z', 3))
           >>> tuple(things.items(start_key='x', reverse=True))
           (('x', 1), ('g', 2))
           >>> del things['z']
           >>> things.update({'a': 'A', 'b': 'B'})
           >>> len(things)
           4
           >>> things
           SkipListDict({'a': 'A', 'b': 'B', 'g': 2, 'x': 1}, capacity=16)
        
        
        As you can see, ``SkipListDict`` follows Python dict interface quite closely. In fact it inherits ``MutableMapping`` Abstract Base Class.
        
        There are differences of course:
        
        * You need to set the maximum dict size when you create it
        * Initializing using another mapping is not supported yet
        * You can't use None as a key
        * ``items``, ``keys``, and ``values`` are views and accept ``start_key`` and ``reverse`` parameters
        
        SkipListSet
        -----------
        
        ``SkipListSet`` is set implementation  using skip list. It's permanently sorted by key.
        
        * Iterating the container is *O(n)*
        * Adding, removing and checking if a key exist in the containe is *O(log n)* on average, *O(n)* in worst case (degenerated skip list)
        
        .. code-block:: python
        
           >>> from skiplistcollections import SkipListSet
           >>> things = SkipListSet(capacity=16)
           >>> len(things)
           0
           >>> things.add(3)
           >>> len(things)
           1
           >>> things.add(1)
           >>> things.add(4)
           >>> things
           SkipListSet((1, 3, 4), capacity=16)
           >>> tuple(things)
           (1, 3, 4)
           >>> things.remove(2)
           Traceback (most recent call last):
           KeyError: 2
        
        
        
        Changes
        --------
        
        0.0.5
        `````
        
        * Fixed SkipListDict repr
        * Created SkipListSet
        
        0.0.4
        `````
        
        * Included start_key and reverse values in views reprs
        * Improved README
        
        
        0.0.3
        `````
        
        * ``items()``, ``values()``, ``keys()`` return views now
        
        0.0.2
        `````
        
        * Improved README
        
        
        Copyright
        ---------
        
        Original version - Copyright (C) 2013 David Wilson
        
        Copyright (C) 2013 Jakub Stasiak
        
        This source code is licensed under MIT license, see LICENSE file for details.
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Testing
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Utilities
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
