]> granicus.if.org Git - python/commitdiff
Issue #27891: Consistently group and sort imports within idlelib modules.
authorTerry Jan Reedy <tjreedy@udel.edu>
Wed, 31 Aug 2016 04:50:55 +0000 (00:50 -0400)
committerTerry Jan Reedy <tjreedy@udel.edu>
Wed, 31 Aug 2016 04:50:55 +0000 (00:50 -0400)
47 files changed:
Lib/idlelib/README.txt
Lib/idlelib/autocomplete.py
Lib/idlelib/autocomplete_w.py
Lib/idlelib/autoexpand.py
Lib/idlelib/browser.py
Lib/idlelib/calltips.py
Lib/idlelib/codecontext.py
Lib/idlelib/colorizer.py
Lib/idlelib/config.py
Lib/idlelib/configdialog.py
Lib/idlelib/debugger.py
Lib/idlelib/debugobj.py
Lib/idlelib/dynoption.py
Lib/idlelib/editor.py
Lib/idlelib/filelist.py
Lib/idlelib/grep.py
Lib/idlelib/help.py
Lib/idlelib/help_about.py
Lib/idlelib/history.py
Lib/idlelib/hyperparser.py
Lib/idlelib/idle_test/test_iomenu.py
Lib/idlelib/macosx.py
Lib/idlelib/multicall.py
Lib/idlelib/outwin.py
Lib/idlelib/paragraph.py
Lib/idlelib/parenmatch.py
Lib/idlelib/pathbrowser.py
Lib/idlelib/percolator.py
Lib/idlelib/pyparse.py
Lib/idlelib/pyshell.py
Lib/idlelib/query.py
Lib/idlelib/replace.py
Lib/idlelib/rpc.py
Lib/idlelib/run.py
Lib/idlelib/runscript.py
Lib/idlelib/scrolledlist.py
Lib/idlelib/search.py
Lib/idlelib/searchbase.py
Lib/idlelib/searchengine.py
Lib/idlelib/stackviewer.py
Lib/idlelib/statusbar.py
Lib/idlelib/tabbedpages.py
Lib/idlelib/textview.py
Lib/idlelib/tree.py
Lib/idlelib/undo.py
Lib/idlelib/windows.py
Lib/idlelib/zoomheight.py

index f7aad68ae3f83c5e4dc0278022000d8a63a9aa5a..e52b5cd7b266afe7cf64ea57660245461d1a411e 100644 (file)
@@ -228,4 +228,23 @@ Help
 
 <No menu>
 Center Insert      # eEW.center_insert_event
-   
+
+  
+CODE STYLE -- Generally PEP 8.
+
+import
+------
+Put import at the top, unless there is a good reason otherwise.
+PEP 8 says to group stdlib, 3rd-party dependencies, and package imports.
+For idlelib, the groups are general stdlib, tkinter, and idlelib.
+Sort modules within each group, except that tkinter.ttk follows tkinter.
+Sort 'from idlelib import mod1' and 'from idlelib.mod2 import object'
+together by module, ignoring within module objects.
+Put 'import __main__' after other idlelib imports.
+
+Imports only needed for testing are not at the top but are put in the
+htest function def or the "if __name__ == '__main__'" clause.
+
+Within module imports like "from idlelib.mod import class" may cause
+circular imports to deadlock.  Even without this, circular imports may
+require at least one of the imports to be delayed until a function call.
index 1200008ba9a5185f751e5d4b1f1865d30e3ccd9b..1e44fa5bc66e8aecdf623ac4a10687b745c9630b 100644 (file)
@@ -4,26 +4,27 @@ This extension can complete either attribute names or file names. It can pop
 a window with all available names, for the user to select from.
 """
 import os
-import sys
 import string
+import sys
 
-from idlelib.config import idleConf
-
-# This string includes all chars that may be in an identifier
-ID_CHARS = string.ascii_letters + string.digits + "_"
-
-# These constants represent the two different types of completions
+# These constants represent the two different types of completions.
+# They must be defined here so autocomple_w can import them.
 COMPLETE_ATTRIBUTES, COMPLETE_FILES = range(1, 2+1)
 
 from idlelib import autocomplete_w
+from idlelib.config import idleConf
 from idlelib.hyperparser import HyperParser
-
 import __main__
 
+# This string includes all chars that may be in an identifier.
+# TODO Update this here and elsewhere.
+ID_CHARS = string.ascii_letters + string.digits + "_"
+
 SEPS = os.sep
 if os.altsep:  # e.g. '/' on Windows...
     SEPS += os.altsep
 
+
 class AutoComplete:
 
     menudefs = [
index 31837e074022bc21ce90f46079fb84ead6f9a545..3374c6e94510aae80dc91e5529c3cb42dbb51c68 100644 (file)
@@ -3,8 +3,9 @@ An auto-completion window for IDLE, used by the autocomplete extension
 """
 from tkinter import *
 from tkinter.ttk import Scrollbar
-from idlelib.multicall import MC_SHIFT
+
 from idlelib.autocomplete import COMPLETE_FILES, COMPLETE_ATTRIBUTES
+from idlelib.multicall import MC_SHIFT
 
 HIDE_VIRTUAL_EVENT_NAME = "<<autocompletewindow-hide>>"
 HIDE_SEQUENCES = ("<FocusOut>", "<ButtonPress>")
index 719060765b0bbcb693fa07a4b10b2efa555ccee7..6b46bee69c95f5eacb2e7c92ddffcf68e55e976f 100644 (file)
@@ -12,8 +12,8 @@ its state.
 
 This is an extension file and there is only one instance of AutoExpand.
 '''
-import string
 import re
+import string
 
 ###$ event <<expand-word>>
 ###$ win <Alt-slash>
@@ -100,7 +100,6 @@ class AutoExpand:
             i = i-1
         return line[i:]
 
-
 if __name__ == '__main__':
     import unittest
     unittest.main('idlelib.idle_test.test_autoexpand', verbosity=2)
index 9968333c245f290eb3f2295cf84f17bd1f1d4e1a..ea05638df1a189cd7455305020cb48168a9430b2 100644 (file)
@@ -11,13 +11,13 @@ XXX TO DO:
 """
 
 import os
-import sys
 import pyclbr
+import sys
 
+from idlelib.config import idleConf
 from idlelib import pyshell
-from idlelib.windows import ListedToplevel
 from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
-from idlelib.config import idleConf
+from idlelib.windows import ListedToplevel
 
 file_open = None  # Method...Item and Class...Item use this.
 # Normally pyshell.flist.open, but there is no pyshell.flist for htest.
index 3a9b1c67766d4434264a7e5a67502f357290e4d9..abcc1427c483400bba7907539d65d180d94f5d75 100644 (file)
@@ -5,7 +5,6 @@ parameter and docstring information when you type an opening parenthesis, and
 which disappear when you type a closing parenthesis.
 
 """
-import __main__
 import inspect
 import re
 import sys
@@ -14,6 +13,7 @@ import types
 
 from idlelib import calltip_w
 from idlelib.hyperparser import HyperParser
+import __main__
 
 class CallTips:
 
index 2a21a1f84ab23660690f4ade0409046642cd07ce..f25e1b33a086e8597da97456063d2cd10117e44b 100644 (file)
@@ -9,10 +9,12 @@ variable in the codecontext section of config-extensions.def. Lines which do
 not open blocks are not shown in the context hints pane.
 
 """
-import tkinter
-from tkinter.constants import TOP, LEFT, X, W, SUNKEN
 import re
 from sys import maxsize as INFINITY
+
+import tkinter
+from tkinter.constants import TOP, LEFT, X, W, SUNKEN
+
 from idlelib.config import idleConf
 
 BLOCKOPENERS = {"class", "def", "elif", "else", "except", "finally", "for",
index f5dd03d092e3cd5e711f2a0176b16253364185b5..7310bb2cc85eccffa934c0577c5a263f7fb129ee 100644 (file)
@@ -1,9 +1,10 @@
-import time
-import re
-import keyword
 import builtins
-from idlelib.delegator import Delegator
+import keyword
+import re
+import time
+
 from idlelib.config import idleConf
+from idlelib.delegator import Delegator
 
 DEBUG = False
 
index d2f0b139b5155fbc0b87dfa16b8d760590bdc91a..10fe3bacebca5fa372eaaa10a8fe9648d35ddc2f 100644 (file)
@@ -18,10 +18,10 @@ configuration problem notification and resolution.
 """
 # TODOs added Oct 2014, tjr
 
+from configparser import ConfigParser
 import os
 import sys
 
-from configparser import ConfigParser
 from tkinter.font import Font, nametofont
 
 class InvalidConfigType(Exception): pass
index 2f361bdbba2e23e45d56103d5b837c899f1e6790..fa47aaad140ebdc15b53a52caf11cc348290e77a 100644 (file)
@@ -11,17 +11,17 @@ Refer to comments in EditorWindow autoindent code for details.
 """
 from tkinter import *
 from tkinter.ttk import Scrollbar
-import tkinter.messagebox as tkMessageBox
 import tkinter.colorchooser as tkColorChooser
 import tkinter.font as tkFont
+import tkinter.messagebox as tkMessageBox
 
 from idlelib.config import idleConf
-from idlelib.dynoption import DynOptionMenu
 from idlelib.config_key import GetKeysDialog
+from idlelib.dynoption import DynOptionMenu
+from idlelib import macosx
 from idlelib.query import SectionName, HelpSource
 from idlelib.tabbedpages import TabbedPageSet
 from idlelib.textview import view_text
-from idlelib import macosx
 
 class ConfigDialog(Toplevel):
 
index ea393b12c0c303f1a3d1fdfe2f710b142238a833..114d0d128e883e9bfa8e4139f30da0551d12e684 100644 (file)
@@ -1,10 +1,12 @@
-import os
 import bdb
+import os
+
 from tkinter import *
 from tkinter.ttk import Scrollbar
-from idlelib.windows import ListedToplevel
-from idlelib.scrolledlist import ScrolledList
+
 from idlelib import macosx
+from idlelib.scrolledlist import ScrolledList
+from idlelib.windows import ListedToplevel
 
 
 class Idb(bdb.Bdb):
index c116fcda23b68dda6deb5c767aab2736d14cb4c9..b70b13cec481de62246b92732a3a82d70e4d36cd 100644 (file)
@@ -8,11 +8,10 @@
 
 # XXX TO DO:
 # - for classes/modules, add "open source" to object browser
+from reprlib import Repr
 
 from idlelib.tree import TreeItem, TreeNode, ScrolledCanvas
 
-from reprlib import Repr
-
 myrepr = Repr()
 myrepr.maxstring = 100
 myrepr.maxother = 100
index 962f2c30d9ff9f421a219d92ec927a7a950ca74e..9c6ffa435a1089ed6f8a9cb4728ffa93447b9ee3 100644 (file)
@@ -3,6 +3,7 @@ OptionMenu widget modified to allow dynamic menu reconfiguration
 and setting of highlightthickness
 """
 import copy
+
 from tkinter import OptionMenu, _setit, StringVar, Button
 
 class DynOptionMenu(OptionMenu):
index 7372ecf2d7648034a448c8e5b1d45a4fc6a74845..ae475cb9f9a6a59e99b53fbbe49315c80017b26a 100644 (file)
@@ -6,24 +6,28 @@ import platform
 import re
 import string
 import sys
+import tokenize
+import traceback
+import webbrowser
+
 from tkinter import *
 from tkinter.ttk import Scrollbar
 import tkinter.simpledialog as tkSimpleDialog
 import tkinter.messagebox as tkMessageBox
-import traceback
-import webbrowser
 
+from idlelib.config import idleConf
+from idlelib import configdialog
+from idlelib import grep
+from idlelib import help
+from idlelib import help_about
+from idlelib import macosx
 from idlelib.multicall import MultiCallCreator
+from idlelib import pyparse
 from idlelib import query
-from idlelib import windows
-from idlelib import search
-from idlelib import grep
 from idlelib import replace
-from idlelib import pyparse
-from idlelib.config import idleConf
-from idlelib import help_about, textview, configdialog
-from idlelib import macosx
-from idlelib import help
+from idlelib import search
+from idlelib import textview
+from idlelib import windows
 
 # The default tab setting for a Text widget, in average-width characters.
 TK_TABWIDTH_DEFAULT = 8
@@ -1515,9 +1519,6 @@ def classifyws(s, tabwidth):
             break
     return raw, effective
 
-import tokenize
-_tokenize = tokenize
-del tokenize
 
 class IndentSearcher(object):
 
@@ -1542,8 +1543,8 @@ class IndentSearcher(object):
         return self.text.get(mark, mark + " lineend+1c")
 
     def tokeneater(self, type, token, start, end, line,
-                   INDENT=_tokenize.INDENT,
-                   NAME=_tokenize.NAME,
+                   INDENT=tokenize.INDENT,
+                   NAME=tokenize.NAME,
                    OPENERS=('class', 'def', 'for', 'if', 'try', 'while')):
         if self.finished:
             pass
@@ -1554,19 +1555,19 @@ class IndentSearcher(object):
             self.finished = 1
 
     def run(self):
-        save_tabsize = _tokenize.tabsize
-        _tokenize.tabsize = self.tabwidth
+        save_tabsize = tokenize.tabsize
+        tokenize.tabsize = self.tabwidth
         try:
             try:
-                tokens = _tokenize.generate_tokens(self.readline)
+                tokens = tokenize.generate_tokens(self.readline)
                 for token in tokens:
                     self.tokeneater(*token)
-            except (_tokenize.TokenError, SyntaxError):
+            except (tokenize.TokenError, SyntaxError):
                 # since we cut off the tokenizer early, we can trigger
                 # spurious errors
                 pass
         finally:
-            _tokenize.tabsize = save_tabsize
+            tokenize.tabsize = save_tabsize
         return self.blkopenline, self.indentedline
 
 ### end autoindent code ###
index b5af90ccaf360a43af86cbe79eea307b973c7487..f46ad7cd7e9e0e7bd101c209561cc71bc7879b91 100644 (file)
@@ -1,4 +1,5 @@
 import os
+
 from tkinter import *
 import tkinter.messagebox as tkMessageBox
 
index cfb0ea0ad8d362fd22b7b55c6d869ca3ca18244a..64ba28d94a5c141154a99068da94a86cad154798 100644 (file)
@@ -1,11 +1,14 @@
-import os
 import fnmatch
+import os
 import sys
+
 from tkinter import StringVar, BooleanVar
 from tkinter.ttk import Checkbutton
-from idlelib import searchengine
+
 from idlelib.searchbase import SearchDialogBase
-# Importing OutputWindow fails due to import loop
+from idlelib import searchengine
+
+# Importing OutputWindow here fails due to import loop
 # EditorWindow -> GrepDialop -> OutputWindow -> EditorWindow
 
 def grep(text, io=None, flist=None):
@@ -127,9 +130,9 @@ class GrepDialog(SearchDialogBase):
 
 
 def _grep_dialog(parent):  # htest #
-    from idlelib.pyshell import PyShellFileList
     from tkinter import Toplevel, Text, SEL, END
     from tkinter.ttk import Button
+    from idlelib.pyshell import PyShellFileList
     top = Toplevel(parent)
     top.title("Test GrepDialog")
     x, y = map(int, parent.geometry().split('+')[1:])
index 03d6ea24e0f05a4572499bcdfd4e9224145b0f8c..77e01a31c08f60d665467e8185910c45a0e651a1 100644 (file)
@@ -27,9 +27,11 @@ show_idlehelp - Create HelpWindow.  Called in EditorWindow.help_dialog.
 from html.parser import HTMLParser
 from os.path import abspath, dirname, isfile, join
 from platform import python_version
+
 from tkinter import Toplevel, Frame, Text, Menu
 from tkinter.ttk import Menubutton, Scrollbar
 from tkinter import font as tkfont
+
 from idlelib.config import idleConf
 
 ## About IDLE ##
index 54f3599ca45f8795df1800a109da3b2cbaff0fd3..071bd3ec0f219cc0994fab2bbc6e35aaa6f95471 100644 (file)
@@ -1,12 +1,14 @@
 """About Dialog for IDLE
 
 """
-
 import os
 from sys import version
+
 from tkinter import *
+
 from idlelib import textview
 
+
 class AboutDialog(Toplevel):
     """Modal about dialog for idle
 
@@ -144,6 +146,7 @@ class AboutDialog(Toplevel):
     def Ok(self, event=None):
         self.destroy()
 
+
 if __name__ == '__main__':
     import unittest
     unittest.main('idlelib.idle_test.test_help_about', verbosity=2, exit=False)
index 6068d4f9fad3f4aee541c3580ca9c6ac07dca2cb..56f53a0f2fb9912925b3c566aab9d412c8864d95 100644 (file)
@@ -2,6 +2,7 @@
 
 from idlelib.config import idleConf
 
+
 class History:
     ''' Implement Idle Shell history mechanism.
 
