[Python-checkins] r60923 - in python/trunk: Lib/UserDict.py Lib/copy_reg.py Lib/distutils/archive_util.py Lib/distutils/ccompiler.py Lib/distutils/command/build_ext.py Lib/distutils/command/install.py Lib/distutils/command/register.py Lib/distutils/command/upload.py Lib/distutils/core.py Lib/distutils/dir_util.py Lib/distutils/dist.py Lib/distutils/fancy_getopt.py Lib/distutils/msvccompiler.py Lib/distutils/sysconfig.py Lib/distutils/text_file.py Lib/distutils/util.py Misc/NEWS

guido.van.rossum python-checkins at python.org
Thu Feb 21 19:18:38 CET 2008


Author: guido.van.rossum
Date: Thu Feb 21 19:18:37 2008
New Revision: 60923

Modified:
   python/trunk/Lib/UserDict.py
   python/trunk/Lib/copy_reg.py
   python/trunk/Lib/distutils/archive_util.py
   python/trunk/Lib/distutils/ccompiler.py
   python/trunk/Lib/distutils/command/build_ext.py
   python/trunk/Lib/distutils/command/install.py
   python/trunk/Lib/distutils/command/register.py
   python/trunk/Lib/distutils/command/upload.py
   python/trunk/Lib/distutils/core.py
   python/trunk/Lib/distutils/dir_util.py
   python/trunk/Lib/distutils/dist.py
   python/trunk/Lib/distutils/fancy_getopt.py
   python/trunk/Lib/distutils/msvccompiler.py
   python/trunk/Lib/distutils/sysconfig.py
   python/trunk/Lib/distutils/text_file.py
   python/trunk/Lib/distutils/util.py
   python/trunk/Misc/NEWS
Log:
Removed uses of dict.has_key() from distutils, and uses of
callable() from copy_reg.py, so the interpreter now starts up
without warnings when '-3' is given.  More work like this needs to
be done in the rest of the stdlib.


Modified: python/trunk/Lib/UserDict.py
==============================================================================
--- python/trunk/Lib/UserDict.py	(original)
+++ python/trunk/Lib/UserDict.py	Thu Feb 21 19:18:37 2008
@@ -55,7 +55,7 @@
         if len(kwargs):
             self.data.update(kwargs)
     def get(self, key, failobj=None):
-        if not self.has_key(key):
+        if key not in self:
             return failobj
         return self[key]
     def setdefault(self, key, failobj=None):

Modified: python/trunk/Lib/copy_reg.py
==============================================================================
--- python/trunk/Lib/copy_reg.py	(original)
+++ python/trunk/Lib/copy_reg.py	Thu Feb 21 19:18:37 2008
@@ -15,7 +15,7 @@
     if type(ob_type) is _ClassType:
         raise TypeError("copy_reg is not intended for use with classes")
 
-    if not callable(pickle_function):
+    if not hasattr(pickle_function, '__call__'):
         raise TypeError("reduction functions must be callable")
     dispatch_table[ob_type] = pickle_function
 
@@ -25,7 +25,7 @@
         constructor(constructor_ob)
 
 def constructor(object):
-    if not callable(object):
+    if not hasattr(object, '__call__'):
         raise TypeError("constructors must be callable")
 
 # Example: provide pickling support for complex numbers.

Modified: python/trunk/Lib/distutils/archive_util.py
==============================================================================
--- python/trunk/Lib/distutils/archive_util.py	(original)
+++ python/trunk/Lib/distutils/archive_util.py	Thu Feb 21 19:18:37 2008
@@ -124,7 +124,7 @@
 
 def check_archive_formats (formats):
     for format in formats:
-        if not ARCHIVE_FORMATS.has_key(format):
+        if format not in ARCHIVE_FORMATS:
             return format
     else:
         return None

Modified: python/trunk/Lib/distutils/ccompiler.py
==============================================================================
--- python/trunk/Lib/distutils/ccompiler.py	(original)
+++ python/trunk/Lib/distutils/ccompiler.py	Thu Feb 21 19:18:37 2008
@@ -159,7 +159,7 @@
         # basically the same things with Unix C compilers.
 
         for key in args.keys():
-            if not self.executables.has_key(key):
+            if key not in self.executables:
                 raise ValueError, \
                       "unknown executable '%s' for class %s" % \
                       (key, self.__class__.__name__)

Modified: python/trunk/Lib/distutils/command/build_ext.py
==============================================================================
--- python/trunk/Lib/distutils/command/build_ext.py	(original)
+++ python/trunk/Lib/distutils/command/build_ext.py	Thu Feb 21 19:18:37 2008
@@ -362,7 +362,7 @@
 
             # Medium-easy stuff: same syntax/semantics, different names.
             ext.runtime_library_dirs = build_info.get('rpath')
-            if build_info.has_key('def_file'):
+            if 'def_file' in build_info:
                 log.warn("'def_file' element of build info dict "
                          "no longer supported")
 

Modified: python/trunk/Lib/distutils/command/install.py
==============================================================================
--- python/trunk/Lib/distutils/command/install.py	(original)
+++ python/trunk/Lib/distutils/command/install.py	Thu Feb 21 19:18:37 2008
@@ -352,7 +352,7 @@
                 opt_name = opt[0]
                 if opt_name[-1] == "=":
                     opt_name = opt_name[0:-1]
-                if self.negative_opt.has_key(opt_name):
+                if opt_name in self.negative_opt:
                     opt_name = string.translate(self.negative_opt[opt_name],
                                                 longopt_xlate)
                     val = not getattr(self, opt_name)

Modified: python/trunk/Lib/distutils/command/register.py
==============================================================================
--- python/trunk/Lib/distutils/command/register.py	(original)
+++ python/trunk/Lib/distutils/command/register.py	Thu Feb 21 19:18:37 2008
@@ -120,7 +120,7 @@
         # see if we can short-cut and get the username/password from the
         # config
         config = None
-        if os.environ.has_key('HOME'):
+        if 'HOME' in os.environ:
             rc = os.path.join(os.environ['HOME'], '.pypirc')
             if os.path.exists(rc):
                 print 'Using PyPI login from %s'%rc
@@ -163,7 +163,7 @@
             print 'Server response (%s): %s'%(code, result)
 
             # possibly save the login
-            if os.environ.has_key('HOME') and config is None and code == 200:
+            if 'HOME' in os.environ and config is None and code == 200:
                 rc = os.path.join(os.environ['HOME'], '.pypirc')
                 print 'I can store your PyPI login so future submissions will be faster.'
                 print '(the login will be stored in %s)'%rc

Modified: python/trunk/Lib/distutils/command/upload.py
==============================================================================
--- python/trunk/Lib/distutils/command/upload.py	(original)
+++ python/trunk/Lib/distutils/command/upload.py	Thu Feb 21 19:18:37 2008
@@ -46,7 +46,7 @@
             raise DistutilsOptionError(
                 "Must use --sign for --identity to have meaning"
             )
-        if os.environ.has_key('HOME'):
+        if 'HOME' in os.environ:
             rc = os.path.join(os.environ['HOME'], '.pypirc')
             if os.path.exists(rc):
                 self.announce('Using PyPI login from %s' % rc)

Modified: python/trunk/Lib/distutils/core.py
==============================================================================
--- python/trunk/Lib/distutils/core.py	(original)
+++ python/trunk/Lib/distutils/core.py	Thu Feb 21 19:18:37 2008
@@ -101,9 +101,9 @@
     else:
         klass = Distribution
 
-    if not attrs.has_key('script_name'):
+    if 'script_name' not in attrs:
         attrs['script_name'] = os.path.basename(sys.argv[0])
-    if not attrs.has_key('script_args'):
+    if 'script_args' not in attrs:
         attrs['script_args'] = sys.argv[1:]
 
     # Create the Distribution instance, using the remaining arguments
@@ -111,7 +111,7 @@
     try:
         _setup_distribution = dist = klass(attrs)
     except DistutilsSetupError, msg:
-        if attrs.has_key('name'):
+        if 'name' in attrs:
             raise SystemExit, "error in %s setup command: %s" % \
                   (attrs['name'], msg)
         else:

Modified: python/trunk/Lib/distutils/dir_util.py
==============================================================================
--- python/trunk/Lib/distutils/dir_util.py	(original)
+++ python/trunk/Lib/distutils/dir_util.py	Thu Feb 21 19:18:37 2008
@@ -207,7 +207,7 @@
             apply(cmd[0], (cmd[1],))
             # remove dir from cache if it's already there
             abspath = os.path.abspath(cmd[1])
