| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | import numpy as npimport matplotlib as mplfrom matplotlib.colors import to_rgb, to_rgbafrom numpy.testing import assert_array_equalUSE_PROPS = [    "alpha",    "edgecolor",    "facecolor",    "fill",    "hatch",    "height",    "linestyle",    "linewidth",    "paths",    "xy",    "xydata",    "sizes",    "zorder",]def assert_artists_equal(list1, list2):    assert len(list1) == len(list2)    for a1, a2 in zip(list1, list2):        assert a1.__class__ == a2.__class__        prop1 = a1.properties()        prop2 = a2.properties()        for key in USE_PROPS:            if key not in prop1:                continue            v1 = prop1[key]            v2 = prop2[key]            if key == "paths":                for p1, p2 in zip(v1, v2):                    assert_array_equal(p1.vertices, p2.vertices)                    assert_array_equal(p1.codes, p2.codes)            elif key == "color":                v1 = mpl.colors.to_rgba(v1)                v2 = mpl.colors.to_rgba(v2)                assert v1 == v2            elif isinstance(v1, np.ndarray):                assert_array_equal(v1, v2)            else:                assert v1 == v2def assert_legends_equal(leg1, leg2):    assert leg1.get_title().get_text() == leg2.get_title().get_text()    for t1, t2 in zip(leg1.get_texts(), leg2.get_texts()):        assert t1.get_text() == t2.get_text()    assert_artists_equal(        leg1.get_patches(), leg2.get_patches(),    )    assert_artists_equal(        leg1.get_lines(), leg2.get_lines(),    )def assert_plots_equal(ax1, ax2, labels=True):    assert_artists_equal(ax1.patches, ax2.patches)    assert_artists_equal(ax1.lines, ax2.lines)    assert_artists_equal(ax1.collections, ax2.collections)    if labels:        assert ax1.get_xlabel() == ax2.get_xlabel()        assert ax1.get_ylabel() == ax2.get_ylabel()def assert_colors_equal(a, b, check_alpha=True):    def handle_array(x):        if isinstance(x, np.ndarray):            if x.ndim > 1:                x = np.unique(x, axis=0).squeeze()            if x.ndim > 1:                raise ValueError("Color arrays must be 1 dimensional")        return x    a = handle_array(a)    b = handle_array(b)    f = to_rgba if check_alpha else to_rgb    assert f(a) == f(b)
 |