class Rule:
"""Invoke these functions to declare rules.
Rules are *not* run as they are defined,
they are run when you issue `session.commit()'.
.. _Rule Summary:
Use code completion to discover rules and their parameters.
"""
@staticmethod
def sum(derive: InstrumentedAttribute, as_sum_of: any, where: any = None, child_role_name: str = ""):
"""
Derive parent column as sum of designated child column, optional where
Example
Rule.sum(derive=models.Customer.Balance, as_sum_of=models.Order.AmountTotal,
where=Lambda row: row.ShippedDate is None)
Optimized to eliminate / minimize SQLs: Pruning, Adjustment Logic
Args:
derive: name of parent <class.attribute> being derived
as_sum_of: name of child <class.attribute> being summed
child_role_name: parent's child accessor attribute (required only for disambiguation)
where: optional where clause, designates which child rows are summed
"""
return Sum(derive, as_sum_of, where, child_role_name)