Repository: matplotlib/matplotlib
File: lib/matplotlib/font_manager.pyi (Python)

Code before:
class FontEntry:
    fname: str = ...
    name: str = ...
    style: str = ...
    variant: str = ...
    weight: str | int = ...
    stretch: str = ...
    size: str = ...
    def _repr_html_(self) -> str: ...
    def _repr_png_(self) -> bytes: ...

def ttfFontProperty(font: ft2font.FT2Font) -> FontEntry: ...
def afmFontProperty(fontpath: str, font: AFM) -> FontEntry: ...

class FontProperties:
    def __init__(
        self,
        family: str | Iterable[str] | None = ...,
        style: Literal["normal", "italic", "oblique"] | None = ...,
        variant: Literal["normal", "small-caps"] | None = ...,
        weight: int | str | None = ...,
        stretch: int | str | None = ...,
        size: float | str | None = ...,
        fname: str | os.PathLike | Path | None = ...,
        math_fontfamily: str | None = ...,
        features: list[str] | None = ...,
    ) -> None: ...
    def __hash__(self) -> int: ...
    def __eq__(self, other: object) -> bool: ...
    def get_family(self) -> list[str]: ...
    def get_name(self) -> str: ...
    def get_style(self) -> Literal["normal", "italic", "oblique"]: ...
    def get_variant(self) -> Literal["normal", "small-caps"]: ...
    def get_weight(self) -> int | str: ...
    def get_stretch(self) -> int | str: ...
    def get_size(self) -> float: ...
    def get_file(self) -> str | bytes | None: ...
    def get_fontconfig_pattern(self) -> dict[str, list[Any]]: ...
    def set_family(self, family: str | Iterable[str] | None) -> None: ...
    def set_style(
        self, style: Literal["normal", "italic", "oblique"] | None
    ) -> None: ...
    def set_variant(self, variant: Literal["normal", "small-caps"] | None) -> None: ...
    def set_weight(self, weight: int | str | None) -> None: ...
    def set_stretch(self, stretch: int | str | None) -> None: ...
    def set_size(self, size: float | str | None) -> None: ...
    def set_file(self, file: str | os.PathLike | Path | None) -> None: ...
    def set_fontconfig_pattern(self, pattern: str) -> None: ...
    def get_math_fontfamily(self) -> str: ...
    def set_math_fontfamily(self, fontfamily: str | None) -> None: ...
    def get_features(self) -> tuple[str, ...]: ...

Review comment (suggestion):
```suggestion
        features: tuple[str] | list[str] | None = ...,
```

Code after:
class FontEntry:
    fname: str = ...
    name: str = ...
    style: str = ...
    variant: str = ...
    weight: str | int = ...
    stretch: str = ...
    size: str = ...
    def _repr_html_(self) -> str: ...
    def _repr_png_(self) -> bytes: ...

def ttfFontProperty(font: ft2font.FT2Font) -> FontEntry: ...
def afmFontProperty(fontpath: str, font: AFM) -> FontEntry: ...

class FontProperties:
    def __init__(
        self,
        family: str | Iterable[str] | None = ...,
        style: Literal["normal", "italic", "oblique"] | None = ...,
        variant: Literal["normal", "small-caps"] | None = ...,
        weight: int | str | None = ...,
        stretch: int | str | None = ...,
        size: float | str | None = ...,
        fname: str | os.PathLike | None = ...,
        math_fontfamily: str | None = ...,
    ) -> None: ...
    def __hash__(self) -> int: ...
    def __eq__(self, other: object) -> bool: ...
    def get_family(self) -> list[str]: ...
    def get_name(self) -> str: ...
    def get_style(self) -> Literal["normal", "italic", "oblique"]: ...
    def get_variant(self) -> Literal["normal", "small-caps"]: ...
    def get_weight(self) -> int | str: ...
    def get_stretch(self) -> int | str: ...
    def get_size(self) -> float: ...
    def get_file(self) -> str | bytes | None: ...
    def get_fontconfig_pattern(self) -> dict[str, list[Any]]: ...
    def set_family(self, family: str | Iterable[str] | None) -> None: ...
    def set_style(
        self, style: Literal["normal", "italic", "oblique"] | None
    ) -> None: ...
    def set_variant(self, variant: Literal["normal", "small-caps"] | None) -> None: ...
    def set_weight(self, weight: int | str | None) -> None: ...
    def set_stretch(self, stretch: int | str | None) -> None: ...
    def set_size(self, size: float | str | None) -> None: ...
    def set_file(self, file: str | os.PathLike | None) -> None: ...
    def set_fontconfig_pattern(self, pattern: str) -> None: ...
    def get_math_fontfamily(self) -> str: ...
    def set_math_fontfamily(self, fontfamily: str | None) -> None: ...
    def copy(self) -> FontProperties: ...
    # Aliases