This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author terry.reedy
Recipients Saimadhav.Heblikar, SilentGhost, jesstess, taleinat, terry.reedy
Date 2018-10-05.18:30:14
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1538764214.88.0.545547206417.issue21880@psf.upfronthosting.co.za>
In-reply-to
Content
This issue is specifically based on msg195711 of #18704.  Anyone working on this should read it.

Saimadhav's work was part of his Google Summer of Code (GSOC) project, which ended soon after V4 was submitted.  I recorded reviews of V1 and V2 above. I don't remember which tests and reviews, if any, I did with V3 and V4.

Some needed changes starting with v4:
 Checker.py should be checker.py.
 Implement it as a feature, not an extension.
 Access the in-memory config object for .idlrc/checker.cfg directly rather than through idleConf.  idleConf accesses the fixed defaults and mutable user overrides as if they are one config. I am a bit surprised that idleConf worked without an empty idlelib/config-checker.def.

The main blocker was and is keeping the GUI responsive while the 3rd party program is executing.  V1 & V2 used subprocess through a pipe.  V3 did not use subprocess.  V4 uses subprocess without a pipe.  It has this blocking polling loop:
                    while process.poll() is None:
                        continue

If a 3rd party program is expected to revise a file, the corresponding editor should be read-only for the duration.

I intended that any issue like this should start with a coherent specification separate from the code.  A doc patch is needed and that might be enough.

Since this issue was opened, it has been more firmly stated that the stdlib should not have any hard-coded dependencies on 3rd party code.  In April 2016, the proposal for a GSOC project to add a GUI front end for pip got no opposition and 2 overt approvals on pydev.  In August 2016, the result was rejected by the release manager and one of the additional approvers because it necessarily used the (public) pip (command-line) interface.

Not withstanding that, there could be a separate idle-checker repository containing a checker.cfg with entries for multiple checkers.  Such a file would be needed to do manual tests with multiple checkers.  This could include a typing annotation checker, like mypy, which is a new type of code checker added since this issue was created.

Tal, what do you think is the easiest way to turn a .diff on the tracker into a git master branch?
History
Date User Action Args
2018-10-05 18:30:14terry.reedysetrecipients: + terry.reedy, taleinat, SilentGhost, jesstess, Saimadhav.Heblikar
2018-10-05 18:30:14terry.reedysetmessageid: <1538764214.88.0.545547206417.issue21880@psf.upfronthosting.co.za>
2018-10-05 18:30:14terry.reedylinkissue21880 messages
2018-10-05 18:30:14terry.reedycreate