Skip to content

Conversation

@AckslD
Copy link
Contributor

@AckslD AckslD commented Jun 16, 2025

Followup to #14218 based on the suggestion by @Avasam.


__all__ = ["from_nested_tuple", "from_prufer_sequence", "NotATree", "to_nested_tuple", "to_prufer_sequence"]

_NestedTuple: TypeAlias = tuple[_NestedTuple, ...]
Copy link
Collaborator

@brianschubert brianschubert Jun 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the RHS include a union with some other type? This currently only allows tuples with tuple entries (ultimately terminating with empty tuples)

Huh, apparently that's correct:
https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.tree.coding.from_nested_tuple.html#from-nested-tuple

Nevermind then! Sorry for the noise :-)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unless my understanding is wrong, there should indeed be no other types but only nested tuples:
https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.tree.coding.from_nested_tuple.html

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No worries, thanks for taking a look :)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was gonna ask the same question. And made the same assumption in my initial comment. Could you add a comment here pointing to that documentation ?

Suggested change
_NestedTuple: TypeAlias = tuple[_NestedTuple, ...]
# > The tree with one node and no edges is represented by the empty tuple, ()
# https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.tree.coding.from_nested_tuple.html#from-nested-tuple
# So this really only recuses on tuples
_NestedTuple: TypeAlias = tuple[_NestedTuple, ...]

Feel free to reword.

(as a side note, you could write _NestedTuple: TypeAlias = tuple[_NestedTuple | tuple[()], ...], but that quickly becomes unusable/too unwieldy)

Otherwise LGTM.

@github-actions

This comment has been minimized.

@github-actions
Copy link
Contributor

According to mypy_primer, this change has no effect on the checked open source code. 🤖🎉

class NotATree(NetworkXException): ...

@_dispatchable
def to_nested_tuple(T: Graph[_Node], root: _Node, canonical_form: bool = False): ...
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While we're here...

Suggested change
def to_nested_tuple(T: Graph[_Node], root: _Node, canonical_form: bool = False): ...
def to_nested_tuple(T: Graph[_Node], root: _Node, canonical_form: bool = False) -> _NestedTuple: ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, I wasn't sure if the return hints were left out for a reason


__all__ = ["from_nested_tuple", "from_prufer_sequence", "NotATree", "to_nested_tuple", "to_prufer_sequence"]

_NestedTuple: TypeAlias = tuple[_NestedTuple, ...]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was gonna ask the same question. And made the same assumption in my initial comment. Could you add a comment here pointing to that documentation ?

Suggested change
_NestedTuple: TypeAlias = tuple[_NestedTuple, ...]
# > The tree with one node and no edges is represented by the empty tuple, ()
# https://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.tree.coding.from_nested_tuple.html#from-nested-tuple
# So this really only recuses on tuples
_NestedTuple: TypeAlias = tuple[_NestedTuple, ...]

Feel free to reword.

(as a side note, you could write _NestedTuple: TypeAlias = tuple[_NestedTuple | tuple[()], ...], but that quickly becomes unusable/too unwieldy)

Otherwise LGTM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants