|
| 1 | +import difflib |
| 2 | +import json |
1 | 3 | import os
|
2 | 4 |
|
3 | 5 | os.chdir(os.path.dirname(__file__))
|
4 | 6 |
|
| 7 | +def clean_float(numstr): |
| 8 | + # round numbers to 3 digits, to remove floating-point differences |
| 9 | + return round(float(numstr), 3) |
| 10 | + |
| 11 | +def get_fig(html): |
| 12 | + # strip off all the rest of the html and js |
| 13 | + fig_str = html[html.index('[{', html.rindex('Plotly.newPlot(')):] |
| 14 | + fig_str = fig_str[:fig_str.index('} ') + 1] |
| 15 | + data, layout, config = json.loads(f'[{fig_str}]', parse_float=clean_float) |
| 16 | + fig_dict = dict(data=data, layout=layout, config=config) |
| 17 | + return json.dumps(fig_dict, indent=2).splitlines(keepends=True) |
| 18 | + |
5 | 19 | for filename in os.listdir("pandas2"):
|
6 |
| - with open(filename, encoding="utf-8") as f: |
| 20 | + with open(filename, encoding="utf-8") as f1: |
7 | 21 | with open(os.path.join("pandas2", filename)) as f2:
|
8 |
| - assert f.read() == f2.read(), f"Pandas 1/2 difference in {filename}" |
| 22 | + fig1 = get_fig(f1.read()) |
| 23 | + fig2 = get_fig(f2.read()) |
| 24 | + if any(l1 != l2 for l1, l2 in zip(fig1, fig2)): |
| 25 | + print(''.join(difflib.unified_diff(fig1, fig2))) |
| 26 | + raise ValueError(f"Pandas 1/2 difference in {filename}") |
0 commit comments