Skip to content

Commit 6b170d0

Browse files
committed
fixes
1 parent 330a9b5 commit 6b170d0

File tree

1 file changed

+26
-60
lines changed

1 file changed

+26
-60
lines changed

xarray/core/computation.py

Lines changed: 26 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def _default_signature(n_inputs):
5151
return Signature([()] * n_inputs, [()])
5252

5353

54-
def result_name(objects):
54+
def _result_name(objects):
5555
# use the same naming heuristics as pandas:
5656
# https://github.com/blaze/blaze/issues/458#issuecomment-51936356
5757
names = set(getattr(obj, 'name', None) for obj in objects)
@@ -89,32 +89,25 @@ def get_coord_variables(arg):
8989

9090

9191
def apply_dataarray_ufunc(args, func, signature=None, join='inner',
92-
kwargs=None, new_coords=None, combine_names=None):
92+
new_coords=None):
9393
if signature is None:
9494
signature = _default_signature(len(args))
9595

96-
if kwargs is None:
97-
kwargs = {}
98-
99-
if combine_names is None:
100-
combine_names = result_name
101-
10296
args = deep_align(*args, join=join, copy=False, raise_on_invalid=False)
10397

104-
list_of_names = combine_names(args)
98+
name = _result_name(args)
10599
list_of_coords = _build_output_coords(args, signature, new_coords)
106100

107101
data_vars = [getattr(a, 'variable') for a in args]
108-
variable_or_variables = func(*data_vars, **kwargs)
102+
variable_or_variables = func(*data_vars)
109103

110104
if len(signature.output_dims) > 1:
111105
return tuple(DataArray(variable, coords, name=name, fastpath=True)
112106
for variable, coords, name in zip(
113-
variable_or_variables, list_of_coords, list_of_names))
107+
variable_or_variables, list_of_coords))
114108
else:
115109
variable = variable_or_variables
116110
coords, = list_of_coords
117-
name, = list_of_names
118111
return DataArray(variable, coords, name=name, fastpath=True)
119112

120113

@@ -138,21 +131,10 @@ def collect_dict_values(objects, keys, fill_value=None)
138131

139132

140133
def apply_dataset_ufunc(args, func, signature=None, join='inner',
141-
fill_value=None, kwargs=None, new_coords=None,
142-
result_attrs=None):
143-
if kwargs is None:
144-
kwargs = {}
145-
134+
fill_value=None, new_coords=None):
146135
if signature is None:
147136
signature = _default_signature(len(args))
148137

149-
if result_attrs is None:
150-
result_attrs = _default_result_attrs
151-
152-
list_of_attrs = result_attrs([getattr(a, 'attrs', {}) for a in args]
153-
getattr(func, 'func', func),
154-
signature)
155-
156138
args = deep_align(*args, join=join, copy=False, raise_on_invalid=False)
157139

158140
list_of_coords = _build_output_coords(args, signature, new_coords)
@@ -165,16 +147,15 @@ def apply_dataset_ufunc(args, func, signature=None, join='inner',
165147

166148
result_vars = OrderedDict()
167149
for name, variable_args in zip(names, lists_of_args):
168-
result_vars[name] = func(*variable_args, **kwargs)
150+
result_vars[name] = func(*variable_args)
169151

170-
def make_dataset(data_vars, coord_vars, attrs):
152+
def make_dataset(data_vars, coord_vars):
171153
# Normally, we would copy data_vars to be safe, but we created the
172154
# OrderedDict in this function and don't use it for anything else.
173155
variables = data_vars
174156
variables.update(coord_vars)
175157
coord_names = set(coord_vars)
176-
return Dataset._from_vars_and_coord_names(
177-
variables, coord_names, attrs)
158+
return Dataset._from_vars_and_coord_names(variables, coord_names)
178159

179160
n_outputs = len(signature.output_dims)
180161
if n_outputs > 1:
@@ -185,14 +166,12 @@ def make_dataset(data_vars, coord_vars, attrs):
185166
for value, results_dict in zip(values, list_of_result_vars):
186167
list_of_result_vars[name] = value
187168

188-
return tuple(make_dataset(data_vars, coord_vars, attrs)
189-
for data_vars, coord_vars, attrs in zip(
190-
list_of_result_vars, list_of_coords, list_of_attrs))
169+
return tuple(make_dataset(*args)
170+
for args in zip(list_of_result_vars, list_of_coords))
191171
else:
192172
data_vars = result_vars
193173
coords_vars, = list_of_coords
194-
attrs, = list_of_attrs
195-
return make_dataset(data_vars, coord_vars, attrs)
174+
return make_dataset(data_vars, coord_vars)
196175

197176

198177

@@ -335,28 +314,20 @@ def _apply_with_dask_atop(func, list_of_input_data, signature, kwargs, dtype):
335314

336315

337316
def apply_variable_ufunc(args, func, signature=None, dask_array='forbidden',
338-
combine_attrs=None, kwargs=None, dtype=None):
317+
kwargs=None, dtype=None):
339318

