Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions stubs/colour/METADATA.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
version = "0.1.5"
upstream-repository = "https://github.com/vaab/colour"
119 changes: 119 additions & 0 deletions stubs/colour/colour.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
import re
from collections.abc import Callable, Generator, Hashable
from typing import Any, Final, Protocol, final, overload, type_check_only
from typing_extensions import Self

FLOAT_ERROR: Final = 0.0000005

RGB_TO_COLOR_NAMES: Final[dict[tuple[int, int, int], list[str]]]

COLOR_NAME_TO_RGB: Final[dict[list[str], tuple[int, int, int]]]

LONG_HEX_COLOR: Final[re.Pattern[str]]
SHORT_HEX_COLOR: Final[re.Pattern[str]]

@final
class C_HSL:
def __getattr__(self, value: str) -> tuple[float, float, float]: ...

@final
class C_RGB:
def __getattr__(self, value: str) -> tuple[float, float, float]: ...

@final
class C_HEX:
def __getattr__(self, value: str) -> str: ...

HSL: Final[C_HSL]
RGB: Final[C_RGB]
HEX: Final[C_HEX]

def hsl2rgb(hsl: tuple[float, float, float]) -> tuple[float, float, float]: ...
def rgb2hsl(rgb: tuple[float, float, float]) -> tuple[float, float, float]: ...
def _hue2rgb(v1: float, v2: float, vH: float) -> float: ...
def rgb2hex(rgb: tuple[float, float, float], force_long: bool = False) -> str: ...
def hex2rgb(str_rgb: str) -> tuple[float, float, float]: ...
def hex2web(hex: str) -> str: ...
def web2hex(web: str, force_long: bool = False) -> str: ...

hsl2hex: Final[Callable[[tuple[float, float, float]], str]]
hex2hsl: Final[Callable[[str], tuple[float, float, float]]]
rgb2web: Final[Callable[[tuple[float, float, float]], str]]
web2rgb: Final[Callable[[str], tuple[float, float, float]]]
web2hsl: Final[Callable[[str], tuple[float, float, float]]]
hsl2web: Final[Callable[[tuple[float, float, float]], str]]

def color_scale(
begin_hsl: tuple[float, float, float], end_hsl: tuple[float, float, float], nb: int
) -> tuple[float, float, float]: ...
def RGB_color_picker(obj: object) -> Color: ...

@overload
def hash_or_str(obj: Hashable) -> int: ...
@overload
def hash_or_str(obj: object) -> str: ... # type: ignore[overload-cannot-match]

class Color:
def __init__(
self,
color: Self | str | None = None,
pick_for: object | None = None,
picker: Callable[[object], Color] = ...,
pick_key: Callable[[object], int | str] = ...,
**kwargs: Any, # additional arguments become attributes
) -> None: ...
def get_hsl(self) -> tuple[float, float, float]: ...
def get_hex(self) -> str: ...
def get_hex_l(self) -> str: ...
def get_rgb(self) -> tuple[float, float, float]: ...
def get_hue(self) -> float: ...
def get_saturation(self) -> float: ...
def get_luminance(self) -> float: ...
def get_red(self) -> float: ...
def get_green(self) -> float: ...
def get_blue(self) -> float: ...
def get_web(self) -> str: ...
def set_hsl(self, value: float) -> None: ...
def set_rgb(self, value: float) -> None: ...
def set_hue(self, value: float) -> None: ...
def set_saturation(self, value: float) -> None: ...
def set_luminance(self, value: float) -> None: ...
def set_red(self, value: float) -> None: ...
def set_green(self, value: float) -> None: ...
def set_blue(self, value: float) -> None: ...
def set_hex(self, value: str) -> None: ...

set_hex_l: Callable[[Self, str], None] = ...

def set_web(self, value: str) -> None: ...

hsl = property(get_hsl, set_hsl)
hex = property(get_hex, set_hex)
hex_l = property(get_hex_l, set_hex_l)
rgb = property(get_rgb, set_rgb)
hue = property(get_hue, set_hue)
saturation = property(get_saturation, set_saturation)
luminance = property(get_luminance, set_luminance)
red = property(get_red, set_red)
green = property(get_green, set_green)
blue = property(get_blue, set_blue)
web = property(get_web, set_web)

def range_to(self, value: str | Color | None, steps: int) -> Generator[Color]: ...
def __eq__(self, other: object) -> bool: ...

RGB_equivalence: Final[Callable[[Color, Color], bool]]
HSL_equivalence: Final[Callable[[Color, Color], bool]]

@type_check_only
class _ColorFactory(Protocol):
def __call__(
self,
color: Self | str | None = None,
pick_for: object | None = None,
picker: Callable[[object], Color] = ...,
pick_key: Callable[[object], int | str] = ...,
**kwargs: Any, # additional arguments become attributes on the returned `Color` instance
) -> Color: ...

def make_color_factory(**kwargs_defaults: Any) -> _ColorFactory: ... # sets default kwargs for the returned `Color` factory