41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
|
from os import PathLike
|
||
|
from typing import IO, Callable, Sequence, Tuple, Union
|
||
|
|
||
|
from typing_extensions import Literal as Literal
|
||
|
from typing_extensions import Protocol
|
||
|
|
||
|
from pygame.color import Color
|
||
|
from pygame.math import Vector2
|
||
|
from pygame.rect import Rect
|
||
|
|
||
|
# For functions that take a file name
|
||
|
AnyPath = Union[str, bytes, PathLike[str], PathLike[bytes]]
|
||
|
|
||
|
# Most pygame functions that take a file argument should be able to handle
|
||
|
# a FileArg type
|
||
|
FileArg = Union[AnyPath, IO[bytes], IO[str]]
|
||
|
|
||
|
Coordinate = Union[Tuple[float, float], Sequence[float], Vector2]
|
||
|
|
||
|
# This typehint is used when a function would return an RGBA tuble
|
||
|
RGBAOutput = Tuple[int, int, int, int]
|
||
|
ColorValue = Union[Color, int, str, Tuple[int, int, int], RGBAOutput, Sequence[int]]
|
||
|
from typing import Union
|
||
|
|
||
|
def my_function(my_var: Union[int, float, complex]) -> None:
|
||
|
print(my_var)
|
||
|
_CanBeRect = Union[
|
||
|
Rect,
|
||
|
Tuple[Union[float, int], Union[float, int], Union[float, int], Union[float, int]],
|
||
|
Tuple[Coordinate, Coordinate],
|
||
|
Sequence[Union[float, int]],
|
||
|
Sequence[Coordinate],
|
||
|
]
|
||
|
|
||
|
class _HasRectAttribute(Protocol):
|
||
|
# An object that has a rect attribute that is either a rect, or a function
|
||
|
# that returns a rect confirms to the rect protocol
|
||
|
rect: Union[RectValue, Callable[[], RectValue]]
|
||
|
|
||
|
RectValue = Union[_CanBeRect, _HasRectAttribute]
|