@@ -418,6 +418,149 @@ def test_sel(obj, indexers, expected, error):
418
418
assert_identical (actual , expected )
419
419
420
420
421
+ @pytest .mark .parametrize (
422
+ ["obj" , "indexers" , "expected" , "error" ],
423
+ (
424
+ pytest .param (
425
+ xr .Dataset (
426
+ {
427
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
428
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
429
+ }
430
+ ),
431
+ {"x" : Quantity ([10 , 30 ], "dm" ), "y" : Quantity ([60 ], "s" )},
432
+ xr .Dataset (
433
+ {
434
+ "x" : ("x" , [20 ], {"units" : unit_registry .Unit ("dm" )}),
435
+ "y" : ("y" , [120 ], {"units" : unit_registry .Unit ("s" )}),
436
+ }
437
+ ),
438
+ None ,
439
+ id = "Dataset-identical units" ,
440
+ ),
441
+ pytest .param (
442
+ xr .Dataset (
443
+ {
444
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
445
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
446
+ }
447
+ ),
448
+ {"x" : Quantity ([1 , 3 ], "m" ), "y" : Quantity ([1 ], "min" )},
449
+ xr .Dataset (
450
+ {
451
+ "x" : ("x" , [20 ], {"units" : unit_registry .Unit ("dm" )}),
452
+ "y" : ("y" , [120 ], {"units" : unit_registry .Unit ("s" )}),
453
+ }
454
+ ),
455
+ None ,
456
+ id = "Dataset-compatible units" ,
457
+ ),
458
+ pytest .param (
459
+ xr .Dataset (
460
+ {
461
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
462
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
463
+ }
464
+ ),
465
+ {"x" : Quantity ([1 , 3 ], "s" ), "y" : Quantity ([1 ], "m" )},
466
+ None ,
467
+ DimensionalityError ,
468
+ id = "Dataset-incompatible units" ,
469
+ ),
470
+ pytest .param (
471
+ xr .Dataset (
472
+ {
473
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
474
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
475
+ }
476
+ ),
477
+ {"x" : Quantity ([10 , 30 ], "m" ), "y" : Quantity ([60 ], "min" )},
478
+ None ,
479
+ KeyError ,
480
+ id = "Dataset-compatible units-not found" ,
481
+ ),
482
+ pytest .param (
483
+ xr .DataArray (
484
+ [[0 , 1 ], [2 , 3 ], [4 , 5 ]],
485
+ dims = ("x" , "y" ),
486
+ coords = {
487
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
488
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
489
+ },
490
+ ),
491
+ {"x" : Quantity ([10 , 30 ], "dm" ), "y" : Quantity ([60 ], "s" )},
492
+ xr .DataArray (
493
+ [[3 ]],
494
+ dims = ("x" , "y" ),
495
+ coords = {
496
+ "x" : ("x" , [20 ], {"units" : unit_registry .Unit ("dm" )}),
497
+ "y" : ("y" , [120 ], {"units" : unit_registry .Unit ("s" )}),
498
+ },
499
+ ),
500
+ None ,
501
+ id = "DataArray-identical units" ,
502
+ ),
503
+ pytest .param (
504
+ xr .DataArray (
505
+ [[0 , 1 ], [2 , 3 ], [4 , 5 ]],
506
+ dims = ("x" , "y" ),
507
+ coords = {
508
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
509
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
510
+ },
511
+ ),
512
+ {"x" : Quantity ([1 , 3 ], "m" ), "y" : Quantity ([1 ], "min" )},
513
+ xr .DataArray (
514
+ [[3 ]],
515
+ dims = ("x" , "y" ),
516
+ coords = {
517
+ "x" : ("x" , [20 ], {"units" : unit_registry .Unit ("dm" )}),
518
+ "y" : ("y" , [120 ], {"units" : unit_registry .Unit ("s" )}),
519
+ },
520
+ ),
521
+ None ,
522
+ id = "DataArray-compatible units" ,
523
+ ),
524
+ pytest .param (
525
+ xr .DataArray (
526
+ [[0 , 1 ], [2 , 3 ], [4 , 5 ]],
527
+ dims = ("x" , "y" ),
528
+ coords = {
529
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
530
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
531
+ },
532
+ ),
533
+ {"x" : Quantity ([10 , 30 ], "s" ), "y" : Quantity ([60 ], "m" )},
534
+ None ,
535
+ DimensionalityError ,
536
+ id = "DataArray-incompatible units" ,
537
+ ),
538
+ pytest .param (
539
+ xr .DataArray (
540
+ [[0 , 1 ], [2 , 3 ], [4 , 5 ]],
541
+ dims = ("x" , "y" ),
542
+ coords = {
543
+ "x" : ("x" , [10 , 20 , 30 ], {"units" : unit_registry .Unit ("dm" )}),
544
+ "y" : ("y" , [60 , 120 ], {"units" : unit_registry .Unit ("s" )}),
545
+ },
546
+ ),
547
+ {"x" : Quantity ([10 , 30 ], "m" ), "y" : Quantity ([60 ], "min" )},
548
+ None ,
549
+ KeyError ,
550
+ id = "DataArray-compatible units-not found" ,
551
+ ),
552
+ ),
553
+ )
554
+ def test_drop_sel (obj , indexers , expected , error ):
555
+ if error is not None :
556
+ with pytest .raises (error ):
557
+ obj .pint .drop_sel (indexers )
558
+ else :
559
+ actual = obj .pint .drop_sel (indexers )
560
+ assert_units_equal (actual , expected )
561
+ assert_identical (actual , expected )
562
+
563
+
421
564
@pytest .mark .parametrize (
422
565
["obj" , "indexers" , "expected" , "error" ],
423
566
(
0 commit comments