Skip to content

Instantly share code, notes, and snippets.

@mypy-play
mypy-play / main.py
Created November 14, 2025 01:37
Shared via mypy Playground
from typing import Any, Generic, TypeVarTuple, TypeVar, Concatenate, Tuple, Unpack, ParamSpec, Optional, TypedDict, Required, NotRequired
T = TypeVar('T')
TT = TypeVarTuple('TT')
TTF = TypeVarTuple('TTF')
P = ParamSpec('P')
class Base():
@classmethod
def do(cls, *args, **kwargs):
@mypy-play
mypy-play / main.py
Created November 13, 2025 23:04
Shared via mypy Playground
from typing import Never
def very_sound_function() -> float:
y: list[Never] = []
return next(iter(y)).startswith("xyz") # type checker approved!
# ^^^^^^^^^^^^^ this may have been a good place to error
# if we really believed Never was uninhabited.
def make_never() -> Never:
while True:
@mypy-play
mypy-play / main.py
Created November 13, 2025 23:03
Shared via mypy Playground
from typing import Never
def foo() -> Never:
while True:
pass
def baz(arg: object) -> None: pass
def bar() -> None:
return baz(foo()) # undetected unreachable code
@mypy-play
mypy-play / main.py
Created November 13, 2025 22:21
Shared via mypy Playground
from typing import Never
def foo() -> Never:
while True:
pass
def bar() -> tuple[int, ...]:
return (foo(),) # undetected unreachable code
x = bar()
@mypy-play
mypy-play / main.py
Created November 13, 2025 22:20
Shared via mypy Playground
from typing import Never
def foo() -> Never:
while True:
pass
def bar() -> tuple[int, ...]:
return (foo(),) # undetected unreachable
x = bar()
@mypy-play
mypy-play / main.py
Created November 13, 2025 20:38
Shared via mypy Playground
import sys
from typing import final
@final
class A: ...
@final
class B: ...
if sys.version_info >= (3, 14):
@mypy-play
mypy-play / main.py
Created November 13, 2025 20:12
Shared via mypy Playground
# mypy: disable-error-code=empty-body
from typing import Protocol, Any
from typing_extensions import Never
from collections.abc import Callable
class KWOnlyFactory(Protocol):
def __call__(self, cls: type[Any], /, **kwargs: Any) -> Never: ...
class Shape(Protocol):
@mypy-play
mypy-play / main.py
Created November 13, 2025 20:11
Shared via mypy Playground
# mypy: disable-error-code=empty-body
from typing import Protocol, Any
from typing_extensions import Never
from collections.abc import Callable
class Factory(Protocol):
def __call__(self, cls: type[Any], /, **kwargs: Any) -> Never: ...
class Shape(Protocol):
@mypy-play
mypy-play / main.py
Created November 13, 2025 20:09
Shared via mypy Playground
# mypy: disable-error-code=empty-body
from typing import Protocol, Any
from typing_extensions import Never
from collections.abc import Callable
class Factory(Protocol):
def __call__(self, cls: type[Any], /, **kwargs: Any) -> Never: ...
class Shape(Protocol):
@mypy-play
mypy-play / main.py
Created November 13, 2025 17:00
Shared via mypy Playground
from typing import Callable, Generic, Literal, Protocol, Type, overload
from typing_extensions import ParamSpec
P = ParamSpec('P')
class Shape[**P](Protocol):
def __init__(self, *args: P.args, **kwargs: P.kwargs) -> None: ...
def area(self) -> float: ...
def perimeter(self) -> float: ...