Module rollup_cascade.manager

define RollupCascadeManager class as top level manager for all cascade/rollup operations for all tables across a single section. See ../specs/table_specs.py.

Classes

class RollupCascadeManager (*args: RollupCascadeSpec, collapse_all: bool = True)

Container for the set of rollup and cascade settings for all of the tables in a given section. rollup_casc_ref_instance[table_name] returns the combined rollup and cascade settings from all specs in which the specified table appears.

Args

*args : tuple[RollupCascadeSpec, …]
RollupCascadeSpec instances shared between a common set of tables (i.e. those of a section)

KwArgs

collapse_all : bool
If True, all tables will have a default rollup operation that rolls up any row with more blanks than the previous row. Default is True. Replaces legacy table_utils.collapse_dict() functionality.

Methods

def cascade(self, table_name: str, table: dict[str, list[str]]) ‑> dict[str, list[str]]

Perform all cascading operations defined for the supplied table_name.

Args

table_name
name of the table currently processing
table
dict of lists of strings representing table rows

Returns

dict[str, list[str]]
dict of lists of strings representing table rows with values cascaded as specified in cascade_columns
def find_cascades(self, table_name: str, table: dict[str, list[str]]) ‑> list[CascadeColumn]

Finds the CascadeColumns defined for this table_name and filters them according to the column names in header. See self._column_check().

Args

table_name
name of the table currently processing
table
dict of lists of strings representing table rows

Returns

list[CascadeColumn]
the cascades to perform for this table instance.
def find_rollups(self, table_name: str, pre_cascade: bool, table: dict[str, list[str]]) ‑> list[RollupColumn]

Finds the RollupColumns defined for this table_name and filters them according to the column names in header (see self._column_check()) and whether or not cascade operations have already occurred.

Args

table_name
name of the table currently processing
pre_cascade
bool indicating whether cascades have occurred.
table
dict of lists of strings representing table rows

Returns

list[CascadeColumn]
the rollups to perform for this table instance.
def rollup(self, table_name: str, table: dict[str, list[str]], pre_cascade: bool = True) ‑> dict[str, list[str]]

Perform all rollup operations defined for the supplied table_name and cascade status (pre or post).

Args

table_name
name of the table currently processing
table
dict of lists of strings representing table rows
pre_cascade : bool
indicates whether this operation is ocurring before or after its sister operation cascade_column_values()

Returns

dict[str, list[str]]
dict of lists of strings representing table rows with values cascaded as specified in cascade_columns
def rollup_cascade_rollup(self, table_name: str, table: dict[str, list[str]]) ‑> dict[str, list[str]]

Performs pre cascade rollup, cascade, and post cascade rollup in series.

Args

table_name
name of the table currently processing
table
dict of lists of strings representing table rows
roll_ref
RollupCascadeManager defining rollup and cascade operations for all tables in this section.

Returns

dict[str, list[str]]
dict of lists of strings representing table rows with values rolled up and cascaded as specified in roll_ref