@@ -54,7 +54,7 @@ from typing import ( # noqa: Y027
5454 overload ,
5555 type_check_only ,
5656)
57- from typing_extensions import Literal , SupportsIndex , TypeAlias , TypeGuard , final
57+ from typing_extensions import Literal , LiteralString , SupportsIndex , TypeAlias , TypeGuard , final
5858
5959if sys .version_info >= (3 , 9 ):
6060 from types import GenericAlias
@@ -413,20 +413,38 @@ class str(Sequence[str]):
413413 def __new__ (cls : type [Self ], object : object = ...) -> Self : ...
414414 @overload
415415 def __new__ (cls : type [Self ], object : ReadableBuffer , encoding : str = ..., errors : str = ...) -> Self : ...
416+ @overload
417+ def capitalize (self : LiteralString ) -> LiteralString : ...
418+ @overload
416419 def capitalize (self ) -> str : ... # type: ignore[misc]
420+ @overload
421+ def casefold (self : LiteralString ) -> LiteralString : ...
422+ @overload
417423 def casefold (self ) -> str : ... # type: ignore[misc]
424+ @overload
425+ def center (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = ...) -> LiteralString : ...
426+ @overload
418427 def center (self , __width : SupportsIndex , __fillchar : str = ...) -> str : ... # type: ignore[misc]
419428 def count (self , x : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
420429 def encode (self , encoding : str = ..., errors : str = ...) -> bytes : ...
421430 def endswith (
422431 self , __suffix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
423432 ) -> bool : ...
424433 if sys .version_info >= (3 , 8 ):
434+ @overload
435+ def expandtabs (self : LiteralString , tabsize : SupportsIndex = ...) -> LiteralString : ...
436+ @overload
425437 def expandtabs (self , tabsize : SupportsIndex = ...) -> str : ... # type: ignore[misc]
426438 else :
439+ @overload
440+ def expandtabs (self : LiteralString , tabsize : int = ...) -> LiteralString : ...
441+ @overload
427442 def expandtabs (self , tabsize : int = ...) -> str : ... # type: ignore[misc]
428443
429444 def find (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
445+ @overload
446+ def format (self : LiteralString , * args : LiteralString , ** kwargs : LiteralString ) -> LiteralString : ...
447+ @overload
430448 def format (self , * args : object , ** kwargs : object ) -> str : ... # type: ignore[misc]
431449 def format_map (self , map : _FormatMapMapping ) -> str : ...
432450 def index (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
@@ -442,53 +460,127 @@ class str(Sequence[str]):
442460 def isspace (self ) -> bool : ...
443461 def istitle (self ) -> bool : ...
444462 def isupper (self ) -> bool : ...
463+ @overload
464+ def join (self : LiteralString , __iterable : Iterable [LiteralString ]) -> LiteralString : ...
465+ @overload
445466 def join (self , __iterable : Iterable [str ]) -> str : ... # type: ignore[misc]
467+ @overload
468+ def ljust (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = ...) -> LiteralString : ...
469+ @overload
446470 def ljust (self , __width : SupportsIndex , __fillchar : str = ...) -> str : ... # type: ignore[misc]
471+ @overload
472+ def lower (self : LiteralString ) -> LiteralString : ...
473+ @overload
447474 def lower (self ) -> str : ... # type: ignore[misc]
475+ @overload
476+ def lstrip (self : LiteralString , __chars : LiteralString | None = ...) -> LiteralString : ...
477+ @overload
448478 def lstrip (self , __chars : str | None = ...) -> str : ... # type: ignore[misc]
479+ @overload
480+ def partition (self : LiteralString , __sep : LiteralString ) -> tuple [LiteralString , LiteralString , LiteralString ]: ...
481+ @overload
449482 def partition (self , __sep : str ) -> tuple [str , str , str ]: ... # type: ignore[misc]
483+ @overload
484+ def replace (
485+ self : LiteralString , __old : LiteralString , __new : LiteralString , __count : SupportsIndex = ...
486+ ) -> LiteralString : ...
487+ @overload
450488 def replace (self , __old : str , __new : str , __count : SupportsIndex = ...) -> str : ... # type: ignore[misc]
451489 if sys .version_info >= (3 , 9 ):
490+ @overload
491+ def removeprefix (self : LiteralString , __prefix : LiteralString ) -> LiteralString : ...
492+ @overload
452493 def removeprefix (self , __prefix : str ) -> str : ... # type: ignore[misc]
494+ @overload
495+ def removesuffix (self : LiteralString , __suffix : LiteralString ) -> LiteralString : ...
496+ @overload
453497 def removesuffix (self , __suffix : str ) -> str : ... # type: ignore[misc]
454498
455499 def rfind (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
456500 def rindex (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
501+ @overload
502+ def rjust (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = ...) -> LiteralString : ...
503+ @overload
457504 def rjust (self , __width : SupportsIndex , __fillchar : str = ...) -> str : ... # type: ignore[misc]
505+ @overload
506+ def rpartition (self : LiteralString , __sep : LiteralString ) -> tuple [LiteralString , LiteralString , LiteralString ]: ...
507+ @overload
458508 def rpartition (self , __sep : str ) -> tuple [str , str , str ]: ... # type: ignore[misc]
509+ @overload
510+ def rsplit (self : LiteralString , sep : LiteralString | None = ..., maxsplit : SupportsIndex = ...) -> list [LiteralString ]: ...
511+ @overload
459512 def rsplit (self , sep : str | None = ..., maxsplit : SupportsIndex = ...) -> list [str ]: ... # type: ignore[misc]
513+ @overload
514+ def rstrip (self : LiteralString , __chars : LiteralString | None = ...) -> LiteralString : ...
515+ @overload
460516 def rstrip (self , __chars : str | None = ...) -> str : ... # type: ignore[misc]
517+ @overload
518+ def split (self : LiteralString , sep : LiteralString | None = ..., maxsplit : SupportsIndex = ...) -> list [LiteralString ]: ...
519+ @overload
461520 def split (self , sep : str | None = ..., maxsplit : SupportsIndex = ...) -> list [str ]: ... # type: ignore[misc]
521+ @overload
522+ def splitlines (self : LiteralString , keepends : bool = ...) -> list [LiteralString ]: ...
523+ @overload
462524 def splitlines (self , keepends : bool = ...) -> list [str ]: ... # type: ignore[misc]
463525 def startswith (
464526 self , __prefix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
465527 ) -> bool : ...
528+ @overload
529+ def strip (self : LiteralString , __chars : LiteralString | None = ...) -> LiteralString : ...
530+ @overload
466531 def strip (self , __chars : str | None = ...) -> str : ... # type: ignore[misc]
532+ @overload
533+ def swapcase (self : LiteralString ) -> LiteralString : ...
534+ @overload
467535 def swapcase (self ) -> str : ... # type: ignore[misc]
536+ @overload
537+ def title (self : LiteralString ) -> LiteralString : ...
538+ @overload
468539 def title (self ) -> str : ... # type: ignore[misc]
469540 def translate (self , __table : _TranslateTable ) -> str : ...
541+ @overload
542+ def upper (self : LiteralString ) -> LiteralString : ...
543+ @overload
470544 def upper (self ) -> str : ... # type: ignore[misc]
545+ @overload
546+ def zfill (self : LiteralString , __width : SupportsIndex ) -> LiteralString : ...
547+ @overload
471548 def zfill (self , __width : SupportsIndex ) -> str : ... # type: ignore[misc]
472549 @staticmethod
473550 @overload
474551 def maketrans (__x : dict [int , _T ] | dict [str , _T ] | dict [str | int , _T ]) -> dict [int , _T ]: ...
475552 @staticmethod
476553 @overload
477554 def maketrans (__x : str , __y : str , __z : str | None = ...) -> dict [int , int | None ]: ...
555+ @overload
556+ def __add__ (self : LiteralString , __s : LiteralString ) -> LiteralString : ...
557+ @overload
478558 def __add__ (self , __s : str ) -> str : ... # type: ignore[misc]
479559 # Incompatible with Sequence.__contains__
480560 def __contains__ (self , __o : str ) -> bool : ... # type: ignore[override]
481561 def __eq__ (self , __x : object ) -> bool : ...
482562 def __ge__ (self , __x : str ) -> bool : ...
483563 def __getitem__ (self , __i : SupportsIndex | slice ) -> str : ...
484564 def __gt__ (self , __x : str ) -> bool : ...
565+ @overload
566+ def __iter__ (self : LiteralString ) -> Iterator [LiteralString ]: ...
567+ @overload
485568 def __iter__ (self ) -> Iterator [str ]: ... # type: ignore[misc]
486569 def __le__ (self , __x : str ) -> bool : ...
487570 def __len__ (self ) -> int : ...
488571 def __lt__ (self , __x : str ) -> bool : ...
572+ @overload
573+ def __mod__ (self : LiteralString , __x : LiteralString | tuple [LiteralString , ...]) -> LiteralString : ...
574+ @overload
489575 def __mod__ (self , __x : Any ) -> str : ... # type: ignore[misc]
576+ @overload
577+ def __mul__ (self : LiteralString , __n : SupportsIndex ) -> LiteralString : ...
578+ @overload
490579 def __mul__ (self , __n : SupportsIndex ) -> str : ... # type: ignore[misc]
491580 def __ne__ (self , __x : object ) -> bool : ...
581+ @overload
582+ def __rmul__ (self : LiteralString , __n : SupportsIndex ) -> LiteralString : ...
583+ @overload
492584 def __rmul__ (self , __n : SupportsIndex ) -> str : ... # type: ignore[misc]
493585 def __getnewargs__ (self ) -> tuple [str ]: ...
494586
@@ -1565,11 +1657,11 @@ _SupportsSumNoDefaultT = TypeVar("_SupportsSumNoDefaultT", bound=_SupportsSumWit
15651657# Instead, we special-case the most common examples of this: bool and literal integers.
15661658if sys .version_info >= (3 , 8 ):
15671659 @overload
1568- def sum (__iterable : Iterable [bool ], start : int = ...) -> int : ... # type: ignore[misc]
1660+ def sum (__iterable : Iterable [bool | _LiteralInteger ], start : int = ...) -> int : ... # type: ignore[misc]
15691661
15701662else :
15711663 @overload
1572- def sum (__iterable : Iterable [bool ], __start : int = ...) -> int : ... # type: ignore[misc]
1664+ def sum (__iterable : Iterable [bool | _LiteralInteger ], __start : int = ...) -> int : ... # type: ignore[misc]
15731665
15741666@overload
15751667def sum (__iterable : Iterable [_SupportsSumNoDefaultT ]) -> _SupportsSumNoDefaultT | Literal [0 ]: ...
0 commit comments