Skip to content

Instantly share code, notes, and snippets.

@mypy-play
mypy-play / main.py
Created June 6, 2024 14:01
Shared via mypy Playground
from pathlib import Path
import os
base = os.path.join("gitsb", "repo")
target = "sdr"
params = {
"target": str(),
"destination": str(),
@mypy-play
mypy-play / main.py
Created June 6, 2024 13:56
Shared via mypy Playground
import logging
import functools
def add_logging(f):
@functools.wraps(f)
def inner(*args, **kwargs):
logging.info(f"call | {f.__name__}: {args} , {kwargs}")
result = f(*args, **kwargs)
logging.info(f"finish | {f.__name__} returned {result}")
return result
@mypy-play
mypy-play / main.py
Created June 6, 2024 10:07
Shared via mypy Playground
import typing
class NDArray:
shape: tuple
def __setitem__(self, idx: NDArray, v: object) -> None: ...
def random(x: object) -> NDArray: return NDArray()
Image = typing.NewType('Image', NDArray)
Mask = typing.NewType('Mask', NDArray)
@mypy-play
mypy-play / main.py
Created June 6, 2024 10:03
Shared via mypy Playground
import typing
import numpy as np
Image = typing.NewType('Image', np.ndarray)
Mask = typing.NewType('Mask', np.ndarray)
image_array = np.random.random((50, 50))
image = Image(array)
mask_array = np.random.random((50, 50))
@mypy-play
mypy-play / main.py
Created June 6, 2024 09:42
Shared via mypy Playground
import typing
class NDArray:
shape: tuple
def __setitem__(self, idx: NDArray, v: object) -> None: ...
def random(x: object) -> NDArray: return NDArray()
Image = typing.NewType('Image', NDArray)
Mask = typing.NewType('Mask', NDArray)
@mypy-play
mypy-play / main.py
Created June 6, 2024 08:20
Shared via mypy Playground
from typing import Literal
class Meta(type):
def __bool__(self) -> Literal[True]:
return True
class Foo(metaclass=Meta):
pass
class Bar:
@mypy-play
mypy-play / main.py
Created June 6, 2024 01:58
Shared via mypy Playground
from typing import overload, Literal
@overload
def x(a: int = 5, t: Literal[True] = True, b: int = 5) -> int: ...
@overload
def x(a: int = 5, *, t: Literal[False], b: int = 5) -> str: ...
@overload
def x(a: int, t: Literal[False], b: int = 5) -> str: ...
@mypy-play
mypy-play / main.py
Created June 5, 2024 22:50
Shared via mypy Playground
from typing import TypedDict, Unpack
def my_func_1(arg1: int, arg2: bool, arg3: str):
pass
class MyFuncArgs(TypedDict):
arg1: int
arg2: bool
arg3: str
@mypy-play
mypy-play / main.py
Created June 5, 2024 22:16
Shared via mypy Playground
from __future__ import annotations
def foo(x: list[list[int]]) -> list[int] | None:
reveal_type(min(x, key=len, default=None)) # N: Revealed type is "Union[builtins.list[builtins.int], None]"
return min(x, key=len, default=None) # E: Argument "key" to "min" has incompatible type "Callable[[Sized], int]"; expected "Callable[[list[int] | None], SupportsDunderLT[Any] | SupportsDunderGT[Any]]" [arg-type]
foos: list[list[int]]
reveal_type(min(foos, key=len, default=None)) # N: Revealed type is "Union[builtins.list[builtins.int], None]"
min_foo: list[int] | None = min(foos, key=len, default=None) # E: Argument "key" to "min" has incompatible type "Callable[[Sized], int]"; expected "Callable[[list[int] | None], SupportsDunderLT[Any] | SupportsDunderGT[Any]]" [arg-type]
@mypy-play
mypy-play / main.py
Created June 5, 2024 20:33
Shared via mypy Playground
rom abc import ABC, abstractmethod
from typing import Union
class Task(ABC):
@abstractmethod
def run(self) -> None:
return