@@ -1436,21 +1436,123 @@ def foo(df: pd.DataFrame) -> pd.DataFrame:
1436
1436
.pipe (foo )
1437
1437
)
1438
1438
1439
+ df = pd .DataFrame ({"a" : [1 ], "b" : [2 ]})
1439
1440
check (assert_type (val , pd .DataFrame ), pd .DataFrame )
1440
1441
1441
- check (assert_type (pd . DataFrame ({ "a" : [ 1 ]}) .pipe (foo ), pd .DataFrame ), pd .DataFrame )
1442
+ check (assert_type (df .pipe (foo ), pd .DataFrame ), pd .DataFrame )
1442
1443
1443
1444
def bar (val : Styler ) -> Styler :
1444
1445
return val
1445
1446
1446
- check (
1447
- assert_type (pd .DataFrame ({"a" : [1 ], "b" : [1 ]}).style .pipe (bar ), Styler ), Styler
1448
- )
1447
+ check (assert_type (df .style .pipe (bar ), Styler ), Styler )
1449
1448
1450
1449
def baz (val : Styler ) -> str :
1451
1450
return val .to_latex ()
1452
1451
1453
- check (assert_type (pd .DataFrame ({"a" : [1 ], "b" : [1 ]}).style .pipe (baz ), str ), str )
1452
+ check (assert_type (df .style .pipe (baz ), str ), str )
1453
+
1454
+ def qux (
1455
+ df : pd .DataFrame ,
1456
+ positional_only : int ,
1457
+ / ,
1458
+ argument_1 : list [float ],
1459
+ argument_2 : str ,
1460
+ * ,
1461
+ keyword_only : tuple [int , int ],
1462
+ ) -> pd .DataFrame :
1463
+ return pd .DataFrame (df )
1464
+
1465
+ check (
1466
+ assert_type (
1467
+ df .pipe (qux , 1 , [1.0 , 2.0 ], argument_2 = "hi" , keyword_only = (1 , 2 )),
1468
+ pd .DataFrame ,
1469
+ ),
1470
+ pd .DataFrame ,
1471
+ )
1472
+
1473
+ if TYPE_CHECKING_INVALID_USAGE :
1474
+ df .pipe (
1475
+ qux ,
1476
+ "a" , # type: ignore[arg-type] # pyright: ignore[reportGeneralTypeIssues]
1477
+ [1.0 , 2.0 ],
1478
+ argument_2 = "hi" ,
1479
+ keyword_only = (1 , 2 ),
1480
+ )
1481
+ df .pipe (
1482
+ qux ,
1483
+ 1 ,
1484
+ [1.0 , "b" ], # type: ignore[list-item] # pyright: ignore[reportGeneralTypeIssues]
1485
+ argument_2 = "hi" ,
1486
+ keyword_only = (1 , 2 ),
1487
+ )
1488
+ df .pipe (
1489
+ qux ,
1490
+ 1 ,
1491
+ [1.0 , 2.0 ],
1492
+ argument_2 = 11 , # type: ignore[arg-type] # pyright: ignore[reportGeneralTypeIssues]
1493
+ keyword_only = (1 , 2 ),
1494
+ )
1495
+ df .pipe (
1496
+ qux ,
1497
+ 1 ,
1498
+ [1.0 , 2.0 ],
1499
+ argument_2 = "hi" ,
1500
+ keyword_only = (1 ,), # type: ignore[arg-type] # pyright: ignore[reportGeneralTypeIssues]
1501
+ )
1502
+ df .pipe ( # type: ignore[call-arg]
1503
+ qux ,
1504
+ 1 ,
1505
+ [1.0 , 2.0 ],
1506
+ argument_3 = "hi" , # pyright: ignore[reportGeneralTypeIssues]
1507
+ keyword_only = (1 , 2 ),
1508
+ )
1509
+ df .pipe ( # type: ignore[misc]
1510
+ qux ,
1511
+ 1 ,
1512
+ [1.0 , 2.0 ],
1513
+ 11 , # type: ignore[arg-type]
1514
+ (1 , 2 ), # pyright: ignore[reportGeneralTypeIssues]
1515
+ )
1516
+ df .pipe ( # type: ignore[call-arg]
1517
+ qux ,
1518
+ positional_only = 1 , # pyright: ignore[reportGeneralTypeIssues]
1519
+ argument_1 = [1.0 , 2.0 ],
1520
+ argument_2 = 11 , # type: ignore[arg-type]
1521
+ keyword_only = (1 , 2 ),
1522
+ )
1523
+
1524
+ def dataframe_not_first_arg (x : int , df : pd .DataFrame ) -> pd .DataFrame :
1525
+ return df
1526
+
1527
+ check (
1528
+ assert_type (
1529
+ df .pipe (
1530
+ (
1531
+ dataframe_not_first_arg ,
1532
+ "df" ,
1533
+ ),
1534
+ 1 ,
1535
+ ),
1536
+ pd .DataFrame ,
1537
+ ),
1538
+ pd .DataFrame ,
1539
+ )
1540
+
1541
+ if TYPE_CHECKING_INVALID_USAGE :
1542
+ df .pipe (
1543
+ (
1544
+ dataframe_not_first_arg , # type: ignore[arg-type]
1545
+ 1 , # pyright: ignore[reportGeneralTypeIssues]
1546
+ ),
1547
+ 1 ,
1548
+ )
1549
+ df .pipe (
1550
+ ( # pyright: ignore[reportGeneralTypeIssues]
1551
+ 1 , # type: ignore[arg-type] # pyright: ignore[reportGeneralTypeIssues]
1552
+ "df" ,
1553
+ ),
1554
+ 1 ,
1555
+ )
1454
1556
1455
1557
1456
1558
# set_flags() method added in 1.2.0 https://pandas.pydata.org/docs/whatsnew/v1.2.0.html
0 commit comments