| 863 | [(50, 40, 30), (35, 40, 30), (11, 40, 30), (1, 40, 30)], |
| 864 | ) |
| 865 | def test__mapping_repr(display_max_rows, n_vars, n_attr) -> None: |
| 866 | long_name = "long_name" |
| 867 | a = np.char.add(long_name, np.arange(0, n_vars).astype(str)) |
| 868 | b = np.char.add("attr_", np.arange(0, n_attr).astype(str)) |
| 869 | c = np.char.add("coord", np.arange(0, n_vars).astype(str)) |
| 870 | attrs = dict.fromkeys(b, 2) |
| 871 | coords = {_c: np.array([0, 1], dtype=np.uint64) for _c in c} |
| 872 | data_vars = dict() |
| 873 | for v, _c in zip(a, coords.items(), strict=True): |
| 874 | data_vars[v] = xr.DataArray( |
| 875 | name=v, |
| 876 | data=np.array([3, 4], dtype=np.uint64), |
| 877 | dims=[_c[0]], |
| 878 | coords=dict([_c]), |
| 879 | ) |
| 880 | |
| 881 | ds = xr.Dataset(data_vars) |
| 882 | ds.attrs = attrs |
| 883 | |
| 884 | with xr.set_options(display_max_rows=display_max_rows): |
| 885 | # Parse the data_vars print and show only data_vars rows: |
| 886 | summary = formatting.dataset_repr(ds).split("\n") |
| 887 | summary = [v for v in summary if long_name in v] |
| 888 | # The length should be less than or equal to display_max_rows: |
| 889 | len_summary = len(summary) |
| 890 | data_vars_print_size = min(display_max_rows, len_summary) |
| 891 | assert len_summary == data_vars_print_size |
| 892 | |
| 893 | summary = formatting.data_vars_repr(ds.data_vars).split("\n") |
| 894 | summary = [v for v in summary if long_name in v] |
| 895 | # The length should be equal to the number of data variables |
| 896 | len_summary = len(summary) |
| 897 | assert len_summary == n_vars |
| 898 | |
| 899 | summary = formatting.coords_repr(ds.coords).split("\n") |
| 900 | summary = [v for v in summary if "coord" in v] |
| 901 | # The length should be equal to the number of data variables |
| 902 | len_summary = len(summary) |
| 903 | assert len_summary == n_vars |
| 904 | |
| 905 | with xr.set_options( |
| 906 | display_max_rows=display_max_rows, |
| 907 | display_expand_coords=False, |
| 908 | display_expand_data_vars=False, |
| 909 | display_expand_attrs=False, |
| 910 | ): |
| 911 | actual = formatting.dataset_repr(ds) |
| 912 | col_width = formatting._calculate_col_width(ds.variables) |
| 913 | dims_start = formatting.pretty_print("Dimensions:", col_width) |
| 914 | dims_values = formatting.dim_summary_limited( |
| 915 | ds.sizes, col_width=col_width + 1, max_rows=display_max_rows |
| 916 | ) |
| 917 | expected_size = "1kB" |
| 918 | expected = f"""\ |
| 919 | <xarray.Dataset> Size: {expected_size} |
| 920 | {dims_start}({dims_values}) |
| 921 | Coordinates: ({n_vars}) |
| 922 | Data variables: ({n_vars}) |