]> granicus.if.org Git - python/commitdiff
Merged revisions 83352,83356-83358,83362,83366,83368-83369 via svnmerge from
authorGeorg Brandl <georg@python.org>
Sun, 1 Aug 2010 19:14:56 +0000 (19:14 +0000)
committerGeorg Brandl <georg@python.org>
Sun, 1 Aug 2010 19:14:56 +0000 (19:14 +0000)
svn+ssh://pythondev@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.
........
  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.
........

Doc/library/sys.rst
Lib/ntpath.py
Lib/test/data/README [new file with mode: 0644]
Lib/test/test_ntpath.py
Lib/test/test_optparse.py
Misc/NEWS
Python/getversion.c

index ca5d2b06d163998d77c583b6d65a44cbe09d54ed..c15e55b29e51f156a951ba3ea53e52cf140a4b55 100644 (file)
@@ -967,14 +967,10 @@ always available.
 .. 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
index a124dfd0c4343344740248102b023919528ef035..11a0a3efcbdb4d5c3aa44bd88088a1469c1a69af 100644 (file)
@@ -399,6 +399,12 @@ def normpath(path):
     """Normalize path, eliminating double slashes, etc."""
     # Preserve unicode (if path is unicode)
     backslash, dot = (u'\\', u'.') if isinstance(path, unicode) else ('\\', '.')
+    if path.startswith(('\\\\.\\', '\\\\?\\')):
+        # 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("/", "\\")
     prefix, path = splitdrive(path)
     # We need to be careful here. If the prefix is empty, and the path starts
diff --git a/Lib/test/data/README b/Lib/test/data/README
new file mode 100644 (file)
index 0000000..8bf8c9b
--- /dev/null
@@ -0,0 +1,2 @@
+This empty directory serves as destination for temporary files
+created by some tests.
index a3a22ef9b9e03ef76e0088f6fae035acf4fd9cb4..73645f19bf3c77968144414ec5d924c0f4743ca4 100644 (file)
@@ -123,6 +123,9 @@ class TestNtpath(unittest.TestCase):
         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 test_support.EnvironmentVarGuard() as env:
             env.clear()
index ab5483b5ebb3f886fe7a1cd93f63aa892698375b..bc8bb8abb05b8db00e26c6cd66057f8fc857937f 100644 (file)
@@ -791,15 +791,13 @@ class TestBool(BaseTest):
         (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"],
index 3351f2142774c3cbcb287608598667a7cf791945..18ac2c8c439518c4210315eaadac1ab95916408b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -27,6 +27,9 @@ Library
 - Issue #9448: Fix a leak of OS resources (mutexes or semaphores) when
   re-initializing a buffered IO object by calling its ``__init__`` method.
 
+- 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
index 7af16fc8109e973ee6e23583ee484582cf285e7c..7bd6efd0a0154700113ba39a6c0fd820e82bfbd3 100644 (file)
@@ -9,7 +9,7 @@ const char *
 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;
 }