@@ -51,7 +51,7 @@ def _default_signature(n_inputs):
51
51
return Signature ([()] * n_inputs , [()])
52
52
53
53
54
- def result_name (objects ):
54
+ def _result_name (objects ):
55
55
# use the same naming heuristics as pandas:
56
56
# https://github.com/blaze/blaze/issues/458#issuecomment-51936356
57
57
names = set (getattr (obj , 'name' , None ) for obj in objects )
@@ -89,32 +89,25 @@ def get_coord_variables(arg):
89
89
90
90
91
91
def apply_dataarray_ufunc (args , func , signature = None , join = 'inner' ,
92
- kwargs = None , new_coords = None , combine_names = None ):
92
+ new_coords = None ):
93
93
if signature is None :
94
94
signature = _default_signature (len (args ))
95
95
96
- if kwargs is None :
97
- kwargs = {}
98
-
99
- if combine_names is None :
100
- combine_names = result_name
101
-
102
96
args = deep_align (* args , join = join , copy = False , raise_on_invalid = False )
103
97
104
- list_of_names = combine_names (args )
98
+ name = _result_name (args )
105
99
list_of_coords = _build_output_coords (args , signature , new_coords )
106
100
107
101
data_vars = [getattr (a , 'variable' ) for a in args ]
108
- variable_or_variables = func (* data_vars , ** kwargs )
102
+ variable_or_variables = func (* data_vars )
109
103
110
104
if len (signature .output_dims ) > 1 :
111
105
return tuple (DataArray (variable , coords , name = name , fastpath = True )
112
106
for variable , coords , name in zip (
113
- variable_or_variables , list_of_coords , list_of_names ))
107
+ variable_or_variables , list_of_coords ))
114
108
else :
115
109
variable = variable_or_variables
116
110
coords , = list_of_coords
117
- name , = list_of_names
118
111
return DataArray (variable , coords , name = name , fastpath = True )
119
112
120
113
@@ -138,21 +131,10 @@ def collect_dict_values(objects, keys, fill_value=None)
138
131
139
132
140
133
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 ):
146
135
if signature is None :
147
136
signature = _default_signature (len (args ))
148
137
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
-
156
138
args = deep_align (* args , join = join , copy = False , raise_on_invalid = False )
157
139
158
140
list_of_coords = _build_output_coords (args , signature , new_coords )
@@ -165,16 +147,15 @@ def apply_dataset_ufunc(args, func, signature=None, join='inner',
165
147
166
148
result_vars = OrderedDict ()
167
149
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 )
169
151
170
- def make_dataset (data_vars , coord_vars , attrs ):
152
+ def make_dataset (data_vars , coord_vars ):
171
153
# Normally, we would copy data_vars to be safe, but we created the
172
154
# OrderedDict in this function and don't use it for anything else.
173
155
variables = data_vars
174
156
variables .update (coord_vars )
175
157
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 )
178
159
179
160
n_outputs = len (signature .output_dims )
180
161
if n_outputs > 1 :
@@ -185,14 +166,12 @@ def make_dataset(data_vars, coord_vars, attrs):
185
166
for value , results_dict in zip (values , list_of_result_vars ):
186
167
list_of_result_vars [name ] = value
187
168
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 ))
191
171
else :
192
172
data_vars = result_vars
193
173
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 )
196
175
197
176
198
177
@@ -335,28 +314,20 @@ def _apply_with_dask_atop(func, list_of_input_data, signature, kwargs, dtype):
335
314
336
315
337
316
def apply_variable_ufunc (args , func , signature = None , dask_array = 'forbidden' ,
338
- combine_attrs = None , kwargs = None , dtype = None ):
317
+ kwargs = None , dtype = None ):
339
318
340
319
if signature is None :
341
320
signature = _default_signature (len (args ))
342
321
if dask_array not in {'forbidden' , 'allowed' , 'auto' }:
343
322
raise ValueError ('unknown setting for dask array handling' )
344
323
if kwargs is None :
345
324
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
350
325
351
326
dim_sizes = _calculate_unified_dim_sizes (variables )
352
327
core_dims = signature .input_core_dims | signature .output_core_dims
353
328
broadcast_dims = tuple (d for d in dim_sizes if d not in core_dims )
354
329
output_dims = [broadcast_dims + out for out in signature .output_core_dims ]
355
330
356
- list_of_attrs = result_attrs ([getattr (a , 'attrs' , {}) for a in args ]
357
- getattr (func , 'func' , func ),
358
- signature )
359
-
360
331
list_of_input_data = []
361
332
for arg in args :
362
333
if isinstance (arg , Variable ):
@@ -378,41 +349,36 @@ def apply_variable_ufunc(args, func, signature=None, dask_array='forbidden',
378
349
379
350
if len (output_dims ) > 1 :
380
351
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 ))
384
354
return tuple (output )
385
355
else :
386
356
dims , = output_dims
387
357
data = result_data
388
- attrs , = list_of_attrs
389
- return Variable (dims , data , attrs )
358
+ return Variable (dims , data )
390
359
391
360
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 ):
395
363
396
364
if signature is None :
397
365
signature = _default_signature (len (args ))
398
366
399
367
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 )
402
369
403
370
if any (isinstance (a , GroupBy ) for a in args ):
404
371
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 )
410
375
return apply_groupby_ufunc (args , partial_apply_ufunc )
411
376
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 )
414
379
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 )
416
382
elif any (isinstance (a , Variable ) for a in args ):
417
383
return variables_ufunc (args )
418
384
elif dask_array == 'auto' and any (
0 commit comments