Skip to content

Commit 527d724

Browse files
[networkx] Add annotations for MultiDiGraph (#13319)
1 parent a1c185b commit 527d724

File tree

2 files changed

+41
-9
lines changed

2 files changed

+41
-9
lines changed

stubs/networkx/networkx/classes/multidigraph.pyi

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ class MultiDiGraph(MultiGraph[_Node], DiGraph[_Node]):
1313
@cached_property
1414
def pred(self) -> MultiAdjacencyView[_Node, _Node, dict[str, Incomplete]]: ...
1515
@cached_property
16+
def edges(self) -> OutMultiEdgeView[_Node]: ...
17+
@cached_property
1618
def out_edges(self) -> OutMultiEdgeView[_Node]: ...
1719
@cached_property
1820
def in_edges(self) -> OutMultiEdgeView[_Node]: ...

stubs/networkx/networkx/classes/reportviews.pyi

+39-9
Original file line numberDiff line numberDiff line change
@@ -110,36 +110,66 @@ class EdgeView(OutEdgeView[_Node]): ...
110110
class InEdgeView(OutEdgeView[_Node]): ...
111111

112112
class OutMultiEdgeView(OutEdgeView[_Node]):
113+
def __iter__(self) -> Iterator[tuple[_Node, _Node, Incomplete]]: ... # type: ignore[override]
114+
def __getitem__(self, e: tuple[_Node, _Node, Incomplete]) -> dict[str, Any]: ... # type: ignore[override]
113115
@overload # type: ignore[override] # Has an additional `keys` keyword argument
114-
def __call__(
116+
def __call__( # type: ignore[overload-overlap]
115117
self, nbunch: None = None, data: Literal[False] = False, *, default: Unused = None, keys: Literal[True]
116118
) -> Self: ...
117119
@overload
118120
def __call__(
119-
self, nbunch: _NBunch[_Node], data: Literal[True], *, default: None = None, keys: bool = False
120-
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, dict[str, Incomplete]]]: ...
121+
self, nbunch: _NBunch[_Node] = None, data: Literal[False] = False, *, default: None = None, keys: Literal[False] = False
122+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node]]: ...
123+
@overload
124+
def __call__(
125+
self, nbunch: _Node | Iterable[_Node], data: Literal[False] = False, *, default: None = None, keys: Literal[True]
126+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, Incomplete]]: ...
127+
@overload
128+
def __call__(
129+
self, nbunch: _NBunch[_Node] = None, *, data: Literal[True], default: None = None, keys: Literal[True]
130+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, Incomplete, dict[str, Incomplete]]]: ...
131+
@overload
132+
def __call__(
133+
self, nbunch: _NBunch[_Node], data: Literal[True], *, default: None = None, keys: Literal[True]
134+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, Incomplete, dict[str, Incomplete]]]: ...
121135
@overload
122136
def __call__(
123-
self, nbunch: _NBunch[_Node] = None, *, data: Literal[True], default: None = None, keys: bool = False
137+
self, nbunch: _NBunch[_Node] = None, *, data: Literal[True], default: None = None, keys: Literal[False] = False
124138
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, dict[str, Incomplete]]]: ...
125139
@overload
126140
def __call__(
127-
self, nbunch: _NBunch[_Node], data: str, *, default: _U | None = None, keys: bool = False
141+
self, nbunch: _NBunch[_Node], data: str, *, default: _U | None = None, keys: Literal[False] = False
128142
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, _U]]: ...
129143
@overload
130144
def __call__(
131-
self, nbunch: _NBunch[_Node] = None, *, data: str, default: _U | None = None, keys: bool = False
145+
self, nbunch: _NBunch[_Node] = None, *, data: str, default: _U | None = None, keys: Literal[True]
146+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, Incomplete, _U]]: ...
147+
@overload
148+
def __call__(
149+
self, nbunch: _NBunch[_Node] = None, *, data: str, default: _U | None = None, keys: Literal[False] = False
132150
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, _U]]: ...
151+
@overload # type: ignore[override]
152+
def data(self, data: Literal[False], default: Unused = None, nbunch: None = None, *, keys: Literal[True]) -> Self: ...
133153
@overload
134-
def data(self, data: Literal[False], default: Unused = None, nbunch: None = None, keys: Literal[False] = False) -> Self: ...
154+
def data(
155+
self, data: Literal[False], default: None = None, nbunch: _NBunch[_Node] = None, keys: Literal[False] = False
156+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node]]: ...
135157
@overload
136158
def data(
137-
self, data: Literal[True] = True, default: None = None, nbunch: _NBunch[_Node] = None, keys: bool = False
159+
self, data: Literal[True] = True, default: None = None, nbunch: _NBunch[_Node] = None, keys: Literal[False] = False
138160
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, dict[str, Incomplete]]]: ...
139161
@overload
140162
def data(
141-
self, data: str, default: _U | None = None, nbunch: _NBunch[_Node] = None, keys: bool = False
163+
self, data: Literal[True] = True, default: None = None, nbunch: _NBunch[_Node] = None, *, keys: Literal[True]
164+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, Incomplete, dict[str, Incomplete]]]: ...
165+
@overload
166+
def data(
167+
self, data: str, default: _U | None = None, nbunch: _NBunch[_Node] = None, keys: Literal[False] = False
142168
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, _U]]: ...
169+
@overload
170+
def data(
171+
self, data: str, default: _U | None = None, nbunch: _NBunch[_Node] = None, *, keys: Literal[True]
172+
) -> OutMultiEdgeDataView[_Node, tuple[_Node, _Node, Incomplete, _U]]: ...
143173

144174
class MultiEdgeView(OutMultiEdgeView[_Node]): ...
145175
class InMultiEdgeView(OutMultiEdgeView[_Node]): ...

0 commit comments

Comments
 (0)