16
16
read_hdf , read_csv , read_eurostat , read_excel , open_excel ,
17
17
from_lists , from_string , from_frame , from_series ,
18
18
zip_array_values , zip_array_items )
19
- from larray .core .axis import _to_ticks , _to_key
19
+ from larray .core .axis import _to_ticks , _to_tick , _to_key
20
20
from larray .util .misc import LHDFStore
21
21
22
22
# avoid flake8 errors
27
27
# E201: whitespace after '['
28
28
# E241: multiple spaces after ','
29
29
30
+
31
+ GROUP_AS_AGGREGATED_LABEL_MSG_TEMPLATE = "Using a Group object which was used to create an aggregate to " \
32
+ "target its aggregated label is deprecated. " \
33
+ "Please use the aggregated label directly instead. " \
34
+ "In this case, you should use {potential_tick!r} instead of " \
35
+ "using {key!r}."
36
+
37
+ def group_as_aggregated_label_msg (key ):
38
+ return GROUP_AS_AGGREGATED_LABEL_MSG_TEMPLATE .format (potential_tick = _to_tick (key ), key = key )
39
+
40
+
30
41
# ================== #
31
42
# Test Value Strings #
32
43
# ================== #
@@ -2315,8 +2326,9 @@ def test_group_agg_on_group_agg_nokw(array):
2315
2326
def test_getitem_on_group_agg (array ):
2316
2327
a , b , c , d = array .axes
2317
2328
2318
- # using a string
2329
+ # using a string (b_group1 is a string key)
2319
2330
agg_arr = array .sum (a , c ).sum (b = b_groups_all )
2331
+
2320
2332
# the following are all equivalent
2321
2333
assert agg_arr [b_group1 ].shape == (6 ,)
2322
2334
assert agg_arr [(b_group1 ,)].shape == (6 ,)
@@ -2330,22 +2342,26 @@ def test_getitem_on_group_agg(array):
2330
2342
# using an anonymous LGroup
2331
2343
lg1 = b [b_group1 ]
2332
2344
agg_arr = array .sum (a , c ).sum (b = (lg1 , b_group2 , b_group2 , all_b ))
2333
- # the following are all equivalent
2334
- assert agg_arr [lg1 ].shape == (6 ,)
2335
- assert agg_arr [(lg1 ,)].shape == (6 ,)
2336
- assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2337
- assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2338
- assert agg_arr [lg1 , :].shape == (6 ,)
2345
+ with must_warn (FutureWarning , msg = group_as_aggregated_label_msg (lg1 ), num_expected = 5 ):
2346
+ # the following should all be equivalent
2347
+ assert agg_arr [lg1 ].shape == (6 ,)
2348
+ assert agg_arr [(lg1 ,)].shape == (6 ,)
2349
+ # these last three are only syntactic sugar differences
2350
+ # (__getitem__ receives the *exact* same key)
2351
+ assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2352
+ assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2353
+ assert agg_arr [lg1 , :].shape == (6 ,)
2339
2354
2340
2355
# using a named LGroup
2341
2356
lg1 = b [b_group1 ] >> 'g1'
2342
2357
agg_arr = array .sum (a , c ).sum (b = (lg1 , b_group2 , b_group2 , all_b ))
2343
- # the following are all equivalent
2344
- assert agg_arr [lg1 ].shape == (6 ,)
2345
- assert agg_arr [(lg1 ,)].shape == (6 ,)
2346
- assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2347
- assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2348
- assert agg_arr [lg1 , :].shape == (6 ,)
2358
+ with must_warn (FutureWarning , msg = group_as_aggregated_label_msg (lg1 ), num_expected = 5 ):
2359
+ # the following are all equivalent
2360
+ assert agg_arr [lg1 ].shape == (6 ,)
2361
+ assert agg_arr [(lg1 ,)].shape == (6 ,)
2362
+ assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2363
+ assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2364
+ assert agg_arr [lg1 , :].shape == (6 ,)
2349
2365
2350
2366
2351
2367
def test_getitem_on_group_agg_nokw (array ):
@@ -2354,6 +2370,7 @@ def test_getitem_on_group_agg_nokw(array):
2354
2370
# using a string
2355
2371
agg_arr = array .sum (a , c ).sum ((b_group1 , b_group2 , b_group3 , all_b ))
2356
2372
# the following are all equivalent
2373
+ # b_group1 is a string key
2357
2374
assert agg_arr [b_group1 ].shape == (6 ,)
2358
2375
assert agg_arr [(b_group1 ,)].shape == (6 ,)
2359
2376
assert agg_arr [(b_group1 , slice (None ))].shape == (6 ,)
@@ -2366,22 +2383,24 @@ def test_getitem_on_group_agg_nokw(array):
2366
2383
# using an anonymous LGroup
2367
2384
lg1 = b [b_group1 ]
2368
2385
agg_arr = array .sum (a , c ).sum ((lg1 , b_group2 , b_group3 , all_b ))
2369
- # the following are all equivalent
2370
- assert agg_arr [lg1 ].shape == (6 ,)
2371
- assert agg_arr [(lg1 ,)].shape == (6 ,)
2372
- assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2373
- assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2374
- assert agg_arr [lg1 , :].shape == (6 ,)
2386
+ with must_warn (FutureWarning , msg = group_as_aggregated_label_msg (lg1 ), num_expected = 5 ):
2387
+ # the following are all equivalent
2388
+ assert agg_arr [lg1 ].shape == (6 ,)
2389
+ assert agg_arr [(lg1 ,)].shape == (6 ,)
2390
+ assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2391
+ assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2392
+ assert agg_arr [lg1 , :].shape == (6 ,)
2375
2393
2376
2394
# using a named LGroup
2377
2395
lg1 = b [b_group1 ] >> 'g1'
2378
2396
agg_arr = array .sum (a , c ).sum ((lg1 , b_group2 , b_group3 , all_b ))
2379
- # the following are all equivalent
2380
- assert agg_arr [lg1 ].shape == (6 ,)
2381
- assert agg_arr [(lg1 ,)].shape == (6 ,)
2382
- assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2383
- assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2384
- assert agg_arr [lg1 , :].shape == (6 ,)
2397
+ with must_warn (FutureWarning , msg = group_as_aggregated_label_msg (lg1 ), num_expected = 5 ):
2398
+ # the following are all equivalent
2399
+ assert agg_arr [lg1 ].shape == (6 ,)
2400
+ assert agg_arr [(lg1 ,)].shape == (6 ,)
2401
+ assert agg_arr [(lg1 , slice (None ))].shape == (6 ,)
2402
+ assert agg_arr [lg1 , slice (None )].shape == (6 ,)
2403
+ assert agg_arr [lg1 , :].shape == (6 ,)
2385
2404
2386
2405
2387
2406
def test_filter_on_group_agg (array ):
@@ -2395,7 +2414,8 @@ def test_filter_on_group_agg(array):
2395
2414
# using a named LGroup
2396
2415
g1 = b [b_group1 ] >> 'g1'
2397
2416
agg_arr = array .sum (a , c ).sum (b = (g1 , b_group2 , b_group3 , all_b ))
2398
- assert agg_arr .filter (b = g1 ).shape == (6 ,)
2417
+ with must_warn (FutureWarning , msg = group_as_aggregated_label_msg (g1 )):
2418
+ assert agg_arr .filter (b = g1 ).shape == (6 ,)
2399
2419
2400
2420
# Note that agg_arr.filter(b=(g1,)) does NOT work. It might be a
2401
2421
# little confusing for users, because agg_arr[(g1,)] works but it is
@@ -2418,7 +2438,8 @@ def test_filter_on_group_agg(array):
2418
2438
# assert bya.filter(a=':17').shape == (12, 2, 6)
2419
2439
2420
2440
bya = array .sum (a = (a0to5_named , 5 , a6to13 , a14plus ))
2421
- assert bya .filter (a = a0to5_named ).shape == (12 , 2 , 6 )
2441
+ with must_warn (FutureWarning , msg = group_as_aggregated_label_msg (a0to5_named )):
2442
+ assert bya .filter (a = a0to5_named ).shape == (12 , 2 , 6 )
2422
2443
2423
2444
2424
2445
def test_sum_several_lg_groups (array ):
@@ -2433,8 +2454,12 @@ def test_sum_several_lg_groups(array):
2433
2454
2434
2455
# the result is indexable
2435
2456
# 1.a) by LGroup
2436
- assert agg_arr .filter (b = lg1 ).shape == (19 , 2 , 6 )
2437
- assert agg_arr .filter (b = (lg1 , lg2 )).shape == (19 , 2 , 2 , 6 )
2457
+ msg1 = group_as_aggregated_label_msg (lg1 )
2458
+ with must_warn (FutureWarning , msg = msg1 ):
2459
+ assert agg_arr .filter (b = lg1 ).shape == (19 , 2 , 6 )
2460
+ msg2 = group_as_aggregated_label_msg (lg2 )
2461
+ with must_warn (FutureWarning , msg = (msg1 , msg2 ), check_file = False ):
2462
+ assert agg_arr .filter (b = (lg1 , lg2 )).shape == (19 , 2 , 2 , 6 )
2438
2463
2439
2464
# 1.b) by string (name of groups)
2440
2465
assert agg_arr .filter (b = 'lg1' ).shape == (19 , 2 , 6 )
0 commit comments