self.assertLess(cleaned_df.shape[0], df_with_na.shape[0], f"Expected fewer rows after cleaning but got {cleaned_df.shape[0]} (was {df_with_na.shape[0]})") ...
# extract-pbir.py's signals.json (per-visual kind + role bindings + position). # Output is a complete Sigma workbook spec (Data page of hidden masters + a # page of chart elements) ready for POST ...