#2327 <https://github.com/leo-editor/leo-editor/issues/2327> suggests 
improving the python importer. This issue is scheduled for Leo 6.7, but it 
may make it into 6.6.

This Engineering Notebook post consists of notes to myself.  Feel free to 
ignore.

*Defects*

I've put up with the following defects of the python importer for way too 
long:

1. Perfect import checks can fail due to underindented lines, especially 
comment lines.
2. Perfect import checks can fail due to misplaced (or missing?) decorator 
lines.
3. The python post-pass code is a bit of a mess.
4. The python importer's main line, py_i.gen_lines, may be more complex 
than necessary.

*The causes of complexity*

The python importer is *far* more complex than the python-to-typescript 
command:

- The importer must, without fail, handle strings and docstrings properly. 
This requirement entails the entire token-state logic.
- Decorators complicate how the code recognizes the start and end of 
classes and functions.
- Allocating "in-between" lines (lines between functions or methods) is 
always going to be tricky.  Presumably, the post pass will play a part.

*The goals*

The python importer must import *all* python files exactly, except for 
*underindented 
comment lines*.

The python importer should be allowed to adjust underindented comment lines 
by adding needed indentation.

The python perfect import checks should warn about adjusted comment lines, 
but the python importer should *not* insert @ignore directives merely due 
to adjusted comment lines.


*Open questions*

1. Which code should handle decorators: the main line or the post pass?

2. Which code should handle in-between lines?

*Summary*

The python importer is shockingly inadequate:

- The importer inserts @ignore directives for way too many files.
- The post pass does not account for the *indentation level* implied by 
@others directives. Indented @others directives increase this level. 
- The code that handles decorators is complex and buggy.
- The post-pass needs a redesign.

The overall design and organization of Leo's importers will remain 
completely unchanged. Only the Py_Importer class will change.

I'll fix #2327 <https://github.com/leo-editor/leo-editor/issues/2327> for 
Leo 6.6 if possible, but I shall not hurry this project.

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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/5015aafe-5d26-4514-892b-d7ffd96c434an%40googlegroups.com.

Reply via email to