Commit
1 year ago
gh-37942: Graph constructors: Remove gratuitous nondeterminism <!-- ^ Please provide a concise and informative title. --> <!-- ^ Don't put issue numbers in the title, do this in the PR description below. --> <!-- ^ For example, instead of "Fixes #12345" use "Introduce new method to calculate 1 + 2". --> <!-- v Describe your changes below in detail. --> <!-- v Why is this change required? What problem does it solve? --> <!-- v If this PR resolves an open issue, please link to it here. For example, "Fixes #12345". --> Since Python 3.x, `dict`s preserve insertion order. Here we modify the processing of "dict-of-dicts" and "dist-of-lists" input formats to avoid going through `set`, which introduces gratuitous nondeterminism regarding the order of vertices. This change gives for example this improvement: ```sage sage: G = graphs.CubeGraph(3) sage: G.vertices(sort=False) ['000', '001', '010', '011', '100', '101', '110', '111'] ``` ### :memo: Checklist <!-- Put an `x` in all the boxes that apply. --> - [x] The title is concise and informative. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation and checked the documentation preview. ### :hourglass: Dependencies <!-- List all open PRs that this PR logically depends on. For example, --> <!-- - #12345: short description why this is a dependency --> <!-- - #34567: ... --> URL: https://github.com/sagemath/sage/pull/37942 Reported by: Matthias Köppe Reviewer(s): David Coudert, Martin Rubey, Matthias Köppe
Author
Release Manager
Loading