Skip to content

Commit e5071aa

Browse files
authored
Allow cubed arrays to be passed to flox groupby (#7941)
* fix error raised by ruff * whatsnew
1 parent 86f9933 commit e5071aa

File tree

4 files changed

+52
-48
lines changed

4 files changed

+52
-48
lines changed

doc/whats-new.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ Documentation
4242
Internal Changes
4343
~~~~~~~~~~~~~~~~
4444

45+
- Allow chunked non-dask arrays (i.e. Cubed arrays) in groupby operations. (:pull:`7941`)
46+
By `Tom Nicholas <https://github.com/TomNicholas>`_.
47+
4548

4649
.. _whats-new.2023.06.0:
4750

xarray/core/_aggregations.py

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from xarray.core import duck_array_ops
1010
from xarray.core.options import OPTIONS
1111
from xarray.core.types import Dims
12-
from xarray.core.utils import contains_only_dask_or_numpy, module_available
12+
from xarray.core.utils import contains_only_chunked_or_numpy, module_available
1313

1414
if TYPE_CHECKING:
1515
from xarray.core.dataarray import DataArray
@@ -2413,7 +2413,7 @@ def count(
24132413
if (
24142414
flox_available
24152415
and OPTIONS["use_flox"]
2416-
and contains_only_dask_or_numpy(self._obj)
2416+
and contains_only_chunked_or_numpy(self._obj)
24172417
):
24182418
return self._flox_reduce(
24192419
func="count",
@@ -2511,7 +2511,7 @@ def all(
25112511
if (
25122512
flox_available
25132513
and OPTIONS["use_flox"]
2514-
and contains_only_dask_or_numpy(self._obj)
2514+
and contains_only_chunked_or_numpy(self._obj)
25152515
):
25162516
return self._flox_reduce(
25172517
func="all",
@@ -2609,7 +2609,7 @@ def any(
26092609
if (
26102610
flox_available
26112611
and OPTIONS["use_flox"]
2612-
and contains_only_dask_or_numpy(self._obj)
2612+
and contains_only_chunked_or_numpy(self._obj)
26132613
):
26142614
return self._flox_reduce(
26152615
func="any",
@@ -2723,7 +2723,7 @@ def max(
27232723
if (
27242724
flox_available
27252725
and OPTIONS["use_flox"]
2726-
and contains_only_dask_or_numpy(self._obj)
2726+
and contains_only_chunked_or_numpy(self._obj)
27272727
):
27282728
return self._flox_reduce(
27292729
func="max",
@@ -2839,7 +2839,7 @@ def min(
28392839
if (
28402840
flox_available
28412841
and OPTIONS["use_flox"]
2842-
and contains_only_dask_or_numpy(self._obj)
2842+
and contains_only_chunked_or_numpy(self._obj)
28432843
):
28442844
return self._flox_reduce(
28452845
func="min",
@@ -2957,7 +2957,7 @@ def mean(
29572957
if (
29582958
flox_available
29592959
and OPTIONS["use_flox"]
2960-
and contains_only_dask_or_numpy(self._obj)
2960+
and contains_only_chunked_or_numpy(self._obj)
29612961
):
29622962
return self._flox_reduce(
29632963
func="mean",
@@ -3092,7 +3092,7 @@ def prod(
30923092
if (
30933093
flox_available
30943094
and OPTIONS["use_flox"]
3095-
and contains_only_dask_or_numpy(self._obj)
3095+
and contains_only_chunked_or_numpy(self._obj)
30963096
):
30973097
return self._flox_reduce(
30983098
func="prod",
@@ -3229,7 +3229,7 @@ def sum(
32293229
if (
32303230
flox_available
32313231
and OPTIONS["use_flox"]
3232-
and contains_only_dask_or_numpy(self._obj)
3232+
and contains_only_chunked_or_numpy(self._obj)
32333233
):
32343234
return self._flox_reduce(
32353235
func="sum",
@@ -3363,7 +3363,7 @@ def std(
33633363
if (
33643364
flox_available
33653365
and OPTIONS["use_flox"]
3366-
and contains_only_dask_or_numpy(self._obj)
3366+
and contains_only_chunked_or_numpy(self._obj)
33673367
):
33683368
return self._flox_reduce(
33693369
func="std",
@@ -3497,7 +3497,7 @@ def var(
34973497
if (
34983498
flox_available
34993499
and OPTIONS["use_flox"]
3500-
and contains_only_dask_or_numpy(self._obj)
3500+
and contains_only_chunked_or_numpy(self._obj)
35013501
):
35023502
return self._flox_reduce(
35033503
func="var",
@@ -3927,7 +3927,7 @@ def count(
39273927
if (
39283928
flox_available
39293929
and OPTIONS["use_flox"]
3930-
and contains_only_dask_or_numpy(self._obj)
3930+
and contains_only_chunked_or_numpy(self._obj)
39313931
):
39323932
return self._flox_reduce(
39333933
func="count",
@@ -4025,7 +4025,7 @@ def all(
40254025
if (
40264026
flox_available
40274027
and OPTIONS["use_flox"]
4028-
and contains_only_dask_or_numpy(self._obj)
4028+
and contains_only_chunked_or_numpy(self._obj)
40294029
):
40304030
return self._flox_reduce(
40314031
func="all",
@@ -4123,7 +4123,7 @@ def any(
41234123
if (
41244124
flox_available
41254125
and OPTIONS["use_flox"]
4126-
and contains_only_dask_or_numpy(self._obj)
4126+
and contains_only_chunked_or_numpy(self._obj)
41274127
):
41284128
return self._flox_reduce(
41294129
func="any",
@@ -4237,7 +4237,7 @@ def max(
42374237
if (
42384238
flox_available
42394239
and OPTIONS["use_flox"]
4240-
and contains_only_dask_or_numpy(self._obj)
4240+
and contains_only_chunked_or_numpy(self._obj)
42414241
):
42424242
return self._flox_reduce(
42434243
func="max",
@@ -4353,7 +4353,7 @@ def min(
43534353
if (
43544354
flox_available
43554355
and OPTIONS["use_flox"]
4356-
and contains_only_dask_or_numpy(self._obj)
4356+
and contains_only_chunked_or_numpy(self._obj)
43574357
):
43584358
return self._flox_reduce(
43594359
func="min",
@@ -4471,7 +4471,7 @@ def mean(
44714471
if (
44724472
flox_available
44734473
and OPTIONS["use_flox"]
4474-
and contains_only_dask_or_numpy(self._obj)
4474+
and contains_only_chunked_or_numpy(self._obj)
44754475
):
44764476
return self._flox_reduce(
44774477
func="mean",
@@ -4606,7 +4606,7 @@ def prod(
46064606
if (
46074607
flox_available
46084608
and OPTIONS["use_flox"]
4609-
and contains_only_dask_or_numpy(self._obj)
4609+
and contains_only_chunked_or_numpy(self._obj)
46104610
):
46114611
return self._flox_reduce(
46124612
func="prod",
@@ -4743,7 +4743,7 @@ def sum(
47434743
if (
47444744
flox_available
47454745
and OPTIONS["use_flox"]
4746-
and contains_only_dask_or_numpy(self._obj)
4746+
and contains_only_chunked_or_numpy(self._obj)
47474747
):
47484748
return self._flox_reduce(
47494749
func="sum",
@@ -4877,7 +4877,7 @@ def std(
48774877
if (
48784878
flox_available
48794879
and OPTIONS["use_flox"]
4880-
and contains_only_dask_or_numpy(self._obj)
4880+
and contains_only_chunked_or_numpy(self._obj)
48814881
):
48824882
return self._flox_reduce(
48834883
func="std",
@@ -5011,7 +5011,7 @@ def var(
50115011
if (
50125012
flox_available
50135013
and OPTIONS["use_flox"]
5014-
and contains_only_dask_or_numpy(self._obj)
5014+
and contains_only_chunked_or_numpy(self._obj)
50155015
):
50165016
return self._flox_reduce(
50175017
func="var",
@@ -5436,7 +5436,7 @@ def count(
54365436
if (
54375437
flox_available
54385438
and OPTIONS["use_flox"]
5439-
and contains_only_dask_or_numpy(self._obj)
5439+
and contains_only_chunked_or_numpy(self._obj)
54405440
):
54415441
return self._flox_reduce(
54425442
func="count",
@@ -5527,7 +5527,7 @@ def all(
55275527
if (
55285528
flox_available
55295529
and OPTIONS["use_flox"]
5530-
and contains_only_dask_or_numpy(self._obj)
5530+
and contains_only_chunked_or_numpy(self._obj)
55315531
):
55325532
return self._flox_reduce(
55335533
func="all",
@@ -5618,7 +5618,7 @@ def any(
56185618
if (
56195619
flox_available
56205620
and OPTIONS["use_flox"]
5621-
and contains_only_dask_or_numpy(self._obj)
5621+
and contains_only_chunked_or_numpy(self._obj)
56225622
):
56235623
return self._flox_reduce(
56245624
func="any",
@@ -5723,7 +5723,7 @@ def max(
57235723
if (
57245724
flox_available
57255725
and OPTIONS["use_flox"]
5726-
and contains_only_dask_or_numpy(self._obj)
5726+
and contains_only_chunked_or_numpy(self._obj)
57275727
):
57285728
return self._flox_reduce(
57295729
func="max",
@@ -5830,7 +5830,7 @@ def min(
58305830
if (
58315831
flox_available
58325832
and OPTIONS["use_flox"]
5833-
and contains_only_dask_or_numpy(self._obj)
5833+
and contains_only_chunked_or_numpy(self._obj)
58345834
):
58355835
return self._flox_reduce(
58365836
func="min",
@@ -5939,7 +5939,7 @@ def mean(
59395939
if (
59405940
flox_available
59415941
and OPTIONS["use_flox"]
5942-
and contains_only_dask_or_numpy(self._obj)
5942+
and contains_only_chunked_or_numpy(self._obj)
59435943
):
59445944
return self._flox_reduce(
59455945
func="mean",
@@ -6063,7 +6063,7 @@ def prod(
60636063
if (
60646064
flox_available
60656065
and OPTIONS["use_flox"]
6066-
and contains_only_dask_or_numpy(self._obj)
6066+
and contains_only_chunked_or_numpy(self._obj)
60676067
):
60686068
return self._flox_reduce(
60696069
func="prod",
@@ -6189,7 +6189,7 @@ def sum(
61896189
if (
61906190
flox_available
61916191
and OPTIONS["use_flox"]
6192-
and contains_only_dask_or_numpy(self._obj)
6192+
and contains_only_chunked_or_numpy(self._obj)
61936193
):
61946194
return self._flox_reduce(
61956195
func="sum",
@@ -6312,7 +6312,7 @@ def std(
63126312
if (
63136313
flox_available
63146314
and OPTIONS["use_flox"]
6315-
and contains_only_dask_or_numpy(self._obj)
6315+
and contains_only_chunked_or_numpy(self._obj)
63166316
):
63176317
return self._flox_reduce(
63186318
func="std",
@@ -6435,7 +6435,7 @@ def var(
64356435
if (
64366436
flox_available
64376437
and OPTIONS["use_flox"]
6438-
and contains_only_dask_or_numpy(self._obj)
6438+
and contains_only_chunked_or_numpy(self._obj)
64396439
):
64406440
return self._flox_reduce(
64416441
func="var",
@@ -6842,7 +6842,7 @@ def count(
68426842
if (
68436843
flox_available
68446844
and OPTIONS["use_flox"]
6845-
and contains_only_dask_or_numpy(self._obj)
6845+
and contains_only_chunked_or_numpy(self._obj)
68466846
):
68476847
return self._flox_reduce(
68486848
func="count",
@@ -6933,7 +6933,7 @@ def all(
69336933
if (
69346934
flox_available
69356935
and OPTIONS["use_flox"]
6936-
and contains_only_dask_or_numpy(self._obj)
6936+
and contains_only_chunked_or_numpy(self._obj)
69376937
):
69386938
return self._flox_reduce(
69396939
func="all",
@@ -7024,7 +7024,7 @@ def any(
70247024
if (
70257025
flox_available
70267026
and OPTIONS["use_flox"]
7027-
and contains_only_dask_or_numpy(self._obj)
7027+
and contains_only_chunked_or_numpy(self._obj)
70287028
):
70297029
return self._flox_reduce(
70307030
func="any",
@@ -7129,7 +7129,7 @@ def max(
71297129
if (
71307130
flox_available
71317131
and OPTIONS["use_flox"]
7132-
and contains_only_dask_or_numpy(self._obj)
7132+
and contains_only_chunked_or_numpy(self._obj)
71337133
):
71347134
return self._flox_reduce(
71357135
func="max",
@@ -7236,7 +7236,7 @@ def min(
72367236
if (
72377237
flox_available
72387238
and OPTIONS["use_flox"]
7239-
and contains_only_dask_or_numpy(self._obj)
7239+
and contains_only_chunked_or_numpy(self._obj)
72407240
):
72417241
return self._flox_reduce(
72427242
func="min",
@@ -7345,7 +7345,7 @@ def mean(
73457345
if (
73467346
flox_available
73477347
and OPTIONS["use_flox"]
7348-
and contains_only_dask_or_numpy(self._obj)
7348+
and contains_only_chunked_or_numpy(self._obj)
73497349
):
73507350
return self._flox_reduce(
73517351
func="mean",
@@ -7469,7 +7469,7 @@ def prod(
74697469
if (
74707470
flox_available
74717471
and OPTIONS["use_flox"]
7472-
and contains_only_dask_or_numpy(self._obj)
7472+
and contains_only_chunked_or_numpy(self._obj)
74737473
):
74747474
return self._flox_reduce(
74757475
func="prod",
@@ -7595,7 +7595,7 @@ def sum(
75957595
if (
75967596
flox_available
75977597
and OPTIONS["use_flox"]
7598-
and contains_only_dask_or_numpy(self._obj)
7598+
and contains_only_chunked_or_numpy(self._obj)
75997599
):
76007600
return self._flox_reduce(
76017601
func="sum",
@@ -7718,7 +7718,7 @@ def std(
77187718
if (
77197719
flox_available
77207720
and OPTIONS["use_flox"]
7721-
and contains_only_dask_or_numpy(self._obj)
7721+
and contains_only_chunked_or_numpy(self._obj)
77227722
):
77237723
return self._flox_reduce(
77247724
func="std",
@@ -7841,7 +7841,7 @@ def var(
78417841
if (
78427842
flox_available
78437843
and OPTIONS["use_flox"]
7844-
and contains_only_dask_or_numpy(self._obj)
7844+
and contains_only_chunked_or_numpy(self._obj)
78457845
):
78467846
return self._flox_reduce(
78477847
func="var",

0 commit comments

Comments
 (0)