[Numpy-discussion] copy="never" discussion and no deprecation cycle?
wieser.eric+numpy at gmail.com
Mon Jun 21 12:56:25 EDT 2021
Stefan, that sketch is more complicated than it needs to be - `np.copy` is
a python function, so you can just attach the attributes directly!
(although maybe there are implications for static typing)
IF_NEEDED = 0
ALWAYS = 1
NEVER = 2
np.copy.IF_NEEDED = CopyFlag.IF_NEEDED
np.copy.ALWAYS = CopyFlag.ALWAYS
np.copy.NEVER = CopyFlag.NEVER
It would also work nicely for the `True/False/other` version that was
proposed in the much older PR as `np.never_copy`:
def __bool__(self): raise ValueError
np.copy.NEVER = _CopyNever()
All of these versions (and using the enum directly) seem fine to me.
If we go down the enum route route, we probably want to add "new-style"
versions of `np.CLIP` and friends that are true enums / live within a more
On Mon, 21 Jun 2021 at 17:24, Stefan van der Walt <stefanv at berkeley.edu>
> On Sun, Jun 20, 2021, at 20:46, Gagandeep Singh wrote:
> > I have recently joined the mailing list and have gone through the
> previous discussions on this thread. I would like to share my analysis
> (advantages and disadvantages) of three possible alternatives (Enum,
> String, boolean) to support the proposed feature.
> Thanks for this thorough analysis, Gagandeep!
> I'll throw one more heretical idea out there:
> `np.copy.IF_NEEDED`, `np.copy.ALWAYS`, `np.copy.NEVER`.
> This has the advantages of the enum, doesn't pollute the global namespace,
> and has an intuitive name.
> `np.array(x, copy=np.copy.ALWAYS)`
> It would be slightly more awkward to type, but is doable. A rough Python
> version sketch would be:
> class CopyFlag(enum.Enum):
> IF_NEEDED = 0
> ALWAYS = 1
> NEVER = 2
> class NpCopy:
> IF_NEEDED : CopyFlag = CopyFlag.IF_NEEDED
> ALWAYS : CopyFlag = CopyFlag.ALWAYS
> NEVER : CopyFlag = CopyFlag.NEVER
> def __call__(self, x):
> return ...whatever copy returns...
> np.copy = NpCopy()
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the NumPy-Discussion