@@ -99,6 +100,7 @@ class History:
         self.pointer = None
         self.prefix = None
 
+
 if __name__ == "__main__":
     from unittest import main
-    main('idlelib.idle_test.test_idlehistory', verbosity=2, exit=False)
+    main('idlelib.idle_test.test_history', verbosity=2, exit=False)
index f904a39e24f0552df056363665e781bdbcfd9fc0..450a709c09bbfafe02ac3631c469451888af43c8 100644 (file)
@@ -4,11 +4,10 @@ HyperParser uses PyParser.  PyParser mostly gives information on the
 proper indentation of code.  HyperParser gives additional information on
 the structure of code.
 """
-
-import string
 from keyword import iskeyword
-from idlelib import pyparse
+import string
 
+from idlelib import pyparse
 
 # all ASCII chars that may be in an identifier
 _ASCII_ID_CHARS = frozenset(string.ascii_letters + string.digits + "_")
index f8ff1127c3595e98b3297391cc5d2b3b1b10db8a..65bf593055956292f34be6c03edce02f1bc06d94 100644 (file)
@@ -1,6 +1,7 @@
 import unittest
 import io
-from idlelib.pyshell import PseudoInputFile, PseudoOutputFile
+
+from idlelib.run import PseudoInputFile, PseudoOutputFile
 
 
 class S(str):
@@ -230,4 +231,4 @@ class PseudeInputFilesTest(unittest.TestCase):
 
 
 if __name__ == '__main__':
-    unittest.main()
+    unittest.main(verbosity=2)
index f9f558de188ccb8d8ba2149067d37fa860fac12d..c225dd9e1a115dac1d1ce968d8b9e35fa279a202 100644 (file)
@@ -2,9 +2,10 @@
 A number of functions that enhance IDLE on Mac OSX.
 """
 from sys import platform  # Used in _init_tk_type, changed by test.
