@@ -54,7 +54,7 @@ from typing import ( # noqa: Y022
54
54
overload ,
55
55
type_check_only ,
56
56
)
57
- from typing_extensions import Literal , Self , SupportsIndex , TypeAlias , TypeGuard , final
57
+ from typing_extensions import Concatenate , Literal , LiteralString , ParamSpec , Self , SupportsIndex , TypeAlias , TypeGuard , final
58
58
59
59
if sys .version_info >= (3 , 9 ):
60
60
from types import GenericAlias
@@ -75,6 +75,7 @@ _SupportsNextT = TypeVar("_SupportsNextT", bound=SupportsNext[Any], covariant=Tr
75
75
_SupportsAnextT = TypeVar ("_SupportsAnextT" , bound = SupportsAnext [Any ], covariant = True )
76
76
_AwaitableT = TypeVar ("_AwaitableT" , bound = Awaitable [Any ])
77
77
_AwaitableT_co = TypeVar ("_AwaitableT_co" , bound = Awaitable [Any ], covariant = True )
78
+ _P = ParamSpec ("_P" )
78
79
79
80
class object :
80
81
__doc__ : str | None
@@ -113,32 +114,32 @@ class object:
113
114
@classmethod
114
115
def __subclasshook__ (cls , __subclass : type ) -> bool : ...
115
116
116
- class staticmethod (Generic [_R_co ]):
117
+ class staticmethod (Generic [_P , _R_co ]):
117
118
@property
118
- def __func__ (self ) -> Callable [... , _R_co ]: ...
119
+ def __func__ (self ) -> Callable [_P , _R_co ]: ...
119
120
@property
120
121
def __isabstractmethod__ (self ) -> bool : ...
121
- def __init__ (self : staticmethod [ _R_co ] , __f : Callable [... , _R_co ]) -> None : ...
122
- def __get__ (self , __instance : _T , __owner : type [_T ] | None = None ) -> Callable [... , _R_co ]: ...
122
+ def __init__ (self , __f : Callable [_P , _R_co ]) -> None : ...
123
+ def __get__ (self , __instance : _T , __owner : type [_T ] | None = None ) -> Callable [_P , _R_co ]: ...
123
124
if sys .version_info >= (3 , 10 ):
124
125
__name__ : str
125
126
__qualname__ : str
126
127
@property
127
- def __wrapped__ (self ) -> Callable [... , _R_co ]: ...
128
- def __call__ (self , * args : Any , ** kwargs : Any ) -> _R_co : ...
128
+ def __wrapped__ (self ) -> Callable [_P , _R_co ]: ...
129
+ def __call__ (self , * args : _P . args , ** kwargs : _P . kwargs ) -> _R_co : ...
129
130
130
- class classmethod (Generic [_R_co ]):
131
+ class classmethod (Generic [_T , _P , _R_co ]):
131
132
@property
132
- def __func__ (self ) -> Callable [... , _R_co ]: ...
133
+ def __func__ (self ) -> Callable [Concatenate [ _T , _P ] , _R_co ]: ...
133
134
@property
134
135
def __isabstractmethod__ (self ) -> bool : ...
135
- def __init__ (self : classmethod [ _R_co ] , __f : Callable [... , _R_co ]) -> None : ...
136
- def __get__ (self , __instance : _T , __owner : type [_T ] | None = None ) -> Callable [... , _R_co ]: ...
136
+ def __init__ (self , __f : Callable [Concatenate [ _T , _P ] , _R_co ]) -> None : ...
137
+ def __get__ (self , __instance : _T , __owner : type [_T ] | None = None ) -> Callable [_P , _R_co ]: ...
137
138
if sys .version_info >= (3 , 10 ):
138
139
__name__ : str
139
140
__qualname__ : str
140
141
@property
141
- def __wrapped__ (self ) -> Callable [... , _R_co ]: ...
142
+ def __wrapped__ (self ) -> Callable [Concatenate [ _T , _P ] , _R_co ]: ...
142
143
143
144
class type :
144
145
@property
@@ -415,20 +416,38 @@ class str(Sequence[str]):
415
416
def __new__ (cls , object : object = ...) -> Self : ...
416
417
@overload
417
418
def __new__ (cls , object : ReadableBuffer , encoding : str = ..., errors : str = ...) -> Self : ...
419
+ @overload
420
+ def capitalize (self : LiteralString ) -> LiteralString : ...
421
+ @overload
418
422
def capitalize (self ) -> str : ... # type: ignore[misc]
423
+ @overload
424
+ def casefold (self : LiteralString ) -> LiteralString : ...
425
+ @overload
419
426
def casefold (self ) -> str : ... # type: ignore[misc]
427
+ @overload
428
+ def center (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
429
+ @overload
420
430
def center (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
421
431
def count (self , x : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
422
432
def encode (self , encoding : str = "utf-8" , errors : str = "strict" ) -> bytes : ...
423
433
def endswith (
424
434
self , __suffix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
425
435
) -> bool : ...
426
436
if sys .version_info >= (3 , 8 ):
437
+ @overload
438
+ def expandtabs (self : LiteralString , tabsize : SupportsIndex = 8 ) -> LiteralString : ...
439
+ @overload
427
440
def expandtabs (self , tabsize : SupportsIndex = 8 ) -> str : ... # type: ignore[misc]
428
441
else :
442
+ @overload
443
+ def expandtabs (self : LiteralString , tabsize : int = 8 ) -> LiteralString : ...
444
+ @overload
429
445
def expandtabs (self , tabsize : int = 8 ) -> str : ... # type: ignore[misc]
430
446
431
447
def find (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
448
+ @overload
449
+ def format (self : LiteralString , * args : LiteralString , ** kwargs : LiteralString ) -> LiteralString : ...
450
+ @overload
432
451
def format (self , * args : object , ** kwargs : object ) -> str : ...
433
452
def format_map (self , map : _FormatMapMapping ) -> str : ...
434
453
def index (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
@@ -444,32 +463,91 @@ class str(Sequence[str]):
444
463
def isspace (self ) -> bool : ...
445
464
def istitle (self ) -> bool : ...
446
465
def isupper (self ) -> bool : ...
466
+ @overload
467
+ def join (self : LiteralString , __iterable : Iterable [LiteralString ]) -> LiteralString : ...
468
+ @overload
447
469
def join (self , __iterable : Iterable [str ]) -> str : ... # type: ignore[misc]
470
+ @overload
471
+ def ljust (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
472
+ @overload
448
473
def ljust (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
474
+ @overload
475
+ def lower (self : LiteralString ) -> LiteralString : ...
476
+ @overload
449
477
def lower (self ) -> str : ... # type: ignore[misc]
478
+ @overload
479
+ def lstrip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
480
+ @overload
450
481
def lstrip (self , __chars : str | None = None ) -> str : ... # type: ignore[misc]
482
+ @overload
483
+ def partition (self : LiteralString , __sep : LiteralString ) -> tuple [LiteralString , LiteralString , LiteralString ]: ...
484
+ @overload
451
485
def partition (self , __sep : str ) -> tuple [str , str , str ]: ... # type: ignore[misc]
486
+ @overload
487
+ def replace (
488
+ self : LiteralString , __old : LiteralString , __new : LiteralString , __count : SupportsIndex = - 1
489
+ ) -> LiteralString : ...
490
+ @overload
452
491
def replace (self , __old : str , __new : str , __count : SupportsIndex = - 1 ) -> str : ... # type: ignore[misc]
453
492
if sys .version_info >= (3 , 9 ):
493
+ @overload
494
+ def removeprefix (self : LiteralString , __prefix : LiteralString ) -> LiteralString : ...
495
+ @overload
454
496
def removeprefix (self , __prefix : str ) -> str : ... # type: ignore[misc]
497
+ @overload
498
+ def removesuffix (self : LiteralString , __suffix : LiteralString ) -> LiteralString : ...
499
+ @overload
455
500
def removesuffix (self , __suffix : str ) -> str : ... # type: ignore[misc]
456
501
457
502
def rfind (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
458
503
def rindex (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
504
+ @overload
505
+ def rjust (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
506
+ @overload
459
507
def rjust (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
508
+ @overload
509
+ def rpartition (self : LiteralString , __sep : LiteralString ) -> tuple [LiteralString , LiteralString , LiteralString ]: ...
510
+ @overload
460
511
def rpartition (self , __sep : str ) -> tuple [str , str , str ]: ... # type: ignore[misc]
512
+ @overload
513
+ def rsplit (self : LiteralString , sep : LiteralString | None = None , maxsplit : SupportsIndex = - 1 ) -> list [LiteralString ]: ...
514
+ @overload
461
515
def rsplit (self , sep : str | None = None , maxsplit : SupportsIndex = - 1 ) -> list [str ]: ... # type: ignore[misc]
516
+ @overload
517
+ def rstrip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
518
+ @overload
462
519
def rstrip (self , __chars : str | None = None ) -> str : ... # type: ignore[misc]
520
+ @overload
521
+ def split (self : LiteralString , sep : LiteralString | None = None , maxsplit : SupportsIndex = - 1 ) -> list [LiteralString ]: ...
522
+ @overload
463
523
def split (self , sep : str | None = None , maxsplit : SupportsIndex = - 1 ) -> list [str ]: ... # type: ignore[misc]
524
+ @overload
525
+ def splitlines (self : LiteralString , keepends : bool = False ) -> list [LiteralString ]: ...
526
+ @overload
464
527
def splitlines (self , keepends : bool = False ) -> list [str ]: ... # type: ignore[misc]
465
528
def startswith (
466
529
self , __prefix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
467
530
) -> bool : ...
531
+ @overload
532
+ def strip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
533
+ @overload
468
534
def strip (self , __chars : str | None = None ) -> str : ... # type: ignore[misc]
535
+ @overload
536
+ def swapcase (self : LiteralString ) -> LiteralString : ...
537
+ @overload
469
538
def swapcase (self ) -> str : ... # type: ignore[misc]
539
+ @overload
540
+ def title (self : LiteralString ) -> LiteralString : ...
541
+ @overload
470
542
def title (self ) -> str : ... # type: ignore[misc]
471
543
def translate (self , __table : _TranslateTable ) -> str : ...
544
+ @overload
545
+ def upper (self : LiteralString ) -> LiteralString : ...
546
+ @overload
472
547
def upper (self ) -> str : ... # type: ignore[misc]
548
+ @overload
549
+ def zfill (self : LiteralString , __width : SupportsIndex ) -> LiteralString : ...
550
+ @overload
473
551
def zfill (self , __width : SupportsIndex ) -> str : ... # type: ignore[misc]
474
552
@staticmethod
475
553
@overload
@@ -480,20 +558,35 @@ class str(Sequence[str]):
480
558
@staticmethod
481
559
@overload
482
560
def maketrans (__x : str , __y : str , __z : str ) -> dict [int , int | None ]: ...
561
+ @overload
562
+ def __add__ (self : LiteralString , __value : LiteralString ) -> LiteralString : ...
563
+ @overload
483
564
def __add__ (self , __value : str ) -> str : ... # type: ignore[misc]
484
565
# Incompatible with Sequence.__contains__
485
566
def __contains__ (self , __key : str ) -> bool : ... # type: ignore[override]
486
567
def __eq__ (self , __value : object ) -> bool : ...
487
568
def __ge__ (self , __value : str ) -> bool : ...
488
569
def __getitem__ (self , __key : SupportsIndex | slice ) -> str : ...
489
570
def __gt__ (self , __value : str ) -> bool : ...
571
+ @overload
572
+ def __iter__ (self : LiteralString ) -> Iterator [LiteralString ]: ...
573
+ @overload
490
574
def __iter__ (self ) -> Iterator [str ]: ... # type: ignore[misc]
491
575
def __le__ (self , __value : str ) -> bool : ...
492
576
def __len__ (self ) -> int : ...
493
577
def __lt__ (self , __value : str ) -> bool : ...
578
+ @overload
579
+ def __mod__ (self : LiteralString , __value : LiteralString | tuple [LiteralString , ...]) -> LiteralString : ...
580
+ @overload
494
581
def __mod__ (self , __value : Any ) -> str : ...
582
+ @overload
583
+ def __mul__ (self : LiteralString , __value : SupportsIndex ) -> LiteralString : ...
584
+ @overload
495
585
def __mul__ (self , __value : SupportsIndex ) -> str : ... # type: ignore[misc]
496
586
def __ne__ (self , __value : object ) -> bool : ...
587
+ @overload
588
+ def __rmul__ (self : LiteralString , __value : SupportsIndex ) -> LiteralString : ...
589
+ @overload
497
590
def __rmul__ (self , __value : SupportsIndex ) -> str : ... # type: ignore[misc]
498
591
def __getnewargs__ (self ) -> tuple [str ]: ...
499
592
@@ -1637,11 +1730,11 @@ _SupportsSumNoDefaultT = TypeVar("_SupportsSumNoDefaultT", bound=_SupportsSumWit
1637
1730
# Instead, we special-case the most common examples of this: bool and literal integers.
1638
1731
if sys .version_info >= (3 , 8 ):
1639
1732
@overload
1640
- def sum (__iterable : Iterable [bool ], start : int = 0 ) -> int : ... # type: ignore[misc]
1733
+ def sum (__iterable : Iterable [bool | _LiteralInteger ], start : int = 0 ) -> int : ... # type: ignore[misc]
1641
1734
1642
1735
else :
1643
1736
@overload
1644
- def sum (__iterable : Iterable [bool ], __start : int = 0 ) -> int : ... # type: ignore[misc]
1737
+ def sum (__iterable : Iterable [bool | _LiteralInteger ], __start : int = 0 ) -> int : ... # type: ignore[misc]
1645
1738
1646
1739
@overload
1647
1740
def sum (__iterable : Iterable [_SupportsSumNoDefaultT ]) -> _SupportsSumNoDefaultT | Literal [0 ]: ...
0 commit comments