Here is the first draft of a reply to Python issue #33337 
<https://bugs.python.org/issue33337>. This long-dormant issue discusses 
possible improvements to python tools.

I would appreciate it if you would read the thread in detail, and let me 
know if the following reply seems on topic and useful. Thanks.

===== Start Post

> So if users want to write tools that manipulate Python code, the standard
library doesn't provide them with great options.

> I suggest the following plan:

Hello all,

I would like to suggest another possibility.

For about three months I have been obsessed with the general problem of 
manipulating Python source code *easily*. I have long experience with such 
tools.  Along the way I have studied the
[asttokens](https://pypi.org/project/asttokens/),
[fstringify](https://pypi.org/project/fstringify/), and
[black](https://pypi.org/project/black/) projects.
Imo, each in its own way illustrates that something significantly better 
would be welcome. Each project uses complex, idiosyncratic, opaque 
generators to generate results. What if something much simpler were 
possible?

In late October, 2019 I completed a token-based version of fstringify. I 
could have stopped there, but then a new thought intruded. What if we could 
define a **token-order traversal** of parse trees? This new idea sparked an 
avalanche of new ideas. I couldn't let them go.

After three months of literally day and night development this single idea 
has turned into a major new tool, contained at present in [leoAst.py](
https://github.com/leo-editor/leo-editor/blob/fstrings/leo/core/leoAst.py). 
The code is simple, general, flexible, and fast, in stark contrast to the 
tools mentioned above.

Leo's [issue #1440](https://github.com/leo-editor/leo-editor/issues/1440) 
(Unify the ast and token worlds)
contains extensive documentation for this project. The first comment 
contains an overview of the project, the second comment contains a Theory 
of Operation, and the third contains a History of the Project, with links 
to the many Engineering Notebook (ENB) post that I wrote along the way.

Imo, the TokenOrderGenerator (TOG) and TokenOrderTraverser (TOT) might be 
candidates for inclusion in the standard library, but first you Python devs 
will want to decide whether this project is actually something that is even 
vaguely of interest to you :-)

I will be happy to answer any questions you may have. Please let me know 
your thoughts.

Edward K. Ream
An old man, crazy about computer programming

===== End Post

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/c70a9009-31d5-4cc4-b8d4-6e3af34d6d9f%40googlegroups.com.

Reply via email to