-import tkinter
 import warnings
 
+import tkinter
+
 
 ## Define functions that query the Mac graphics type.
 ## _tk_type and its initializer are private to this section.
index 8a66cd9f72d13f066301a3ef77af34fc5509d368..b74fed4c0cd13f59eb2f656a708cbe6180a705fb 100644 (file)
@@ -28,9 +28,9 @@ The order by which events are called is defined by these rules:
    unless this conflicts with the first rule.
 Each function will be called at most once for each event.
 """
-
-import sys
 import re
+import sys
+
 import tkinter
 
 # the event type constants, which define the meaning of mc_type
index b3bc786151e04b0aa988d4bad5a25a53bd75a093..f6d2915c62443ed03d62863b96c33e258f0e51c6 100644 (file)
@@ -1,9 +1,12 @@
-from tkinter import *
-from idlelib.editor import EditorWindow
 import re
+
+from tkinter import *
 import tkinter.messagebox as tkMessageBox
+
+from idlelib.editor import EditorWindow
 from idlelib import iomenu
 
+
 class OutputWindow(EditorWindow):
 
     """An editor window that can serve as an output file.
index 0323b53d863b658263a19a02ab4e23603f550a85..5d358eed05bbc59af91c657abcf481d390713b12 100644 (file)
@@ -14,10 +14,11 @@ Known problems with comment reformatting:
   spaces, they will not be considered part of the same block.
 * Fancy comments, like this bulleted list, aren't handled :-)
 """
-
 import re
+
 from idlelib.config import idleConf
 
+
 class FormatParagraph:
 
     menudefs = [
@@ -189,6 +190,7 @@ def get_comment_header(line):
     if m is None: return ""
     return m.group(1)
 
+
 if __name__ == "__main__":
     import unittest
     unittest.main('idlelib.idle_test.test_paragraph',
index 9586a3b91da4834e0859bb08da14002fc73fa0c8..ccec708f31f43685c7bf9181347b8f61b9dcb647 100644 (file)
@@ -4,7 +4,6 @@ When you hit a right paren, the cursor should move briefly to the left
 paren.  Paren here is used generically; the matching applies to
 parentheses, square brackets, and curly braces.
 """
-
 from idlelib.hyperparser import HyperParser
 from idlelib.config import idleConf
 
index 966af4b2594eb68e47ad4300ecf7e5a4c4b8b73b..6c19508d314d8f654d5884bee3d3a7364745baef 100644 (file)
@@ -1,10 +1,10 @@
+import importlib.machinery
 import os
 import sys
-import importlib.machinery
 
-from idlelib.tree import TreeItem
 from idlelib.browser import ClassBrowser, ModuleBrowserTreeItem
 from idlelib.pyshell import PyShellFileList
+from idlelib.tree import TreeItem
 
 
 class PathBrowser(ClassBrowser):
@@ -24,6 +24,7 @@ class PathBrowser(ClassBrowser):
     def rootnode(self):
         return PathBrowserTreeItem()
 
+
 class PathBrowserTreeItem(TreeItem):
 
     def GetText(self):
@@ -36,6 +37,7 @@ class PathBrowserTreeItem(TreeItem):
             sublist.append(item)
         return sublist
 
+
 class DirBrowserTreeItem(TreeItem):
 
     def __init__(self, dir, packages=[]):
@@ -95,6 +97,7 @@ class DirBrowserTreeItem(TreeItem):
         sorted.sort()
         return sorted
 
+
 def _path_browser(parent):  # htest #
     flist = PyShellFileList(parent)
     PathBrowser(flist, _htest=True)
index 4474f9abeadbb95259e6b3d334918048429c7525..d18daf05863c183d6a0e6c42b9518541e74f3cd8 100644 (file)
@@ -1,5 +1,5 @@
-from idlelib.redirector import WidgetRedirector
 from idlelib.delegator import Delegator
+from idlelib.redirector import WidgetRedirector
 
 
 class Percolator:
index 9ccbb250761e362e038f30a2a1f15e40d1cd3d1b..6739dfd1a07a6be70d0fa36647e4afc54ac7fd1e 100644 (file)
@@ -1,6 +1,6 @@
+from collections import Mapping
 import re
 import sys
-from collections import Mapping
 
 # Reason last stmt is continued (or C_NONE if it's not).
 (C_NONE, C_BACKSLASH, C_STRING_FIRST_LINE,
index 740c72e2a30e782e2f6cc2d8cf211c0fd24c18ba..e1eade1eea1021536ea36a71c0ca4db365ffb315 100755 (executable)
@@ -15,9 +15,13 @@ if TkVersion < 8.5:
             parent=root)
     sys.exit(1)
 
+from code import InteractiveInterpreter
 import getopt
+import io
+import linecache
 import os
 import os.path
+from platform import python_version, system
 import re
 import socket
 import subprocess
@@ -25,23 +29,20 @@ import sys
 import threading
 import time
 import tokenize
+import warnings
 
-import linecache
-from code import InteractiveInterpreter
-from platform import python_version, system
-
-from idlelib import testing
-from idlelib.editor import EditorWindow, fixwordbreaks
-from idlelib.filelist import FileList
+from idlelib import testing  # bool value
 from idlelib.colorizer import ColorDelegator
-from idlelib.undo import UndoDelegator
-from idlelib.outwin import OutputWindow
 from idlelib.config import idleConf
-from idlelib.run import idle_formatwarning, PseudoInputFile, PseudoOutputFile
-from idlelib import rpc
 from idlelib import debugger
 from idlelib import debugger_r
