Currently the specification for astype, as added in #290, specifies that copy=False/True wherein there is no room for a "copy never" option, and the default copy=True means that calls to astype that do not specify the copy kwarg never have a chance to be a no-op -- this results in unnecessary copies as default behavior.
Other functions which use the copy=False/None/True semantics include:
asarray
__dlpack__
from_dlpack
reshape
Hence,
- I think it is confusing that
copy=False implies a copy will still occur while elsewhere it means "copy never"
copy=True is imo a bad default that leads to more memory movement than may be necessary
- The ability to specify "copy never" is helpful when one must be careful with memory behavior