
    E#i                     0    S SK r SSKJrJrJr  SrS rS rg)    N   )frequenciespluckgetter)countbypartitionbyc                 `    [        U 5      (       d  [        U 5      n [        [        X5      5      $ )zCount 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seqs     `/home/james-whalen/.local/lib/python3.13/site-packages/ccxt/static_dependencies/toolz/recipes.pyr   r      s%     C==Sks3}%%    c                 Z    [        [        [        S[        R                  " XS95      5      $ )aQ  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   s     r   r   r      s#    ( ueAy00?@AAr   )r   	itertoolzr   r   r   __all__r   r    r   r   <module>r      s      1 1 %&$Br   