+from idlelib.editor import EditorWindow, fixwordbreaks
+from idlelib.filelist import FileList
 from idlelib import macosx
+from idlelib.outwin import OutputWindow
+from idlelib import rpc
+from idlelib.run import idle_formatwarning, PseudoInputFile, PseudoOutputFile
+from idlelib.undo import UndoDelegator
 
 HOST = '127.0.0.1' # python execution server on localhost loopback
 PORT = 0  # someday pass in host, port for remote debug capability
@@ -51,7 +52,6 @@ PORT = 0  # someday pass in host, port for remote debug capability
 # temporarily redirect the stream to the shell window to display warnings when
 # checking user's code.
 warning_stream = sys.__stderr__  # None, at least on Windows, if no console.
-import warnings
 
 def idle_showwarning(
         message, category, filename, lineno, file=None, line=None):
index a4584df98d217253051dff4fa80d3eb8162a8050..3b1f1e25be7f86ebcbd3fec62efad82f70669464 100644 (file)
@@ -23,9 +23,10 @@ Subclass HelpSource gets menu item and path for additions to Help menu.
 import importlib
 import os
 from sys import executable, platform  # Platform is set for one test.
+
 from tkinter import Toplevel, StringVar, W, E, N, S
-from tkinter import filedialog
 from tkinter.ttk import Frame, Button, Entry, Label
+from tkinter import filedialog
 from tkinter.font import Font
 
 class Query(Toplevel):
index 367bfc90637b3d7c97d38d142bc40bb217a9dfc4..abd9e59f4e5d17263211e41f5b5ee03389e8c3c5 100644 (file)
@@ -3,12 +3,12 @@ Uses idlelib.SearchEngine for search capability.
 Defines various replace related functions like replace, replace all,
 replace+find.
 """
+import re
+
 from tkinter import StringVar, TclError
 
-from idlelib import searchengine
 from idlelib.searchbase import SearchDialogBase
-import re
-
+from idlelib import searchengine
 
 def replace(text):
     """Returns a singleton ReplaceDialog instance.The single dialog
index 48105f2aa1bd0b4fa953722031f271d60cddfb5f..8f57edb836dec8a7c68a53c191a5d94bd730fc79 100644 (file)
@@ -26,23 +26,21 @@ See the Idle run.main() docstring for further information on how this was
 accomplished in Idle.
 
 """
-
-import sys
-import os
+import builtins
+import copyreg
 import io
-import socket
+import marshal
+import os
+import pickle
+import queue
 import select
+import socket
 import socketserver
 import struct
-import pickle
+import sys
 import threading
-import queue
 import traceback
-import copyreg
 import types
-import marshal
-import builtins
-
 
 def unpickle_code(ms):
     co = marshal.loads(ms)
@@ -60,10 +58,12 @@ def dumps(obj, protocol=None):
     p.dump(obj)
     return f.getvalue()
 
+
 class CodePickler(pickle.Pickler):
     dispatch_table = {types.CodeType: pickle_code}
     dispatch_table.update(copyreg.dispatch_table)
 
+
 BUFSIZE = 8*1024
 LOCALHOST = '127.0.0.1'
 
@@ -487,16 +487,19 @@ class RemoteObject(object):
     # Token mix-in class
     pass
 
+
 def remoteref(obj):
     oid = id(obj)
     objecttable[oid] = obj
     return RemoteProxy(oid)
 
+
 class RemoteProxy(object):
 
     def __init__(self, oid):
         self.oid = oid
 
+
 class RPCHandler(socketserver.BaseRequestHandler, SocketIO):
 
     debugging = False
@@ -514,6 +517,7 @@ class RPCHandler(socketserver.BaseRequestHandler, SocketIO):
     def get_remote_proxy(self, oid):
         return RPCProxy(self, oid)
 
+
 class RPCClient(SocketIO):
 
     debugging = False
@@ -539,6 +543,7 @@ class RPCClient(SocketIO):
     def get_remote_proxy(self, oid):
         return RPCProxy(self, oid)
 
+
 class RPCProxy(object):
 
     __methods = None
@@ -587,6 +592,7 @@ def _getattributes(obj, attributes):
         if not callable(attr):
             attributes[name] = 1
 
+
 class MethodProxy(object):
 
     def __init__(self, sockio, oid, name):
index c7ee0b3e458bbae7c1db9134f5b7a687a1a685f3..afa9744a346c92bd0c071259b930af3772a429e9 100644 (file)
@@ -2,21 +2,21 @@ import io
 import linecache
 import queue
 import sys
-import _thread as thread
-import threading
 import time
 import traceback
-import tkinter
-
-from idlelib import calltips
-from idlelib import autocomplete
+import _thread as thread
+import threading
+import warnings
 
-from idlelib import debugger_r
-from idlelib import debugobj_r
-from idlelib import stackviewer
-from idlelib import rpc
-from idlelib import iomenu
+import tkinter  # Tcl, deletions, messagebox if startup fails
 
+from idlelib import autocomplete  # AutoComplete, fetch_encodings
+from idlelib import calltips  # CallTips
+from idlelib import debugger_r  # start_debugger
+from idlelib import debugobj_r  # remote_object_tree_item
+from idlelib import iomenu  # encoding
+from idlelib import rpc  # multiple objects
+from idlelib import stackviewer  # StackTreeItem
 import __main__
 
 for mod in ('simpledialog', 'messagebox', 'font',
@@ -27,7 +27,6 @@ for mod in ('simpledialog', 'messagebox', 'font',
 
 LOCALHOST = '127.0.0.1'
 
-import warnings
 
 def idle_formatwarning(message, category, filename, lineno, line=None):
     """Format warnings the IDLE way."""
@@ -280,6 +279,7 @@ def exit():
     capture_warnings(False)
     sys.exit(0)
 
+
 class MyRPCServer(rpc.RPCServer):
 
     def handle_error(self, request, client_address):
index 7e7524a3c45cf9cbeeea1a17d87adf3915b2cd51..79d86adabc85a09fbd6db1f89421fd8a41409015 100644 (file)
@@ -20,11 +20,12 @@ XXX GvR Redesign this interface (yet again) as follows:
 import os
 import tabnanny
 import tokenize
+
 import tkinter.messagebox as tkMessageBox
-from idlelib import pyshell
 
 from idlelib.config import idleConf
 from idlelib import macosx
+from idlelib import pyshell
 
 indent_message = """Error: Inconsistent indentation detected!
 
