DiagonalOperator diagonal() function as property?
The DiagonalOperator class has a function diagonal() returning the respective Field.
IMHO this should be a property, since e.g.
diagonal_val = operator.diagonal().val
just looks stupid (from a purely designy pythonic point of view).
The main philosophy I propose in this case is that from a class point of view 'diagonal' to DiagonalOperator is the same as 'val' to Field.
Following this the getter of the proposed property 'diagonal' should not return a copy of the diagonal (in contrast to what the current function diagonal() returns) since the property 'val' of Field does not do this either.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information