Module

environment.filters._collections

Collection and sequence filters for Kida templates.

Functions

_make_sort_key_numeric 1 tuple[int, int, int | fl…
Create sort key for numeric value.
def _make_sort_key_numeric(value: int | float) -> tuple[int, int, int | float]
Parameters
Name Type Description
value int | float
Returns
tuple[int, int, int | float]
_make_sort_key_string 1 tuple[int, int, str]
Create sort key for string value.
def _make_sort_key_string(value: str) -> tuple[int, int, str]
Parameters
Name Type Description
value str
Returns
tuple[int, int, str]
_filter_attr 2 Any
Get attribute from object or dictionary key. Returns "" for None/missing value…
def _filter_attr(value: Any, name: str) -> Any

Get attribute from object or dictionary key.

Returns "" for None/missing values (None-resilient, like Hugo).

Parameters
Name Type Description
value Any
name str
Returns
Any
_filter_first 1 Any
Return first item of sequence.
def _filter_first(value: Any) -> Any
Parameters
Name Type Description
value Any
Returns
Any
_filter_last 1 Any
Return last item of sequence. Uses deque(maxlen=1) for O(1) space on iterators…
def _filter_last(value: Any) -> Any

Return last item of sequence.

Uses deque(maxlen=1) for O(1) space on iterators; avoids materializing entire sequence.

Parameters
Name Type Description
value Any
Returns
Any
_filter_length 1 int
Return length of sequence.
def _filter_length(value: Any) -> int
Parameters
Name Type Description
value Any
Returns
int
_filter_join 2 str
Join sequence with separator.
def _filter_join(value: Any, separator: str = '') -> str
Parameters
Name Type Description
value Any
separator str Default:''
Returns
str
_filter_reverse 1 list[Any]
Reverse sequence.
def _filter_reverse(value: Any) -> list[Any]
Parameters
Name Type Description
value Any
Returns
list[Any]
_filter_batch 3 list[list[Any]]
Batch items into groups of linecount.
def _filter_batch(value: Any, linecount: int, fill_with: Any = None) -> list[list[Any]]
Parameters
Name Type Description
value Any
linecount int
fill_with Any Default:None
Returns
list[list[Any]]
_filter_slice 3 list[list[Any]]
Slice items into number of groups.
def _filter_slice(value: Any, slices: int, fill_with: Any = None) -> list[list[Any]]
Parameters
Name Type Description
value Any
slices int
fill_with Any Default:None
Returns
list[list[Any]]
_filter_take 2 list[Any]
Take the first N items from a sequence. Kida-native filter for readable pipeli…
def _filter_take(value: Any, count: int) -> list[Any]

Take the first N items from a sequence.

Kida-native filter for readable pipeline operations.

Parameters
Name Type Description
value Any

Sequence to take from

count int

Number of items to take

Returns
list[Any]
_filter_skip 2 list[Any]
Skip the first N items from a sequence. Kida-native filter for readable pipeli…
def _filter_skip(value: Any, count: int) -> list[Any]

Skip the first N items from a sequence.

Kida-native filter for readable pipeline operations.

Parameters
Name Type Description
value Any

Sequence to skip from

count int

Number of items to skip

Returns
list[Any]
_filter_compact 2 list[Any]
Remove None values (and optionally all falsy values) from a sequence. Enables …
def _filter_compact(value: Any, *, truthy: bool = True) -> list[Any]

Remove None values (and optionally all falsy values) from a sequence.

Enables declarative list building with conditional items, replacing imperative {% do %} patterns.

Parameters
Name Type Description
value Any

Sequence to compact

truthy bool

If True (default), remove all falsy values. If False, remove only None values.

Default:True
Returns
list[Any]
_filter_map 3 list[Any]
Map an attribute or method from a sequence.
def _filter_map(value: Any, *args: Any, attribute: str | None = None) -> list[Any]
Parameters
Name Type Description
value Any
*args Any
attribute str | None Default:None
Returns
list[Any]
_filter_selectattr 3 list[Any]
Select items where attribute passes test.
def _filter_selectattr(value: Any, attr: str, *args: Any) -> list[Any]
Parameters
Name Type Description
value Any
attr str
*args Any
Returns
list[Any]
_filter_rejectattr 3 list[Any]
Reject items where attribute passes test.
def _filter_rejectattr(value: Any, attr: str, *args: Any) -> list[Any]
Parameters
Name Type Description
value Any
attr str
*args Any
Returns
list[Any]
_filter_select 3 list[Any]
Select items that pass a test.
def _filter_select(value: Any, test_name: str | None = None, *args: Any) -> list[Any]
Parameters
Name Type Description
value Any
test_name str | None Default:None
*args Any
Returns
list[Any]
_filter_reject 3 list[Any]
Reject items that pass a test.
def _filter_reject(value: Any, test_name: str | None = None, *args: Any) -> list[Any]
Parameters
Name Type Description
value Any
test_name str | None Default:None
*args Any
Returns
list[Any]
_filter_groupby 2 list[dict[str, Any]]
Group items by attribute with None-safe sorting. Items with None/empty values …
def _filter_groupby(value: Any, attribute: str) -> list[dict[str, Any]]

Group items by attribute with None-safe sorting.

Items with None/empty values for the attribute are grouped together and sorted last.

Parameters
Name Type Description
value Any
attribute str
Returns
list[dict[str, Any]]
_filter_sort 4 list[Any]
Sort sequence with improved error handling for None values. When sorting fails…
def _filter_sort(value: Any, reverse: bool = False, case_sensitive: bool = False, attribute: str | None = None) -> list[Any]

Sort sequence with improved error handling for None values.

When sorting fails due to None comparisons, provides detailed error showing which items have None values for the sort attribute.

Parameters
Name Type Description
value Any
reverse bool Default:False
case_sensitive bool Default:False
attribute str | None Default:None
Returns
list[Any]
_filter_unique 3 list[Any]
Return unique items.
def _filter_unique(value: Any, case_sensitive: bool = False, attribute: str | None = None) -> list[Any]
Parameters
Name Type Description
value Any
case_sensitive bool Default:False
attribute str | None Default:None
Returns
list[Any]
_filter_dictsort 4 list[tuple[str, Any]]
Sort a dict and return list of (key, value) pairs.
def _filter_dictsort(value: dict[str, Any], case_sensitive: bool = False, by: str = 'key', reverse: bool = False) -> list[tuple[str, Any]]
Parameters
Name Type Description
value dict[str, Any]
case_sensitive bool Default:False
by str Default:'key'
reverse bool Default:False
Returns
list[tuple[str, Any]]