Skip to content

Instantly share code, notes, and snippets.

@mypy-play
mypy-play / main.py
Created September 23, 2025 19:04
Shared via mypy Playground
from enum import StrEnum
from collections.abc import Set
class E(StrEnum):
ABC = "ABC"
XYZ = "XYZ"
def handle(values: Set[E]) -> None:
print(values)
@mypy-play
mypy-play / main.py
Created September 23, 2025 18:06
Shared via mypy Playground
import asyncio
from functools import wraps
def deco(func):
@wraps(func)
async def wrapper(*args, **kwargs):
return await func(*args, **kwargs)
return wrapper
@deco
@mypy-play
mypy-play / main.py
Created September 23, 2025 17:58
Shared via mypy Playground
from typing import TypeVar, Generic
class GameNode(Generic['GameNodeType']):
pass
GameNodeType = TypeVar('GameNodeType', bound=GameNode, default=GameNode)
@mypy-play
mypy-play / main.py
Created September 23, 2025 16:21
Shared via mypy Playground
address = {
"address1": data.get("address1"),
"address2": data.get("address2"),
"address3": data.get("address3"),
"town": data.get("town"),
"postcode": norm_postcode(data.get("postcode")),
}
if not any(address.values()):
address = None
@mypy-play
mypy-play / main.py
Created September 23, 2025 15:57
Shared via mypy Playground
from typing import *
def run_func(func: Callable[..., Any], *args: Any, print_hi: bool = False, **kwargs: Any) -> Any:
if print_hi:
print("hi")
return func(*args, **kwargs)
def foo[**P, R](func: Callable[P, R], *args: P.args, **kwargs: P.kwargs) -> R:
return run_func(func, *args, **kwargs)
@mypy-play
mypy-play / main.py
Created September 23, 2025 15:40
Shared via mypy Playground
# https://github.com/python/mypy/issues/18481
def spam(text: str, dry: bool) -> None:
print(text, dry)
spam(**{'text': 'spam', 'dry': True})
# main.py:4: error: Argument 1 to "spam" has incompatible type "**dict[str, object]"; expected "str" [arg-type]
# main.py:4: error: Argument 1 to "spam" has incompatible type "**dict[str, object]"; expected "bool" [arg-type]
@mypy-play
mypy-play / main.py
Created September 23, 2025 15:39
Shared via mypy Playground
def spam(text: str, dry: bool) -> None:
print(text, dry)
spam(**{'text': 'spam', 'dry': True})
@mypy-play
mypy-play / main.py
Created September 23, 2025 14:32
Shared via mypy Playground
from typing import Any
class Array[float, *ShapeTs]: ...
type Float2D = Array[float, *tuple[int, int]] # or Array[float, int, int]
type FloatND = Array[float, *tuple[Any, ...]]
def from_2d(a: Float2D) -> FloatND:
return a # mypy: ✅, pyright: ✅
@mypy-play
mypy-play / main.py
Created September 23, 2025 14:31
Shared via mypy Playground
from typing import Any
class Array[*ShapeTs](tuple[*ShapeTs]): ...
type Float2D = Array[*tuple[int, int]] # or Array[int, int]
type FloatND = Array[*tuple[Any, ...]]
def from_2d(a: Float2D) -> FloatND:
return a # mypy: ✅, pyright: ✅
@mypy-play
mypy-play / main.py
Created September 23, 2025 14:17
Shared via mypy Playground
from typing import Any
class Array[DataT, *ShapeTs](tuple[*ShapeTs]): ...
type Float2D = Array[float, *tuple[int, int]] # or Array[float, int, int]
type FloatND = Array[float, *tuple[Any, ...]]
def from_2d(a: Float2D) -> FloatND:
return a # mypy: ✅, pyright: ✅