Skip to content

Commit ee4817d

Browse files
Using verbose_print function
1 parent 16212fb commit ee4817d

1 file changed

Lines changed: 31 additions & 40 deletions

File tree

parcels/_datasets/utils.py

Lines changed: 31 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -86,31 +86,32 @@ def _dicts_equal(d1, d2):
8686
def compare_datasets(ds1, ds2, ds1_name="Dataset 1", ds2_name="Dataset 2", verbose=True):
8787
print(f"Comparing {ds1_name} and {ds2_name}\n")
8888

89-
if verbose:
90-
print("Dataset Attributes Comparison:")
91-
if ds1.attrs == ds2.attrs:
92-
print(" Dataset attributes are identical.")
93-
else:
94-
print(" Dataset attributes differ.")
95-
for attr_name in set(ds1.attrs.keys()) | set(ds2.attrs.keys()):
96-
if attr_name not in ds1.attrs:
97-
print(f" Attribute '{attr_name}' only in {ds2_name}")
98-
elif attr_name not in ds2.attrs:
99-
print(f" Attribute '{attr_name}' only in {ds1_name}")
100-
elif ds1.attrs[attr_name] != ds2.attrs[attr_name]:
101-
print(f" Attribute '{attr_name}' differs:")
102-
print(f" {ds1_name}: {ds1.attrs[attr_name]}")
103-
print(f" {ds2_name}: {ds2.attrs[attr_name]}")
104-
print("-" * 30)
89+
def verbose_print(*args, **kwargs):
90+
if verbose:
91+
print(*args, **kwargs)
92+
93+
verbose_print("Dataset Attributes Comparison:")
94+
if ds1.attrs == ds2.attrs:
95+
verbose_print(" Dataset attributes are identical.")
96+
else:
97+
print(" Dataset attributes differ.")
98+
for attr_name in set(ds1.attrs.keys()) | set(ds2.attrs.keys()):
99+
if attr_name not in ds1.attrs:
100+
print(f" Attribute '{attr_name}' only in {ds2_name}")
101+
elif attr_name not in ds2.attrs:
102+
print(f" Attribute '{attr_name}' only in {ds1_name}")
103+
elif ds1.attrs[attr_name] != ds2.attrs[attr_name]:
104+
print(f" Attribute '{attr_name}' differs:")
105+
print(f" {ds1_name}: {ds1.attrs[attr_name]}")
106+
print(f" {ds2_name}: {ds2.attrs[attr_name]}")
107+
verbose_print("-" * 30)
105108

106109
# Compare dimensions
107-
if verbose:
108-
print("Dimensions Comparison:")
110+
verbose_print("Dimensions Comparison:")
109111
ds1_dims = set(ds1.dims)
110112
ds2_dims = set(ds2.dims)
111113
if ds1_dims == ds2_dims:
112-
if verbose:
113-
print(" Dimension names are identical.")
114+
verbose_print(" Dimension names are identical.")
114115
else:
115116
print(" Dimension names differ:")
116117
print(f" {ds1_name} dims: {sorted(list(ds1_dims))}")
@@ -119,11 +120,9 @@ def compare_datasets(ds1, ds2, ds1_name="Dataset 1", ds2_name="Dataset 2", verbo
119120
# For common dimensions, compare order (implicit by comparing coordinate values for sortedness)
120121
# and size (though size is parameterized and expected to be different)
121122
for dim_name in ds1_dims.intersection(ds2_dims):
122-
if verbose:
123-
print(f" Dimension '{dim_name}':")
123+
verbose_print(f" Dimension '{dim_name}':")
124124
# Sizes will differ due to DIM_SIZE, so we don't strictly compare them.
125-
if verbose:
126-
print(f" {ds1_name} size: {ds1.dims[dim_name]}, {ds2_name} size: {ds2.dims[dim_name]}")
125+
verbose_print(f" {ds1_name} size: {ds1.dims[dim_name]}, {ds2_name} size: {ds2.dims[dim_name]}")
127126
# Check if coordinates associated with dimensions are sorted (increasing)
128127
if dim_name in ds1.coords and dim_name in ds2.coords:
129128
check_val = (
@@ -136,40 +135,34 @@ def compare_datasets(ds1, ds2, ds1_name="Dataset 1", ds2_name="Dataset 2", verbo
136135
np.all(np.diff(ds2[dim_name].values) >= check_val) if len(ds2[dim_name].values) > 1 else True
137136
)
138137
if is_ds1_sorted == is_ds2_sorted:
139-
if verbose:
140-
print(f" Order for '{dim_name}' is consistent (both sorted: {is_ds1_sorted})")
138+
verbose_print(f" Order for '{dim_name}' is consistent (both sorted: {is_ds1_sorted})")
141139
else:
142140
print(
143141
f" Order for '{dim_name}' differs: {ds1_name} sorted: {is_ds1_sorted}, {ds2_name} sorted: {is_ds2_sorted}"
144142
)
145-
if verbose:
146-
print("-" * 30)
143+
verbose_print("-" * 30)
147144

148145
# Compare variables (name, attributes, dimensions used)
149-
if verbose:
150-
print("Variables Comparison:")
146+
verbose_print("Variables Comparison:")
151147
ds1_vars = set(ds1.variables.keys())
152148
ds2_vars = set(ds2.variables.keys())
153149

154150
if ds1_vars == ds2_vars:
155-
if verbose:
156-
print(" Variable names are identical.")
151+
verbose_print(" Variable names are identical.")
157152
else:
158153
print(" Variable names differ:")
159154
print(f" {ds1_name} vars: {sorted(list(ds1_vars - ds2_vars))}")
160155
print(f" {ds2_name} vars: {sorted(list(ds2_vars - ds1_vars))}")
161156
print(f" Common vars: {sorted(list(ds1_vars.intersection(ds2_vars)))}")
162157

163158
for var_name in ds1_vars.intersection(ds2_vars):
164-
if verbose:
165-
print(f" Variable '{var_name}':")
159+
verbose_print(f" Variable '{var_name}':")
166160
var1 = ds1[var_name]
167161
var2 = ds2[var_name]
168162

169163
# Compare attributes
170164
if _dicts_equal(var1.attrs, var2.attrs):
171-
if verbose:
172-
print(" Attributes are identical.")
165+
verbose_print(" Attributes are identical.")
173166
else:
174167
print(" Attributes differ.")
175168
for attr_name in set(var1.attrs.keys()) | set(var2.attrs.keys()):
@@ -184,11 +177,9 @@ def compare_datasets(ds1, ds2, ds1_name="Dataset 1", ds2_name="Dataset 2", verbo
184177

185178
# Compare dimensions used by the variable
186179
if var1.dims == var2.dims:
187-
if verbose:
188-
print(f" Dimensions used are identical: {var1.dims}")
180+
verbose_print(f" Dimensions used are identical: {var1.dims}")
189181
else:
190182
print(" Dimensions used differ:")
191183
print(f" {ds1_name}: {var1.dims}")
192184
print(f" {ds2_name}: {var2.dims}")
193-
if verbose:
194-
print("=" * 30 + " End of Comparison " + "=" * 30)
185+
verbose_print("=" * 30 + " End of Comparison " + "=" * 30)

0 commit comments

Comments
 (0)