index 4799995800ed5854c282c1583b97555abaff282a..cc08c26e5eefaa9d087aa2e233136ff54f8dfaf9 100644 (file)
@@ -1,7 +1,9 @@
 from tkinter import *
-from idlelib import macosx
 from tkinter.ttk import Scrollbar
 
+from idlelib import macosx
+
+
 class ScrolledList:
 
     default = "(None)"
index 508a35c3f1c26eb10d8877210a762890190324d3..4b9065930822844a7f3d5c9bef8fa0a42e82e62c 100644 (file)
@@ -24,6 +24,7 @@ def find_selection(text):
     "Handle the editor edit menu item and corresponding event."
     return _setup(text).find_selection(text)
 
+
 class SearchDialog(SearchDialogBase):
 
     def create_widgets(self):
index b326a1c6aae35f1b5a48645b3d855e7bba595d61..5f81785b712c088d6abec74918575ba8e30d88b7 100644 (file)
@@ -3,6 +3,7 @@
 from tkinter import Toplevel, Frame
 from tkinter.ttk import Entry, Label, Button, Checkbutton, Radiobutton
 
+
 class SearchDialogBase:
     '''Create most of a 3 or 4 row, 3 column search dialog.
 
index 2e3700ece3f9d0d9bc04781dcb5060deba903795..253f1b0831a6190ac69b03cc96afe544df5c3161 100644 (file)
@@ -1,5 +1,6 @@
 '''Define SearchEngine for search dialogs.'''
 import re
+
 from tkinter import StringVar, BooleanVar, TclError
 import tkinter.messagebox as tkMessageBox
 
@@ -14,6 +15,7 @@ def get(root):
         # This creates a cycle that persists until root is deleted.
     return root._searchengine
 
+
 class SearchEngine:
     """Handles searching a text widget for Find, Replace, and Grep."""
 
@@ -186,6 +188,7 @@ class SearchEngine:
             col = len(chars) - 1
         return None
 
+
 def search_reverse(prog, chars, col):
     '''Search backwards and return an re match object or None.
 
index c8c802ce2a68b8eaff03a1bf2da6249724430b33..0698def5d4c7f2d999bec2f054bc0c45afbd1662 100644 (file)
@@ -1,11 +1,12 @@
-import os
-import sys
 import linecache
+import os
 import re
+import sys
+
 import tkinter as tk
 
-from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
 from idlelib.debugobj import ObjectTreeItem, make_objecttreeitem
+from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
 
 def StackBrowser(root, flist=None, tb=None, top=None):
     if top is None:
@@ -16,6 +17,7 @@ def StackBrowser(root, flist=None, tb=None, top=None):
     node = TreeNode(sc.canvas, None, item)
     node.expand()
 
+
 class StackTreeItem(TreeItem):
 
     def __init__(self, flist=None, tb=None):
@@ -54,6 +56,7 @@ class StackTreeItem(TreeItem):
             sublist.append(item)
         return sublist
 
+
 class FrameTreeItem(TreeItem):
 
     def __init__(self, info, flist):
@@ -95,6 +98,7 @@ class FrameTreeItem(TreeItem):
             if os.path.isfile(filename):
                 self.flist.gotofileline(filename, lineno)
 
+
 class VariablesTreeItem(ObjectTreeItem):
 
     def GetText(self):
