call_report.core.FieldChange#
- class call_report.core.FieldChange(*, name: str, before: FieldAttributes, after: FieldAttributes)[source]#
Bases:
objectOne field’s before/after metadata between two FieldSchema snapshots.
Only appears in FieldSchemaDiff.changed. A field present in only one of the two compared schemas shows up in FieldSchemaDiff.added or FieldSchemaDiff.removed instead, as a plain name.
- Attributes:
- namestr
The field name.
- beforeFieldAttributes
This field’s metadata in the left-hand (
self) schema.- afterFieldAttributes
This field’s metadata in the right-hand (
other) schema.
Examples
>>> import narwhals as nw >>> from call_report.core import ( ... FieldAttributes, ... FieldChange, ... FieldVersion, ... PeriodRange, ... ) >>> span = PeriodRange(start="2000-03-31", end="2026-03-31") >>> old = FieldAttributes( ... name="UNINUM", ... versions=(FieldVersion(dtype=nw.Int64(), definition="old", periods=span),), ... ) >>> new = FieldAttributes( ... name="UNINUM", ... versions=(FieldVersion(dtype=nw.Int64(), definition="new", periods=span),), ... ) >>> change = FieldChange(name="UNINUM", before=old, after=new) >>> change.before.versions[0].definition 'old'
- property dtype_changed: bool[source]#
Return whether the field’s dtype differs between before and after.
Compares each version’s dtype, in order, ignoring definition and periods. A field whose version count differs between before and after counts as changed too, since the two sequences of dtypes then have different lengths.
- Returns:
- bool
Trueif the sequence of dtype values differs between before and after.
Examples
>>> import narwhals as nw >>> from call_report.core import ( ... FieldAttributes, ... FieldChange, ... FieldVersion, ... PeriodRange, ... ) >>> span = PeriodRange(start="2000-03-31", end="2026-03-31") >>> old = FieldAttributes( ... name="PROVLNS", ... versions=(FieldVersion(dtype=nw.Int64(), definition="", periods=span),), ... ) >>> new = FieldAttributes( ... name="PROVLNS", ... versions=( ... FieldVersion(dtype=nw.Float64(), definition="", periods=span), ... ), ... ) >>> FieldChange(name="PROVLNS", before=old, after=new).dtype_changed True
- property definition_changed: bool[source]#
Return whether the field’s definition differs between before and after.
Compares each version’s definition, in order, ignoring dtype and periods. A field whose version count differs between before and after counts as changed too, since the two sequences of definitions then have different lengths.
- Returns:
- bool
Trueif the sequence of definition values differs between before and after.
Examples
>>> import narwhals as nw >>> from call_report.core import ( ... FieldAttributes, ... FieldChange, ... FieldVersion, ... PeriodRange, ... ) >>> span = PeriodRange(start="2000-03-31", end="2026-03-31") >>> old = FieldAttributes( ... name="PROVLNS", ... versions=( ... FieldVersion(dtype=nw.Int64(), definition="old", periods=span), ... ), ... ) >>> new = FieldAttributes( ... name="PROVLNS", ... versions=( ... FieldVersion(dtype=nw.Int64(), definition="new", periods=span), ... ), ... ) >>> FieldChange(name="PROVLNS", before=old, after=new).definition_changed True
- property periods_changed: bool[source]#
Return whether the field’s version spans differ between before and after.
Compares each version’s periods, in order, ignoring dtype and definition. This is the difference that shows up on every field common to two schemas taken from different quarters via FieldSchema.as_of, since narrowing to a quarter stamps each surviving field’s one remaining version with that quarter alone.
- Returns:
- bool
Trueif the sequence of periods values differs between before and after.
Examples
>>> import narwhals as nw >>> from call_report.core import ( ... FieldAttributes, ... FieldChange, ... FieldVersion, ... PeriodRange, ... ) >>> q4_2014 = PeriodRange(start="2014-12-31", end="2014-12-31") >>> q1_2015 = PeriodRange(start="2015-03-31", end="2015-03-31") >>> before = FieldAttributes( ... name="UNINUM", ... versions=( ... FieldVersion(dtype=nw.Int64(), definition="", periods=q4_2014), ... ), ... ) >>> after = FieldAttributes( ... name="UNINUM", ... versions=( ... FieldVersion(dtype=nw.Int64(), definition="", periods=q1_2015), ... ), ... ) >>> FieldChange(name="UNINUM", before=before, after=after).periods_changed True
- property content_changed: bool[source]#
Return whether the field’s dtype or definition differs, ignoring periods.
Shorthand for
dtype_changed or definition_changed. Use this to tell a field whose dtype or definition actually moved apart from one whose only difference is periods_changed, the case FieldSchemaDiff.content_changed filters changed down to.- Returns:
- bool
Trueif dtype_changed or definition_changed isTrue.
Examples
>>> import narwhals as nw >>> from call_report.core import ( ... FieldAttributes, ... FieldChange, ... FieldVersion, ... PeriodRange, ... ) >>> q4_2014 = PeriodRange(start="2014-12-31", end="2014-12-31") >>> q1_2015 = PeriodRange(start="2015-03-31", end="2015-03-31") >>> before = FieldAttributes( ... name="UNINUM", ... versions=( ... FieldVersion(dtype=nw.Int64(), definition="", periods=q4_2014), ... ), ... ) >>> after = FieldAttributes( ... name="UNINUM", ... versions=( ... FieldVersion(dtype=nw.Int64(), definition="", periods=q1_2015), ... ), ... ) >>> change = FieldChange(name="UNINUM", before=before, after=after) >>> change.periods_changed True >>> change.content_changed False