-            if _path_created.has_key(abspath):
+            if abspath in _path_created:
                 del _path_created[abspath]
         except (IOError, OSError), exc:
             log.warn(grok_environment_error(

Modified: python/trunk/Lib/distutils/dist.py
==============================================================================
--- python/trunk/Lib/distutils/dist.py	(original)
+++ python/trunk/Lib/distutils/dist.py	Thu Feb 21 19:18:37 2008
@@ -239,7 +239,7 @@
                     for (opt, val) in cmd_options.items():
                         opt_dict[opt] = ("setup script", val)
 
-            if attrs.has_key('licence'):
+            if 'licence' in attrs:
                 attrs['license'] = attrs['licence']
                 del attrs['licence']
                 msg = "'licence' distribution option is deprecated; use 'license'"
@@ -343,7 +343,7 @@
             user_filename = "pydistutils.cfg"
 
         # And look for the user config file
-        if os.environ.has_key('HOME'):
+        if 'HOME' in os.environ:
             user_file = os.path.join(os.environ.get('HOME'), user_filename)
             if os.path.isfile(user_file):
                 files.append(user_file)
@@ -388,7 +388,7 @@
         # If there was a "global" section in the config file, use it
         # to set Distribution options.
 
-        if self.command_options.has_key('global'):
+        if 'global' in self.command_options:
             for (opt, (src, val)) in self.command_options['global'].items():
                 alias = self.negative_opt.get(opt)
                 try:
@@ -907,7 +907,7 @@
 
             try:
                 is_string = type(value) is StringType
-                if neg_opt.has_key(option) and is_string:
+                if option in neg_opt and is_string:
                     setattr(command_obj, neg_opt[option], not strtobool(value))
                 elif option in bool_opts and is_string:
                     setattr(command_obj, option, strtobool(value))

Modified: python/trunk/Lib/distutils/fancy_getopt.py
==============================================================================
--- python/trunk/Lib/distutils/fancy_getopt.py	(original)
+++ python/trunk/Lib/distutils/fancy_getopt.py	Thu Feb 21 19:18:37 2008
@@ -97,7 +97,7 @@
         self._build_index()
 
     def add_option (self, long_option, short_option=None, help_string=None):
-        if self.option_index.has_key(long_option):
+        if long_option in self.option_index:
             raise DistutilsGetoptError, \
                   "option conflict: already an option '%s'" % long_option
         else:
@@ -109,7 +109,7 @@
     def has_option (self, long_option):
         """Return true if the option table for this parser has an
         option with long name 'long_option'."""
-        return self.option_index.has_key(long_option)
+        return long_option in self.option_index
 
     def get_attr_name (self, long_option):
         """Translate long option name 'long_option' to the form it
@@ -121,11 +121,11 @@
     def _check_alias_dict (self, aliases, what):
         assert type(aliases) is DictionaryType
         for (alias, opt) in aliases.items():
-            if not self.option_index.has_key(alias):
+            if alias not in self.option_index:
                 raise DistutilsGetoptError, \
                       ("invalid %s '%s': "
                        "option '%s' not defined") % (what, alias, alias)
-            if not self.option_index.has_key(opt):
+            if opt not in self.option_index:
                 raise DistutilsGetoptError, \
                       ("invalid %s '%s': "
                        "aliased option '%s' not defined") % (what, alias, opt)

Modified: python/trunk/Lib/distutils/msvccompiler.py
==============================================================================
--- python/trunk/Lib/distutils/msvccompiler.py	(original)
+++ python/trunk/Lib/distutils/msvccompiler.py	Thu Feb 21 19:18:37 2008
@@ -252,7 +252,7 @@
 
     def initialize(self):
         self.__paths = []
-        if os.environ.has_key("DISTUTILS_USE_SDK") and os.environ.has_key("MSSdk") and self.find_exe("cl.exe"):
+        if "DISTUTILS_USE_SDK" in os.environ and "MSSdk" in os.environ and self.find_exe("cl.exe"):
             # Assume that the SDK set up everything alright; don't try to be
             # smarter
             self.cc = "cl.exe"

Modified: python/trunk/Lib/distutils/sysconfig.py
==============================================================================
--- python/trunk/Lib/distutils/sysconfig.py	(original)
+++ python/trunk/Lib/distutils/sysconfig.py	Thu Feb 21 19:18:37 2008
@@ -161,22 +161,22 @@
             get_config_vars('CC', 'CXX', 'OPT', 'CFLAGS',
                             'CCSHARED', 'LDSHARED', 'SO')
 
-        if os.environ.has_key('CC'):
+        if 'CC' in os.environ:
             cc = os.environ['CC']
-        if os.environ.has_key('CXX'):
+        if 'CXX' in os.environ:
             cxx = os.environ['CXX']
-        if os.environ.has_key('LDSHARED'):
+        if 'LDSHARED' in os.environ:
             ldshared = os.environ['LDSHARED']
-        if os.environ.has_key('CPP'):
+        if 'CPP' in os.environ:
             cpp = os.environ['CPP']
         else:
             cpp = cc + " -E"           # not always
-        if os.environ.has_key('LDFLAGS'):
+        if 'LDFLAGS' in os.environ:
             ldshared = ldshared + ' ' + os.environ['LDFLAGS']
-        if os.environ.has_key('CFLAGS'):
+        if 'CFLAGS' in os.environ:
             cflags = opt + ' ' + os.environ['CFLAGS']
             ldshared = ldshared + ' ' + os.environ['CFLAGS']
-        if os.environ.has_key('CPPFLAGS'):
+        if 'CPPFLAGS' in os.environ:
             cpp = cpp + ' ' + os.environ['CPPFLAGS']
             cflags = cflags + ' ' + os.environ['CPPFLAGS']
             ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
@@ -291,12 +291,12 @@
             if m:
                 n = m.group(1)
                 found = True
-                if done.has_key(n):
+                if n in done:
                     item = str(done[n])
-                elif notdone.has_key(n):
+                elif n in notdone:
                     # get it on a subsequent round
                     found = False
-                elif os.environ.has_key(n):
+                elif n in os.environ:
                     # do it like make: fall back to environment
                     item = os.environ[n]
                 else:
@@ -380,7 +380,7 @@
     # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so
     # it needs to be compatible.
     # If it isn't set we set it to the configure-time value
-    if sys.platform == 'darwin' and g.has_key('MACOSX_DEPLOYMENT_TARGET'):
+    if sys.platform == 'darwin' and 'MACOSX_DEPLOYMENT_TARGET' in g:
         cfg_target = g['MACOSX_DEPLOYMENT_TARGET']
         cur_target = os.getenv('MACOSX_DEPLOYMENT_TARGET', '')
         if cur_target == '':

Modified: python/trunk/Lib/distutils/text_file.py
==============================================================================
--- python/trunk/Lib/distutils/text_file.py	(original)
+++ python/trunk/Lib/distutils/text_file.py	Thu Feb 21 19:18:37 2008
@@ -89,7 +89,7 @@
         # set values for all options -- either from client option hash
         # or fallback to default_options
         for opt in self.default_options.keys():
-            if options.has_key (opt):
+            if opt in options:
                 setattr (self, opt, options[opt])
 
             else:
@@ -97,7 +97,7 @@
 
         # sanity check client option hash
         for opt in options.keys():
-            if not self.default_options.has_key (opt):
+            if opt not in self.default_options:
                 raise KeyError, "invalid TextFile option '%s'" % opt
 
         if file is None:

Modified: python/trunk/Lib/distutils/util.py
==============================================================================
--- python/trunk/Lib/distutils/util.py	(original)
+++ python/trunk/Lib/distutils/util.py	Thu Feb 21 19:18:37 2008
@@ -219,11 +219,11 @@
     if _environ_checked:
         return
 
-    if os.name == 'posix' and not os.environ.has_key('HOME'):
+    if os.name == 'posix' and 'HOME' not in os.environ:
         import pwd
         os.environ['HOME'] = pwd.getpwuid(os.getuid())[5]
 
-    if not os.environ.has_key('PLAT'):
+    if 'PLAT' not in os.environ:
         os.environ['PLAT'] = get_platform()
 
     _environ_checked = 1
@@ -241,7 +241,7 @@
     check_environ()
     def _subst (match, local_vars=local_vars):
         var_name = match.group(1)
-        if local_vars.has_key(var_name):
+        if var_name in local_vars:
             return str(local_vars[var_name])
         else:
             return os.environ[var_name]

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Thu Feb 21 19:18:37 2008
@@ -423,6 +423,11 @@
 Library
 -------
 
+- Removed uses of dict.has_key() from distutils, and uses of
+  callable() from copy_reg.py, so the interpreter now starts up
+  without warnings when '-3' is given.  More work like this needs to
+  be done in the rest of the stdlib.
+
 - Issue #1916. Added isgenerator() and isgeneratorfunction() to inspect.py.
 
 - #1224: Fixed bad url parsing when path begins with double slash.


More information about the Python-checkins mailing list