Copy even immutable objects as much as possible
Project description
morecopy
Copy even immutable objects as much as possible
Overview
morecopy is a Python package that enables copy of immutable objects so that a copied object is equivalent but not identical to the original:
from morecopy import copy
original = 1234567890
copied = copy(original)
original == copied # -> True
original is copied # -> False
Installation
$ pip install morecopy
Supported immutable types
The following types are supported.
For mutable types (e.g. list
) or unsupported immutable types (e.g. bool
, NoneType
), morecopy.copy
and morecopy.deepcopy
are equivalent to copy.copy
and copy.deepcopy
, respectively.
Type | morecopy.copy |
morecopy.deepcopy |
---|---|---|
int |
yes | n/a |
float |
yes | n/a |
complex |
yes | n/a |
str |
yes | n/a |
bytes |
yes | n/a |
tuple |
yes | n/a |
range |
yes | n/a |
slice |
yes | n/a |
frozenset |
yes | n/a |
FunctionType |
yes | n/a |
LambdaType |
yes | n/a |
Custom immutable copier
Users can add a custom copy function (copier) for a type.
For example, the following code defines copy of integer by creating a copy function and registering it by the copier_for
decorator.
from morecopy import copier_for
@copier_for(int)
def copy_int(integer: int) -> int:
return eval(repr(integer))
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.