Skip to content

Function short-hands

utilz.shorts

Shorthands for common functions or ops and maps with specific params set

aslist(e)

Idempotently convert something to a list.

Source code in utilz/shorts.py
70
71
72
def aslist(e):
    """Idempotently convert something to a list."""
    return [e] if not isinstance(e, list) else e

asstr(e)

Idempotently convert something to a str.

Source code in utilz/shorts.py
75
76
77
def asstr(e):
    """Idempotently convert something to a str."""
    return str(e) if not isinstance(e, str) else e

checkall(func, iterme, transparent=False)

Check if all elements are func(elem) == True

Parameters:

Name Type Description Default
func callable

function that returns True or False

required
iterme iterable

iterable

required
transparent bool

return iterme instead of result if check passes, useful in pipes; Default False

False

Returns:

Name Type Description
bool

True or False

Source code in utilz/shorts.py
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
@curry
def checkall(func, iterme, transparent=False):
    """
    Check if all elements are `func(elem) == True`

    Args:
        func (callable): function that returns True or False
        iterme (iterable): iterable
        transparent (bool, optional): return iterme instead of result if check passes, useful in pipes; Default False

    Returns:
        bool: True or False
    """

    result = all(map(func, iterme))
    if transparent and result:
        return iterme
    if transparent and not result:
        raise ValueError("Check failed")
    return result

checkany(func, iterme, transparent=False)

Check if any elements are func(elem) == True

Parameters:

Name Type Description Default
func callable

function that returns True or False

required
iterme iterable

iterable

required
transparent bool

return iterme instead of result if check passes, useful in pipes; Default False

False

Returns:

Name Type Description
bool

True or False

Source code in utilz/shorts.py
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
@curry
def checkany(func, iterme, transparent=False):
    """
    Check if any elements are `func(elem) == True`

    Args:
        func (callable): function that returns True or False
        iterme (iterable): iterable
        transparent (bool, optional): return iterme instead of result if check passes, useful in pipes; Default False

    Returns:
        bool: True or False
    """

    result = any(map(func, iterme))
    if transparent and result:
        return iterme
    if transparent and not result:
        raise ValueError("Check failed")
    return result

discard(*args, **kwargs)

Alias for filter with invert=True

Source code in utilz/shorts.py
38
39
40
41
42
@curry
def discard(*args, **kwargs):
    """Alias for `filter` with `invert=True`"""
    invert = kwargs.pop("invert", True)
    return filter(*args, invert=invert, **kwargs)

equal(*seqs)

Checks if N args of potentionally different lengths are equal. Non-iterable args are directly compared with == Dataframes and arrays use .equals() and np.allclose() respectively

Source code in utilz/shorts.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
def equal(*seqs):
    """
    Checks if N args of potentionally different lengths are equal.
    Non-iterable args are directly compared with `==`
    Dataframes and arrays use `.equals()` and `np.allclose()` respectively
    """

    if not isinstance(seqs[0], Iterable):
        return checkall(lambda e: e == seqs[0], seqs)

    if isinstance(seqs[0], pd.DataFrame):
        return checkall(lambda e: e.equals(seqs[0]), seqs)

    if isinstance(seqs[0], np.ndarray):
        return checkall(lambda e: np.allclose(e, seqs[0]), seqs)

    # For other sequence types we can be lazy
    return not any(diff(*seqs, default=object()))

isempty(iterme)

Check if iterable is empty

Source code in utilz/shorts.py
80
81
82
def isempty(iterme: Iterable):
    """Check if iterable is empty"""
    return len(iterme) == 0

keep(*args, **kwargs)

Alias for filter with invert=False

Source code in utilz/shorts.py
31
32
33
34
35
@curry
def keep(*args, **kwargs):
    """Alias for `filter` with `invert=False`"""
    invert = kwargs.pop("invert", False)
    return filter(*args, invert=invert, **kwargs)

seq(n)

Enumerated list

Source code in utilz/shorts.py
45
46
47
def seq(n):
    """Enumerated `list`"""
    return list(range(n))

sort(iterme, **kwargs)

Alias for sorted()

Source code in utilz/shorts.py
25
26
27
28
@curry
def sort(iterme: Iterable, **kwargs):
    """Alias for `sorted()`"""
    return sorted(iterme, **kwargs)