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) ``` class CopyFlag(enum.Enum): 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`: ``` class _CopyNever: 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 obvious namespace. Eric On Mon, 21 Jun 2021 at 17:24, Stefan van der Walt <stef...@berkeley.edu> wrote: > 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() > > > Stéfan > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion