Source code for schrodinger.test.hypothesis.strategies.indices
from hypothesis import strategies
[docs]def indices(ordered_collection):
    """
    Strategy that returns an index within a non-empty collection
    :param ordered_collection: Any collection that supports len and indexing
    :type ordered_collection: collections.abc.Sequence
    :rtype: int
    :return: An index
    """
    length = len(ordered_collection)
    if length == 0:
        raise ValueError("Cannot draw an index from an empty list")
    return strategies.integers(min_value=0, max_value=length - 1) 
[docs]def index_lists(ordered_collection):
    """
    Strategy that returns a subset of index_lists in any collection that supports
    indexing and len
    :param ordered_collection: Any object that supports len and indexing
    :type  ordered_collection: collections.abc.Sequence
    :rtype: list(int)
    :return: A subset of index_lists in the collection
    """
    list_length = len(ordered_collection)
    if list_length == 0:
        return strategies.lists(strategies.nothing())
    return strategies.lists(strategies.integers(min_value=0,
                                                max_value=list_length - 1),
                            unique=True).map(sorted) 
[docs]@strategies.composite
def slice_pairs(draw, ordered_collection):
    """
    A strategy that returns a tuple of (start, end) indices in a collection.
    :param draw: A function supplied by the hypothesis decorator
    :type draw: function
    :param ordered_collection: Any object that supports len and indexing
    :type  ordered_collection: collections.abc.Sequence
    :rtype: tuple(int, int)
    :return: A tuple of (start, end) indices in collection
    """
    start = draw(indices(ordered_collection))
    end = draw(indices(ordered_collection[start:])) + start
    return (start, end) 
[docs]def sublists(elements, **kwargs):
    """
    Strategy to draw a list containing a subset of elements from `elements`.
    :param kwargs: Extra kwargs to use with the list strategy.
    """
    return strategies.lists(elements=strategies.sampled_from(elements),
                            unique=True,
                            **kwargs)