Some things to note:

The mask is copy-on-write. Don't mess with that. You can't just poke values into an existing mask, it may be shared with other arrays.

I do not agree that there is any 'inconsistency'. It may be someone's concept of the class that if there is a mask then at least one value is on, but that was not my design. I believe if you try your ideas you'll find it slows other people down, if not you.

Perhaps with all of Travis' new machinery, subclassing works. It didn't used to, and I haven't kept up.


On 7/3/06, Pierre GM < pgmdevlist@mailcan.com> wrote:
Michael,
I wonder whether the Mask class you suggest is not a bit overkill. There
should be enough tools in the existing MA module to do what we want. And I
don't wanna think about compatibility the number of changes in the MA code
that'd be required (but I'm lazy)...

For the sake of consistency and optimization, I still think it could be easier
(and cleaner) to make `nomask` the default for a MaskedArray without masked
values. That could for example be implemented by forcing `nomask` at the
creation of the MaskedArray with an extra
`if mask and not mask.any(): mask=nomask`, or by using Paul's
make_mask( flag=1) trick.

Masking some specific values could still be done when mask is nomask with an
intermediary MA.getmaskarray() step.

On a side note, modifying an existing mask is a delicate matter. Everything's
OK if you use masks as a way to hide existing data, it's more complex when
initially you have some holes in your dataset...