Skip to content

Commit 55f34ca

Browse files
committed
typing: Gio: Make ListModel and ListStore generic
1 parent 965d868 commit 55f34ca

File tree

1 file changed

+42
-20
lines changed

1 file changed

+42
-20
lines changed

src/gi-stubs/repository/Gio.pyi

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ from typing import Optional
66
from typing import Sequence
77
from typing import Tuple
88
from typing import Type
9+
from typing import TypeVar
910

1011
from gi.repository import GLib
1112
from gi.repository import GObject
1213

14+
ItemType = TypeVar("ItemType")
15+
1316
DBUS_METHOD_INVOCATION_HANDLED: bool = True
1417
DBUS_METHOD_INVOCATION_UNHANDLED: bool = False
1518
DEBUG_CONTROLLER_EXTENSION_POINT_NAME: str = "gio-debug-controller"
@@ -4035,45 +4038,64 @@ class InputVector(GObject.GPointer):
40354038
size: int = ...
40364039

40374040
# override
4038-
class ListModel(GObject.GInterface):
4039-
def __contains__(self, item: object) -> bool: ...
4040-
def __getitem__(self, position: int) -> GObject.Object: ...
4041-
def __iter__(self) -> Iterator[GObject.Object]: ...
4041+
class ListModel(GObject.GInterface, Generic[ItemType]):
4042+
# override
4043+
def __contains__(self, item: ItemType) -> bool: ...
4044+
# override
4045+
def __getitem__(self, position: int) -> ItemType: ...
4046+
# override
4047+
def __iter__(self) -> Iterator[ItemType]: ...
40424048
def __len__(self) -> int: ...
4043-
def get_item(self, position: int) -> Optional[GObject.Object]: ...
4044-
def get_item_type(self) -> Type: ...
4049+
# override
4050+
def get_item(self, position: int) -> Optional[ItemType]: ...
4051+
# override
4052+
def get_item_type(self) -> Type[ItemType]: ...
40454053
def get_n_items(self) -> int: ...
40464054
def items_changed(self, position: int, removed: int, added: int) -> None: ...
40474055

4048-
class ListModelInterface(GObject.GPointer):
4056+
# override
4057+
class ListModelInterface(GObject.GPointer, Generic[ItemType]):
40494058
g_iface: GObject.TypeInterface = ...
4050-
get_item_type: Callable[[ListModel], Type] = ...
4051-
get_n_items: Callable[[ListModel], int] = ...
4052-
get_item: Callable[[ListModel, int], Optional[GObject.Object]] = ...
4059+
# override
4060+
get_item_type: Callable[[ListModel[ItemType]], Type[ItemType]] = ...
4061+
# override
4062+
get_n_items: Callable[[ListModel[ItemType]], int] = ...
4063+
# override
4064+
get_item: Callable[[ListModel[ItemType], int], Optional[ItemType]] = ...
40534065

4054-
class ListStore(GObject.Object, ListModel):
4066+
# override
4067+
class ListStore(GObject.Object, Generic[ItemType], ListModel[ItemType]):
40554068
class Props:
4056-
item_type: Type
4069+
# override
4070+
item_type: Type[ItemType]
40574071
n_items: int
40584072
props: Props = ...
4059-
def __init__(self, item_type: Type = ...): ...
4060-
def append(self, item: GObject.Object) -> None: ...
4061-
def find(self, item: GObject.Object) -> Tuple[bool, int]: ...
4073+
# override
4074+
def __init__(self, item_type: Type[ItemType] = ...): ...
4075+
# override
4076+
def append(self, item: ItemType) -> None: ...
4077+
# override
4078+
def find(self, item: ItemType) -> Tuple[bool, int]: ...
4079+
# override
40624080
def find_with_equal_func(
4063-
self, item: GObject.Object, equal_func: Callable[[None, None], bool]
4081+
self, item: ItemType, equal_func: Callable[[None, None], bool]
40644082
) -> Tuple[bool, int]: ...
4083+
# override
40654084
def find_with_equal_func_full(
4066-
self, item: GObject.Object, equal_func: Callable[..., bool], *user_data: Any
4085+
self, item: ItemType, equal_func: Callable[..., bool], *user_data: Any
40674086
) -> Tuple[bool, int]: ...
4068-
def insert(self, position: int, item: GObject.Object) -> None: ...
4087+
# override
4088+
def insert(self, position: int, item: ItemType) -> None: ...
40694089
def insert_sorted(self, item, compare_func, *user_data): ... # FIXME Function
4090+
# override
40704091
@classmethod
4071-
def new(cls, item_type: Type) -> ListStore: ...
4092+
def new(cls, item_type: Type[ItemType]) -> ListStore[ItemType]: ...
40724093
def remove(self, position: int) -> None: ...
40734094
def remove_all(self) -> None: ...
40744095
def sort(self, compare_func, *user_data): ... # FIXME Function
4096+
# override
40754097
def splice(
4076-
self, position: int, n_removals: int, additions: Sequence[GObject.Object]
4098+
self, position: int, n_removals: int, additions: Sequence[ItemType]
40774099
) -> None: ...
40784100

40794101
class ListStoreClass(GObject.GPointer):

0 commit comments

Comments
 (0)