MrPowers / chispa

PySpark test helper methods with beautiful error messages
https://mrpowers.github.io/chispa/
MIT License
595 stars 65 forks source link

Added font colour selection for dataframe comparison #68

Open calum-mcg opened 1 year ago

calum-mcg commented 1 year ago

Description

Added an option to provide a color scheme for font when comparing dataframes. Example:

Usage:

colour_scheme = {
   "default":"light_red",
   "matched":"light_blue",
   "underlined":"purple"    
}
assert_df_equality(df1, df2, allow_nan_equality=False, underline_cells=True, color_scheme=colour_scheme)

The default color scheme (if none provided):

default_colour_scheme = {
   "default":"light_red",
   "matched":"light_blue",
   "underlined":"green"    
}

List of available colors in the bcolors class.

In addition, I've added two checks to validate the color scheme dict:

Fixes #66

Type of change

How Has This Been Tested?

calum-mcg commented 1 year ago

@MrPowers - please let me know if this meets the requirements

calum-mcg commented 1 year ago

Once this is merged, I'll work on the refactor ticket

calum-mcg commented 1 year ago

Just bumping @MrPowers

pricemg commented 1 year ago

any movement on this one @MrPowers? This will be a really good addition beyond the original issue as will very useful for accessibility reasons too.

calum-mcg commented 1 year ago

@MrPowers

MrPowers commented 1 year ago

This is great, thanks for the contribution.

From a user perspective, I think they'll want to set the colors globally and not have to set this manually for every test.

Setting underline_cells=True and then seperately setting "underlined":"purple" in the color_scheme seems off.

We have a few things we're tracking now:

The underline_cells option is poorly named. If we're giving the user full configuration options, then they should be able to underline whatever they want (including matched rows or matched cells).

I am going to have to think about this one some more. We should give the user good defaults, a reasonable mechanism to set global overrides, and the flexibility to set test-level settings.

MrPowers commented 1 year ago

Created an issue to discuss this at a higher level: https://github.com/MrPowers/chispa/issues/75