This is #1440 <https://github.com/leo-editor/leo-editor/issues/1440>. On 
Christmas day the Fstringify class passed all its unit tests.  Yesterday I 
polished the code and ran additional tests.

Imo, this class is now good enough to be used as the basis of Leo's 
fstringify command. However, considerable packaging work remains.

*Testing*

Yesterday I fstringified leoAtFile.py from the "master" branch. This 
version of the file contains fewer f-strings, so is a better test. There 
were several *valid *warnings about strings followed by an "%" that could 
not be fstringified.  For example:

'%s %s' % delims # delims is a 2-tuple.

Such strings must be converted by hand, or just left alone.

*Packaging*

leoAst.py contains all the work. It imports only standard python library 
functions at the top level. Anyone should be able to use leoAst.py without 
installing Leo.

The LeoGlobals class contains simplified versions of several functions in 
leoGlobals.py.  Two functions contain:

import leo.core.leoGlobals as leo_g.

Only unit tests in unitTest.leo call these two functions, so importing 
leo.core.leoGlobals in them is harmless.


*Remaining work*

1. Add "traditional" unit tests to leoAst.py.  Anyone should be able to run 
these tests without installing Leo.

2. Convert Leo's own fstringify command so it uses the new classes.

3. Several experimental improvements. I'll discuss them if and when they 
work.

*Summary*

This project has succeeded. Anyone should be able to use leoAst.py now, 
without installing Leo.

I'll soon convert existing unit tests in unitTest.leo to traditional unit 
tests, probably contained within leoAst.py. 

Considerable work remains.

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/de70bcec-46e1-418f-b9a2-d8ab036cea02%40googlegroups.com.

Reply via email to