]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 56443-56466 via svnmerge from
authorGuido van Rossum <guido@python.org>
Fri, 20 Jul 2007 04:05:57 +0000 (04:05 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 20 Jul 2007 04:05:57 +0000 (04:05 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/p3yk

................
  r56454 | kurt.kaiser | 2007-07-18 22:26:14 -0700 (Wed, 18 Jul 2007) | 2 lines

  Make relative imports explicit for py3k
................
  r56455 | kurt.kaiser | 2007-07-18 23:12:15 -0700 (Wed, 18 Jul 2007) | 2 lines

  Was modifying dict during iteration.
................
  r56457 | guido.van.rossum | 2007-07-19 07:33:19 -0700 (Thu, 19 Jul 2007) | 2 lines

  Fix failing test.
................
  r56466 | guido.van.rossum | 2007-07-19 20:58:16 -0700 (Thu, 19 Jul 2007) | 35 lines

  Merged revisions 56413-56465 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r56439 | georg.brandl | 2007-07-17 23:37:55 -0700 (Tue, 17 Jul 2007) | 2 lines

    Use "Unix" as platform name, not "UNIX".
  ........
    r56441 | guido.van.rossum | 2007-07-18 10:19:14 -0700 (Wed, 18 Jul 2007) | 3 lines

    SF patch# 1755885 by Kurt Kaiser: show location of Unicode escape errors.
    (Slightly tweaked for style and refcounts.)
  ........
    r56444 | kurt.kaiser | 2007-07-18 12:58:42 -0700 (Wed, 18 Jul 2007) | 2 lines

    Fix failing unicode test caused by change to ast.c at r56441
  ........
    r56451 | georg.brandl | 2007-07-18 15:36:53 -0700 (Wed, 18 Jul 2007) | 2 lines

    Add description for wave.setcomptype() values
  ........
    r56456 | walter.doerwald | 2007-07-19 06:04:38 -0700 (Thu, 19 Jul 2007) | 3 lines

    Document that codecs.lookup() returns a CodecInfo object.
    (fixes SF bug #1754453).
  ........
    r56463 | facundo.batista | 2007-07-19 16:57:38 -0700 (Thu, 19 Jul 2007) | 6 lines

    Added a select.select call in the test server loop to make sure the
    socket is ready to be read from before attempting a read (this
    prevents an error 10035 on some Windows platforms). [GSoC - Alan
    McIntyre]
  ........
................

41 files changed:
Doc/lib/libwave.tex
Lib/idlelib/AutoComplete.py
Lib/idlelib/AutoCompleteWindow.py
Lib/idlelib/Bindings.py
Lib/idlelib/CallTips.py
Lib/idlelib/ClassBrowser.py
Lib/idlelib/CodeContext.py
Lib/idlelib/ColorDelegator.py
Lib/idlelib/Debugger.py
Lib/idlelib/EditorWindow.py
Lib/idlelib/FileList.py
Lib/idlelib/FormatParagraph.py
Lib/idlelib/GrepDialog.py
Lib/idlelib/HyperParser.py
Lib/idlelib/IOBinding.py
Lib/idlelib/IdleHistory.py
Lib/idlelib/ObjectBrowser.py
Lib/idlelib/OutputWindow.py
Lib/idlelib/ParenMatch.py
Lib/idlelib/PathBrowser.py
Lib/idlelib/Percolator.py
Lib/idlelib/PyShell.py
Lib/idlelib/RemoteDebugger.py
Lib/idlelib/RemoteObjectBrowser.py
Lib/idlelib/ReplaceDialog.py
Lib/idlelib/ScriptBinding.py
Lib/idlelib/SearchDialog.py
Lib/idlelib/StackViewer.py
Lib/idlelib/TreeWidget.py
Lib/idlelib/UndoDelegator.py
Lib/idlelib/ZoomHeight.py
Lib/idlelib/aboutDialog.py
Lib/idlelib/configDialog.py
Lib/idlelib/configHandler.py
Lib/idlelib/idle.py
Lib/idlelib/idle.pyw
Lib/idlelib/macosxSupport.py
Lib/idlelib/run.py
Lib/test/test_asyncore.py
Lib/test/test_unicode.py
Modules/_codecsmodule.c

index c0f300bc60f147395f11e9b205653cc2f147928d..936bbed6dd2a13d9fcc2f9a0e9eb88b62d6828b7 100644 (file)
@@ -142,6 +142,8 @@ more frames are written.
 
 \begin{methoddesc}[Wave_write]{setcomptype}{type, name}
 Set the compression type and description.
+At the moment, only compression type \samp{NONE} is supported,
+meaning no compression.
 \end{methoddesc}
 
 \begin{methoddesc}[Wave_write]{setparams}{tuple}
index 7085386621fada5c3c97e20341c0973ee3be88d6..72f221cae0793a397b743e5448f2cec37de0f460 100644 (file)
@@ -7,10 +7,9 @@ import os
 import sys
 import string
 
-from configHandler import idleConf
-
-import AutoCompleteWindow
-from HyperParser import HyperParser
+from .configHandler import idleConf
+from . import AutoCompleteWindow
+from .HyperParser import HyperParser
 
 import __main__
 
index 56433cd5462377933fab0593756b21e70bcd06b2..20becaa3398c55df004b1a8626771c6419c594c9 100644 (file)
@@ -2,8 +2,8 @@
 An auto-completion window for IDLE, used by the AutoComplete extension
 """
 from Tkinter import *
-from MultiCall import MC_SHIFT
-import AutoComplete
+from .MultiCall import MC_SHIFT
+import idlelib.AutoComplete
 
 HIDE_VIRTUAL_EVENT_NAME = "<<autocompletewindow-hide>>"
 HIDE_SEQUENCES = ("<FocusOut>", "<ButtonPress>")
index a3c9fc45f8234bcaffaa5af401a8bcd203d76588..26f4497a5a311026a84dea8d6ec4e6f02b1b9fef 100644 (file)
@@ -9,7 +9,7 @@ windows.
 
 """
 import sys
-from configHandler import idleConf
+from .configHandler import idleConf
 
 menudefs = [
  # underscore prefixes character to underscore
@@ -80,7 +80,6 @@ menudefs = [
    ]),
 ]
 
-import sys
 if sys.platform == 'darwin' and '.app' in sys.executable:
     # Running as a proper MacOS application bundle. This block restructures
     # the menus a little to make them conform better to the HIG.
index 6f81af48914e4e5b5264b3cb11589b1b8b0663eb..235e199f6e99aa950e98d9a7ac14f3be4ea5efea 100644 (file)
@@ -9,8 +9,8 @@ import re
 import sys
 import types
 
-import CallTipWindow
-from HyperParser import HyperParser
+from . import CallTipWindow
+from .HyperParser import HyperParser
 
 import __main__
 
index d3f90483d2d0c701e68f8a52be794e00478e7530..edda0edf10025ebd5e7f7b18bc470af0372ec4aa 100644 (file)
@@ -14,10 +14,10 @@ import os
 import sys
 import pyclbr
 
-import PyShell
-from WindowList import ListedToplevel
-from TreeWidget import TreeNode, TreeItem, ScrolledCanvas
-from configHandler import idleConf
+from . import PyShell
+from .WindowList import ListedToplevel
+from .TreeWidget import TreeNode, TreeItem, ScrolledCanvas
+from .configHandler import idleConf
 
 class ClassBrowser:
 
index 2037d6fffd0ca11145502da68e7b5d2cd26c4fb0..065be0f1d09e750e15e07a3d50a1946a80dabcfe 100644 (file)
@@ -11,9 +11,9 @@ not open blocks are not shown in the context hints pane.
 """
 import Tkinter
 from Tkconstants import TOP, LEFT, X, W, SUNKEN
-from configHandler import idleConf
 import re
 from sys import maxint as INFINITY
+from .configHandler import idleConf
 
 BLOCKOPENERS = set(["class", "def", "elif", "else", "except", "finally", "for",
                     "if", "try", "while", "with"])
index 5328d41196561169ef181fe6043298aae177efba..2b1c870ec3c106d8509e91aad005fff139d914dd 100644 (file)
@@ -3,8 +3,8 @@ import re
 import keyword
 import __builtin__
 from Tkinter import *
-from Delegator import Delegator
-from configHandler import idleConf
+from .Delegator import Delegator
+from .configHandler import idleConf
 
 DEBUG = False
 
@@ -248,7 +248,7 @@ class ColorDelegator(Delegator):
             self.tag_remove(tag, "1.0", "end")
 
 def main():
-    from Percolator import Percolator
+    from .Percolator import Percolator
     root = Tk()
     root.wm_protocol("WM_DELETE_WINDOW", root.quit)
     text = Text(background="white")
index 3dbe23d63f5c6a650803c831b7145f3e933e3f8b..df51c453271b3900bf7d0da7a1be9bc20ac27da6 100644 (file)
@@ -2,9 +2,9 @@ import os
 import bdb
 import types
 from Tkinter import *
-from WindowList import ListedToplevel
-from ScrolledList import ScrolledList
-import macosxSupport
+from .WindowList import ListedToplevel
+from .ScrolledList import ScrolledList
+from . import macosxSupport
 
 
 class Idb(bdb.Bdb):
index 7e75a6cb04d1ba1aeb1bf2c5c26d700795635250..501ae0f412e1f34b50ee5beea4076cc2e099cbfe 100644 (file)
@@ -6,18 +6,19 @@ from itertools import count
 from Tkinter import *
 import tkSimpleDialog
 import tkMessageBox
-from MultiCall import MultiCallCreator
-
+import traceback
 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 .MultiCall import MultiCallCreator
+from . import idlever
+from . import WindowList
+from . import SearchDialog
+from . import GrepDialog
+from . import ReplaceDialog
+from . import PyParse
+from .configHandler import idleConf
+from . import aboutDialog, textView, configDialog
+from . import macosxSupport
 
 # The default tab setting for a Text widget, in average-width characters.
 TK_TABWIDTH_DEFAULT = 8
@@ -40,13 +41,13 @@ def _find_module(fullname, path=None):
     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 .Percolator import Percolator
+    from .ColorDelegator import ColorDelegator
+    from .UndoDelegator import UndoDelegator
+    from .IOBinding import IOBinding, filesystemencoding, encoding
+    from . import Bindings
     from Tkinter import Toplevel
-    from MultiStatusBar import MultiStatusBar
+    from .MultiStatusBar import MultiStatusBar
 
     help_url = None
 
@@ -530,11 +531,11 @@ class EditorWindow(object):
             return None
         head, tail = os.path.split(filename)
         base, ext = os.path.splitext(tail)
-        import ClassBrowser
+        from . import ClassBrowser
         ClassBrowser.ClassBrowser(self.flist, base, [head])
 
     def open_path_browser(self, event=None):
-        import PathBrowser
+        from . import PathBrowser
         PathBrowser.PathBrowser(self.flist)
 
     def gotoline(self, lineno):
@@ -860,7 +861,6 @@ class EditorWindow(object):
                 self.load_extension(name)
             except:
                 print("Failed to load extension", repr(name))
-                import traceback
                 traceback.print_exc()
 
     def get_standard_extension_names(self):
@@ -871,7 +871,7 @@ class EditorWindow(object):
             mod = __import__(name, globals(), locals(), [])
         except ImportError:
             print("\nFailed to import extension: ", name)
-            return
+            raise
         cls = getattr(mod, name)
         keydefs = idleConf.GetExtensionBindings(name)
         if hasattr(cls, "menudefs"):
index 860dbaefda6dfd25a6ebc28c3989f560a0a28c1b..7e1d919413f047ff4f36a3d1819882ee64be17da 100644 (file)
@@ -5,7 +5,7 @@ import tkMessageBox
 
 class FileList:
 
-    from EditorWindow import EditorWindow  # class variable, may be overridden
+    from .EditorWindow import EditorWindow  # class variable, may be overridden
                                            # e.g. by PyShellFileList
 
     def __init__(self, root):
@@ -106,7 +106,7 @@ class FileList:
 
 
 def _test():
-    from EditorWindow import fixwordbreaks
+    from .EditorWindow import fixwordbreaks
     import sys
     root = Tk()
     fixwordbreaks(root)
index ed9f28d125090a1d679828c86417717b18201d0c..57868f1276710f43b349ef40f5d6b89303f44a5a 100644 (file)
@@ -15,7 +15,7 @@
 # * Fancy comments, like this bulleted list, arent handled :-)
 
 import re
-from configHandler import idleConf
+from .configHandler import idleConf
 
 class FormatParagraph:
 
index c96fada305fada0112128c96320945ccf4644c90..db3220adaa8a1f14c88056d21bddeb1ff18462fa 100644 (file)
@@ -63,7 +63,7 @@ class GrepDialog(SearchDialogBase):
         if not path:
             self.top.bell()
             return
-        from OutputWindow import OutputWindow
+        from .OutputWindow import OutputWindow
         save = sys.stdout
         try:
             sys.stdout = OutputWindow(self.flist)
index 31f46b16ac8b280c6f9228fb12eb405ab70fafed..409e3c49896f616fa2ce5402af6615624b2bdbd9 100644 (file)
@@ -10,7 +10,7 @@ structure of code, used by extensions to help the user.
 
 import string
 import keyword
-import PyParse
+from . import PyParse
 
 class HyperParser:
 
index 006e94b18738ecbb0a07501f690b49433344f788..d749788fb26167fcfd58670e05d32f8fd98bcf60 100644 (file)
@@ -14,9 +14,9 @@ import tkFileDialog
 import tkMessageBox
 import re
 from Tkinter import *
-from SimpleDialog import SimpleDialog
+from .SimpleDialog import SimpleDialog
 
-from configHandler import idleConf
+from .configHandler import idleConf
 
 try:
     from codecs import BOM_UTF8
index 960242f7817771403acdcc14f2c449ffc5b2e70d..8766ade16bfda5dc82fe53f0fbd38c14db8ac9f6 100644 (file)
@@ -1,4 +1,4 @@
-from configHandler import idleConf
+from .configHandler import idleConf
 
 class History:
 
index 0976d912022592b2df66b871b9e6d70b1c5dbed4..ad31c2337d47629222ebc3b61a00a960467eb774 100644 (file)
@@ -9,7 +9,7 @@
 # XXX TO DO:
 # - for classes/modules, add "open source" to object browser
 
-from TreeWidget import TreeItem, TreeNode, ScrolledCanvas
+from .TreeWidget import TreeItem, TreeNode, ScrolledCanvas
 
 from repr import Repr
 
index ae795e17fb767bd35171e46f90b7418f3b290a2c..7991e1836c30610d90d5b091b754ec67ad8a9188 100644 (file)
@@ -1,8 +1,8 @@
 from Tkinter import *
-from EditorWindow import EditorWindow
+from .EditorWindow import EditorWindow
 import re
 import tkMessageBox
-import IOBinding
+from . import IOBinding
 
 class OutputWindow(EditorWindow):
 
index 250ae8b70254b862b71df43b943ad846770ca04b..6f56827a900770a8b7718922e3358bb07f54ebca 100644 (file)
@@ -5,8 +5,8 @@ paren.  Paren here is used generically; the matching applies to
 parentheses, square brackets, and curly braces.
 """
 
-from HyperParser import HyperParser
-from configHandler import idleConf
+from .HyperParser import HyperParser
+from .configHandler import idleConf
 
 _openers = {')':'(',']':'[','}':'{'}
 CHECK_DELAY = 100 # miliseconds
index 8c7358790435d4dbca58bc8c4e806378db8bb1bd..65efb4875e175afd2e0667bfb4a71b33e15817e3 100644 (file)
@@ -2,8 +2,8 @@ import os
 import sys
 import imp
 
-from TreeWidget import TreeItem
-from ClassBrowser import ClassBrowser, ModuleBrowserTreeItem
+from .TreeWidget import TreeItem
+from .ClassBrowser import ClassBrowser, ModuleBrowserTreeItem
 
 class PathBrowser(ClassBrowser):
 
@@ -86,7 +86,7 @@ class DirBrowserTreeItem(TreeItem):
         return sorted
 
 def main():
-    import PyShell
+    from . import PyShell
     PathBrowser(PyShell.flist)
     if sys.stdin is sys.__stdin__:
         mainloop()
index a0b1303792a35b428d1e30403f9d2bac2383bdcd..22b6288afcbb858a77fbd1015292b3426746a3cf 100644 (file)
@@ -1,5 +1,5 @@
-from WidgetRedirector import WidgetRedirector
-from Delegator import Delegator
+from .WidgetRedirector import WidgetRedirector
+from .Delegator import Delegator
 
 class Percolator:
 
index f11e609d9ce75e585696e8f1aeaca65851234eb2..567994e7b15c15cf568bbe068ab3c1982ec49108 100644 (file)
@@ -11,7 +11,6 @@ import time
 import threading
 import traceback
 import types
-import macosxSupport
 
 import linecache
 from code import InteractiveInterpreter
@@ -24,17 +23,17 @@ except ImportError:
     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 .EditorWindow import EditorWindow, fixwordbreaks
+from .FileList import FileList
+from .ColorDelegator import ColorDelegator
+from .UndoDelegator import UndoDelegator
+from .OutputWindow import OutputWindow
+from .configHandler import idleConf
+from . import idlever
+from . import rpc
+from . import Debugger
+from . import RemoteDebugger
+from . import macosxSupport
 
 IDENTCHARS = string.ascii_letters + string.digits + "_"
 LOCALHOST = '127.0.0.1'
@@ -542,13 +541,13 @@ class ModifiedInterpreter(InteractiveInterpreter):
         return
 
     def remote_stack_viewer(self):
-        import RemoteObjectBrowser
+        from . 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 .TreeWidget import ScrolledCanvas, TreeNode
         top = Toplevel(self.tkconsole.root)
         theme = idleConf.GetOption('main','Theme','name')
         background = idleConf.GetHighlight(theme, 'normal')['background']
@@ -588,7 +587,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
         self.save_warnings_filters = warnings.filters[:]
         warnings.filterwarnings(action="error", category=SyntaxWarning)
         if isinstance(source, types.UnicodeType):
-            import IOBinding
+            from . import IOBinding
             try:
                 source = source.encode(IOBinding.encoding)
             except UnicodeError:
@@ -677,7 +676,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
 
     def checklinecache(self):
         c = linecache.cache
-        for key in c.keys():
+        for key in list(c.keys()):
             if key[:1] + key[-1:] != "<>":
                 del c[key]
 
@@ -798,7 +797,7 @@ class PyShell(OutputWindow):
 
 
     # New classes
-    from IdleHistory import History
+    from .IdleHistory import History
 
     def __init__(self, flist=None):
         if use_subprocess:
@@ -837,7 +836,7 @@ class PyShell(OutputWindow):
         self.save_stdout = sys.stdout
         self.save_stderr = sys.stderr
         self.save_stdin = sys.stdin
-        import IOBinding
+        from . import IOBinding
         self.stdout = PseudoFile(self, "stdout", IOBinding.encoding)
         self.stderr = PseudoFile(self, "stderr", IOBinding.encoding)
         self.console = PseudoFile(self, "console", IOBinding.encoding)
@@ -1007,7 +1006,7 @@ class PyShell(OutputWindow):
         if len(line) == 0:  # may be EOF if we quit our mainloop with Ctrl-C
             line = "\n"
         if isinstance(line, str):
-            import IOBinding
+            from . import IOBinding
             try:
                 line = line.encode(IOBinding.encoding)
             except UnicodeError:
@@ -1195,7 +1194,7 @@ class PyShell(OutputWindow):
                 "(sys.last_traceback is not defined)",
                 master=self.text)
             return
-        from StackViewer import StackBrowser
+        from .StackViewer import StackBrowser
         sv = StackBrowser(self.root, self.flist)
 
     def view_restart_mark(self, event=None):
index 0422cce335bb2f68c2d1fc5cdb060255d3cb0a42..b2d5921950df4babf9b2c4af1a50a7ce2609091a 100644 (file)
@@ -22,8 +22,8 @@ barrier, in particular frame and traceback objects.
 
 import sys
 import types
-import rpc
-import Debugger
+from . import rpc
+from . import Debugger
 
 debugging = 0
 
index 6ba3391372bf10723ca8a8a901737b2e8e416a5f..bcb9a2e0e40e3f16fdf568ef5f3bcb3a9461c74e 100644 (file)
@@ -1,4 +1,4 @@
-import rpc
+from . import rpc
 
 def remote_object_tree_item(item):
     wrapper = WrappedObjectTreeItem(item)
index c8eb1c8c4594c067bb2da4ae731703f0862af487..df7bed8bc631a75f124b6101b6a9909b65b013f9 100644 (file)
@@ -1,6 +1,7 @@
 from Tkinter import *
-import SearchEngine
-from SearchDialogBase import SearchDialogBase
+
+from . import SearchEngine
+from .SearchDialogBase import SearchDialogBase
 
 def replace(text):
     root = text._root()
index a83f715ab300375cb60871f30ee7797c55171376..c8ae60bffa577e5d76c20c43dee1fa375a8f11cd 100644 (file)
@@ -23,9 +23,9 @@ import string
 import tabnanny
 import tokenize
 import tkMessageBox
-import PyShell
+from . import PyShell
 
-from configHandler import idleConf
+from .configHandler import idleConf
 
 IDENTCHARS = string.ascii_letters + string.digits + "_"
 
index d7124d67ff2a2fab60f63b1a1fe266cd0c2f1dd1..87c34c17744a59a9c6c9b55e183015b9c417b2b1 100644 (file)
@@ -1,7 +1,7 @@
 from Tkinter import *
-import SearchEngine
-from SearchDialogBase import SearchDialogBase
 
+from . import SearchEngine
+from .SearchDialogBase import SearchDialogBase
 
 def _setup(text):
     root = text._root()
index 79324ae3e9579cdd18b769513f455e9a6826e72b..8a1cace1a159c3fe4e08730b36453ba09bba45b3 100644 (file)
@@ -2,8 +2,8 @@ import os
 import sys
 import linecache
 
-from TreeWidget import TreeNode, TreeItem, ScrolledCanvas
-from ObjectBrowser import ObjectTreeItem, make_objecttreeitem
+from .TreeWidget import TreeNode, TreeItem, ScrolledCanvas
+from .ObjectBrowser import ObjectTreeItem, make_objecttreeitem
 
 def StackBrowser(root, flist=None, tb=None, top=None):
     if top is None:
index 1d777dfb4980964001d3a3211b714ee775813b31..8210117e5b1f1dced595d7c3e9356d63cfbe2769 100644 (file)
@@ -19,8 +19,8 @@ import sys
 from Tkinter import *
 import imp
 
-import ZoomHeight
-from configHandler import idleConf
+from . import ZoomHeight
+from .configHandler import idleConf
 
 ICONDIR = "Icons"
 
@@ -453,7 +453,7 @@ class ScrolledCanvas:
 # Testing functions
 
 def test():
-    import PyShell
+    from . import PyShell
     root = Toplevel(PyShell.root)
     root.configure(bd=0, bg="yellow")
     root.focus_set()
index 0f95b3bddcc395fc0f1a73cf613a526e47303b67..2b836a8bac6bf3347a4967879e3d6cdf4b356c7b 100644 (file)
@@ -1,7 +1,8 @@
 import sys
 import string
 from Tkinter import *
-from Delegator import Delegator
+
+from .Delegator import Delegator
 
 #$ event <<redo>>
 #$ win <Control-y>
@@ -337,7 +338,7 @@ class CommandSequence(Command):
         return self.depth
 
 def main():
-    from Percolator import Percolator
+    from .Percolator import Percolator
     root = Tk()
     root.wm_protocol("WM_DELETE_WINDOW", root.quit)
     text = Text()
index 83ca3a69709332c7276fd1b5cbe6fcd112773b4f..5627a0d5f43ebd879d7187336e5b213f8c6728e3 100644 (file)
@@ -2,7 +2,8 @@
 
 import re
 import sys
-import macosxSupport
+
+from . import macosxSupport
 
 class ZoomHeight:
 
index afdafd28444b11b5669b2f2accc11367270c078c..3e6707896d8e994f55e291901c27d186248e2366 100644 (file)
@@ -4,8 +4,9 @@
 
 from Tkinter import *
 import os
-import textView
-import idlever
+
+from . import textView
+from . import idlever
 
 class AboutDialog(Toplevel):
     """Modal about dialog for idle
@@ -157,7 +158,7 @@ if __name__ == '__main__':
     # test the dialog
     root = Tk()
     def run():
-        import aboutDialog
+        from . import aboutDialog
         aboutDialog.AboutDialog(root, 'About')
     Button(root, text='Dialog', command=run).pack()
     root.mainloop()
index eadb69dcd110690eded16452c8901bf54198b0ac..b3e7b3ea683365d7610ab54b2623c10481f3f856 100644 (file)
@@ -13,12 +13,12 @@ from Tkinter import *
 import tkMessageBox, tkColorChooser, tkFont
 import copy
 
-from configHandler import idleConf
-from dynOptionMenuWidget import DynOptionMenu
-from tabpage import TabPageSet
-from keybindingDialog import GetKeysDialog
-from configSectionNameDialog import GetCfgSectionNameDialog
-from configHelpSourceEdit import GetHelpSourceDialog
+from .configHandler import idleConf
+from .dynOptionMenuWidget import DynOptionMenu
+from .tabpage import TabPageSet
+from .keybindingDialog import GetKeysDialog
+from .configSectionNameDialog import GetCfgSectionNameDialog
+from .configHelpSourceEdit import GetHelpSourceDialog
 
 class ConfigDialog(Toplevel):
 
index 963cf951782917245832ecbf0519439353535f9f..98d6be76454e4e93351950e926b1423b2b42c9b2 100644 (file)
@@ -19,8 +19,9 @@ configuration problem notification and resolution.
 """
 import os
 import sys
-import macosxSupport
-from ConfigParser import ConfigParser, NoOptionError, NoSectionError
+
+from . import macosxSupport
+from .ConfigParser import ConfigParser, NoOptionError, NoSectionError
 
 class InvalidConfigType(Exception): pass
 class InvalidConfigSet(Exception): pass
index 537dd5a9a75462f50f1463fdca315d1f9ba3d47a..0db5fd426e7b9ccdf59929de641a5d33d9d9e6e3 100644 (file)
@@ -3,7 +3,7 @@ try:
 except ImportError:
     # IDLE is not installed, but maybe PyShell is on sys.path:
     try:
-        import PyShell
+        from . import PyShell
     except ImportError:
         raise
     else:
index 537dd5a9a75462f50f1463fdca315d1f9ba3d47a..0db5fd426e7b9ccdf59929de641a5d33d9d9e6e3 100644 (file)
@@ -3,7 +3,7 @@ try:
 except ImportError:
     # IDLE is not installed, but maybe PyShell is on sys.path:
     try:
-        import PyShell
+        from . import PyShell
     except ImportError:
         raise
     else:
index 222abfce753d4bb7080047ca1fda26707f9af1a9..14c5bd89db7e6a926ddfa69f23d6d21f5f9b8b92 100644 (file)
@@ -47,10 +47,10 @@ def overrideRootMenu(root, flist):
     # 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 .EditorWindow import prepstr, get_accelerator
+    from . import Bindings
+    from . import WindowList
+    from .MultiCall import MultiCallCreator
 
     menubar = Menu(root)
     root.configure(menu=menubar)
@@ -73,11 +73,11 @@ def overrideRootMenu(root, flist):
     menubar.add_cascade(label='IDLE', menu=menu)
 
     def about_dialog(event=None):
-        import aboutDialog
+        from . import aboutDialog
         aboutDialog.AboutDialog(root, 'About IDLE')
 
     def config_dialog(event=None):
-        import configDialog
+        from . import configDialog
         configDialog.ConfigDialog(root, 'Settings')
 
 
index 8a0b926575a8230a10cb8f61091a335392106524..614875a86a88f5a82377c3fa2515f235901033b4 100644 (file)
@@ -8,13 +8,13 @@ import thread
 import threading
 import Queue
 
-import CallTips
-import AutoComplete
+from . import CallTips
+from . import AutoComplete
 
-import RemoteDebugger
-import RemoteObjectBrowser
-import StackViewer
-import rpc
+from . import RemoteDebugger
+from . import RemoteObjectBrowser
+from . import StackViewer
+from . import rpc
 
 import __main__
 
@@ -243,7 +243,7 @@ class MyHandler(rpc.RPCHandler):
         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 . import IOBinding
         sys.stdin.encoding = sys.stdout.encoding = \
                              sys.stderr.encoding = IOBinding.encoding
         self.interp = self.get_remote_proxy("interp")
index fca5b297db597251cfc3d4f5ff0e777566ff9052..6f848a72489d5544b791766fb9b704c449a85cd4 100644 (file)
@@ -65,12 +65,14 @@ def capture_server(evt, buf):
     else:
         n = 200
         while n > 0:
-            data = conn.recv(10)
-            assert isinstance(data, bytes)
-            # keep everything except for the newline terminator
-            buf.write(data.replace(b'\n', b''))
-            if b'\n' in data:
-                break
+            r, w, e = select.select([conn], [], [])
+            if r:
+                data = conn.recv(10)
+                assert isinstance(data, bytes)
+                # keep everything except for the newline terminator
+                buf.write(data.replace(b'\n', b''))
+                if b'\n' in data:
+                    break
             n -= 1
             time.sleep(0.01)
 
index f09721a2c6c2200ef12a65a52fa7b5884354b4d7..3032f798da25fa11db19cb67ddaf87fc7844097f 100644 (file)
@@ -55,10 +55,9 @@ class UnicodeTest(
     def test_literals(self):
         self.assertEqual('\xff', '\u00ff')
         self.assertEqual('\uffff', '\U0000ffff')
-        self.assertRaises((UnicodeError, SyntaxError), eval, '\'\\Ufffffffe\'')
-        self.assertRaises((UnicodeError, SyntaxError), eval, '\'\\Uffffffff\'')
-        self.assertRaises((UnicodeError, SyntaxError),
-                          eval, '\'\\U%08x\'' % 0x110000)
+        self.assertRaises(SyntaxError, eval, '\'\\Ufffffffe\'')
+        self.assertRaises(SyntaxError, eval, '\'\\Uffffffff\'')
+        self.assertRaises(SyntaxError, eval, '\'\\U%08x\'' % 0x110000)
 
     def test_repr(self):
         if not sys.platform.startswith('java'):
index 119967154ca20c5f1317d5ab0149bc775de4cdfa..c500073ca771b98665104cf74798d4fe793db272 100644 (file)
@@ -10,7 +10,7 @@
 
      register(search_function) -> None
 
-     lookup(encoding) -> (encoder, decoder, stream_reader, stream_writer)
+     lookup(encoding) -> CodecInfo object
 
    The builtin Unicode codecs use the following interface:
 
@@ -45,7 +45,8 @@ PyDoc_STRVAR(register__doc__,
 \n\
 Register a codec search function. Search functions are expected to take\n\
 one argument, the encoding name in all lower case letters, and return\n\
-a tuple of functions (encoder, decoder, stream_reader, stream_writer).");
+a tuple of functions (encoder, decoder, stream_reader, stream_writer)\n\
+(or a CodecInfo object).");
 
 static
 PyObject *codec_register(PyObject *self, PyObject *search_function)
@@ -57,10 +58,10 @@ PyObject *codec_register(PyObject *self, PyObject *search_function)
 }
 
 PyDoc_STRVAR(lookup__doc__,
-"lookup(encoding) -> (encoder, decoder, stream_reader, stream_writer)\n\
+"lookup(encoding) -> CodecInfo\n\
 \n\
 Looks up a codec tuple in the Python codec registry and returns\n\
-a tuple of functions.");
+a tuple of function (or a CodecInfo object).");
 
 static
 PyObject *codec_lookup(PyObject *self, PyObject *args)