@@ -61,6 +61,7 @@ from typing import ( # noqa: Y022
61
61
from typing_extensions import ( # noqa: Y023
62
62
Concatenate ,
63
63
Literal ,
64
+ LiteralString ,
64
65
ParamSpec ,
65
66
Self ,
66
67
TypeAlias ,
@@ -434,19 +435,31 @@ class str(Sequence[str]):
434
435
def __new__ (cls , object : object = ...) -> Self : ...
435
436
@overload
436
437
def __new__ (cls , object : ReadableBuffer , encoding : str = ..., errors : str = ...) -> Self : ...
438
+ @overload
439
+ def capitalize (self : LiteralString ) -> LiteralString : ...
440
+ @overload
437
441
def capitalize (self ) -> str : ... # type: ignore[misc]
442
+ @overload
443
+ def casefold (self : LiteralString ) -> LiteralString : ...
444
+ @overload
438
445
def casefold (self ) -> str : ... # type: ignore[misc]
446
+ @overload
447
+ def center (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
448
+ @overload
439
449
def center (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
440
450
def count (self , x : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
441
451
def encode (self , encoding : str = "utf-8" , errors : str = "strict" ) -> bytes : ...
442
452
def endswith (
443
453
self , __suffix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
444
454
) -> bool : ...
445
455
@overload
446
- def expandtabs (self : str , tabsize : SupportsIndex = 8 ) -> str : ...
456
+ def expandtabs (self : LiteralString , tabsize : SupportsIndex = 8 ) -> LiteralString : ...
447
457
@overload
448
458
def expandtabs (self , tabsize : SupportsIndex = 8 ) -> str : ... # type: ignore[misc]
449
459
def find (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
460
+ @overload
461
+ def format (self : LiteralString , * args : LiteralString , ** kwargs : LiteralString ) -> LiteralString : ...
462
+ @overload
450
463
def format (self , * args : object , ** kwargs : object ) -> str : ...
451
464
def format_map (self , map : _FormatMapMapping ) -> str : ...
452
465
def index (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
@@ -462,32 +475,91 @@ class str(Sequence[str]):
462
475
def isspace (self ) -> bool : ...
463
476
def istitle (self ) -> bool : ...
464
477
def isupper (self ) -> bool : ...
478
+ @overload
479
+ def join (self : LiteralString , __iterable : Iterable [LiteralString ]) -> LiteralString : ...
480
+ @overload
465
481
def join (self , __iterable : Iterable [str ]) -> str : ... # type: ignore[misc]
482
+ @overload
483
+ def ljust (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
484
+ @overload
466
485
def ljust (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
486
+ @overload
487
+ def lower (self : LiteralString ) -> LiteralString : ...
488
+ @overload
467
489
def lower (self ) -> str : ... # type: ignore[misc]
490
+ @overload
491
+ def lstrip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
492
+ @overload
468
493
def lstrip (self , __chars : str | None = None ) -> str : ... # type: ignore[misc]
494
+ @overload
495
+ def partition (self : LiteralString , __sep : LiteralString ) -> tuple [LiteralString , LiteralString , LiteralString ]: ...
496
+ @overload
469
497
def partition (self , __sep : str ) -> tuple [str , str , str ]: ... # type: ignore[misc]
498
+ @overload
499
+ def replace (
500
+ self : LiteralString , __old : LiteralString , __new : LiteralString , __count : SupportsIndex = - 1
501
+ ) -> LiteralString : ...
502
+ @overload
470
503
def replace (self , __old : str , __new : str , __count : SupportsIndex = - 1 ) -> str : ... # type: ignore[misc]
471
504
if sys .version_info >= (3 , 9 ):
505
+ @overload
506
+ def removeprefix (self : LiteralString , __prefix : LiteralString ) -> LiteralString : ...
507
+ @overload
472
508
def removeprefix (self , __prefix : str ) -> str : ... # type: ignore[misc]
509
+ @overload
510
+ def removesuffix (self : LiteralString , __suffix : LiteralString ) -> LiteralString : ...
511
+ @overload
473
512
def removesuffix (self , __suffix : str ) -> str : ... # type: ignore[misc]
474
513
475
514
def rfind (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
476
515
def rindex (self , __sub : str , __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...) -> int : ...
516
+ @overload
517
+ def rjust (self : LiteralString , __width : SupportsIndex , __fillchar : LiteralString = " " ) -> LiteralString : ...
518
+ @overload
477
519
def rjust (self , __width : SupportsIndex , __fillchar : str = " " ) -> str : ... # type: ignore[misc]
520
+ @overload
521
+ def rpartition (self : LiteralString , __sep : LiteralString ) -> tuple [LiteralString , LiteralString , LiteralString ]: ...
522
+ @overload
478
523
def rpartition (self , __sep : str ) -> tuple [str , str , str ]: ... # type: ignore[misc]
524
+ @overload
525
+ def rsplit (self : LiteralString , sep : LiteralString | None = None , maxsplit : SupportsIndex = - 1 ) -> list [LiteralString ]: ...
526
+ @overload
479
527
def rsplit (self , sep : str | None = None , maxsplit : SupportsIndex = - 1 ) -> list [str ]: ... # type: ignore[misc]
528
+ @overload
529
+ def rstrip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
530
+ @overload
480
531
def rstrip (self , __chars : str | None = None ) -> str : ... # type: ignore[misc]
532
+ @overload
533
+ def split (self : LiteralString , sep : LiteralString | None = None , maxsplit : SupportsIndex = - 1 ) -> list [LiteralString ]: ...
534
+ @overload
481
535
def split (self , sep : str | None = None , maxsplit : SupportsIndex = - 1 ) -> list [str ]: ... # type: ignore[misc]
536
+ @overload
537
+ def splitlines (self : LiteralString , keepends : bool = False ) -> list [LiteralString ]: ...
538
+ @overload
482
539
def splitlines (self , keepends : bool = False ) -> list [str ]: ... # type: ignore[misc]
483
540
def startswith (
484
541
self , __prefix : str | tuple [str , ...], __start : SupportsIndex | None = ..., __end : SupportsIndex | None = ...
485
542
) -> bool : ...
543
+ @overload
544
+ def strip (self : LiteralString , __chars : LiteralString | None = None ) -> LiteralString : ...
545
+ @overload
486
546
def strip (self , __chars : str | None = None ) -> str : ... # type: ignore[misc]
547
+ @overload
548
+ def swapcase (self : LiteralString ) -> LiteralString : ...
549
+ @overload
487
550
def swapcase (self ) -> str : ... # type: ignore[misc]
551
+ @overload
552
+ def title (self : LiteralString ) -> LiteralString : ...
553
+ @overload
488
554
def title (self ) -> str : ... # type: ignore[misc]
489
555
def translate (self , __table : _TranslateTable ) -> str : ...
556
+ @overload
557
+ def upper (self : LiteralString ) -> LiteralString : ...
558
+ @overload
490
559
def upper (self ) -> str : ... # type: ignore[misc]
560
+ @overload
561
+ def zfill (self : LiteralString , __width : SupportsIndex ) -> LiteralString : ...
562
+ @overload
491
563
def zfill (self , __width : SupportsIndex ) -> str : ... # type: ignore[misc]
492
564
@staticmethod
493
565
@overload
@@ -498,6 +570,9 @@ class str(Sequence[str]):
498
570
@staticmethod
499
571
@overload
500
572
def maketrans (__x : str , __y : str , __z : str ) -> dict [int , int | None ]: ...
573
+ @overload
574
+ def __add__ (self : LiteralString , __value : LiteralString ) -> LiteralString : ...
575
+ @overload
501
576
def __add__ (self , __value : str ) -> str : ... # type: ignore[misc]
502
577
# Incompatible with Sequence.__contains__
503
578
def __contains__ (self , __key : str ) -> bool : ... # type: ignore[override]
@@ -506,13 +581,25 @@ class str(Sequence[str]):
506
581
def __getitem__ (self , __key : SupportsIndex | slice ) -> str : ...
507
582
def __gt__ (self , __value : str ) -> bool : ...
508
583
def __hash__ (self ) -> int : ...
584
+ @overload
585
+ def __iter__ (self : LiteralString ) -> Iterator [LiteralString ]: ...
586
+ @overload
509
587
def __iter__ (self ) -> Iterator [str ]: ... # type: ignore[misc]
510
588
def __le__ (self , __value : str ) -> bool : ...
511
589
def __len__ (self ) -> int : ...
512
590
def __lt__ (self , __value : str ) -> bool : ...
591
+ @overload
592
+ def __mod__ (self : LiteralString , __value : LiteralString | tuple [LiteralString , ...]) -> LiteralString : ...
593
+ @overload
513
594
def __mod__ (self , __value : Any ) -> str : ...
595
+ @overload
596
+ def __mul__ (self : LiteralString , __value : SupportsIndex ) -> LiteralString : ...
597
+ @overload
514
598
def __mul__ (self , __value : SupportsIndex ) -> str : ... # type: ignore[misc]
515
599
def __ne__ (self , __value : object ) -> bool : ...
600
+ @overload
601
+ def __rmul__ (self : LiteralString , __value : SupportsIndex ) -> LiteralString : ...
602
+ @overload
516
603
def __rmul__ (self , __value : SupportsIndex ) -> str : ... # type: ignore[misc]
517
604
def __getnewargs__ (self ) -> tuple [str ]: ...
518
605
@@ -1593,7 +1680,7 @@ _SupportsSumNoDefaultT = TypeVar("_SupportsSumNoDefaultT", bound=_SupportsSumWit
1593
1680
# without creating many false-positive errors (see #7578).
1594
1681
# Instead, we special-case the most common examples of this: bool and literal integers.
1595
1682
@overload
1596
- def sum (__iterable : Iterable [bool ], start : int = 0 ) -> int : ... # type: ignore[overload-overlap]
1683
+ def sum (__iterable : Iterable [bool | _LiteralInteger ], start : int = 0 ) -> int : ... # type: ignore[overload-overlap]
1597
1684
@overload
1598
1685
def sum (__iterable : Iterable [_SupportsSumNoDefaultT ]) -> _SupportsSumNoDefaultT | Literal [0 ]: ...
1599
1686
@overload
0 commit comments