Opened 6 weeks ago

Last modified 6 weeks ago

#32476 new enhancement

sage.tensor, sage.manifolds: __copy__, __deepcopy__ methods for all classes that define "copy" methods

Reported by: mkoeppe Owned by:
Priority: major Milestone: sage-9.5
Component: manifolds Keywords:
Cc: tscrim, gh-mjungmath, nbruin, klee, kcrisman, egourgoulhon Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

Description

git grep 'def copy' reveals a number of classes that define ad-hoc copy methods but not __copy__ methods. Hence, they do not implement the copy protocol https://docs.python.org/3/library/copy.html, so copy.copy will resort to pickling/unpickling for making a copy.

Components.copy, for example, implements an ad-hoc version of a deepcopy of sorts:

        for ind, val in self._comp.items():
            if isinstance(val, SageObject) and hasattr(val, 'copy'):
                result._comp[ind] = val.copy()
            else:
                result._comp[ind] = val

For classes whose instances are immutable, see #13811 instead.

Change History (1)

comment:1 Changed 6 weeks ago by egourgoulhon

Thanks for pointing this out!

Note: See TracTickets for help on using tickets.