340319
if signature is None:
341320
signature = _default_signature(len(args))
342321
if dask_array not in {'forbidden', 'allowed', 'auto'}:
343322
raise ValueError('unknown setting for dask array handling')
344323
if kwargs is None:
345324
kwargs = {}
346-
if combine_attrs is None:
347-
combine_attrs = lambda func, attrs: None
348-
if result_attrs is None:
349-
result_attrs = _default_result_attrs
350325

351326
dim_sizes = _calculate_unified_dim_sizes(variables)
352327
core_dims = signature.input_core_dims | signature.output_core_dims
353328
broadcast_dims = tuple(d for d in dim_sizes if d not in core_dims)
354329
output_dims = [broadcast_dims + out for out in signature.output_core_dims]
355330

356-
list_of_attrs = result_attrs([getattr(a, 'attrs', {}) for a in args]
357-
getattr(func, 'func', func),
358-
signature)
359-
360331
list_of_input_data = []
361332
for arg in args:
362333
if isinstance(arg, Variable):
@@ -378,41 +349,36 @@ def apply_variable_ufunc(args, func, signature=None, dask_array='forbidden',
378349

379350
if len(output_dims) > 1:
380351
output = []
381-
for dims, data, attrs in zip(
382-
output_dims, result_data, list_of_attrs):
383-
output.append(Variable(dims, data, attrs))
352+
for dims, data in zip(output_dims, result_data):
353+
output.append(Variable(dims, data))
384354
return tuple(output)
385355
else:
386356
dims, = output_dims
387357
data = result_data
388-
attrs, = list_of_attrs
389-
return Variable(dims, data, attrs)
358+
return Variable(dims, data)
390359

391360

392-
def apply_ufunc(args, func=None, signature=None, join='inner',
393-
dask_array='forbidden', kwargs=None, combine_dataset_attrs=None,
394-
combine_variable_attrs=None, dtype=None):
361+
def apply_ufunc(args, func=None, kwargs=None, signature=None, join='inner',
362+
dask_array='forbidden', dtype=None, new_coords=None):
395363

396364
if signature is None:
397365
signature = _default_signature(len(args))
398366

399367
variables_ufunc = functools.partial(
400-
apply_variable_ufunc, func=func, dask_array=dask_array,
401-
combine_attrs=combine_variable_attrs, kwargs=kwargs)
368+
apply_variable_ufunc, func=func, dask_array=dask_array, kwargs=kwargs)
402369

403370
if any(isinstance(a, GroupBy) for a in args):
404371
partial_apply_ufunc = functools.partial(
405-
apply_ufunc, func=func, signature=signature, join=join,
406-
dask_array=dask_array, kwargs=kwargs,
407-
combine_dataset_attrs=combine_dataset_attrs,
408-
combine_variable_attrs=combine_variable_attrs,
409-
dtype=None)
372+
apply_ufunc, func=func, kwargs=kwargs, signature=signature,
373+
join=join, dask_array=dask_array, dtype=dtype,
374+
new_coords=new_coords)
410375
return apply_groupby_ufunc(args, partial_apply_ufunc)
411376
elif any(is_dict_like(a) for a in args):
412-
return apply_dataset_ufunc(args, variables_ufunc, join=join,
413-
combine_attrs=combine_dataset_attrs)
377+
return apply_dataset_ufunc(args, variables_ufunc, signature=signature,
378+
join=join, new_coords=new_coords)
414379
elif any(isinstance(a, DataArray) for a in args):
415-
return apply_dataarray_ufunc(args, variables_ufunc, join=join)
380+
return apply_dataarray_ufunc(args, variables_ufunc, signature=signature,
381+
join=join, new_coords=new_coords)
416382
elif any(isinstance(a, Variable) for a in args):
417383
return variables_ufunc(args)
418384
elif dask_array == 'auto' and any(

0 commit comments

Comments
 (0)