call_report.fca.DomainDatasetSource#

class call_report.fca.DomainDatasetSource(*, schedules: tuple[str, ...], code_column: str | None, columns: Mapping[str, DomainDatasetColumn])[source]#

Bases: object

One group of schedules contributing to a curated domain dataset.

Schedules are grouped rather than listed individually when they carry the same fields under different root names, which is how FCA’s mid-history schedule splits appear. Grouping them is what keeps a series continuous across such a split.

Attributes:
schedulestuple[str, …]

The schedule root names this group covers.

code_columnstr, optional

The schedule’s own code column, for a source that reports one. None for a source whose breakdown is encoded in its variable names instead.

columnsMapping[str, DomainDatasetColumn]

Each contributing variable, keyed by its name in the source. A read-only mapping, not a plain dict, so a caller holding a DomainDatasetSource returned from the process-wide get_fca_domain_dataset cache cannot mutate it and corrupt every later lookup.

Examples

>>> from call_report.fca._domain_datasets import (
...     DomainDatasetColumn,
...     DomainDatasetSource,
... )
>>> source = DomainDatasetSource(
...     schedules=("RCF1",),
...     code_column="LOANSTATUS",
...     columns={"ACCR": DomainDatasetColumn(column="accruing", code=None)},
... )
>>> sorted(source.output_columns)
['accruing']
property output_columns: frozenset[str][source]#

Return the distinct output column names this group declares.

Several variables map to one output column, once per code, so this collapses the group down to the columns it contributes. That is what DomainDataset.from_dict compares across groups when it checks for a collision.

Returns:
frozenset[str]

Every DomainDatasetColumn.column value in columns.