Mailing List Archive

Friday finking: IDE 'macro expansions'
It is a long, long, time since I've thrown one of these into the
maelstrom of our musings.
(have the nightmares receded?)


Do you make use of your IDE's expansionist tendencies, and if-so, which
ones?


NB this is where vi/emacs enthusiasts start chuckling (polite term for
'insane cackling'). Hence the question's limitation to IDEs, cf 'editors'!
Also: I'm talking 'PyCharm' because of the story, but others use Codium,
Sublime Text, etc - which presumably offer equivalent features.


Was helping a friend install PyCharm. Jumped into the Settings. Isn't it
incredible how many there are?

Idly noted that there are two short-cut or macro-expansion types of
facilities:
- Postfix Completion, (nothing to do with email or polish notation) and
- Live Templates (again, we're not talking about jinja2)


With both, one types an abbreviated-name and the IDE will expand it into
appropriate code. For (LiveTemplate) example, typing compli and pressing
Tab induces PyCharm to add the following to the program[me]:

[ ! for ! in !drop-down menu! if ! ]

It offers further typo-saving through the drop-down menu which lists a
bunch of likely (iterable) candidates from amongst previously-written
code. The action continues after selecting from the menu, by inviting
completion of the other ("!") placeholders, in-turn.


I haven't made use of such a tool, to-date - OK, yes, I have practised a
high typing-speed (and accuracy). Puff, puff...

Also, at the time, I'm thinking in 'code', rather than about what tool
might implement said ideas.


Do you make use of such expansionist-tendencies?

Do you make use of other powerful features within the IDE, or are its
editor functionalities employed at pretty-much the NotePad level?



Web.Refs:
https://www.jetbrains.com/help/pycharm/settings-postfix-completion.html
https://www.jetbrains.com/help/pycharm/using-live-templates.html#live_templates_types
--
Regards,
=dn
--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 3/16/23 16:55, dn via Python-list wrote:
> It is a long, long, time since I've thrown one of these into the
> maelstrom of our musings.
> (have the nightmares receded?)
>
>
> Do you make use of your IDE's expansionist tendencies, and if-so, which
> ones?
>
>
> NB this is where vi/emacs enthusiasts start chuckling (polite term for
> 'insane cackling'). Hence the question's limitation to IDEs, cf 'editors'!
> Also: I'm talking 'PyCharm' because of the story, but others use Codium,
> Sublime Text, etc - which presumably offer equivalent features.
>
>
> Was helping a friend install PyCharm. Jumped into the Settings. Isn't it
> incredible how many there are?
>
> Idly noted that there are two short-cut or macro-expansion types of
> facilities:
> - Postfix Completion, (nothing to do with email or polish notation) and
> - Live Templates (again, we're not talking about jinja2)
>
>
> With both, one types an abbreviated-name and the IDE will expand it into
> appropriate code. For (LiveTemplate) example, typing compli and pressing
> Tab induces PyCharm to add the following to the program[me]:
>
>     [ ! for ! in !drop-down menu! if ! ]
>
> It offers further typo-saving through the drop-down menu which lists a
> bunch of likely (iterable) candidates from amongst previously-written
> code. The action continues after selecting from the menu, by inviting
> completion of the other ("!") placeholders, in-turn.
>
>
> I haven't made use of such a tool, to-date - OK, yes, I have practised a
> high typing-speed (and accuracy). Puff, puff...
>
> Also, at the time, I'm thinking in 'code', rather than about what tool
> might implement said ideas.
>
>
> Do you make use of such expansionist-tendencies?
>
> Do you make use of other powerful features within the IDE, or are its
> editor functionalities employed at pretty-much the NotePad level?

Not sure the purpose of the "survey" but - no, I don't use these. IDEs
are incredible things, but you need to invest yourself completely in
them, basically live in them, or there's not that much payback. There's
just too much to remember, and honestly, too much mouse movement needed,
especially if you have a big screen. In the PyCharm case, the startup
time is incredibly slow, so, since I don't "live in it", I don't use it
much any more - there are some things it does superbly, but it's such a
cost to fire it up just for those I pretty much don't bother any more.

--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 3/16/2023 6:55 PM, dn via Python-list wrote:
> It is a long, long, time since I've thrown one of these into the
> maelstrom of our musings.
> (have the nightmares receded?)
>
>
> Do you make use of your IDE's expansionist tendencies, and if-so, which
> ones?
>
>
> NB this is where vi/emacs enthusiasts start chuckling (polite term for
> 'insane cackling'). Hence the question's limitation to IDEs, cf 'editors'!
> Also: I'm talking 'PyCharm' because of the story, but others use Codium,
> Sublime Text, etc - which presumably offer equivalent features.
>
>
> Was helping a friend install PyCharm. Jumped into the Settings. Isn't it
> incredible how many there are?
>
> Idly noted that there are two short-cut or macro-expansion types of
> facilities:
> - Postfix Completion, (nothing to do with email or polish notation) and
> - Live Templates (again, we're not talking about jinja2)
>
>
> With both, one types an abbreviated-name and the IDE will expand it into
> appropriate code. For (LiveTemplate) example, typing compli and pressing
> Tab induces PyCharm to add the following to the program[me]:
>
>     [ ! for ! in !drop-down menu! if ! ]
>
> It offers further typo-saving through the drop-down menu which lists a
> bunch of likely (iterable) candidates from amongst previously-written
> code. The action continues after selecting from the menu, by inviting
> completion of the other ("!") placeholders, in-turn.
>
>
> I haven't made use of such a tool, to-date - OK, yes, I have practised a
> high typing-speed (and accuracy). Puff, puff...
>
> Also, at the time, I'm thinking in 'code', rather than about what tool
> might implement said ideas.
>
>
> Do you make use of such expansionist-tendencies?
>
> Do you make use of other powerful features within the IDE, or are its
> editor functionalities employed at pretty-much the NotePad level?

In general, I don't like a lot of popups and code completions, so I tend
to avoid them. I don't even like automatic parens or brace insertion.
They distract me, and often put the cursor somewhere I don't want it.

Of course, for Python code I do like automatic indentation after a
colon: if the cursor ends up in the right place, then I'm happy.

If I'm using a plain editor, then I usually like EditPlus. It's not
free but the cost is low and it's well worth it (but Windows only). It
knows about file types, and can do various insertions and completions if
you want (as I said, I mostly don't). I also use Notepad++, but I more
often go with EditPlus.

What I find more useful is matching brackets/parens/braces. Not
inserting them but highlighting or (better) jumping to the matching one
when asked.

Otherwise I'm usually working in the Leo Editor, which is hard to
explain in a few words but is a real gift, especially for Python
programmers. It does have an abbreviation capability that I use a
little, but so far mostly for inserting symbols like math and Greek
letters. Leo is written in Python (with a Qt GUI) and you can easily
get access to all its internals, so once you learn something about how
it works, you can create scripts to do almost anything you want.

The Leo Editor is an MIT-licensed project on GitHub (I know I sound very
positive but despite that, it's not my project; it really can grow on
you - if you are willing to climb the learning curve).

--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 2023-03-17 at 11:55:38 +1300,
dn via Python-list <python-list@python.org> wrote:

> Do you make use of your IDE's expansionist tendencies, and if-so, which
> ones?

Expansionist tendencies. Nice phrase. :-)

> NB this is where vi/emacs enthusiasts start chuckling (polite term for
> 'insane cackling') ...

Long time (since the 1980s, when you had to edit config.h and compile it
yourself) insane emacs enthusiast and "Unix is my IDE" claimant here. I
used one language that required a special editor because the "source
code" was a semi-compiled byte stream instead of ASCII. A coworker once
awarded me a black belt in vi for knowing how to indent and unindent
code.

They made me write in Java at my last job; that language encourages IDEs
beause they deny that the underlying OS and tools exist at all. I used
to say that some of my coworkers weren't writing Java, they were writing
IntelliJ.

Anyway, the short answer to your question is no.

I think the main reason is that there are/were too many editors in too
many contexts to start depending on such features. What happens if I'm
editing on a target box instead of my desktop? What if I'm helping a
coworker, and they use a different editor (different tools for different
programmers)?

> I haven't made use of such a tool, to-date - OK, yes, I have practised a
> high typing-speed (and accuracy). Puff, puff...

I, too, type relatively quickly, which definitely relieves some of the
appeal. Saving a few keystrokes isn't worth the extra congnitive load
to remember how to use those features. And by the time I edit the
template, it's more keystrokes (and usually cursor motion and
placeholder deletion keystrokes not related to the programming task at
hand) than if I had typed the full code in the first place.

> Also, at the time, I'm thinking in 'code', rather than about what tool might
> implement said ideas.

Exactly. Any excursion away from the programming language and the
programming task at hand is disruptive.

I did finally train myself to use Emacs' dabbrev-expand function, which
completes the current "word" according to the previous occurrance of
that word, which lets me use longer identifiers without having to type
them out or copy/paste them. That said, I often find myself typing
stuff out anyway, again because any deviation from writing code is a
deviation from writing code.
--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 2023-03-16, Thomas Passin <list1@tompassin.net> wrote:

> In general, I don't like a lot of popups and code completions, so I
> tend to avoid them. I don't even like automatic parens or brace
> insertion.

I _hate_ it when the "editor" decides to insert stuff I didn't
type. There's an html editor I use occasionally that auto-inserts the
closing tag when you type an opening tag. It's, always, 100% of the
time, wrong. Either the tag ends up in the wrong place, or it's a
duplicate because there was already a closing tag.

> They distract me, and often put the cursor somewhere I don't want it.

Maybe it matters how good a typist you are, but I don't really
concentrate that hard on watching the letters show up on the screen,
so any sort of "IDE know better than you do" stuff tends to trip me
up.

> Of course, for Python code I do like automatic indentation after a
> colon: if the cursor ends up in the right place, then I'm happy.

Yep, I do allow emacs to do auto indent.

> If I'm using a plain editor, then I usually like EditPlus. It's not
> free but the cost is low and it's well worth it (but Windows only).
> It knows about file types, and can do various insertions and
> completions if you want (as I said, I mostly don't). I also use
> Notepad++, but I more often go with EditPlus.
>
> What I find more useful is matching brackets/parens/braces. Not
> inserting them but highlighting or (better) jumping to the matching one
> when asked.

Same here.



--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On Fri, Mar 17, 2023 at 11:55:38AM +1300, dn via Python-list wrote:
>Do you make use of your IDE's expansionist tendencies, and if-so, which
>ones?

Unix (well, GNU/Linux) is my IDE ;)

Simon
--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
Op 17/03/2023 om 0:54 schreef Thomas Passin:
> What I find more useful is matching brackets/parens/braces.  Not
> inserting them but highlighting or (better) jumping to the matching
> one when asked.
That is very helpful indeed.
Even better than simply highlighting is (IMO) a thing called "Rainbow
Braces" or "Bracket Pair Colorization" I recently learned about: both
braces of a matching pair get the same color, while other pairs get
other colors. I have to say I like it quite a lot. It's in VS Code these
days; possible there are implementations or extensions for other editors
and IDEs as well.

--
"Most of us, when all is said and done, like what we like and make up
reasons for it afterwards."
-- Soren F. Petersen

--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On Fri, Mar 17, 2023 at 02:05:50PM +0100, Roel Schroeven wrote:
>Even better than simply highlighting is (IMO) a thing called "Rainbow
>Braces" or "Bracket Pair Colorization" I recently learned about: both
>braces of a matching pair get the same color, while other pairs get
>other colors. I have to say I like it quite a lot. It's in VS Code
>these days; possible there are implementations or extensions for other
>editors and IDEs as well.

VS Code also supports ‘semantic highlighting’: Instead of simply
highlighting syntax, highlight the same identifiers in the same colours,
with the aim of helping you see them through the flow of the code.

Simon
--
A complex system that works is invariably found to have evolved from a
simple system that works.—John Gall
--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 3/17/2023 9:38 AM, Simon Ward wrote:
> On Fri, Mar 17, 2023 at 02:05:50PM +0100, Roel Schroeven wrote:
>> Even better than simply highlighting is (IMO) a thing called "Rainbow
>> Braces" or "Bracket Pair Colorization" I recently learned about: both
>> braces of a matching pair get the same color, while other pairs get
>> other colors. I have to say I like it quite a lot. It's in VS Code
>> these days; possible there are implementations or extensions for other
>> editors and IDEs as well.
>
> VS Code also supports ‘semantic highlighting’: Instead of simply
> highlighting syntax, highlight the same identifiers in the same colours,
> with the aim of helping you see them through the flow of the code.

Even with a simple "Find" command I don't like that behavior, let alone
for programming. I find that all those other marked instances make it
harder for me to read the surrounding material. They are good for
moving from one instance to another, but otherwise they get in the way
for me.

--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 18/03/2023 02.44, Thomas Passin wrote:
> On 3/17/2023 9:38 AM, Simon Ward wrote:
>> On Fri, Mar 17, 2023 at 02:05:50PM +0100, Roel Schroeven wrote:
>>> Even better than simply highlighting is (IMO) a thing called "Rainbow
>>> Braces" or "Bracket Pair Colorization" I recently learned about: both
>>> braces of a matching pair get the same color, while other pairs get
>>> other colors. I have to say I like it quite a lot. It's in VS Code
>>> these days; possible there are implementations or extensions for
>>> other editors and IDEs as well.
>>
>> VS Code also supports ‘semantic highlighting’: Instead of simply
>> highlighting syntax, highlight the same identifiers in the same
>> colours, with the aim of helping you see them through the flow of the
>> code.
>
> Even with a simple "Find" command I don't like that behavior, let alone
> for programming.  I find that all those other marked instances make it
> harder for me to read the surrounding material.  They are good for
> moving from one instance to another, but otherwise they get in the way
> for me.


Haven't seen the coloring feature as-described. As the number of
identifiers increased, suspect it would become gaudy or the color
shading too subtle for my eyes.

+1 'Busy pictures' can be distracting.


That said, the syntax-highlighting can provide the occasional cue that
something has gone-wrong. However, will I recognise it from the
mis-coloring, or from other evidence first?


The semantic point might be easily under-estimated. A 'simple find' may
not be helpful - a web-search for Python turns-up irrelevant information
about snakes!

Regarding the tracing of an identifier: PyCharm has two features:
- with cursor/caret on/at a single use of an identifier, it will
highlight other usage, elsewhere in that module's code
- (context menu) FindUsages will bring-up a two-pane window. The
left-pane shows a tree-structure of the project, modules, etc, down to a
listing of each code-line where the identifier is used. Highlighting one
of those (at a time), will show the context around that particular
line/usage. The right-pane is editable!

The great thing about these features is that they are semantically-aware
(is that a real term?). For example, if I were (foolish enough) to name
an identifier "the", such searches will not 'hit' the same word inside a
comment or docstring.

Better still, the above motivation continues into a (context menu)
Refactor facility. This, one might consider to be a semantic
Find-Replace. Often employ when helping others to clarify their
code/Code Review - or when I'm 'just coding' and have quickly defined an
identifier without a lot of thought, but later (ie when come to make use
of it) realise a better alternative and more descriptive name.

--
Regards,
=dn
--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
I send ~99% of Python coding time in PyCharm. Likewise, IntelliJ and Clion for Java and C++, respectively.

Mostly use:
Tab completion for variable names
Letting PyCharm figure out imports for me, and cleaning up old, unused imports.
Jumping to definitions of symbols.
Tellling me I?ve made a type error before unit testing the code by highlighting it in yellow.
Occasionally I?ll jump through the hoops to connect it to our Postgresql database to help verify SQL, but it?s not usually worth the trouble.

For templating, I have two Python programs for starting new work. One generates a standalone Python program with the Python shebang, a __main__ which calls def main(), and logging and argparser intialization. The other generates a pyproject.toml /setup.cfg directory structure with a main.py referenced as a console script. from setup.cfg


From: Python-list <python-list-bounces+gweatherby=uchc.edu@python.org> on behalf of dn via Python-list <python-list@python.org>
Date: Thursday, March 16, 2023 at 6:59 PM
To: 'Python' <python-list@python.org>
Subject: Friday finking: IDE 'macro expansions'
*** Attention: This is an external email. Use caution responding, opening attachments or clicking on links. ***

It is a long, long, time since I've thrown one of these into the
maelstrom of our musings.
(have the nightmares receded?)


Do you make use of your IDE's expansionist tendencies, and if-so, which
ones?


NB this is where vi/emacs enthusiasts start chuckling (polite term for
'insane cackling'). Hence the question's limitation to IDEs, cf 'editors'!
Also: I'm talking 'PyCharm' because of the story, but others use Codium,
Sublime Text, etc - which presumably offer equivalent features.


Was helping a friend install PyCharm. Jumped into the Settings. Isn't it
incredible how many there are?

Idly noted that there are two short-cut or macro-expansion types of
facilities:
- Postfix Completion, (nothing to do with email or polish notation) and
- Live Templates (again, we're not talking about jinja2)


With both, one types an abbreviated-name and the IDE will expand it into
appropriate code. For (LiveTemplate) example, typing compli and pressing
Tab induces PyCharm to add the following to the program[me]:

[ ! for ! in !drop-down menu! if ! ]

It offers further typo-saving through the drop-down menu which lists a
bunch of likely (iterable) candidates from amongst previously-written
code. The action continues after selecting from the menu, by inviting
completion of the other ("!") placeholders, in-turn.


I haven't made use of such a tool, to-date - OK, yes, I have practised a
high typing-speed (and accuracy). Puff, puff...

Also, at the time, I'm thinking in 'code', rather than about what tool
might implement said ideas.


Do you make use of such expansionist-tendencies?

Do you make use of other powerful features within the IDE, or are its
editor functionalities employed at pretty-much the NotePad level?



Web.Refs:
https://urldefense.com/v3/__https://www.jetbrains.com/help/pycharm/settings-postfix-completion.html__;!!Cn_UX_p3!l5XlkM7xExYMxpwFOxIvLPLSWPm_iu_aRv0WpnvCW2353FzsFjuJKfOYr-rCsnE915Rk59u6F4CgKPuF7fWLqicNTA$<https://urldefense.com/v3/__https:/www.jetbrains.com/help/pycharm/settings-postfix-completion.html__;!!Cn_UX_p3!l5XlkM7xExYMxpwFOxIvLPLSWPm_iu_aRv0WpnvCW2353FzsFjuJKfOYr-rCsnE915Rk59u6F4CgKPuF7fWLqicNTA$>
https://urldefense.com/v3/__https://www.jetbrains.com/help/pycharm/using-live-templates.html*live_templates_types__;Iw!!Cn_UX_p3!l5XlkM7xExYMxpwFOxIvLPLSWPm_iu_aRv0WpnvCW2353FzsFjuJKfOYr-rCsnE915Rk59u6F4CgKPuF7fUOn2vrzA$<https://urldefense.com/v3/__https:/www.jetbrains.com/help/pycharm/using-live-templates.html*live_templates_types__;Iw!!Cn_UX_p3!l5XlkM7xExYMxpwFOxIvLPLSWPm_iu_aRv0WpnvCW2353FzsFjuJKfOYr-rCsnE915Rk59u6F4CgKPuF7fUOn2vrzA$>
--
Regards,
=dn
--
https://urldefense.com/v3/__https://mail.python.org/mailman/listinfo/python-list__;!!Cn_UX_p3!l5XlkM7xExYMxpwFOxIvLPLSWPm_iu_aRv0WpnvCW2353FzsFjuJKfOYr-rCsnE915Rk59u6F4CgKPuF7fUQeq7a_w$<https://urldefense.com/v3/__https:/mail.python.org/mailman/listinfo/python-list__;!!Cn_UX_p3!l5XlkM7xExYMxpwFOxIvLPLSWPm_iu_aRv0WpnvCW2353FzsFjuJKfOYr-rCsnE915Rk59u6F4CgKPuF7fUQeq7a_w$>
--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 2023-03-18 at 11:49:24 +0000,
"Weatherby,Gerard" <gweatherby@uchc.edu> wrote:

> For templating, I have two Python programs for starting new work. One
> generates a standalone Python program with the Python shebang, a
> __main__ which calls def main(), and logging and argparser
> intialization. The other generates a pyproject.toml /setup.cfg
> directory structure with a main.py referenced as a console
> script. from setup.cfg

You don't describe the process for using those programs, but if you
"have two Python programs," then it sounds like you're *not* using the
IDE/editor for that.

(I'm not judging, I'm trying to relate your answer to dn's original
question.)

For an opposing view, I'm much more likely to copy an old project (at
the command line, often with sed) and then use my editor to morph it
into a new project. IME, unless there's an imposed process, those
templates and programs tend to experience bitrot, whereas going back to
an old program gives me the chance to keep it up to date w.r.t. what
I've learned more recently, which helps reinforce said learning.

> From: Python-list <python-list-bounces+gweatherby=uchc.edu@python.org> on behalf of dn via Python-list <python-list@python.org>
> Date: Thursday, March 16, 2023 at 6:59 PM
> To: 'Python' <python-list@python.org>
> Subject: Friday finking: IDE 'macro expansions'
> *** Attention: This is an external email. Use caution responding, opening attachments or clicking on links. ***
>
> It is a long, long, time since I've thrown one of these into the
> maelstrom of our musings.
> (have the nightmares receded?)
>
>
> Do you make use of your IDE's expansionist tendencies, and if-so, which
> ones?

[...]

--
I can eat glass, it does not hurt me.
Dan Sommers, http://www.tombstonezero.net/dan
--
https://mail.python.org/mailman/listinfo/python-list
Re: Friday finking: IDE 'macro expansions' [ In reply to ]
On 19/03/2023 01.27, 2QdxY4RzWzUUiLuE@potatochowder.com wrote:
> On 2023-03-18 at 11:49:24 +0000,
> "Weatherby,Gerard" <gweatherby@uchc.edu> wrote:
>
>> For templating, I have two Python programs for starting new work. One
>> generates a standalone Python program with the Python shebang, a
>> __main__ which calls def main(), and logging and argparser
>> intialization. The other generates a pyproject.toml /setup.cfg
>> directory structure with a main.py referenced as a console
>> script. from setup.cfg
>
> You don't describe the process for using those programs, but if you
> "have two Python programs," then it sounds like you're *not* using the
> IDE/editor for that.
>
> (I'm not judging, I'm trying to relate your answer to dn's original
> question.)

It is a good example of a facility or 'power' of an IDE - even if
there's room for more information...


The team I'm currently assisting has decided to use Poetry.

PyCharm will create a new project, populating basic files, more-or-less
as @George described. In the same way, if one prefers a venv (etc)
instead of a Poetry structure, PyCharm will set things up similarly.

Accordingly, it saves a lot of time, fiddling-about creating a bunch of
(basically) empty files and sub-dirs.

(that said, there a plenty of operations which have a blank-project
template which can be copied-in and renamed...)


Continuing the story, let's say the project calls for a PyPi-based*
library, eg more_itertools, or there's a team 'standard', eg pytest;
then these can be selected from a PyCharm-provided list (no need to go
to PyPi to download) AND that operation will also be reflected in the
pyproject.toml file.

* cf one from the PSL

In other words, the build file has been created and
continually-maintained, by the IDE, ready for when the project is to be
uploaded to a library or exported to target-machines; cf the 'tradition'
of an extra, last, and not looked-forward-to, step in the process!


> For an opposing view, I'm much more likely to copy an old project (at
> the command line, often with sed) and then use my editor to morph it
> into a new project. IME, unless there's an imposed process, those
> templates and programs tend to experience bitrot, whereas going back to
> an old program gives me the chance to keep it up to date w.r.t. what
> I've learned more recently, which helps reinforce said learning.

Yes...
(guilty as charged!)

Equally, may promulgate old habits and a lower-quality (related to the
depth of learning, back-then cf 'now').

--
Regards,
=dn
--
https://mail.python.org/mailman/listinfo/python-list