Issue #27891: Consistently group and sort imports within idlelib modules.
This commit is contained in:
parent
89b1162511
commit
bfbaa6b206
|
@ -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.
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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>")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -11,13 +11,13 @@ XXX TO DO:
|
|||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import pyclbr
|
||||
import sys
|
||||
|
||||
from idlelib import pyshell
|
||||
from idlelib.windows import ListedToplevel
|
||||
from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
|
||||
from idlelib.config import idleConf
|
||||
from idlelib import pyshell
|
||||
from idlelib.tree import TreeNode, TreeItem, ScrolledCanvas
|
||||
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.
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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.multicall import MultiCallCreator
|
||||
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 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 replace
|
||||
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 ###
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import os
|
||||
|
||||
from tkinter import *
|
||||
import tkinter.messagebox as tkMessageBox
|
||||
|
||||
|
|
|
@ -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:])
|
||||
|
|
|
@ -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 ##
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 + "_")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from idlelib.redirector import WidgetRedirector
|
||||
from idlelib.delegator import Delegator
|
||||
from idlelib.redirector import WidgetRedirector
|
||||
|
||||
|
||||
class Percolator:
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -3,12 +3,12 @@ Uses idlelib.SearchEngine for search capability.
|
|||
Defines various replace related functions like replace, replace all,
|
||||
replace+find.
|
||||
"""
|
||||
from tkinter import StringVar, TclError
|
||||
|
||||
from idlelib import searchengine
|
||||
from idlelib.searchbase import SearchDialogBase
|
||||
import re
|
||||
|
||||
from tkinter import StringVar, TclError
|
||||
|
||||
from idlelib.searchbase import SearchDialogBase
|
||||
from idlelib import searchengine
|
||||
|
||||
def replace(text):
|
||||
"""Returns a singleton ReplaceDialog instance.The single dialog
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -2,21 +2,21 @@ import io
|
|||
import linecache
|
||||
import queue
|
||||
import sys
|
||||
import _thread as thread
|
||||
import threading
|
||||
import time
|
||||
import traceback
|
||||
import tkinter
|
||||
import _thread as thread
|
||||
import threading
|
||||
import warnings
|
||||
|
||||
from idlelib import calltips
|
||||
from idlelib import autocomplete
|
||||
|
||||
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):
|
||||
|
|
|
@ -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!
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
from tkinter import *
|
||||
from idlelib import macosx
|
||||
from tkinter.ttk import Scrollbar
|
||||
|
||||
from idlelib import macosx
|
||||
|
||||
|
||||
class ScrolledList:
|
||||
|
||||
default = "(None)"
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:])
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -15,10 +15,12 @@
|
|||
# - 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"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue