1
- from collections .abc import Hashable , Mapping
1
+ from collections .abc import Hashable
2
2
from functools import cached_property
3
3
from typing import Any , ClassVar , overload
4
4
from typing_extensions import TypeAlias , TypeVar
@@ -10,31 +10,35 @@ from networkx.classes.reportviews import MultiEdgeView
10
10
11
11
_MultiEdge : TypeAlias = tuple [_Node , _Node , int ] # noqa: Y047
12
12
13
- _Any = TypeVar ("_Any" )
13
+ _DefaultT = TypeVar ("_DefaultT" )
14
+ _KeyT = TypeVar ("_KeyT" , bound = Hashable )
14
15
15
16
__all__ = ["MultiGraph" ]
16
17
17
18
class MultiGraph (Graph [_Node ]):
18
19
edge_key_dict_factory : ClassVar [_MapFactory ]
19
20
def __init__ (self , incoming_graph_data = None , multigraph_input : bool | None = None , ** attr : Any ) -> None : ...
20
21
@cached_property
21
- def adj (self ) -> MultiAdjacencyView [_Node , _Node , Mapping [str , Any ]]: ...
22
+ def adj (self ) -> MultiAdjacencyView [_Node , _Node , dict [str , Any ]]: ... # data can be any type
22
23
def new_edge_key (self , u : _Node , v : _Node ) -> int : ...
23
- def add_edge ( # type: ignore[override]
24
- self , u_for_edge : _Node , v_for_edge : _Node , key : Hashable | int | None = None , ** attr : Any
25
- ) -> Hashable | int : ...
24
+ @overload # type: ignore[override] # Has an additional `key` keyword argument
25
+ def add_edge (self , u_for_edge : _Node , v_for_edge : _Node , key : int | None = None , ** attr : Any ) -> int : ...
26
+ @overload
27
+ def add_edge (self , u_for_edge : _Node , v_for_edge : _Node , key : _KeyT , ** attr : Any ) -> _KeyT : ...
26
28
# key : hashable identifier, optional (default=lowest unused integer)
27
- def remove_edge (self , u , v , key = None ): ...
28
- def has_edge (self , u : _Node , v : _Node , key = None ) -> bool : ...
29
+ def remove_edge (self , u : _Node , v : _Node , key : Hashable | None = None ) -> None : ...
30
+ def has_edge (self , u : _Node , v : _Node , key : Hashable | None = None ) -> bool : ...
29
31
@overload # type: ignore[override]
30
- def get_edge_data (self , u : _Node , v : _Node , key : Hashable , default : _Any | None = None ) -> Mapping [str , Any ] | _Any : ...
32
+ def get_edge_data (
33
+ self , u : _Node , v : _Node , key : Hashable , default : _DefaultT | None = None
34
+ ) -> dict [str , Any ] | _DefaultT : ...
31
35
# key : hashable identifier, optional (default=None).
32
36
# default : any Python object (default=None). Value to return if the specific edge (u, v, key) is not found.
33
37
# Returns: The edge attribute dictionary.
34
38
@overload
35
39
def get_edge_data (
36
- self , u : _Node , v : _Node , key : None = None , default : _Any | None = None
37
- ) -> Mapping [Hashable , Mapping [str , Any ] | _Any ]: ...
40
+ self , u : _Node , v : _Node , key : None = None , default : _DefaultT | None = None
41
+ ) -> dict [Hashable , dict [str , Any ] | _DefaultT ]: ...
38
42
# default : any Python object (default=None). Value to return if there are no edges between u and v and no key is specified.
39
43
# Returns: A dictionary mapping edge keys to attribute dictionaries for each of those edges if no specific key is provided.
40
44
def copy (self , as_view : bool = False ) -> MultiGraph [_Node ]: ...
0 commit comments