This is PR #2003 <https://github.com/leo-editor/leo-editor/pull/2003> and 
issue #2004 <https://github.com/leo-editor/leo-editor/issues/2004>.

Unless I hear compelling arguments against, I plan to "freeze" all the 
classes in leoNodes.py (Position, VNode, NodeIndices and PosList classes) 
by defining a __slot__ attribute 
<https://docs.python.org/3/reference/datamodel.html#slots>for each class.  
It is straightforward to do this.  See PR #2003.

*Rationale*

mypy recently discovered a bug arising from a misspelling of an ivar of the 
VNode class. This freaked me out. Without slots, pylint does not (and can 
not) detect such errors because there is no of knowing whether the code 
actually intended to inject a new ivar.

Without slots, Leo's most important data classes can neither be checked nor 
protected properly! 

*Summary*

Imo, using slots in leoNodes.py is overdue. I know of no drawbacks to doing 
so.

Slots have at least these advantages:

- Slots help pylint and mypy check code.
- Slots reduce the memory footprint of positions and vnodes.
- Slots prevent unwanted alterations of Leo's most important classes. 

The work is in the ekr-slots branch.  I'll wait for a few days for your 
comments.

Edward

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to leo-editor+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/8b79e17d-03c4-447f-bf2b-5b01a829299fn%40googlegroups.com.

Reply via email to