Skip to content

Commit 3aaba0c

Browse files
authored
[networkx] Use concrete types for the random tree generators (#16617)
1 parent 0c3d545 commit 3aaba0c

1 file changed

Lines changed: 38 additions & 9 deletions

File tree

‎stubs/networkx/networkx/generators/trees.pyi‎

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from _typeshed import Incomplete
22
from collections.abc import Iterable
3+
from typing import overload
34

45
from networkx.classes.graph import Graph
56
from networkx.utils.backends import _dispatchable
7+
from networkx.utils.misc import _RandomState
68

79
from ..classes.digraph import DiGraph
810

@@ -22,14 +24,41 @@ def prefix_tree(paths: Iterable[Incomplete]) -> DiGraph[Incomplete]: ...
2224
@_dispatchable
2325
def prefix_tree_recursive(paths: Iterable[Incomplete]) -> DiGraph[Incomplete]: ...
2426
@_dispatchable
25-
def random_labeled_tree(n: int, *, seed=None): ...
27+
def random_labeled_tree(n: int, *, seed: _RandomState = None) -> Graph[int]: ...
2628
@_dispatchable
27-
def random_labeled_rooted_tree(n: int, *, seed=None) -> Graph[Incomplete]: ...
28-
@_dispatchable
29-
def random_unlabeled_rooted_tree(n: int, *, number_of_trees=None, seed=None) -> Incomplete | list[Incomplete]: ...
30-
@_dispatchable
31-
def random_labeled_rooted_forest(n: int, *, seed=None) -> Graph[Incomplete]: ...
32-
@_dispatchable
33-
def random_unlabeled_rooted_forest(n: int, *, q=None, number_of_forests=None, seed=None) -> Incomplete | list[Incomplete]: ...
29+
def random_labeled_rooted_tree(n: int, *, seed: _RandomState = None) -> Graph[int]: ...
30+
31+
@overload
32+
def random_unlabeled_rooted_tree(
33+
n: int,
34+
*,
35+
number_of_trees: None = None,
36+
seed: _RandomState = None,
37+
backend=None, # @_dispatchable adds these arguments, but we can't use this decorator with @overload
38+
**backend_kwargs,
39+
) -> Graph[int]: ...
40+
@overload
41+
def random_unlabeled_rooted_tree(
42+
n: int, *, number_of_trees: int, seed: _RandomState = None, backend=None, **backend_kwargs
43+
) -> list[Graph[int]]: ...
44+
3445
@_dispatchable
35-
def random_unlabeled_tree(n: int, *, number_of_trees=None, seed=None) -> Incomplete | list[Incomplete]: ...
46+
def random_labeled_rooted_forest(n: int, *, seed: _RandomState = None) -> Graph[int]: ...
47+
48+
@overload
49+
def random_unlabeled_rooted_forest(
50+
n: int, *, q: int | None = None, number_of_forests: None = None, seed: _RandomState = None, backend=None, **backend_kwargs
51+
) -> Graph[int]: ...
52+
@overload
53+
def random_unlabeled_rooted_forest(
54+
n: int, *, q: int | None = None, number_of_forests: int, seed: _RandomState = None, backend=None, **backend_kwargs
55+
) -> list[Graph[int]]: ...
56+
57+
@overload
58+
def random_unlabeled_tree(
59+
n: int, *, number_of_trees: None = None, seed: _RandomState = None, backend=None, **backend_kwargs
60+
) -> Graph[int]: ...
61+
@overload
62+
def random_unlabeled_tree(
63+
n: int, *, number_of_trees: int, seed: _RandomState = None, backend=None, **backend_kwargs
64+
) -> list[Graph[int]]: ...

0 commit comments

Comments
 (0)