[Python-checkins] r83430 - in python/branches/release31-maint: Doc/library/dbm.rst Doc/library/sys.rst Lib/ntpath.py Lib/test/test_ntpath.py Lib/test/test_optparse.py Lib/test/test_tcl.py Misc/NEWS Python/getversion.c

georg.brandl python-checkins at python.org
Sun Aug 1 21:17:57 CEST 2010


Author: georg.brandl
Date: Sun Aug  1 21:17:57 2010
New Revision: 83430

Log:
Merged revisions 83352,83355-83358,83362,83366,83368-83369 via svnmerge from 
svn+ssh://svn.python.org/python/branches/py3k

........
  r83352 | georg.brandl | 2010-07-31 20:11:07 +0200 (Sa, 31 Jul 2010) | 1 line
  
  #9440: Remove borderline test case that fails based on unpredictable conditions such as compiler flags.
........
  r83355 | georg.brandl | 2010-07-31 21:17:11 +0200 (Sa, 31 Jul 2010) | 1 line
  
  Fix bad merge: test_support -> support.
........
  r83356 | georg.brandl | 2010-07-31 21:29:15 +0200 (Sa, 31 Jul 2010) | 1 line
  
  Remove trailing whitespace.
........
  r83357 | georg.brandl | 2010-07-31 21:59:55 +0200 (Sa, 31 Jul 2010) | 1 line
  
  #5778: document that sys.version can contain a newline.
........
  r83358 | georg.brandl | 2010-07-31 22:05:31 +0200 (Sa, 31 Jul 2010) | 1 line
  
  #9442: do not document a specific format for sys.version; rather refer to version_info and the platform module.
........
  r83362 | georg.brandl | 2010-07-31 23:12:15 +0200 (Sa, 31 Jul 2010) | 1 line
  
  #8910: add a file explaining why Lib/test/data is there.
........
  r83366 | georg.brandl | 2010-07-31 23:26:40 +0200 (Sa, 31 Jul 2010) | 1 line
  
  There always is a False and True now.
........
  r83368 | georg.brandl | 2010-07-31 23:40:15 +0200 (Sa, 31 Jul 2010) | 1 line
  
  #7909: the prefixes \\.\ and \\?\ indicate special Windows paths, do not try to manipulate them.  See http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx for details.
........
  r83369 | georg.brandl | 2010-07-31 23:41:42 +0200 (Sa, 31 Jul 2010) | 1 line
  
  Fix "Berkeley" name.
........


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Doc/library/dbm.rst
   python/branches/release31-maint/Doc/library/sys.rst
   python/branches/release31-maint/Lib/ntpath.py
   python/branches/release31-maint/Lib/test/test_ntpath.py
   python/branches/release31-maint/Lib/test/test_optparse.py
   python/branches/release31-maint/Lib/test/test_tcl.py
   python/branches/release31-maint/Misc/NEWS
   python/branches/release31-maint/Python/getversion.c

Modified: python/branches/release31-maint/Doc/library/dbm.rst
==============================================================================
--- python/branches/release31-maint/Doc/library/dbm.rst	(original)
+++ python/branches/release31-maint/Doc/library/dbm.rst	Sun Aug  1 21:17:57 2010
@@ -5,10 +5,10 @@
    :synopsis: Interfaces to various Unix "database" formats.
 
 :mod:`dbm` is a generic interface to variants of the DBM database ---
- :mod:`dbm.gnu` or :mod:`dbm.ndbm`.  If none of these modules is installed, the
- slow-but-simple implementation in module :mod:`dbm.dumb` will be used.  There
- is a `third party interface <http://www.jcea.es/programacion/pybsddb.htm>`_ to
- the Oracle Berkely DB.
+:mod:`dbm.gnu` or :mod:`dbm.ndbm`.  If none of these modules is installed, the
+slow-but-simple implementation in module :mod:`dbm.dumb` will be used.  There
+is a `third party interface <http://www.jcea.es/programacion/pybsddb.htm>`_ to
+the Oracle Berkeley DB.
 
 
 .. exception:: error

Modified: python/branches/release31-maint/Doc/library/sys.rst
==============================================================================
--- python/branches/release31-maint/Doc/library/sys.rst	(original)
+++ python/branches/release31-maint/Doc/library/sys.rst	Sun Aug  1 21:17:57 2010
@@ -853,14 +853,10 @@
 .. data:: version
 
    A string containing the version number of the Python interpreter plus additional
-   information on the build number and compiler used. It has a value of the form
-   ``'version (#build_number, build_date, build_time) [compiler]'``.  The first
-   three characters are used to identify the version in the installation
-   directories (where appropriate on each platform).  An example::
-
-      >>> import sys
-      >>> sys.version
-      '1.5.2 (#0 Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)]'
+   information on the build number and compiler used.  This string is displayed
+   when the interactive interpreter is started.  Do not extract version information
+   out of it, rather, use :data:`version_info` and the functions provided by the
+   :mod:`platform` module.
 
 
 .. data:: api_version

Modified: python/branches/release31-maint/Lib/ntpath.py
==============================================================================
--- python/branches/release31-maint/Lib/ntpath.py	(original)
+++ python/branches/release31-maint/Lib/ntpath.py	Sun Aug  1 21:17:57 2010
@@ -70,6 +70,12 @@
     else:
         return ':'
 
+def _get_special(path):
+    if isinstance(path, bytes):
+        return (b'\\\\.\\', b'\\\\?\\')
+    else:
+        return ('\\\\.\\', '\\\\?\\')
+
 # Normalize the case of a pathname and map slashes to backslashes.
 # Other normalizations (such as optimizing '../' away) are not done
 # (this is done by normpath).
@@ -508,6 +514,13 @@
     """Normalize path, eliminating double slashes, etc."""
     sep = _get_sep(path)
     dotdot = _get_dot(path) * 2
+    special_prefixes = _get_special(path)
+    if path.startswith(special_prefixes):
+        # in the case of paths with these prefixes:
+        # \\.\ -> device names
+        # \\?\ -> literal paths
+        # do not do any normalization, but return the path unchanged
+        return path
     path = path.replace(_get_altsep(path), sep)
     prefix, path = splitdrive(path)
 

Modified: python/branches/release31-maint/Lib/test/test_ntpath.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_ntpath.py	(original)
+++ python/branches/release31-maint/Lib/test/test_ntpath.py	Sun Aug  1 21:17:57 2010
@@ -174,6 +174,9 @@
         tester("ntpath.normpath('C:////a/b')", r'C:\a\b')
         tester("ntpath.normpath('//machine/share//a/b')", r'\\machine\share\a\b')
 
+        tester("ntpath.normpath('\\\\.\\NUL')", r'\\.\NUL')
+        tester("ntpath.normpath('\\\\?\\D:/XY\\Z')", r'\\?\D:/XY\Z')
+
     def test_expandvars(self):
         with support.EnvironmentVarGuard() as env:
             env.clear()

Modified: python/branches/release31-maint/Lib/test/test_optparse.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_optparse.py	(original)
+++ python/branches/release31-maint/Lib/test/test_optparse.py	Sun Aug  1 21:17:57 2010
@@ -783,15 +783,13 @@
         (options, args) = self.assertParseOK(["-q"],
                                              {'verbose': 0},
                                              [])
-        if hasattr(__builtins__, 'False'):
-            self.assertTrue(options.verbose is False)
+        self.assertTrue(options.verbose is False)
 
     def test_bool_true(self):
         (options, args) = self.assertParseOK(["-v"],
                                              {'verbose': 1},
                                              [])
-        if hasattr(__builtins__, 'True'):
-            self.assertTrue(options.verbose is True)
+        self.assertTrue(options.verbose is True)
 
     def test_bool_flicker_on_and_off(self):
         self.assertParseOK(["-qvq", "-q", "-v"],

Modified: python/branches/release31-maint/Lib/test/test_tcl.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_tcl.py	(original)
+++ python/branches/release31-maint/Lib/test/test_tcl.py	Sun Aug  1 21:17:57 2010
@@ -143,7 +143,7 @@
                                     fullname[0],
                                     fullname[3:])
 
-        with test_support.EnvironmentVarGuard() as env:
+        with support.EnvironmentVarGuard() as env:
             env.unset("TCL_LIBRARY")
             f = os.popen('%s -c "import Tkinter; print Tkinter"' % (unc_name,))
 

Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Sun Aug  1 21:17:57 2010
@@ -84,6 +84,9 @@
 Library
 -------
 
+- Issue #7909: Do not touch paths with the special prefixes ``\\.\``
+  or ``\\?\`` in ntpath.normpath().
+
 - Issue #5146: Handle UID THREAD command correctly in imaplib.
 
 - Issue #5147: Fix the header generated for cookie files written by
@@ -1551,8 +1554,8 @@
   an error.  The _PY_STRUCT_FLOAT_COERCE constant has been removed.
   The version number has been bumped to 0.3.
 
-- Issue #5359: Readd the Berkley-DB detection code to allow _dbm be built
-  using Berkley-DB.
+- Issue #5359: Readd the Berkeley DB detection code to allow _dbm be built
+  using Berkeley DB.
 
 Tests
 -----

Modified: python/branches/release31-maint/Python/getversion.c
==============================================================================
--- python/branches/release31-maint/Python/getversion.c	(original)
+++ python/branches/release31-maint/Python/getversion.c	Sun Aug  1 21:17:57 2010
@@ -9,7 +9,7 @@
 Py_GetVersion(void)
 {
 	static char version[250];
-	PyOS_snprintf(version, sizeof(version), "%.80s (%.80s) %.80s", 
+	PyOS_snprintf(version, sizeof(version), "%.80s (%.80s) %.80s",
 		      PY_VERSION, Py_GetBuildInfo(), Py_GetCompiler());
 	return version;
 }


More information about the Python-checkins mailing list