[Python-checkins] r70214 - in python/branches/py3k: Lib/distutils/msvc9compiler.py Lib/distutils/tests/test_msvc9compiler.py Misc/NEWS

tarek.ziade python-checkins at python.org
Sat Mar 7 01:51:54 CET 2009


Author: tarek.ziade
Date: Sat Mar  7 01:51:53 2009
New Revision: 70214

Log:
Merged revisions 70212 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r70212 | tarek.ziade | 2009-03-07 01:32:45 +0100 (Sat, 07 Mar 2009) | 1 line
  
  Issue #5394: removed > 2.3 syntax from distutils.msvc9compiler
........


Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Lib/distutils/msvc9compiler.py
   python/branches/py3k/Lib/distutils/tests/test_msvc9compiler.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/distutils/msvc9compiler.py
==============================================================================
--- python/branches/py3k/Lib/distutils/msvc9compiler.py	(original)
+++ python/branches/py3k/Lib/distutils/msvc9compiler.py	Sat Mar  7 01:51:53 2009
@@ -17,10 +17,11 @@
 import os
 import subprocess
 import sys
-from distutils.errors import (DistutilsExecError, DistutilsPlatformError,
-    CompileError, LibError, LinkError)
-from distutils.ccompiler import (CCompiler, gen_preprocess_options,
-    gen_lib_options)
+
+from distutils.errors import DistutilsExecError, DistutilsPlatformError, \
+                             CompileError, LibError, LinkError
+from distutils.ccompiler import CCompiler, gen_preprocess_options, \
+                                gen_lib_options
 from distutils import log
 from distutils.util import get_platform
 
@@ -53,15 +54,14 @@
     """Helper class to read values from the registry
     """
 
-    @classmethod
     def get_value(cls, path, key):
         for base in HKEYS:
             d = cls.read_values(base, path)
             if d and key in d:
                 return d[key]
         raise KeyError(key)
+    get_value = classmethod(get_value)
 
-    @classmethod
     def read_keys(cls, base, key):
         """Return list of registry keys."""
         try:
@@ -78,8 +78,8 @@
             L.append(k)
             i += 1
         return L
+    read_keys = classmethod(read_keys)
 
-    @classmethod
     def read_values(cls, base, key):
         """Return dict of registry keys and values.
 
@@ -100,8 +100,8 @@
             d[cls.convert_mbcs(name)] = cls.convert_mbcs(value)
             i += 1
         return d
+    read_values = classmethod(read_values)
 
-    @staticmethod
     def convert_mbcs(s):
         dec = getattr(s, "decode", None)
         if dec is not None:
@@ -110,6 +110,7 @@
             except UnicodeError:
                 pass
         return s
+    convert_mbcs = staticmethod(convert_mbcs)
 
 class MacroExpander:
 
@@ -131,7 +132,7 @@
                                "sdkinstallrootv2.0")
             else:
                 raise KeyError("sdkinstallrootv2.0")
-        except KeyError as exc: #
+        except KeyError:
             raise DistutilsPlatformError(
             """Python was built with Visual Studio 2008;
 extensions must be built with a compiler than can generate compatible binaries.
@@ -478,7 +479,7 @@
                 try:
                     self.spawn([self.rc] + pp_opts +
                                [output_opt] + [input_opt])
-                except DistutilsExecError as msg:
+                except DistutilsExecError, msg:
                     raise CompileError(msg)
                 continue
             elif ext in self._mc_extensions:
@@ -505,7 +506,7 @@
                     self.spawn([self.rc] +
                                ["/fo" + obj] + [rc_file])
 
-                except DistutilsExecError as msg:
+                except DistutilsExecError, msg:
                     raise CompileError(msg)
                 continue
             else:
@@ -518,7 +519,7 @@
                 self.spawn([self.cc] + compile_opts + pp_opts +
                            [input_opt, output_opt] +
                            extra_postargs)
-            except DistutilsExecError as msg:
+            except DistutilsExecError, msg:
                 raise CompileError(msg)
 
         return objects
@@ -543,7 +544,7 @@
                 pass # XXX what goes here?
             try:
                 self.spawn([self.lib] + lib_args)
-            except DistutilsExecError as msg:
+            except DistutilsExecError, msg:
                 raise LibError(msg)
         else:
             log.debug("skipping %s (up-to-date)", output_filename)
@@ -632,7 +633,7 @@
             self.mkpath(os.path.dirname(output_filename))
             try:
                 self.spawn([self.linker] + ld_args)
-            except DistutilsExecError as msg:
+            except DistutilsExecError, msg:
                 raise LinkError(msg)
 
             # embed the manifest
@@ -640,12 +641,15 @@
             # will still consider the DLL up-to-date, but it will not have a
             # manifest.  Maybe we should link to a temp file?  OTOH, that
             # implies a build environment error that shouldn't go undetected.
-            mfid = 1 if target_desc == CCompiler.EXECUTABLE else 2
+            if target_desc == CCompiler.EXECUTABLE:
+                mfid = 1
+            else:
+                mfid = 2
             out_arg = '-outputresource:%s;%s' % (output_filename, mfid)
             try:
                 self.spawn(['mt.exe', '-nologo', '-manifest',
                             temp_manifest, out_arg])
-            except DistutilsExecError as msg:
+            except DistutilsExecError, msg:
                 raise LinkError(msg)
         else:
             log.debug("skipping %s (up-to-date)", output_filename)

Modified: python/branches/py3k/Lib/distutils/tests/test_msvc9compiler.py
==============================================================================
--- python/branches/py3k/Lib/distutils/tests/test_msvc9compiler.py	(original)
+++ python/branches/py3k/Lib/distutils/tests/test_msvc9compiler.py	Sat Mar  7 01:51:53 2009
@@ -30,6 +30,28 @@
         finally:
             msvc9compiler.find_vcvarsall = old_find_vcvarsall
 
+    def test_reg_class(self):
+        if sys.platform != 'win32':
+            # this test is only for win32
+            return
+
+        from distutils.msvc9compiler import Reg
+        self.assertRaises(KeyError, Reg.get_value, 'xxx', 'xxx')
+
+        # looking for values that should exist on all
+        # windows registeries versions.
+        path = r'Software\Microsoft\Notepad'
+        v = Reg.get_value(path, "lfitalic")
+        self.assert_(v in (0, 1))
+
+        import _winreg
+        HKCU = _winreg.HKEY_CURRENT_USER
+        keys = Reg.read_keys(HKCU, 'xxxx')
+        self.assertEquals(keys, None)
+
+        keys = Reg.read_keys(HKCU, r'Software\Microsoft')
+        self.assert_('Notepad' in keys)
+
 def test_suite():
     return unittest.makeSuite(msvc9compilerTestCase)
 

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Sat Mar  7 01:51:53 2009
@@ -183,6 +183,9 @@
 Library
 -------
 
+- Issue #5394: removed > 2.3 syntax from distutils.msvc9compiler.
+  Original patch by Akira Kitada.
+
 - Issue #5334: array.fromfile() failed to insert values when EOFError was raised.
 
 - Issue #5385: Fixed mmap crash after resize failure on windows.


More information about the Python-checkins mailing list