[Idle-dev] contributing and versions

Terry Reedy tjreedy at udel.edu
Thu Jun 21 15:28:17 EDT 2018


On 6/20/2018 3:16 PM, Mark Roseman wrote:

Welcome back to IDLE.  Our collaboration during Fall, 2015, between 
3.5.0 and 3.5.1 was quite productive.  Besides me, there are currently 
two other current IDLE contributors.  Cheryl Sabella has been extremely 
helpful since May 2017.  Tal Einat, who start with IDLE over a decade 
ago, and who also has commit privileges, became active again about month 
ago.

> I was glad to see the change to require Tk 8.5 (i.e. assume ttk). I took a quick peek at head and there are some easily fixable things that look bad on MacOS (e.g. adding ttk widgets directly to a toplevel without an intervening ttk frame).
> 
> I would be happy to address some of those little things, as well as possibly revive some of the earlier GUI changes I’d started on previously but never had the cycles to push through to completion (on top of compatibility with multiple python and tk versions plus the switchover to git!)
> 
> Hopefully simple question, what python/idle version(s) are ok with ttk-only code? Are all of those open to feature change/additions, or are some bugfix only?

Here is an overall status report.

Python versions: 3.6.6 will be out soon.  Two more maintenance releases, 
3.6.7 and 3.6.8 are scheduled for September and December.  After that, 
3.6 will join 3.5 (and 3.4) in only getting security fixes.  2.7 mostly 
gets security and build fixes and only occasional bug fixes.

Backports:  Because IDLE is exempt from the normal backport rules (PEP 
434), all patches, currently, are backported from master (3.8 alpha) to 
3.7.? to 3.6.?.  This is easy because the requirement for Tk 8.5, the 
use of ttk, and the idlelib name changes all began in 3.6 and because, 
except in a couple of places, idlelib is the same in all 3 versions. 
Backporting everything keeps them the same, which keeps backporting 
easy.  Backporting to 3.6 will stop with 3.6.8rc1, unless an emergency 
fix is needed before 3.6.8.

Except for possible 'emergency' fixes, I am no longer patching IDLE on 2.7.

Tracker, Git, and idle-dev:  I hope you have read the appropriate 
sections of the revised devguide.  The migration from Hg to Git has made 
applying a patch to multiple versions harder.  But it has improved 
collaboration, I think.  The strategy for fixing an issue should be 
discussed on the tracker.  Particular patches should be discussed on the 
PR.  Broad IDLE development issue can be discussed here, as we are doing.

Tk versions: The Windows installer has included 8.6.x since at least 
3.5.  3.7 includes 3.6.8.

For MacOS, the 64-/32-bit installer for 3.6 requires 8.5, and users have 
to download 8.5.18 from ActiveState to avoid the buggy Apple versions. 
For 3.6.5+, there is a 64-bit-only installer that comes with 8.6.8. For 
3.7, both installers come with 8.6.8.

For Linux, people have whatever they have, but I presume 8.6 should be 
available everywhere and be fairly standard.

The only 'new in 8.6' note in the tkinter doc is about .png support.  I 
sometimes worry that we might unknowingly make 8.6 a requirement.  Is 
there much of anything new, as opposed to bug fixes, in 8.6?

I have read that 8.7, now in alpha, has a rewritten Text widget, and 
that there might be some minor incompatibilities.  When tkinter supports 
8.7, IDLE should also.

I have also read that tk 9.0 should support full unicode.  That would be 
great for tkinter and IDLE.  Beginners, especially, like to play around 
with astral characters.

Testing: I just finished reviewing and revising the test suite.  This 
included adding a minimal test for each implementation module.  I am 
getting increasingly strict about requiring test coverage of modified 
and new code.

Tkinter import style:  I have settled on
   from tkinter import Tk, Text, ...
   from ttk import Button, ...
If all the widget creation calls are covered by tests, missing items are 
quickly apparent.

Ttk conversion: This is partly done and I would like to complete at 
least a sensible minimum before we are done with 3.6.  Patches making 
the remaining replacements would be welcome.  If imports are first made 
explicit as above, switching mostly amounts to moving an item from one 
line to the other.  Switching to or adding ttk frames elsewhere should 
also be fine.  (I presume tk widgets in a ttk frame do fine.)  D We need 
to separate windows and frames anyway, to make IDLE a tabbed 
application, and the frames should be a separate subclass.  See the 
revised textview module.

We are not yet using custom ttk styles, and I do not consider that part 
of the minimum.

Tabbed windows: Separating Textview into a window and a frame that is 
now on the window but could later be put on a tab was a first step.  I 
would like to have something for 3.8, after 3.6 is finished.  We can 
consider whether to backport to 3.7 when we need to.  In the meanwhile, 
there are lots of patches to review.

GUI changes: As I remember, I was not enthusiastic about some of your 
proposals, as they seemed overly complicated, predicated on supporting 
tk-only 8.4, or more appropriate for your website example.  These will 
take more discussion.

-- 
Terry Jan Reedy




More information about the IDLE-dev mailing list