o
    ¡ØÆhè  ã                   @   s4   d dl Z ddlmZmZmZ dZdd„ Zdd„ ZdS )	é    Né   )ÚfrequenciesÚpluckÚgetter)ÚcountbyÚpartitionbyc                 C   s   t | ƒst| ƒ} tt| |ƒƒS )a   Count elements of a collection by a key function

    >>> countby(len, ['cat', 'mouse', 'dog'])
    {3: 2, 5: 1}

    >>> def iseven(x): return x % 2 == 0
    >>> countby(iseven, [1, 2, 3])  # doctest:+SKIP
    {True: 1, False: 2}

    See Also:
        groupby
    )Úcallabler   r   Úmap)ÚkeyÚseq© r   úZ/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/toolz/recipes.pyr      s   r   c                 C   s   t ttdtj|| d�ƒƒS )aŠ   Partition a sequence according to a function

    Partition `s` into a sequence of lists such that, when traversing
    `s`, every time the output of `func` changes a new list is started
    and that and subsequent items are collected into that list.

    >>> is_space = lambda c: c == " "
    >>> list(partitionby(is_space, "I have space"))
    [('I',), (' ',), ('h', 'a', 'v', 'e'), (' ',), ('s', 'p', 'a', 'c', 'e')]

    >>> is_large = lambda x: x > 10
    >>> list(partitionby(is_large, [1, 2, 1, 99, 88, 33, 99, -1, 5]))
    [(1, 2, 1), (99, 88, 33, 99), (-1, 5)]

    See also:
        partition
        groupby
        itertools.groupby
    r   )r
   )r	   Útupler   Ú	itertoolsÚgroupby)Úfuncr   r   r   r   r      s   r   )r   Ú	itertoolzr   r   r   Ú__all__r   r   r   r   r   r   Ú<module>   s
    