Sorting Serialization¶
Convert sort specifications to/from compact string format for URLs and APIs.
Format¶
- Comma-separated list
- No prefix or
+prefix = ascending - Minus prefix (
-) = descending
Usage¶
from therismos.sorting import SortSpec, SortCriterion, SortOrder, Serializer
serializer = Serializer()
spec = SortSpec([
SortCriterion("age", SortOrder.ASCENDING),
SortCriterion("created_at", SortOrder.DESCENDING),
SortCriterion("priority", SortOrder.ASCENDING),
])
text = serializer.serialize(spec)
# "age,-created_at,priority"
restored = serializer.deserialize("name,-score,+priority")
# SortSpec: name ASC, score DESC, priority ASC
SortOrder.NONE criteria are skipped during serialization.