classification
Title: IDLE: Revise ModuleBrowser API
Type: behavior Stage: resolved
Components: IDLE Versions: Python 3.7, Python 3.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: terry.reedy Nosy List: cheryl.sabella, terry.reedy
Priority: normal Keywords: patch

Created on 2017-09-13 21:33 by terry.reedy, last changed 2017-10-01 01:24 by terry.reedy. This issue is now closed.

Pull Requests
URL Status Linked Edit
PR 3842 merged terry.reedy, 2017-09-30 23:21
PR 3843 merged terry.reedy, 2017-09-30 23:56
Messages (5)
msg302119 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-09-13 21:33
The signature of browser.ClassBrowser(to be renamed ModuleBrowser).__init__ is

def __init__(self, flist, name, path, _htest=False, _utest=False)

flist is only used to access the application root.  Change it to master.  Then text can directly pass the test root.

name and path are the split apart pieces of the module path, minus '.py', which are promptly rejoined, with '.py'.  Callers always start valid path and have to split it and delete '.py' for the call.  Let them pass the full path.  A side-effect is that the browser will not work with a file without '.py'.

ModuleBrowser can them split off the filename and remove a '.p?' extension, if present.

The patch will have to change both .__init__ and callers, and ideally should somehow test that everything works.
msg302806 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-09-23 21:21
I meant .py?, as in .py, .pyw, .pyo, not .p?
msg303417 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-09-30 17:40
Menu item 'Module Browser' invokes '<<open-class-browser>>', which calls Editor_Window.open_module_browser.  If the window is an actual editor, its path is used; otherwise open_module is called.  In either case, ModuleBrowser is called with flist and path pieces.

PathBrowser subclasses ModuleBrowser.  Menu item 'Path Browser' invokes '<<open-path-browser>>', which calls Editor_Window.open_path_browser, which calles PathBrowser.  PathBrowser.__init__'s only parameter is flist and it does not call ModuleBrowser.__init__.  So the APIs are independent and can be modified or not separately.  

For ModuleBrowser, changing flist to master and changing (name, path) to to filepath can be done independently.
msg303436 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-09-30 23:54
New changeset d6bb65f378e34fe0c11fdb39588357ecf22964eb by Terry Jan Reedy in branch 'master':
bpo-31460: Simplify the API of IDLE's Module Browser. (#3842)
https://github.com/python/cpython/commit/d6bb65f378e34fe0c11fdb39588357ecf22964eb
msg303438 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2017-10-01 00:32
New changeset c8198c92320bc35b1e3de5ff0118bd8e20e8d68a by Terry Jan Reedy in branch '3.6':
[3.6] bpo-31460: Simplify the API of IDLE's Module Browser. (GH-3842) (#3843)
https://github.com/python/cpython/commit/c8198c92320bc35b1e3de5ff0118bd8e20e8d68a
History
Date User Action Args
2017-10-01 01:24:34terry.reedysetstatus: open -> closed
resolution: fixed
stage: patch review -> resolved
2017-10-01 00:32:31terry.reedysetmessages: + msg303438
2017-09-30 23:56:32terry.reedysetpull_requests: + pull_request3824
2017-09-30 23:54:30terry.reedysetmessages: + msg303436
2017-09-30 23:21:23terry.reedysetkeywords: + patch
stage: test needed -> patch review
pull_requests: + pull_request3823
2017-09-30 17:40:50terry.reedysetmessages: + msg303417
2017-09-23 21:21:53terry.reedysetnosy: + cheryl.sabella
messages: + msg302806
2017-09-13 22:03:45terry.reedylinkissue31461 dependencies
2017-09-13 21:33:39terry.reedycreate