Opened 2 years ago
Closed 2 years ago
#27129 closed enhancement (fixed)
py3: fix other doctests in graph.py
Reported by: | dcoudert | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-8.7 |
Component: | graph theory | Keywords: | py3, graph |
Cc: | Merged in: | ||
Authors: | David Coudert | Reviewers: | Travis Scrimshaw |
Report Upstream: | N/A | Work issues: | |
Branch: | 40bcb34 (Commits, GitHub, GitLab) | Commit: | 40bcb34762133848f04d3098cef9ae08e1480785 |
Dependencies: | Stopgaps: |
Description
We change some doctests in cliques_containing_vertex
and perfect_matchings
to support py3.
Change History (8)
comment:1 Changed 2 years ago by
- Branch set to public/27129_more_doctests_in_graph
- Commit set to f8e80ba0fc40c7faf3a7c3519feaec45639c83b8
- Status changed from new to needs_review
comment:2 Changed 2 years ago by
Can you explain why this change is necessary?
- sage: G = Graph([[1,-1,'a'], [2,-2, 'b'], [1,-2,'x'], [2,-1,'y']]) + sage: G = Graph([(0, 1, 'a'), (0, 3, 'b'), (1, 2, 'c'), (2, 3, 'd')]) sage: list(G.perfect_matchings(labels=True)) - [[(-2, 1, 'x'), (-1, 2, 'y')], [(-2, 2, 'b'), (-1, 1, 'a')]] + [[(0, 1, 'a'), (2, 3, 'd')], [(0, 3, 'b'), (1, 2, 'c')]]
comment:3 Changed 2 years ago by
Essentially the same motivation as in https://trac.sagemath.org/ticket/27127#comment:3. The order in which vertices are visited is not always the same in py2 and py3, and so the order in which solutions are discovered may differ.
Here, with py3, we get [[(-1, 1, 'a'), (-2, 2, 'b')], [(-1, 2, 'y'), (-2, 1, 'x')]]
. So same set of solutions than with py2, but matchings are reported in a different order, and the order of edges of each matching is different.
The proposed change is more stable with py2 and py3.
An alternative is to do:
sage: def compare(A, B): ....: return Set(map(Set, A)) == Set(map(Set, B)) sage: G = Graph([[1,-1,'a'], [2,-2, 'b'], [1,-2,'x'], [2,-1,'y']]) sage: expected = [[(-2, 1, 'x'), (-1, 2, 'y')], [(-2, 2, 'b'), (-1, 1, 'a')]] sage: L = list(G.perfect_matchings(labels=True)) sage: compare(L, expected) True
Should I do that ?
comment:4 Changed 2 years ago by
That doesn't explain why this change is necessary. It just seems to replace a brittle test with another brittle test. Why not just run sorted
on the output (since everything is a (int, int, str)
, there should be no invalid comparisons)?
comment:5 Changed 2 years ago by
- Commit changed from f8e80ba0fc40c7faf3a7c3519feaec45639c83b8 to 40bcb34762133848f04d3098cef9ae08e1480785
comment:6 Changed 2 years ago by
I agree. I'm now using sorted
twice. This doctest should be stable now.
comment:7 Changed 2 years ago by
- Reviewers set to Travis Scrimshaw
- Status changed from needs_review to positive_review
Thank you.
comment:8 Changed 2 years ago by
- Branch changed from public/27129_more_doctests_in_graph to 40bcb34762133848f04d3098cef9ae08e1480785
- Resolution set to fixed
- Status changed from positive_review to closed
With #27125 and #27127, this should fix all (currently) failing doctests with py3 in file
graph.py
.New commits:
trac #27129: fix some more doctests in graph.py