Skip to content

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

Open
@mkoeppe

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.

CC: @tscrim @mjungmath @nbruin @kwankyu @kcrisman @egourgoulhon

Component: manifolds

Issue created by migration from https://trac.sagemath.org/ticket/32476

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions