[Python-checkins] r70929 - in python/branches/py3k: Lib/test/regrtest.py Lib/test/support.py Lib/test/test_asynchat.py Lib/test/test_bz2.py Lib/test/test_crypt.py Lib/test/test_ctypes.py Lib/test/test_curses.py Lib/test/test_dbm.py Lib/test/test_fcntl.py Lib/test/test_fork1.py Lib/test/test_grp.py Lib/test/test_ioctl.py Lib/test/test_mmap.py Lib/test/test_multiprocessing.py Lib/test/test_nis.py Lib/test/test_ossaudiodev.py Lib/test/test_posix.py Lib/test/test_pwd.py Lib/test/test_resource.py Lib/test/test_sqlite.py Lib/test/test_startfile.py Lib/test/test_tcl.py Lib/test/test_tk.py Lib/test/test_ttk_guionly.py Lib/test/test_ttk_textonly.py Lib/test/test_winreg.py Lib/test/test_winsound.py Lib/test/test_xml_etree_c.py Lib/test/test_zlib.py Misc/NEWS

r.david.murray python-checkins at python.org
Wed Apr 1 01:16:51 CEST 2009


Author: r.david.murray
Date: Wed Apr  1 01:16:50 2009
New Revision: 70929

Log:
Blocked revisions 70734,70775,70856,70874,70876-70877 via svnmerge

........
  r70734 | r.david.murray | 2009-03-30 15:04:00 -0400 (Mon, 30 Mar 2009) | 7 lines
  
  Add import_function method to test.test_support, and modify a number of
  tests that expect to be skipped if imports fail or functions don't
  exist to use import_function and import_module.  The ultimate goal is
  to change regrtest to not skip automatically on ImportError.  Checking
  in now to make sure the buldbots don't show any errors on platforms
  I can't direct test on.
........
  r70775 | r.david.murray | 2009-03-30 19:05:48 -0400 (Mon, 30 Mar 2009) | 4 lines
  
  Change more tests to use import_module for the modules that
  should cause tests to be skipped.  Also rename import_function
  to the more descriptive get_attribute and add a docstring.
........
  r70856 | r.david.murray | 2009-03-31 14:32:17 -0400 (Tue, 31 Mar 2009) | 7 lines
  
  A few more test skips via import_module, and change import_module to                                                                                                                                                
  return the error message produced by importlib, so that if an import                                                                                                                                                
  in the package whose import is being wrapped is what failed the skip                                                                                                                                                
  message will contain the name of that module instead of the name of the                                                                                                                                             
  wrapped module.  Also fixed formatting of some previous comments.                                                                                                                                                   
........
  r70874 | r.david.murray | 2009-03-31 15:33:15 -0400 (Tue, 31 Mar 2009) | 5 lines
  
  Improve test_support.import_module docstring, remove
  deprecated flag from get_attribute since it isn't likely
  to do anything useful.
........
  r70876 | r.david.murray | 2009-03-31 15:49:15 -0400 (Tue, 31 Mar 2009) | 4 lines
  
  Remove the regrtest check that turns any ImportError into a skipped test.
  Hopefully all modules whose imports legitimately result in a skipped
  test have been properly wrapped by the previous commits.
........
  r70877 | r.david.murray | 2009-03-31 15:57:24 -0400 (Tue, 31 Mar 2009) | 2 lines
  
  Add NEWS entry for regrtest change.
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Lib/test/regrtest.py
   python/branches/py3k/Lib/test/support.py
   python/branches/py3k/Lib/test/test_asynchat.py
   python/branches/py3k/Lib/test/test_bz2.py
   python/branches/py3k/Lib/test/test_crypt.py
   python/branches/py3k/Lib/test/test_ctypes.py
   python/branches/py3k/Lib/test/test_curses.py
   python/branches/py3k/Lib/test/test_dbm.py
   python/branches/py3k/Lib/test/test_fcntl.py
   python/branches/py3k/Lib/test/test_fork1.py
   python/branches/py3k/Lib/test/test_grp.py
   python/branches/py3k/Lib/test/test_ioctl.py
   python/branches/py3k/Lib/test/test_mmap.py
   python/branches/py3k/Lib/test/test_multiprocessing.py
   python/branches/py3k/Lib/test/test_nis.py
   python/branches/py3k/Lib/test/test_ossaudiodev.py
   python/branches/py3k/Lib/test/test_posix.py
   python/branches/py3k/Lib/test/test_pwd.py
   python/branches/py3k/Lib/test/test_resource.py
   python/branches/py3k/Lib/test/test_sqlite.py
   python/branches/py3k/Lib/test/test_startfile.py
   python/branches/py3k/Lib/test/test_tcl.py
   python/branches/py3k/Lib/test/test_tk.py
   python/branches/py3k/Lib/test/test_ttk_guionly.py
   python/branches/py3k/Lib/test/test_ttk_textonly.py
   python/branches/py3k/Lib/test/test_winreg.py
   python/branches/py3k/Lib/test/test_winsound.py
   python/branches/py3k/Lib/test/test_xml_etree_c.py
   python/branches/py3k/Lib/test/test_zlib.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/test/regrtest.py
==============================================================================
--- python/branches/py3k/Lib/test/regrtest.py	(original)
+++ python/branches/py3k/Lib/test/regrtest.py	Wed Apr  1 01:16:50 2009
@@ -628,7 +628,7 @@
             print(test, "skipped --", msg)
             sys.stdout.flush()
         return -2
-    except (ImportError, unittest.SkipTest) as msg:
+    except unittest.SkipTest as msg:
         if not quiet:
             print(test, "skipped --", msg)
             sys.stdout.flush()

Modified: python/branches/py3k/Lib/test/support.py
==============================================================================
--- python/branches/py3k/Lib/test/support.py	(original)
+++ python/branches/py3k/Lib/test/support.py	Wed Apr  1 01:16:50 2009
@@ -12,6 +12,7 @@
 import shutil
 import warnings
 import unittest
+import importlib
 
 __all__ = ["Error", "TestFailed", "ResourceDenied", "import_module",
            "verbose", "use_resources", "max_memuse", "record_original_stdout",
@@ -24,7 +25,7 @@
            "TransientResource", "transient_internet", "run_with_locale",
            "set_memlimit", "bigmemtest", "bigaddrspacetest", "BasicTestRunner",
            "run_unittest", "run_doctest", "threading_setup", "threading_cleanup",
-           "reap_children", "cpython_only", "check_impl_detail"]
+           "reap_children", "cpython_only", "check_impl_detail", "get_attribute"]
 
 class Error(Exception):
     """Base class for regression test exceptions."""
@@ -41,19 +42,32 @@
     """
 
 def import_module(name, deprecated=False):
-    """Import the module to be tested, raising SkipTest if it is not
-    available."""
+    """Import and return the module to be tested, raising SkipTest if
+    it is not available.
+
+    If deprecated is True, any module or package deprecation messages
+    will be suppressed."""
     with warnings.catch_warnings():
         if deprecated:
             warnings.filterwarnings("ignore", ".+ (module|package)",
                                     DeprecationWarning)
         try:
-            module = __import__(name, level=0)
-        except ImportError:
-            raise unittest.SkipTest("No module named " + name)
+            module = importlib.import_module(name)
+        except ImportError as msg:
+            raise unittest.SkipTest(str(msg))
         else:
             return module
 
+def get_attribute(obj, name):
+    """Get an attribute, raising SkipTest if AttributeError is raised."""
+    try:
+        attribute = getattr(obj, name)
+    except AttributeError:
+        raise unittest.SkipTest("module %s has no attribute %s" % (
+            obj.__name__, name))
+    else:
+        return attribute
+
 verbose = 1              # Flag set to 0 by regrtest.py
 use_resources = None     # Flag set to [] by regrtest.py
 max_memuse = 0           # Disable bigmem tests (they will still be run with

Modified: python/branches/py3k/Lib/test/test_asynchat.py
==============================================================================
--- python/branches/py3k/Lib/test/test_asynchat.py	(original)
+++ python/branches/py3k/Lib/test/test_asynchat.py	Wed Apr  1 01:16:50 2009
@@ -1,10 +1,13 @@
-# test asynchat -- requires threading
+# test asynchat
+
+from test import support
+
+# If this fails, the test will be skipped.
+thread = support.import_module('_thread')
 
-import _thread as thread # If this fails, we can't test this module
 import asyncore, asynchat, socket, threading, time
 import unittest
 import sys
-from test import support
 
 HOST = support.HOST
 SERVER_QUIT = b'QUIT\n'

Modified: python/branches/py3k/Lib/test/test_bz2.py
==============================================================================
--- python/branches/py3k/Lib/test/test_bz2.py	(original)
+++ python/branches/py3k/Lib/test/test_bz2.py	Wed Apr  1 01:16:50 2009
@@ -8,7 +8,9 @@
 import subprocess
 import sys
 
-import bz2
+# Skip tests if the bz2 module doesn't exist.
+bz2 = support.import_module('bz2')
+
 from bz2 import BZ2File, BZ2Compressor, BZ2Decompressor
 
 has_cmdline_bunzip2 = sys.platform not in ("win32", "os2emx")

Modified: python/branches/py3k/Lib/test/test_crypt.py
==============================================================================
--- python/branches/py3k/Lib/test/test_crypt.py	(original)
+++ python/branches/py3k/Lib/test/test_crypt.py	Wed Apr  1 01:16:50 2009
@@ -1,6 +1,7 @@
 from test import support
 import unittest
-import crypt
+
+crypt = support.import_module('crypt')
 
 class CryptTestCase(unittest.TestCase):
 

Modified: python/branches/py3k/Lib/test/test_ctypes.py
==============================================================================
--- python/branches/py3k/Lib/test/test_ctypes.py	(original)
+++ python/branches/py3k/Lib/test/test_ctypes.py	Wed Apr  1 01:16:50 2009
@@ -1,6 +1,10 @@
 import unittest
 
-from test.support import run_unittest
+from test.support import run_unittest, import_module
+
+# Skip tests if _ctypes module was not built.
+import_module('_ctypes')
+
 import ctypes.test
 
 def test_main():

Modified: python/branches/py3k/Lib/test/test_curses.py
==============================================================================
--- python/branches/py3k/Lib/test/test_curses.py	(original)
+++ python/branches/py3k/Lib/test/test_curses.py	Wed Apr  1 01:16:50 2009
@@ -9,16 +9,19 @@
 # Only called, not tested: getmouse(), ungetmouse()
 #
 
-import curses, sys, tempfile, os
-import curses.panel
+import sys, tempfile, os
 
 # Optionally test curses module.  This currently requires that the
 # 'curses' resource be given on the regrtest command line using the -u
 # option.  If not available, nothing after this line will be executed.
 
-from test.support import requires
+from test.support import requires, import_module
 requires('curses')
 
+# If either of these don't exist, skip the tests.
+curses = import_module('curses')
+curses.panel = import_module('curses.panel')
+
 # XXX: if newterm was supported we could use it instead of initscr and not exit
 term = os.environ.get('TERM')
 if not term or term == 'unknown':

Modified: python/branches/py3k/Lib/test/test_dbm.py
==============================================================================
--- python/branches/py3k/Lib/test/test_dbm.py	(original)
+++ python/branches/py3k/Lib/test/test_dbm.py	Wed Apr  1 01:16:50 2009
@@ -3,10 +3,12 @@
 
 import os
 import unittest
-import dbm
 import glob
 import test.support
 
+# Skip tests if dbm module doesn't exist.
+dbm = test.support.import_module('dbm')
+
 _fname = test.support.TESTFN
 
 #

Modified: python/branches/py3k/Lib/test/test_fcntl.py
==============================================================================
--- python/branches/py3k/Lib/test/test_fcntl.py	(original)
+++ python/branches/py3k/Lib/test/test_fcntl.py	Wed Apr  1 01:16:50 2009
@@ -3,12 +3,15 @@
 OS/2+EMX doesn't support the file locking operations.
 
 """
-import fcntl
 import os
 import struct
 import sys
 import unittest
-from test.support import verbose, TESTFN, unlink, run_unittest
+from test.support import verbose, TESTFN, unlink, run_unittest, import_module
+
+# Skip test if no fnctl module.
+fcntl = import_module('fcntl')
+
 
 # TODO - Write tests for flock() and lockf().
 

Modified: python/branches/py3k/Lib/test/test_fork1.py
==============================================================================
--- python/branches/py3k/Lib/test/test_fork1.py	(original)
+++ python/branches/py3k/Lib/test/test_fork1.py	Wed Apr  1 01:16:50 2009
@@ -3,14 +3,12 @@
 
 import os
 import time
-import unittest
 from test.fork_wait import ForkWait
-from test.support import run_unittest, reap_children
+from test.support import run_unittest, reap_children, get_attribute
+
+# Skip test if fork does not exist.
+get_attribute(os, 'fork')
 
-try:
-    os.fork
-except AttributeError:
-    raise unittest.SkipTest("os.fork not defined -- skipping test_fork1")
 
 class ForkTest(ForkWait):
     def wait_impl(self, cpid):

Modified: python/branches/py3k/Lib/test/test_grp.py
==============================================================================
--- python/branches/py3k/Lib/test/test_grp.py	(original)
+++ python/branches/py3k/Lib/test/test_grp.py	Wed Apr  1 01:16:50 2009
@@ -1,9 +1,10 @@
 """Test script for the grp module."""
 
-import grp
 import unittest
 from test import support
 
+grp = support.import_module('grp')
+
 class GroupDatabaseTestCase(unittest.TestCase):
 
     def check_value(self, value):

Modified: python/branches/py3k/Lib/test/test_ioctl.py
==============================================================================
--- python/branches/py3k/Lib/test/test_ioctl.py	(original)
+++ python/branches/py3k/Lib/test/test_ioctl.py	Wed Apr  1 01:16:50 2009
@@ -1,12 +1,9 @@
 import unittest
-from test.support import run_unittest
+from test.support import run_unittest, import_module, get_attribute
 import os, struct
-try:
-    import fcntl, termios
-except ImportError:
-    raise unittest.SkipTest("No fcntl or termios module")
-if not hasattr(termios,'TIOCGPGRP'):
-    raise unittest.SkipTest("termios module doesn't have TIOCGPGRP")
+fcntl = import_module('fcntl')
+termios = import_module('termios')
+get_attribute(termios, 'TIOCGPGRP') #Can't run tests without this feature
 
 try:
     tty = open("/dev/tty", "r")

Modified: python/branches/py3k/Lib/test/test_mmap.py
==============================================================================
--- python/branches/py3k/Lib/test/test_mmap.py	(original)
+++ python/branches/py3k/Lib/test/test_mmap.py	Wed Apr  1 01:16:50 2009
@@ -1,8 +1,10 @@
-from test.support import TESTFN, run_unittest
-import mmap
+from test.support import TESTFN, run_unittest, import_module
 import unittest
 import os, re, itertools
 
+# Skip test if we can't import mmap.
+mmap = import_module('mmap')
+
 PAGESIZE = mmap.PAGESIZE
 
 class MmapTests(unittest.TestCase):

Modified: python/branches/py3k/Lib/test/test_multiprocessing.py
==============================================================================
--- python/branches/py3k/Lib/test/test_multiprocessing.py	(original)
+++ python/branches/py3k/Lib/test/test_multiprocessing.py	Wed Apr  1 01:16:50 2009
@@ -17,20 +17,19 @@
 import socket
 import random
 import logging
+import test.support
 
 
-# Work around broken sem_open implementations
-try:
-    import multiprocessing.synchronize
-except ImportError as e:
-    raise unittest.SkipTest(e)
+# Skip tests if _multiprocessing wasn't built.
+_multiprocessing = test.support.import_module('_multiprocessing')
+# Skip tests if sem_open implementation is broken.
+test.support.import_module('multiprocessing.synchronize')
 
 import multiprocessing.dummy
 import multiprocessing.connection
 import multiprocessing.managers
 import multiprocessing.heap
 import multiprocessing.pool
-import _multiprocessing
 
 from multiprocessing import util
 

Modified: python/branches/py3k/Lib/test/test_nis.py
==============================================================================
--- python/branches/py3k/Lib/test/test_nis.py	(original)
+++ python/branches/py3k/Lib/test/test_nis.py	Wed Apr  1 01:16:50 2009
@@ -1,6 +1,8 @@
 from test import support
 import unittest
-import nis
+
+# Skip test if nis module does not exist.
+nis = support.import_module('nis')
 
 raise unittest.SkipTest("test_nis hangs on Solaris")
 

Modified: python/branches/py3k/Lib/test/test_ossaudiodev.py
==============================================================================
--- python/branches/py3k/Lib/test/test_ossaudiodev.py	(original)
+++ python/branches/py3k/Lib/test/test_ossaudiodev.py	Wed Apr  1 01:16:50 2009
@@ -3,8 +3,9 @@
 
 from test.support import findfile
 
+ossaudiodev = support.import_module('ossaudiodev')
+
 import errno
-import ossaudiodev
 import sys
 import sunau
 import time

Modified: python/branches/py3k/Lib/test/test_posix.py
==============================================================================
--- python/branches/py3k/Lib/test/test_posix.py	(original)
+++ python/branches/py3k/Lib/test/test_posix.py	Wed Apr  1 01:16:50 2009
@@ -2,17 +2,15 @@
 
 from test import support
 
-try:
-    import posix
-except ImportError:
-    raise unittest.SkipTest("posix is not available")
-
 import time
 import os
 import pwd
 import shutil
 import unittest
 import warnings
+
+posix = support.import_module('posix')
+
 warnings.filterwarnings('ignore', '.* potential security risk .*',
                         RuntimeWarning)
 

Modified: python/branches/py3k/Lib/test/test_pwd.py
==============================================================================
--- python/branches/py3k/Lib/test/test_pwd.py	(original)
+++ python/branches/py3k/Lib/test/test_pwd.py	Wed Apr  1 01:16:50 2009
@@ -1,7 +1,7 @@
 import unittest
 from test import support
 
-import pwd
+pwd = support.import_module('pwd')
 
 class PwdTest(unittest.TestCase):
 

Modified: python/branches/py3k/Lib/test/test_resource.py
==============================================================================
--- python/branches/py3k/Lib/test/test_resource.py	(original)
+++ python/branches/py3k/Lib/test/test_resource.py	Wed Apr  1 01:16:50 2009
@@ -1,9 +1,9 @@
 import unittest
 from test import support
-
-import resource
 import time
 
+resource = support.import_module('resource')
+
 # This test is checking a few specific problem spots with the resource module.
 
 class ResourceTest(unittest.TestCase):

Modified: python/branches/py3k/Lib/test/test_sqlite.py
==============================================================================
--- python/branches/py3k/Lib/test/test_sqlite.py	(original)
+++ python/branches/py3k/Lib/test/test_sqlite.py	Wed Apr  1 01:16:50 2009
@@ -1,10 +1,9 @@
 import unittest
-from test.support import run_unittest
+from test.support import run_unittest, import_module
+
+# Skip test if _sqlite3 module not installed
+import_module('_sqlite3')
 
-try:
-    import _sqlite3
-except ImportError:
-    raise unittest.SkipTest('no sqlite available')
 from sqlite3.test import (dbapi, types, userfunctions,
                                 factory, transactions, hooks, regression,
                                 dump)

Modified: python/branches/py3k/Lib/test/test_startfile.py
==============================================================================
--- python/branches/py3k/Lib/test/test_startfile.py	(original)
+++ python/branches/py3k/Lib/test/test_startfile.py	Wed Apr  1 01:16:50 2009
@@ -9,9 +9,11 @@
 
 import unittest
 from test import support
+import os
+from os import path
+
+startfile = support.get_attribute(os, 'startfile')
 
-# use this form so that the test is skipped when startfile is not available:
-from os import startfile, path
 
 class TestCase(unittest.TestCase):
     def test_nonexisting(self):

Modified: python/branches/py3k/Lib/test/test_tcl.py
==============================================================================
--- python/branches/py3k/Lib/test/test_tcl.py	(original)
+++ python/branches/py3k/Lib/test/test_tcl.py	Wed Apr  1 01:16:50 2009
@@ -2,8 +2,11 @@
 
 import unittest
 import os
-import _tkinter
 from test import support
+
+# Skip this test if the _tkinter module wasn't built.
+_tkinter = support.import_module('_tkinter')
+
 from tkinter import Tcl
 from _tkinter import TclError
 

Modified: python/branches/py3k/Lib/test/test_tk.py
==============================================================================
--- python/branches/py3k/Lib/test/test_tk.py	(original)
+++ python/branches/py3k/Lib/test/test_tk.py	Wed Apr  1 01:16:50 2009
@@ -3,6 +3,11 @@
 from test import support
 import unittest
 
+# Skip test if _tkinter wasn't built.
+support.import_module('_tkinter')
+
+import tkinter
+
 try:
     tkinter.Button()
 except tkinter.TclError as msg:

Modified: python/branches/py3k/Lib/test/test_ttk_guionly.py
==============================================================================
--- python/branches/py3k/Lib/test/test_ttk_guionly.py	(original)
+++ python/branches/py3k/Lib/test/test_ttk_guionly.py	Wed Apr  1 01:16:50 2009
@@ -1,11 +1,15 @@
 import os
 import sys
-from tkinter import ttk
-from tkinter.test import runtktests
 import unittest
-from _tkinter import TclError
 from test import support
 
+# Skip this test if _tkinter wasn't built.
+support.import_module('_tkinter')
+
+from _tkinter import TclError
+from tkinter import ttk
+from tkinter.test import runtktests
+
 try:
     ttk.Button()
 except TclError as msg:

Modified: python/branches/py3k/Lib/test/test_ttk_textonly.py
==============================================================================
--- python/branches/py3k/Lib/test/test_ttk_textonly.py	(original)
+++ python/branches/py3k/Lib/test/test_ttk_textonly.py	Wed Apr  1 01:16:50 2009
@@ -1,6 +1,10 @@
 import os
 import sys
 from test import support
+
+# Skip this test if _tkinter does not exist.
+support.import_module('_tkinter')
+
 from tkinter.test import runtktests
 
 def test_main():

Modified: python/branches/py3k/Lib/test/test_winreg.py
==============================================================================
--- python/branches/py3k/Lib/test/test_winreg.py	(original)
+++ python/branches/py3k/Lib/test/test_winreg.py	Wed Apr  1 01:16:50 2009
@@ -2,12 +2,15 @@
 # Test the windows specific win32reg module.
 # Only win32reg functions not hit here: FlushKey, LoadKey and SaveKey
 
-from winreg import *
 import os, sys
 import unittest
-
 from test import support
 
+# Do this first so test will be skipped if module doesn't exist
+support.import_module('winreg')
+# Now import everything
+from winreg import *
+
 test_key_name = "SOFTWARE\\Python Registry Test Key - Delete Me"
 
 test_data = [

Modified: python/branches/py3k/Lib/test/test_winsound.py
==============================================================================
--- python/branches/py3k/Lib/test/test_winsound.py	(original)
+++ python/branches/py3k/Lib/test/test_winsound.py	Wed Apr  1 01:16:50 2009
@@ -3,10 +3,12 @@
 import unittest
 from test import support
 support.requires('audio')
-import winsound, time
+import time
 import os
 import subprocess
 
+winsound = support.import_module('winsound')
+
 
 class BeepTest(unittest.TestCase):
     # As with PlaySoundTest, incorporate the _have_soundcard() check

Modified: python/branches/py3k/Lib/test/test_xml_etree_c.py
==============================================================================
--- python/branches/py3k/Lib/test/test_xml_etree_c.py	(original)
+++ python/branches/py3k/Lib/test/test_xml_etree_c.py	Wed Apr  1 01:16:50 2009
@@ -5,7 +5,7 @@
 
 from test import support
 
-from xml.etree import cElementTree as ET
+ET = support.import_module('xml.etree.cElementTree')
 
 SAMPLE_XML = """
 <body>

Modified: python/branches/py3k/Lib/test/test_zlib.py
==============================================================================
--- python/branches/py3k/Lib/test/test_zlib.py	(original)
+++ python/branches/py3k/Lib/test/test_zlib.py	Wed Apr  1 01:16:50 2009
@@ -1,9 +1,10 @@
 import unittest
 from test import support
-import zlib
 import binascii
 import random
 
+zlib = support.import_module('zlib')
+
 
 class ChecksumTestCase(unittest.TestCase):
     # checksum test cases

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Wed Apr  1 01:16:50 2009
@@ -725,6 +725,10 @@
 Tests
 -----
 
+- regrtest no longer treats ImportError as equivalent to SkipTest.  Imports
+  that should cause a test to be skipped are now done using import_module 
+  from test support, which does the conversion.
+
 - Issue #5083: New 'gui' resource for regrtest.
 
 


More information about the Python-checkins mailing list