#14535: Mutability of Graphs
------------------------------------+---------------------------------------
Reporter: SimonKing | Owner: jason, ncohen, rlm
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-5.10
Component: graph theory | Resolution:
Keywords: mutability graph | Work issues:
Report Upstream: N/A | Reviewers:
Authors: Simon King | Merged in:
Dependencies: #14524 | Stopgaps:
------------------------------------+---------------------------------------
Comment (by SimonKing):
Replying to [comment:10 ncohen]:
> Oh. Sorry, then. I call backend whatever is in the `base/` folder, but
perhaps that isn't right. In any case :
>
> {{{
> sage: type(Graph()._backend)
> <class 'sage.graphs.base.sparse_graph.SparseGraphBackend'>
> }}}
OK, then we have the same notions...
> > But then I found that a couple of add_* methods first change some data
''outside'' of the backend, and call the backend method only later.
>
> Oh ? Like which ones ? `O_o`
`sage.graphs.generic_graph.GenericGraph.delete_vertex`, which is
{{{
for attr in attributes_to_update:
if hasattr(self, attr) and getattr(self, attr) is not None:
getattr(self, attr).pop(vertex, None)
self._boundary = [v for v in self._boundary if v != vertex]
}}}
and only afterwards calls the backend. If the order of dealing with
attributes and dealing with the backend could be reversed, then making the
backend immutable would be enough. But in this order, calling the method
on an immutable graph would destroy some data ''before'' raising the
error.
Perhaps I should have tried first whether it ''can'' be reversed...
Cheers,
Simon
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/14535#comment:11>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.