networkx: fix subgraph and degree#14390
Conversation
|
Hmm, |
This comment has been minimized.
This comment has been minimized.
| @overload | ||
| def __call__(self, nbunch: _Node, weight: None | bool | str = None) -> int: ... | ||
| @overload | ||
| def __call__(self, nbunch: Iterable[_Node] | None = None, weight: None | bool | str = None) -> DiDegreeView[_Node]: ... |
There was a problem hiding this comment.
Probably overly pedantic, but this doesn't necessarily return a DiDegreeView, but could also return a sub-class if called on an instance of a sub-class. So Self is more appropriate:
| def __call__(self, nbunch: Iterable[_Node] | None = None, weight: None | bool | str = None) -> DiDegreeView[_Node]: ... | |
| def __call__(self, nbunch: Iterable[_Node] | None = None, weight: None | bool | str = None) -> Self: ... |
| def __init__(self, G: Graph[_Node], nbunch: _NBunch[_Node] = None, weight: None | bool | str = None) -> None: ... | ||
| def __call__(self, nbunch: _NBunch[_Node] = None, weight: None | bool | str = None) -> int | DiDegreeView[_Node]: ... | ||
| @overload | ||
| def __call__(self, nbunch: _Node, weight: None | bool | str = None) -> int: ... |
There was a problem hiding this comment.
__getitem__ returns float, so this should also return float:
| def __call__(self, nbunch: _Node, weight: None | bool | str = None) -> int: ... | |
| def __call__(self, nbunch: _Node, weight: None | bool | str = None) -> float: ... |
There was a problem hiding this comment.
hmm shouldn't the degree always be an integer, at least this passes:
import networkx as nx
g = nx.Graph()
g.add_node('a')
assert type(g.degree('a')) is intThere was a problem hiding this comment.
I have no experience with networkx, so I can't say either way, I just noticed that __getitem__ return float (which is equivalent to int | float, so I was going by that. If you say that this will always be int, I'll believe you.
|
@srittau I tried something when |
|
Diff from mypy_primer, showing the effect of this PR on open source code: bokeh (https://github.com/bokeh/bokeh)
+ src/bokeh/models/util/structure.py:165: note: ... from here:
|
We'll need a |
Two small fixes to
networkx, let me know if it's better with separate PRs:Graph.subgraphcan also take a single node.degreetakes a single node, the return type is different so addoverloads.