I've started to work on the #1598. For now I am still reading code and trying to figure out how it works.
I have found a list of native vnode attributes:
nativeVnodeAttributes = (
'a',
'descendentTnodeUnknownAttributes',
'descendentVnodeUnknownAttributes',
'expanded', 'marks', 't', 'tnodeList',
)
However, analyzing the write code, I see that the only <v> attributes that are ever written are "t" and sometimes "decendentVnodeUnknownAttributes".
The v.tnodeList is assigned and deleted on several places in Leo code, but I can't find any place that it is actually used. I can't recall seeing this attribute ever, and I don't remember what its purpose used to be.
I assume that all those ancient attributes can be safely ignored. Am I missing something?
If those attributes can be ignored, I think Leo's reading and writing logic can be greatly simplified.
Also there is a method FastRead.bytesToUnicode with the following __doc__:
Leo is now running on Python 3.5 or newer. Do we still need to warry about this Python2.7 pickle compatibility? If not, code can be further simplified.
Vitalije