| single | 
     # Orderly Set 5.5.0
Orderly Set is a package containing multiple implementations of Ordered
Set.
## OrderlySet
This implementation keeps the order in all set operations except set
difference operations.
As a result, it can do set difference operations much faster than other
implementations. Still 2X slower than of Python's built-in set.
## StableSet
A StableSet is a mutable set that remembers its insertion order.
Featuring: Fast O(1) insertion, deletion, iteration and membership testing.
But slow O(N) Index Lookup.
## StableSetEq
Same as StableSet but the order of items doesn't matter for equality
comparisons.
## OrderedSet
An OrderedSet is a mutable data structure that is a hybrid of a list and a
set.
It remembers its insertion order so that every entry has an index that can
be looked up. 
Featuring: O(1) Index lookup, insertion, iteration and membership testing.
But slow O(N) Deletion.
## SortedSet
SortedSet is basically set but when printed, turned into string, or
iterated over, returns the items in alphabetical order.
# Installation
`pip install orderly-set`
# Usage examples
An OrderedSet is created and used like a set:
    >>> from orderly_set import OrderedSet
    >>> letters = OrderedSet('abracadabra')
    >>> letters
    OrderedSet(['a', 'b', 'r', 'c', 'd'])
    >>> 'r' in letters
    True
It is efficient to find the index of an entry in an OrderedSet, or find an
entry by its index. To help with this use case, the `.add()` method returns
the index of the added item, whether it was already in the set or not.
    >>> letters.index('r')
    2
    >>> letters[2]
    'r'
    >>> letters.add('r')
    2
    >>> letters.add('x')
    5
OrderedSets implement the union (`|`), intersection (`&`), and difference
(`-`)
operators like sets do.
    >>> letters |= OrderedSet('shazam')
    >>> letters
    OrderedSet(['a', 'b', 'r', 'c', 'd', 'x', 's', 'h', 'z', 'm'])
    >>> letters & set('aeiou')
    OrderedSet(['a'])
    >>> letters -= 'abcd'
    >>> letters
    OrderedSet(['r', 'x', 's', 'h', 'z', 'm'])
The `__getitem__()` method has been extended to accept any
iterable except a string, returning a list, to perform NumPy-like "fancy
indexing".
    >>> letters = OrderedSet('abracadabra')
    >>> letters[[0, 2, 3]]
    ['a', 'r', 'c']
    >>> letters.indexes(['a', 'r', 'c'])
    [0, 2, 3]
 |