@@ -54,7 +54,7 @@ from typing import ( # noqa: Y022
5454 overload ,
5555 type_check_only ,
5656)
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
5858
5959if sys .version_info >= (3 , 9 ):
6060 from types import GenericAlias
@@ -75,6 +75,7 @@ _SupportsNextT = TypeVar("_SupportsNextT", bound=SupportsNext[Any], covariant=Tr
7575_SupportsAnextT = TypeVar ("_SupportsAnextT" , bound = SupportsAnext [Any ], covariant = True )
7676_AwaitableT = TypeVar ("_AwaitableT" , bound = Awaitable [Any ])
7777_AwaitableT_co = TypeVar ("_AwaitableT_co" , bound = Awaitable [Any ], covariant = True )
78+ _P = ParamSpec ("_P" )
7879
7980class object :
8081 __doc__ : str | None
@@ -113,32 +114,32 @@ class object:
113114 @classmethod
114115 def __subclasshook__ (cls , __subclass : type ) -> bool : ...
115116
116- class staticmethod (Generic [_R_co ]):
117+ class staticmethod (Generic [_P , _R_co ]):
117118 @property
118- def __func__ (self ) -> Callable [... , _R_co ]: ...
119+ def __func__ (self ) -> Callable [_P , _R_co ]: ...
119120 @property
120121 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 ]: ...
123124 if sys .version_info >= (3 , 10 ):
124125 __name__ : str
125126 __qualname__ : str
126127 @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 : ...
129130
130- class classmethod (Generic [_R_co ]):
131+ class classmethod (Generic [_T , _P , _R_co ]):
131132 @property
132- def __func__ (self ) -> Callable [... , _R_co ]: ...
133+ def __func__ (self ) -> Callable [Concatenate [ _T , _P ] , _R_co ]: ...
133134 @property
134135 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 ]: ...
137138 if sys .version_info >= (3 , 10 ):
138139 __name__ : str
139140 __qualname__ : str
140141 @property
141- def __wrapped__ (self ) -> Callable [... , _R_co ]: ...
142+ def __wrapped__ (self ) -> Callable [Concatenate [ _T , _P ] , _R_co ]: ...
142143
143144class type :
144145 @property
@@ -415,20 +416,38 @@ class str(Sequence[str]):
415416 def __new__ (cls , object : object = ...) -> Self : ...
416417 @overload
417418 def __new__ (cls , object : ReadableBuffer , encoding : str = ..., errors : str = ...) -> Self : ...
419+ @overload
420+ def capitalize (self : LiteralString ) -> LiteralString : ...
421+ @overload
418422 def capitalize (self ) -> str : ... # type: ignore[misc]
423+ @overload
424+ def casefold (self : LiteralString ) -> LiteralString : ...
425+ @overload
419426 def casefold (self ) -> str : ... # type: ignore[misc]
427+ @overload
428+ def center (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
429+ @overload
420430 def center (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
421431 def count (self , x : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
422432 def encode (self , encoding : str = "utf-8" , errors : str = "strict" ) -> bytes : ...
423433 def endswith (
424434 self , __suffix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
425435 ) -> bool : ...
426436 if sys .version_info >= (3 , 8 ):
437+ @overload
438+ def expandtabs (self : LiteralString , tabsize : SupportsIndex = 8 ) -> LiteralString : ...
439+ @overload
427440 def expandtabs (self , tabsize : SupportsIndex = 8 ) -> str : ... # type: ignore[misc]
428441 else :
442+ @overload
443+ def expandtabs (self : LiteralString , tabsize : int = 8 ) -> LiteralString : ...
444+ @overload
429445 def expandtabs (self , tabsize : int = 8 ) -> str : ... # type: ignore[misc]
430446
431447 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
432451 def format (self , * args : object , ** kwargs : object ) -> str : ...
433452 def format_map (self , map : _FormatMapMapping ) -> str : ...
434453 def index (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
@@ -444,32 +463,91 @@ class str(Sequence[str]):
444463 def isspace (self ) -> bool : ...
445464 def istitle (self ) -> bool : ...
446465 def isupper (self ) -> bool : ...
466+ @overload
467+ def join (self : LiteralString , __iterable : Iterable [LiteralString ]) -> LiteralString : ...
468+ @overload
447469 def join (self , __iterable : Iterable [str ]) -> str : ... # type: ignore[misc]
470+ @overload
471+ def ljust (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
472+ @overload
448473 def ljust (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
474+ @overload
475+ def lower (self : LiteralString ) -> LiteralString : ...
476+ @overload
449477 def lower (self ) -> str : ... # type: ignore[misc]
478+ @overload
479+ def lstrip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
480+ @overload
450481 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
451485 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
452491 def replace (self , __old : str , __new : str , __count : SupportsIndex = - 1 ) -> str : ... # type: ignore[misc]
453492 if sys .version_info >= (3 , 9 ):
493+ @overload
494+ def removeprefix (self : LiteralString , __prefix : LiteralString ) -> LiteralString : ...
495+ @overload
454496 def removeprefix (self , __prefix : str ) -> str : ... # type: ignore[misc]
497+ @overload
498+ def removesuffix (self : LiteralString , __suffix : LiteralString ) -> LiteralString : ...
499+ @overload
455500 def removesuffix (self , __suffix : str ) -> str : ... # type: ignore[misc]
456501
457502 def rfind (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
458503 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
459507 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
460511 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
461515 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
462519 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
463523 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
464527 def splitlines (self , keepends : bool = False ) -> list [str ]: ... # type: ignore[misc]
465528 def startswith (
466529 self , __prefix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
467530 ) -> bool : ...
531+ @overload
532+ def strip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
533+ @overload
468534 def strip (self , __chars : str | None = None ) -> str : ... # type: ignore[misc]
535+ @overload
536+ def swapcase (self : LiteralString ) -> LiteralString : ...
537+ @overload
469538 def swapcase (self ) -> str : ... # type: ignore[misc]
539+ @overload
540+ def title (self : LiteralString ) -> LiteralString : ...
541+ @overload
470542 def title (self ) -> str : ... # type: ignore[misc]
471543 def translate (self , __table : _TranslateTable ) -> str : ...
544+ @overload
545+ def upper (self : LiteralString ) -> LiteralString : ...
546+ @overload
472547 def upper (self ) -> str : ... # type: ignore[misc]
548+ @overload
549+ def zfill (self : LiteralString , __width : SupportsIndex ) -> LiteralString : ...
550+ @overload
473551 def zfill (self , __width : SupportsIndex ) -> str : ... # type: ignore[misc]
474552 @staticmethod
475553 @overload
@@ -480,20 +558,35 @@ class str(Sequence[str]):
480558 @staticmethod
481559 @overload
482560 def maketrans (__x : str , __y : str , __z : str ) -> dict [int , int | None ]: ...
561+ @overload
562+ def __add__ (self : LiteralString , __value : LiteralString ) -> LiteralString : ...
563+ @overload
483564 def __add__ (self , __value : str ) -> str : ... # type: ignore[misc]
484565 # Incompatible with Sequence.__contains__
485566 def __contains__ (self , __key : str ) -> bool : ... # type: ignore[override]
486567 def __eq__ (self , __value : object ) -> bool : ...
487568 def __ge__ (self , __value : str ) -> bool : ...
488569 def __getitem__ (self , __key : SupportsIndex | slice ) -> str : ...
489570 def __gt__ (self , __value : str ) -> bool : ...
571+ @overload
572+ def __iter__ (self : LiteralString ) -> Iterator [LiteralString ]: ...
573+ @overload
490574 def __iter__ (self ) -> Iterator [str ]: ... # type: ignore[misc]
491575 def __le__ (self , __value : str ) -> bool : ...
492576 def __len__ (self ) -> int : ...
493577 def __lt__ (self , __value : str ) -> bool : ...
578+ @overload
579+ def __mod__ (self : LiteralString , __value : LiteralString | tuple [LiteralString , ...]) -> LiteralString : ...
580+ @overload
494581 def __mod__ (self , __value : Any ) -> str : ...
582+ @overload
583+ def __mul__ (self : LiteralString , __value : SupportsIndex ) -> LiteralString : ...
584+ @overload
495585 def __mul__ (self , __value : SupportsIndex ) -> str : ... # type: ignore[misc]
496586 def __ne__ (self , __value : object ) -> bool : ...
587+ @overload
588+ def __rmul__ (self : LiteralString , __value : SupportsIndex ) -> LiteralString : ...
589+ @overload
497590 def __rmul__ (self , __value : SupportsIndex ) -> str : ... # type: ignore[misc]
498591 def __getnewargs__ (self ) -> tuple [str ]: ...
499592
@@ -1637,11 +1730,11 @@ _SupportsSumNoDefaultT = TypeVar("_SupportsSumNoDefaultT", bound=_SupportsSumWit
16371730# Instead, we special-case the most common examples of this: bool and literal integers.
16381731if sys .version_info >= (3 , 8 ):
16391732 @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]
16411734
16421735else :
16431736 @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]
16451738
16461739@overload
16471740def sum (__iterable : Iterable [_SupportsSumNoDefaultT ]) -> _SupportsSumNoDefaultT | Literal [0 ]: ...
0 commit comments