@@ -119,6 +123,7 @@ class VariablesTreeItem(ObjectTreeItem):
             sublist.append(item)
         return sublist
 
+
 def _stack_viewer(parent):  # htest #
     from idlelib.pyshell import PyShellFileList
     top = tk.Toplevel(parent)
index a65bfb3393af9ffecaf4557a8e21f150f6962abb..8618528d822130c63800a1a20db251d2d17127e0 100644 (file)
@@ -1,5 +1,6 @@
 from tkinter import Frame, Label
 
+
 class MultiStatusBar(Frame):
 
     def __init__(self, master, **kw):
@@ -17,6 +18,7 @@ class MultiStatusBar(Frame):
             label.config(width=width)
         label.config(text=text)
 
+
 def _multistatus_bar(parent):  # htest #
     from tkinter import Toplevel, Frame, Text, Button
     top = Toplevel(parent)
index ed07588fc471f86bf7a759cf1e28a1f56d9d4e69..4186fa201317ae8836a6b134d41a23f284eb8c1d 100644 (file)
@@ -285,6 +285,7 @@ class TabSet(Frame):
             # placed hide it
             self.tab_set.lower()
 
+
 class TabbedPageSet(Frame):
     """A Tkinter tabbed-pane widget.
 
@@ -302,6 +303,7 @@ class TabbedPageSet(Frame):
     remove_page() methods.
 
     """
+
     class Page(object):
         """Abstract base class for TabbedPageSet's pages.
 
@@ -467,6 +469,7 @@ class TabbedPageSet(Frame):
 
         self._tab_set.set_selected_tab(page_name)
 
+
 def _tabbed_pages(parent):  # htest #
     top=Toplevel(parent)
     x, y = map(int, parent.geometry().split('+')[1:])
index 7664524cd3896437f17ee2f40012d94f92c64488..b5c9f9b0ee597118d524c83137d431f5487d2c54 100644 (file)
@@ -1,11 +1,11 @@
 """Simple text browser for IDLE
 
 """
-
 from tkinter import *
 from tkinter.ttk import Scrollbar
 from tkinter.messagebox import showerror
 
+
 class TextViewer(Toplevel):
     """A simple text viewer dialog for IDLE
 
index 04e0734ec3ee2c7dea2397fcfe46f519aa902fbe..292ce36184c76d92d76a09aa8fca14ee64de0dc4 100644 (file)
 # - optimize tree redraw after expand of subnode
 
 import os
+
 from tkinter import *
 from tkinter.ttk import Scrollbar
-from idlelib import zoomheight
+
 from idlelib.config import idleConf
+from idlelib import zoomheight
 
 ICONDIR = "Icons"
 
index 9f291e599bae2e168451570621ae3deb48cc9d4a..4332f1099343b451ed097a97170b31546d14980b 100644 (file)
@@ -1,5 +1,7 @@
 import string
+
 from idlelib.delegator import Delegator
+
 # tkintter import not needed because module does not create widgets,
 # although many methods operate on text widget arguments.
 
@@ -158,7 +160,6 @@ class UndoDelegator(Delegator):
 
 
 class Command:
-
     # Base class for Undoable commands
 
     tags = None
@@ -204,7 +205,6 @@ class Command:
 
 
 class InsertCommand(Command):
-
     # Undoable insert command
 
     def __init__(self, index1, chars, tags=None):
@@ -262,7 +262,6 @@ class InsertCommand(Command):
 
 
 class DeleteCommand(Command):
-
     # Undoable delete command
 
     def __init__(self, index1, index2=None):
@@ -297,8 +296,8 @@ class DeleteCommand(Command):
         text.see('insert')
         ##sys.__stderr__.write("undo: %s\n" % self)
 
-class CommandSequence(Command):
 
+class CommandSequence(Command):
     # Wrapper for a sequence of undoable cmds to be undone/redone
     # as a unit
 
index bc74348f569c95a1c9d3ebab2de1d28a38ff0ac2..a3f858aa73fc487da158282554f6fd91e8b56b51 100644 (file)
@@ -1,5 +1,6 @@
 from tkinter import *
 
+
 class WindowList:
 
     def __init__(self):
@@ -48,6 +49,7 @@ class WindowList:
                 t, v, tb = sys.exc_info()
                 print("warning: callback failed in WindowList", t, ":", v)
 
+
 registry = WindowList()
 
 add_windows_to_menu = registry.add_windows_to_menu
index 0016e9de5f940b6af0b4d98a9b709935e03be08d..aa4a427eab737ffac6340059e002b105ac4866c8 100644 (file)
@@ -5,6 +5,7 @@ import sys
 
 from idlelib import macosx
 
+
 class ZoomHeight:
 
     menudefs = [
@@ -20,6 +21,7 @@ class ZoomHeight:
         top = self.editwin.top
         zoom_height(top)
 
+
 def zoom_height(top):
     geom = top.wm_geometry()
     m = re.match(r"(\d+)x(\d+)\+(-?\d+)\+(-?\d+)", geom)