import sys
import string
-from configHandler import idleConf
-
-import AutoCompleteWindow
-from HyperParser import HyperParser
-
-import __main__
+from idlelib.configHandler import idleConf
# This string includes all chars that may be in a file name (without a path
# separator)
# These constants represent the two different types of completions
COMPLETE_ATTRIBUTES, COMPLETE_FILES = range(1, 2+1)
+from idlelib import AutoCompleteWindow
+from idlelib.HyperParser import HyperParser
+
+import __main__
+
SEPS = os.sep
if os.altsep: # e.g. '/' on Windows...
SEPS += os.altsep
smalll = eval("__all__", namespace)
smalll.sort()
else:
- smalll = filter(lambda s: s[:1] != '_', bigl)
+ smalll = [s for s in bigl if s[:1] != '_']
else:
try:
entity = self.get_entity(what)
smalll = entity.__all__
smalll.sort()
else:
- smalll = filter(lambda s: s[:1] != '_', bigl)
+ smalll = [s for s in bigl if s[:1] != '_']
except:
return [], []
expandedpath = os.path.expanduser(what)
bigl = os.listdir(expandedpath)
bigl.sort()
- smalll = filter(lambda s: s[:1] != '.', bigl)
+ smalll = [s for s in bigl if s[:1] != '.']
except OSError:
return [], []
An auto-completion window for IDLE, used by the AutoComplete extension
"""
from Tkinter import *
-from MultiCall import MC_SHIFT
-import AutoComplete
+from idlelib.MultiCall import MC_SHIFT
+from idlelib.AutoComplete import COMPLETE_FILES, COMPLETE_ATTRIBUTES
HIDE_VIRTUAL_EVENT_NAME = "<<autocompletewindow-hide>>"
HIDE_SEQUENCES = ("<FocusOut>", "<ButtonPress>")
if keysym != "Tab":
self.lastkey_was_tab = False
if (len(keysym) == 1 or keysym in ("underscore", "BackSpace")
- or (self.mode==AutoComplete.COMPLETE_FILES and keysym in
+ or (self.mode == COMPLETE_FILES and keysym in
("period", "minus"))) \
and not (state & ~MC_SHIFT):
# Normal editing of text
self.hide_window()
return
- elif (self.mode == AutoComplete.COMPLETE_ATTRIBUTES and keysym in
+ elif (self.mode == COMPLETE_ATTRIBUTES and keysym in
("period", "space", "parenleft", "parenright", "bracketleft",
"bracketright")) or \
- (self.mode == AutoComplete.COMPLETE_FILES and keysym in
+ (self.mode == COMPLETE_FILES and keysym in
("slash", "backslash", "quotedbl", "apostrophe")) \
and not (state & ~MC_SHIFT):
# If start is a prefix of the selection, but is not '' when
# selected completion. Anyway, close the list.
cursel = int(self.listbox.curselection()[0])
if self.completions[cursel][:len(self.start)] == self.start \
- and (self.mode==AutoComplete.COMPLETE_ATTRIBUTES or self.start):
+ and (self.mode == COMPLETE_ATTRIBUTES or self.start):
self._change_start(self.completions[cursel])
self.hide_window()
return
"""
import sys
-from configHandler import idleConf
-import macosxSupport
+from idlelib.configHandler import idleConf
+from idlelib import macosxSupport
menudefs = [
# underscore prefixes character to underscore
import sys
import types
-import CallTipWindow
-from HyperParser import HyperParser
+from idlelib import CallTipWindow
+from idlelib.HyperParser import HyperParser
import __main__
import sys
import pyclbr
-import PyShell
-from WindowList import ListedToplevel
-from TreeWidget import TreeNode, TreeItem, ScrolledCanvas
-from configHandler import idleConf
+from idlelib import PyShell
+from idlelib.WindowList import ListedToplevel
+from idlelib.TreeWidget import TreeNode, TreeItem, ScrolledCanvas
+from idlelib.configHandler import idleConf
class ClassBrowser:
"""
import Tkinter
from Tkconstants import TOP, LEFT, X, W, SUNKEN
-from configHandler import idleConf
import re
from sys import maxint as INFINITY
+from idlelib.configHandler import idleConf
BLOCKOPENERS = set(["class", "def", "elif", "else", "except", "finally", "for",
"if", "try", "while", "with"])
import keyword
import __builtin__
from Tkinter import *
-from Delegator import Delegator
-from configHandler import idleConf
+from idlelib.Delegator import Delegator
+from idlelib.configHandler import idleConf
DEBUG = False
self.tag_remove(tag, "1.0", "end")
def main():
- from Percolator import Percolator
+ from idlelib.Percolator import Percolator
root = Tk()
root.wm_protocol("WM_DELETE_WINDOW", root.quit)
text = Text(background="white")
import bdb
import types
from Tkinter import *
-from WindowList import ListedToplevel
-from ScrolledList import ScrolledList
-import macosxSupport
+from idlelib.WindowList import ListedToplevel
+from idlelib.ScrolledList import ScrolledList
+from idlelib import macosxSupport
class Idb(bdb.Bdb):
from Tkinter import *
import tkSimpleDialog
import tkMessageBox
-from MultiCall import MultiCallCreator
-
import webbrowser
-import idlever
-import WindowList
-import SearchDialog
-import GrepDialog
-import ReplaceDialog
-import PyParse
-from configHandler import idleConf
-import aboutDialog, textView, configDialog
-import macosxSupport
+
+from idlelib.MultiCall import MultiCallCreator
+from idlelib import idlever
+from idlelib import WindowList
+from idlelib import SearchDialog
+from idlelib import GrepDialog
+from idlelib import ReplaceDialog
+from idlelib import PyParse
+from idlelib.configHandler import idleConf
+from idlelib import aboutDialog, textView, configDialog
+from idlelib import macosxSupport
# The default tab setting for a Text widget, in average-width characters.
TK_TABWIDTH_DEFAULT = 8
return file, filename, descr
class EditorWindow(object):
- from Percolator import Percolator
- from ColorDelegator import ColorDelegator
- from UndoDelegator import UndoDelegator
- from IOBinding import IOBinding, filesystemencoding, encoding
- import Bindings
+ from idlelib.Percolator import Percolator
+ from idlelib.ColorDelegator import ColorDelegator
+ from idlelib.UndoDelegator import UndoDelegator
+ from idlelib.IOBinding import IOBinding, filesystemencoding, encoding
+ from idlelib import Bindings
from Tkinter import Toplevel
- from MultiStatusBar import MultiStatusBar
+ from idlelib.MultiStatusBar import MultiStatusBar
help_url = None
return None
head, tail = os.path.split(filename)
base, ext = os.path.splitext(tail)
- import ClassBrowser
+ from idlelib import ClassBrowser
ClassBrowser.ClassBrowser(self.flist, base, [head])
def open_path_browser(self, event=None):
- import PathBrowser
+ from idlelib import PathBrowser
PathBrowser.PathBrowser(self.flist)
def gotoline(self, lineno):
class FileList:
- from EditorWindow import EditorWindow # class variable, may be overridden
- # e.g. by PyShellFileList
+ # N.B. this import overridden in PyShellFileList.
+ from idlelib.EditorWindow import EditorWindow
def __init__(self, root):
self.root = root
def _test():
- from EditorWindow import fixwordbreaks
+ from idlelib.EditorWindow import fixwordbreaks
import sys
root = Tk()
fixwordbreaks(root)
# * Fancy comments, like this bulleted list, arent handled :-)
import re
-from configHandler import idleConf
+from idlelib.configHandler import idleConf
class FormatParagraph:
import fnmatch
import sys
from Tkinter import *
-import SearchEngine
-from SearchDialogBase import SearchDialogBase
+from idlelib import SearchEngine
+from idlelib.SearchDialogBase import SearchDialogBase
def grep(text, io=None, flist=None):
root = text._root()
if not path:
self.top.bell()
return
- from OutputWindow import OutputWindow
+ from idlelib.OutputWindow import OutputWindow
save = sys.stdout
try:
sys.stdout = OutputWindow(self.flist)
import string
import keyword
-import PyParse
+from idlelib import PyParse
class HyperParser:
from Tkinter import *
from SimpleDialog import SimpleDialog
-from configHandler import idleConf
+from idlelib.configHandler import idleConf
try:
from codecs import BOM_UTF8
-from configHandler import idleConf
+from idlelib.configHandler import idleConf
class History:
import string
import re
import Tkinter
-import macosxSupport
+from idlelib import macosxSupport
# the event type constants, which define the meaning of mc_type
MC_KEYPRESS=0; MC_KEYRELEASE=1; MC_BUTTONPRESS=2; MC_BUTTONRELEASE=3;
for i, m in enumerate(_modifiers)
if (1 << i) & s)
for s in _states]
-_state_subsets = map(lambda i: filter(lambda j: not (j & (~i)), _states),
- _states)
-for l in _state_subsets:
- l.sort(lambda a, b, nummod = lambda x: len(filter(lambda i: (1<<i) & x,
- range(len(_modifiers)))):
- nummod(b) - nummod(a))
+
+def expand_substates(states):
+ '''For each item of states return a list containing all combinations of
+ that item with individual bits reset, sorted by the number of set bits.
+ '''
+ def nbits(n):
+ "number of bits set in n base 2"
+ nb = 0
+ while n:
+ n, rem = divmod(n, 2)
+ nb += rem
+ return nb
+ statelist = []
+ for state in states:
+ substates = list(set(state & x for x in states))
+ substates.sort(key=nbits, reverse=True)
+ statelist.append(substates)
+ return statelist
+
+_state_subsets = expand_substates(_states)
+
# _state_codes gives for each state, the portable code to be passed as mc_state
_state_codes = []
for s in _states:
assert issubclass(widget, Tkinter.Misc)
def __init__(self, *args, **kwargs):
- apply(widget.__init__, (self,)+args, kwargs)
+ widget.__init__(self, *args, **kwargs)
# a dictionary which maps a virtual event to a tuple with:
# 0. the function binded
# 1. a list of triplets - the sequences it is binded to
# XXX TO DO:
# - for classes/modules, add "open source" to object browser
-from TreeWidget import TreeItem, TreeNode, ScrolledCanvas
+from idlelib.TreeWidget import TreeItem, TreeNode, ScrolledCanvas
from repr import Repr
from Tkinter import *
-from EditorWindow import EditorWindow
+from idlelib.EditorWindow import EditorWindow
import re
import tkMessageBox
-import IOBinding
+from idlelib import IOBinding
class OutputWindow(EditorWindow):
self.text.see(mark)
self.text.update()
- def writelines(self, l):
- map(self.write, l)
+ def writelines(self, lines):
+ for line in lines:
+ self.write(line)
def flush(self):
pass
parentheses, square brackets, and curly braces.
"""
-from HyperParser import HyperParser
-from configHandler import idleConf
+from idlelib.HyperParser import HyperParser
+from idlelib.configHandler import idleConf
_openers = {')':'(',']':'[','}':'{'}
CHECK_DELAY = 100 # miliseconds
import sys
import imp
-from TreeWidget import TreeItem
-from ClassBrowser import ClassBrowser, ModuleBrowserTreeItem
+from idlelib.TreeWidget import TreeItem
+from idlelib.ClassBrowser import ClassBrowser, ModuleBrowserTreeItem
class PathBrowser(ClassBrowser):
return sorted
def main():
- import PyShell
+ from idlelib import PyShell
PathBrowser(PyShell.flist)
if sys.stdin is sys.__stdin__:
mainloop()
-from WidgetRedirector import WidgetRedirector
-from Delegator import Delegator
+from idlelib.WidgetRedirector import WidgetRedirector
+from idlelib.Delegator import Delegator
class Percolator:
import threading
import traceback
import types
-import macosxSupport
import linecache
from code import InteractiveInterpreter
sys.exit(1)
import tkMessageBox
-from EditorWindow import EditorWindow, fixwordbreaks
-from FileList import FileList
-from ColorDelegator import ColorDelegator
-from UndoDelegator import UndoDelegator
-from OutputWindow import OutputWindow
-from configHandler import idleConf
-import idlever
-
-import rpc
-import Debugger
-import RemoteDebugger
+from idlelib.EditorWindow import EditorWindow, fixwordbreaks
+from idlelib.FileList import FileList
+from idlelib.ColorDelegator import ColorDelegator
+from idlelib.UndoDelegator import UndoDelegator
+from idlelib.OutputWindow import OutputWindow
+from idlelib.configHandler import idleConf
+from idlelib import idlever
+from idlelib import rpc
+from idlelib import Debugger
+from idlelib import RemoteDebugger
+from idlelib import macosxSupport
IDENTCHARS = string.ascii_letters + string.digits + "_"
HOST = '127.0.0.1' # python execution server on localhost loopback
return
def remote_stack_viewer(self):
- import RemoteObjectBrowser
+ from idlelib import RemoteObjectBrowser
oid = self.rpcclt.remotequeue("exec", "stackviewer", ("flist",), {})
if oid is None:
self.tkconsole.root.bell()
return
item = RemoteObjectBrowser.StubObjectTreeItem(self.rpcclt, oid)
- from TreeWidget import ScrolledCanvas, TreeNode
+ from idlelib.TreeWidget import ScrolledCanvas, TreeNode
top = Toplevel(self.tkconsole.root)
theme = idleConf.GetOption('main','Theme','name')
background = idleConf.GetHighlight(theme, 'normal')['background']
self.save_warnings_filters = warnings.filters[:]
warnings.filterwarnings(action="error", category=SyntaxWarning)
if isinstance(source, types.UnicodeType):
- import IOBinding
+ from idlelib import IOBinding
try:
source = source.encode(IOBinding.encoding)
except UnicodeError:
# New classes
- from IdleHistory import History
+ from idlelib.IdleHistory import History
def __init__(self, flist=None):
if use_subprocess:
self.save_stdout = sys.stdout
self.save_stderr = sys.stderr
self.save_stdin = sys.stdin
- import IOBinding
+ from idlelib import IOBinding
self.stdout = PseudoFile(self, "stdout", IOBinding.encoding)
self.stderr = PseudoFile(self, "stderr", IOBinding.encoding)
self.console = PseudoFile(self, "console", IOBinding.encoding)
if len(line) == 0: # may be EOF if we quit our mainloop with Ctrl-C
line = "\n"
if isinstance(line, unicode):
- import IOBinding
+ from idlelib import IOBinding
try:
line = line.encode(IOBinding.encoding)
except UnicodeError:
"(sys.last_traceback is not defined)",
master=self.text)
return
- from StackViewer import StackBrowser
+ from idlelib.StackViewer import StackBrowser
sv = StackBrowser(self.root, self.flist)
def view_restart_mark(self, event=None):
def write(self, s):
self.shell.write(s, self.tags)
- def writelines(self, l):
- map(self.write, l)
+ def writelines(self, lines):
+ for line in lines:
+ self.write(line)
def flush(self):
pass
pathx.append(os.path.dirname(filename))
for dir in pathx:
dir = os.path.abspath(dir)
- if not dir in sys.path:
+ if dir not in sys.path:
sys.path.insert(0, dir)
else:
dir = os.getcwd()
"""
import types
-import rpc
-import Debugger
+from idlelib import rpc
+from idlelib import Debugger
debugging = 0
-import rpc
+from idlelib import rpc
def remote_object_tree_item(item):
wrapper = WrappedObjectTreeItem(item)
from Tkinter import *
-import SearchEngine
-from SearchDialogBase import SearchDialogBase
+
+from idlelib import SearchEngine
+from idlelib.SearchDialogBase import SearchDialogBase
def replace(text):
root = text._root()
import tabnanny
import tokenize
import tkMessageBox
-import PyShell
+from idlelib import PyShell
-from configHandler import idleConf
+from idlelib.configHandler import idleConf
IDENTCHARS = string.ascii_letters + string.digits + "_"
from Tkinter import *
-import SearchEngine
-from SearchDialogBase import SearchDialogBase
+from idlelib import SearchEngine
+from idlelib.SearchDialogBase import SearchDialogBase
def _setup(text):
root = text._root()
import sys
import linecache
-from TreeWidget import TreeNode, TreeItem, ScrolledCanvas
-from ObjectBrowser import ObjectTreeItem, make_objecttreeitem
+from idlelib.TreeWidget import TreeNode, TreeItem, ScrolledCanvas
+from idlelib.ObjectBrowser import ObjectTreeItem, make_objecttreeitem
def StackBrowser(root, flist=None, tb=None, top=None):
if top is None:
from Tkinter import *
import imp
-import ZoomHeight
-from configHandler import idleConf
+from idlelib import ZoomHeight
+from idlelib.configHandler import idleConf
ICONDIR = "Icons"
names = os.listdir(self.path)
except os.error:
return []
- names.sort(lambda a, b: cmp(os.path.normcase(a), os.path.normcase(b)))
+ names.sort(key = os.path.normcase)
sublist = []
for name in names:
item = FileTreeItem(os.path.join(self.path, name))
# Testing functions
def test():
- import PyShell
+ from idlelib import PyShell
root = Toplevel(PyShell.root)
root.configure(bd=0, bg="yellow")
root.focus_set()
import string
from Tkinter import *
-from Delegator import Delegator
+
+from idlelib.Delegator import Delegator
#$ event <<redo>>
#$ win <Control-y>
return self.depth
def main():
- from Percolator import Percolator
+ from idlelib.Percolator import Percolator
root = Tk()
root.wm_protocol("WM_DELETE_WINDOW", root.quit)
text = Text()
import re
import sys
-import macosxSupport
+
+from idlelib import macosxSupport
class ZoomHeight:
from Tkinter import *
import os
-import os.path
-import textView
-import idlever
+
+from idlelib import textView
+from idlelib import idlever
class AboutDialog(Toplevel):
"""Modal about dialog for idle
# test the dialog
root = Tk()
def run():
- import aboutDialog
+ from idlelib import aboutDialog
aboutDialog.AboutDialog(root, 'About')
Button(root, text='Dialog', command=run).pack()
root.mainloop()
import tkMessageBox, tkColorChooser, tkFont
import string
-from configHandler import idleConf
-from dynOptionMenuWidget import DynOptionMenu
-from tabbedpages import TabbedPageSet
-from keybindingDialog import GetKeysDialog
-from configSectionNameDialog import GetCfgSectionNameDialog
-from configHelpSourceEdit import GetHelpSourceDialog
-import macosxSupport
+from idlelib.configHandler import idleConf
+from idlelib.dynOptionMenuWidget import DynOptionMenu
+from idlelib.tabbedpages import TabbedPageSet
+from idlelib.keybindingDialog import GetKeysDialog
+from idlelib.configSectionNameDialog import GetCfgSectionNameDialog
+from idlelib.configHelpSourceEdit import GetHelpSourceDialog
+from idlelib import macosxSupport
class ConfigDialog(Toplevel):
import os
import sys
import string
-import macosxSupport
+from idlelib import macosxSupport
from ConfigParser import ConfigParser, NoOptionError, NoSectionError
class InvalidConfigType(Exception): pass
order is also important: key binding equality depends on it, so
config-keys.def must use the same ordering.
"""
- import macosxSupport
+ from idlelib import macosxSupport
if macosxSupport.runningAsOSXApp():
self.modifiers = ['Shift', 'Control', 'Option', 'Command']
else:
def GetModifiers(self):
modList = [variable.get() for variable in self.modifier_vars]
- return filter(None, modList)
+ return [mod for mod in modList if mod]
def ClearKeySeq(self):
self.listKeysFinal.select_clear(0,END)
# Due to a (mis-)feature of TkAqua the user will also see an empty Help
# menu.
from Tkinter import Menu, Text, Text
- from EditorWindow import prepstr, get_accelerator
- import Bindings
- import WindowList
- from MultiCall import MultiCallCreator
+ from idlelib.EditorWindow import prepstr, get_accelerator
+ from idlelib import Bindings
+ from idlelib import WindowList
+ from idlelib.MultiCall import MultiCallCreator
menubar = Menu(root)
root.configure(menu=menubar)
menubar.add_cascade(label='IDLE', menu=menu)
def about_dialog(event=None):
- import aboutDialog
+ from idlelib import aboutDialog
aboutDialog.AboutDialog(root, 'About IDLE')
def config_dialog(event=None):
- import configDialog
+ from idlelib import configDialog
root.instance_dict = flist.inversedict
configDialog.ConfigDialog(root, 'Settings')
import threading
import Queue
-import CallTips
-import AutoComplete
+from idlelib import CallTips
+from idlelib import AutoComplete
-import RemoteDebugger
-import RemoteObjectBrowser
-import StackViewer
-import rpc
+from idlelib import RemoteDebugger
+from idlelib import RemoteObjectBrowser
+from idlelib import StackViewer
+from idlelib import rpc
import __main__
break
except socket.error, err:
print>>sys.__stderr__,"IDLE Subprocess: socket error: "\
- + err[1] + ", retrying...."
+ + err.args[1] + ", retrying...."
else:
print>>sys.__stderr__, "IDLE Subprocess: Connection to "\
"IDLE GUI failed, exiting."
import tkMessageBox
root = Tkinter.Tk()
root.withdraw()
- if err[0] == 61: # connection refused
+ if err.args[0] == 61: # connection refused
msg = "IDLE's subprocess can't connect to %s:%d. This may be due "\
"to your personal firewall configuration. It is safe to "\
"allow this internal connection because no data is visible on "\
"external ports." % address
tkMessageBox.showerror("IDLE Subprocess Error", msg, parent=root)
else:
- tkMessageBox.showerror("IDLE Subprocess Error", "Socket Error: %s" % err[1])
+ tkMessageBox.showerror("IDLE Subprocess Error",
+ "Socket Error: %s" % err.args[1])
root.destroy()
def print_exception():
sys.stdin = self.console = self.get_remote_proxy("stdin")
sys.stdout = self.get_remote_proxy("stdout")
sys.stderr = self.get_remote_proxy("stderr")
- import IOBinding
+ from idlelib import IOBinding
sys.stdin.encoding = sys.stdout.encoding = \
sys.stderr.encoding = IOBinding.encoding
self.interp = self.get_remote_proxy("interp")