From 1325790b932c4bab4f8f94f5a36c09f4036ed9f8 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Thu, 7 Jun 2007 23:15:56 +0000 Subject: [PATCH] Merged revisions 55795-55816 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/p3yk ........ r55797 | neal.norwitz | 2007-06-07 00:00:57 -0700 (Thu, 07 Jun 2007) | 3 lines Get rid of some remnants of classic classes. types.ClassType == type. Also get rid of almost all uses of the types module and use the builtin name. ........ r55798 | neal.norwitz | 2007-06-07 00:12:36 -0700 (Thu, 07 Jun 2007) | 1 line Remove a use of types, verify commit hook works ........ r55809 | guido.van.rossum | 2007-06-07 11:11:29 -0700 (Thu, 07 Jun 2007) | 2 lines Fix syntax error introduced by Neal in last checkin. ........ --- Lib/bsddb/dbtables.py | 7 +++---- Lib/cgitb.py | 8 ++++---- Lib/copy.py | 10 ++++++---- Lib/dis.py | 2 +- Lib/distutils/cmd.py | 5 ++--- Lib/distutils/dist.py | 11 +++++------ Lib/distutils/extension.py | 3 +-- Lib/distutils/text_file.py | 7 +++---- Lib/distutils/unixccompiler.py | 3 +-- Lib/idlelib/CallTips.py | 6 +++--- Lib/idlelib/ObjectBrowser.py | 17 +++++++--------- Lib/idlelib/rpc.py | 4 ++-- Lib/inspect.py | 2 +- Lib/lib-tk/ScrolledText.py | 2 +- Lib/lib-tk/Tkinter.py | 25 ++++++++++++------------ Lib/logging/__init__.py | 16 ++++++++------- Lib/logging/config.py | 4 ++-- Lib/logging/handlers.py | 14 +++++++------- Lib/new.py | 2 +- Lib/optparse.py | 11 +++++------ Lib/pickle.py | 29 ++++++++++++++-------------- Lib/pickletools.py | 5 +---- Lib/plat-mac/aepack.py | 20 +++++++++---------- Lib/plat-mac/aetypes.py | 11 +++++------ Lib/plat-mac/gensuitemodule.py | 6 +++--- Lib/sre_parse.py | 6 +++--- Lib/test/test_descr.py | 3 ++- Lib/test/test_isinstance.py | 2 +- Lib/test/test_logging.py | 2 +- Lib/test/test_optparse.py | 13 +++---------- Lib/test/test_pyclbr.py | 8 ++++---- Lib/types.py | 2 +- Lib/unittest.py | 15 ++++++-------- Lib/urllib2.py | 3 +-- Lib/warnings.py | 5 ++--- Lib/wsgiref/headers.py | 4 +--- Lib/wsgiref/validate.py | 27 +++++++++++++------------- Lib/xml/sax/saxutils.py | 12 ++---------- Lib/xmlrpclib.py | 28 ++++++++++++--------------- Tools/versioncheck/pyversioncheck.py | 3 +-- 40 files changed, 161 insertions(+), 202 deletions(-) diff --git a/Lib/bsddb/dbtables.py b/Lib/bsddb/dbtables.py index 8367b8358cc..efc60621642 100644 --- a/Lib/bsddb/dbtables.py +++ b/Lib/bsddb/dbtables.py @@ -22,7 +22,6 @@ import sys import copy import xdrlib import random -from types import ListType, StringType import cPickle as pickle try: @@ -229,7 +228,7 @@ class bsdTableDB : raises TableDBError if it already exists or for other DB errors. """ - assert isinstance(columns, ListType) + assert isinstance(columns, list) txn = None try: # checking sanity of the table and column names here on @@ -270,7 +269,7 @@ class bsdTableDB : """Return a list of columns in the given table. [] if the table doesn't exist. """ - assert isinstance(table, StringType) + assert isinstance(table, str) if contains_metastrings(table): raise ValueError, "bad table name: contains reserved metastrings" @@ -300,7 +299,7 @@ class bsdTableDB : additional columns present in the given list as well as all of its current columns. """ - assert isinstance(columns, ListType) + assert isinstance(columns, list) try: self.CreateTable(table, columns) except TableAlreadyExists: diff --git a/Lib/cgitb.py b/Lib/cgitb.py index e5db3834fd5..b0055111957 100644 --- a/Lib/cgitb.py +++ b/Lib/cgitb.py @@ -96,10 +96,10 @@ def scanvars(reader, frame, locals): def html(einfo, context=5): """Return a nice HTML document describing a given traceback.""" - import os, types, time, traceback, linecache, inspect, pydoc + import os, time, traceback, linecache, inspect, pydoc etype, evalue, etb = einfo - if type(etype) is types.ClassType: + if isinstance(etype, type): etype = etype.__name__ pyver = 'Python ' + sys.version.split()[0] + ': ' + sys.executable date = time.ctime(time.time()) @@ -188,10 +188,10 @@ function calls leading up to the error, in the order they occurred.

''' def text(einfo, context=5): """Return a plain text document describing a given traceback.""" - import os, types, time, traceback, linecache, inspect, pydoc + import os, time, traceback, linecache, inspect, pydoc etype, evalue, etb = einfo - if type(etype) is types.ClassType: + if isinstance(etype, type): etype = etype.__name__ pyver = 'Python ' + sys.version.split()[0] + ': ' + sys.executable date = time.ctime(time.time()) diff --git a/Lib/copy.py b/Lib/copy.py index d5a7153f152..fa75daa544a 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -100,12 +100,15 @@ _copy_dispatch = d = {} def _copy_immutable(x): return x for t in (type(None), int, float, bool, str, tuple, - frozenset, type, range, types.ClassType, + frozenset, type, range, types.BuiltinFunctionType, types.FunctionType): d[t] = _copy_immutable -for name in ("ComplexType", "UnicodeType", "CodeType"): - t = getattr(types, name, None) +t = getattr(types, "CodeType", None) +if t is not None: + d[t] = _copy_immutable +for name in ("complex", "unicode"): + t = globals()['__builtins__'].get(name) if t is not None: d[t] = _copy_immutable @@ -192,7 +195,6 @@ except AttributeError: pass d[type] = _deepcopy_atomic d[range] = _deepcopy_atomic -d[types.ClassType] = _deepcopy_atomic d[types.BuiltinFunctionType] = _deepcopy_atomic d[types.FunctionType] = _deepcopy_atomic diff --git a/Lib/dis.py b/Lib/dis.py index dac7cae2c81..1ef4b338814 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -26,7 +26,7 @@ def dis(x=None): items = sorted(x.__dict__.items()) for name, x1 in items: if isinstance(x1, (types.MethodType, types.FunctionType, - types.CodeType, types.ClassType, type)): + types.CodeType, type)): print("Disassembly of %s:" % name) try: dis(x1) diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py index ea3799af16f..8d77e7fb2be 100644 --- a/Lib/distutils/cmd.py +++ b/Lib/distutils/cmd.py @@ -9,7 +9,6 @@ in the distutils.command package. __revision__ = "$Id$" import sys, os, re -from types import * from distutils.errors import * from distutils import util, dir_util, file_util, archive_util, dep_util from distutils import log @@ -245,7 +244,7 @@ class Command: elif isinstance(val, basestring): setattr(self, option, re.split(r',\s*|\s+', val)) else: - if type(val) is ListType: + if isinstance(val, list): ok = all(isinstance(v, basestring) for v in val) else: ok = 0 @@ -422,7 +421,7 @@ class Command: # Allow 'infiles' to be a single string if isinstance(infiles, basestring): infiles = (infiles,) - elif type(infiles) not in (ListType, TupleType): + elif not isinstance(infiles, (list, tuple)): raise TypeError, \ "'infiles' must be a string, or a list or tuple of strings" diff --git a/Lib/distutils/dist.py b/Lib/distutils/dist.py index e89d942f157..c01724d83a2 100644 --- a/Lib/distutils/dist.py +++ b/Lib/distutils/dist.py @@ -9,7 +9,6 @@ being built/installed/distributed. __revision__ = "$Id$" import sys, os, re -from types import * from copy import copy try: @@ -527,7 +526,7 @@ Common commands: (see '--help-commands' for more) # Also make sure that the command object provides a list of its # known options. if not (hasattr(cmd_class, 'user_options') and - type(cmd_class.user_options) is ListType): + isinstance(cmd_class.user_options, list)): raise DistutilsClassError, \ ("command class %s must provide " + "'user_options' attribute (a list of tuples)") % \ @@ -543,7 +542,7 @@ Common commands: (see '--help-commands' for more) # Check for help_options in command class. They have a different # format (tuple of four) so we need to preprocess them here. if (hasattr(cmd_class, 'help_options') and - type(cmd_class.help_options) is ListType): + isinstance(cmd_class.help_options, list)): help_options = fix_help_options(cmd_class.help_options) else: help_options = [] @@ -561,7 +560,7 @@ Common commands: (see '--help-commands' for more) return if (hasattr(cmd_class, 'help_options') and - type(cmd_class.help_options) is ListType): + isinstance(cmd_class.help_options, list)): help_option_found=0 for (help_option, short, desc, func) in cmd_class.help_options: if hasattr(opts, parser.get_attr_name(help_option)): @@ -646,12 +645,12 @@ Common commands: (see '--help-commands' for more) print() for command in self.commands: - if type(command) is ClassType and issubclass(command, Command): + if isinstance(command, type) and issubclass(command, Command): klass = command else: klass = self.get_command_class(command) if (hasattr(klass, 'help_options') and - type(klass.help_options) is ListType): + isinstance(klass.help_options, list)): parser.set_option_table(klass.user_options + fix_help_options(klass.help_options)) else: diff --git a/Lib/distutils/extension.py b/Lib/distutils/extension.py index 7fe846b8a86..43b0d3fd00f 100644 --- a/Lib/distutils/extension.py +++ b/Lib/distutils/extension.py @@ -6,7 +6,6 @@ modules in setup scripts.""" __revision__ = "$Id$" import os, sys -from types import * try: import warnings @@ -104,7 +103,7 @@ class Extension: **kw # To catch unknown keywords ): assert isinstance(name, basestring), "'name' must be a string" - assert (type(sources) is ListType and + assert (isinstance(sources, list) and all(isinstance(v, basestring) for v in sources)), \ "'sources' must be a list of strings" diff --git a/Lib/distutils/text_file.py b/Lib/distutils/text_file.py index 9d4d42b4c64..3f6a220dccf 100644 --- a/Lib/distutils/text_file.py +++ b/Lib/distutils/text_file.py @@ -6,7 +6,6 @@ lines, and joining lines with backslashes.""" __revision__ = "$Id$" -from types import * import sys, os, io @@ -137,7 +136,7 @@ class TextFile: if line is None: line = self.current_line outmsg.append(self.filename + ", ") - if type (line) in (ListType, TupleType): + if isinstance (line, (list, tuple)): outmsg.append("lines %d-%d: " % tuple (line)) else: outmsg.append("line %d: " % line) @@ -239,7 +238,7 @@ class TextFile: line = buildup_line + line # careful: pay attention to line number when incrementing it - if type (self.current_line) is ListType: + if isinstance (self.current_line, list): self.current_line[1] = self.current_line[1] + 1 else: self.current_line = [self.current_line, @@ -250,7 +249,7 @@ class TextFile: return None # still have to be careful about incrementing the line number! - if type (self.current_line) is ListType: + if isinstance (self.current_line, list): self.current_line = self.current_line[1] + 1 else: self.current_line = self.current_line + 1 diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py index a42ab5ed424..d07ae1e3588 100644 --- a/Lib/distutils/unixccompiler.py +++ b/Lib/distutils/unixccompiler.py @@ -16,7 +16,6 @@ the "typical" Unix-style command-line C compiler: __revision__ = "$Id$" import os, sys -from types import NoneType from copy import copy from distutils import sysconfig @@ -212,7 +211,7 @@ class UnixCCompiler(CCompiler): lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, libraries) - if not isinstance(output_dir, (basestring, NoneType)): + if not isinstance(output_dir, (basestring, type(None))): raise TypeError, "'output_dir' must be a string or None" if output_dir is not None: output_filename = os.path.join(output_dir, output_filename) diff --git a/Lib/idlelib/CallTips.py b/Lib/idlelib/CallTips.py index 6f362f9f70f..6f81af48914 100644 --- a/Lib/idlelib/CallTips.py +++ b/Lib/idlelib/CallTips.py @@ -131,14 +131,14 @@ def get_arg_text(ob): arg_text = "" if ob is not None: arg_offset = 0 - if type(ob) in (types.ClassType, types.TypeType): + if isinstance(ob, type): # Look for the highest __init__ in the class chain. fob = _find_constructor(ob) if fob is None: fob = lambda: None else: arg_offset = 1 - elif type(ob)==types.MethodType: + elif isinstace(ob, types.MethodType): # bit of a hack for methods - turn it into a function # but we drop the "self" param. fob = ob.im_func @@ -146,7 +146,7 @@ def get_arg_text(ob): else: fob = ob # Try to build one for Python defined functions - if type(fob) in [types.FunctionType, types.LambdaType]: + if isinstance(fob, (types.FunctionType, types.LambdaType)): argcount = fob.__code__.co_argcount real_args = fob.__code__.co_varnames[arg_offset:argcount] defaults = fob.__defaults__ or [] diff --git a/Lib/idlelib/ObjectBrowser.py b/Lib/idlelib/ObjectBrowser.py index 3ef5bb905de..0976d912022 100644 --- a/Lib/idlelib/ObjectBrowser.py +++ b/Lib/idlelib/ObjectBrowser.py @@ -101,17 +101,14 @@ class DictTreeItem(SequenceTreeItem): pass return keys -from types import * - dispatch = { - IntType: AtomicObjectTreeItem, - LongType: AtomicObjectTreeItem, - FloatType: AtomicObjectTreeItem, - StringType: AtomicObjectTreeItem, - TupleType: SequenceTreeItem, - ListType: SequenceTreeItem, - DictType: DictTreeItem, - ClassType: ClassTreeItem, + int: AtomicObjectTreeItem, + float: AtomicObjectTreeItem, + str: AtomicObjectTreeItem, + tuple: SequenceTreeItem, + list: SequenceTreeItem, + dict: DictTreeItem, + type: ClassTreeItem, } def make_objecttreeitem(labeltext, object, setfunction=None): diff --git a/Lib/idlelib/rpc.py b/Lib/idlelib/rpc.py index e0412118cda..6471e81bec2 100644 --- a/Lib/idlelib/rpc.py +++ b/Lib/idlelib/rpc.py @@ -287,7 +287,7 @@ class SocketIO(object): def _proxify(self, obj): if isinstance(obj, RemoteProxy): return RPCProxy(self, obj.oid) - if isinstance(obj, types.ListType): + if isinstance(obj, list): return map(self._proxify, obj) # XXX Check for other types -- not currently needed return obj @@ -574,7 +574,7 @@ def _getmethods(obj, methods): attr = getattr(obj, name) if hasattr(attr, '__call__'): methods[name] = 1 - if type(obj) == types.ClassType: + if isinstance(obj, type): for super in obj.__bases__: _getmethods(super, methods) diff --git a/Lib/inspect.py b/Lib/inspect.py index 372013bb82b..b5e9ff23fed 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -47,7 +47,7 @@ def isclass(object): Class objects provide these attributes: __doc__ documentation string __module__ name of module in which this class was defined""" - return isinstance(object, types.ClassType) or hasattr(object, '__bases__') + return isinstance(object, type) or hasattr(object, '__bases__') def ismethod(object): """Return true if the object is an instance method. diff --git a/Lib/lib-tk/ScrolledText.py b/Lib/lib-tk/ScrolledText.py index 367aa89ca67..19ad6dd3602 100644 --- a/Lib/lib-tk/ScrolledText.py +++ b/Lib/lib-tk/ScrolledText.py @@ -21,7 +21,7 @@ class ScrolledText(Text): cnf = _cnfmerge((cnf, kw)) fcnf = {} for k in cnf.keys(): - if type(k) == ClassType or k == 'name': + if isinstace(k, type) or k == 'name': fcnf[k] = cnf[k] del cnf[k] self.frame = Frame(master, **fcnf) diff --git a/Lib/lib-tk/Tkinter.py b/Lib/lib-tk/Tkinter.py index 5a73ca8a665..6b360fe5ed0 100644 --- a/Lib/lib-tk/Tkinter.py +++ b/Lib/lib-tk/Tkinter.py @@ -38,7 +38,6 @@ if sys.platform == "win32": import _tkinter # If this fails your Python may not be configured for Tk tkinter = _tkinter # b/w compat for export TclError = _tkinter.TclError -from types import * from Tkconstants import * try: import MacOS; _MacOS = MacOS; del MacOS @@ -61,11 +60,11 @@ try: _tkinter.deletefilehandler except AttributeError: _tkinter.deletefilehandler = None -def _flatten(tuple): +def _flatten(seq): """Internal function.""" res = () - for item in tuple: - if type(item) in (TupleType, ListType): + for item in seq: + if isinstance(item, (tuple, list)): res = res + _flatten(item) elif item is not None: res = res + (item,) @@ -76,9 +75,9 @@ except AttributeError: pass def _cnfmerge(cnfs): """Internal function.""" - if type(cnfs) is DictionaryType: + if isinstance(cnfs, dict): return cnfs - elif type(cnfs) in (NoneType, StringType): + elif isinstance(cnfs, (type(None), str)): return cnfs else: cnf = {} @@ -867,7 +866,7 @@ class Misc: data = self.tk.split( self.tk.call('winfo', 'visualsavailable', self._w, includeids and 'includeids' or None)) - if type(data) is StringType: + if isinstance(data, str): data = [self.tk.split(data)] return map(self.__winfo_parseitem, data) def __winfo_parseitem(self, t): @@ -934,7 +933,7 @@ class Misc: self.tk.call('bindtags', self._w, tagList) def _bind(self, what, sequence, func, add, needcleanup=1): """Internal function.""" - if type(func) is StringType: + if isinstance(func, str): self.tk.call(what + (sequence, func)) elif func: funcid = self._register(func, self._substitute, @@ -1181,7 +1180,7 @@ class Misc: self.tk.call(_flatten((self._w, cmd)))): cnf[x[0][1:]] = (x[0][1:],) + x[1:] return cnf - if type(cnf) is StringType: + if isinstance(cnf, str): x = self.tk.split( self.tk.call(_flatten((self._w, cmd, '-'+cnf)))) return (x[0][1:],) + x[1:] @@ -1262,7 +1261,7 @@ class Misc: bbox = grid_bbox def _grid_configure(self, command, index, cnf, kw): """Internal function.""" - if type(cnf) is StringType and not kw: + if isinstance(cnf, str) and not kw: if cnf[-1:] == '_': cnf = cnf[:-1] if cnf[:1] != '-': @@ -1923,7 +1922,7 @@ class BaseWidget(Misc): BaseWidget._setup(self, master, cnf) classes = [] for k in cnf.keys(): - if type(k) is ClassType: + if isinstance(k, type): classes.append((k, cnf[k])) del cnf[k] self.tk.call( @@ -2136,7 +2135,7 @@ class Canvas(Widget): """Internal function.""" args = _flatten(args) cnf = args[-1] - if type(cnf) in (DictionaryType, TupleType): + if isinstance(cnf, (dict, tuple)): args = args[:-1] else: cnf = {} @@ -3695,7 +3694,7 @@ class PanedWindow(Widget): 'paneconfigure', tagOrId)): cnf[x[0][1:]] = (x[0][1:],) + x[1:] return cnf - if type(cnf) == StringType and not kw: + if isinstance(cnf, str) and not kw: x = self.tk.split(self.tk.call( self._w, 'paneconfigure', tagOrId, '-'+cnf)) return (x[0][1:],) + x[1:] diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index 0a6288644e0..6dc53871716 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -26,7 +26,7 @@ Copyright (C) 2001-2007 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ -import sys, os, types, time, cStringIO, traceback +import sys, os, time, cStringIO, traceback try: import codecs @@ -48,6 +48,8 @@ __date__ = "16 February 2007" # Miscellaneous module data #--------------------------------------------------------------------------- +_unicode = 'unicode' in dir(__builtins__) + # # _srcfile is used when walking the stack to check when we've got the first # caller stack frame. @@ -234,7 +236,7 @@ class LogRecord: # 'Value is %d' instead of 'Value is 0'. # For the use case of passing a dictionary, this should not be a # problem. - if args and (len(args) == 1) and args[0] and (type(args[0]) == types.DictType): + if args and (len(args) == 1) and args[0] and isinstance(args[0], dict): args = args[0] self.args = args self.levelname = getLevelName(level) @@ -275,11 +277,11 @@ class LogRecord: Return the message for this LogRecord after merging any user-supplied arguments with the message. """ - if not hasattr(types, "UnicodeType"): #if no unicode support... + if not _unicode: #if no unicode support... msg = str(self.msg) else: msg = self.msg - if type(msg) not in (types.UnicodeType, types.StringType): + if not isinstance(msg, basestring): try: msg = str(self.msg) except UnicodeError: @@ -743,7 +745,7 @@ class StreamHandler(Handler): try: msg = self.format(record) fs = "%s\n" - if not hasattr(types, "UnicodeType"): #if no unicode support... + if not _unicode: #if no unicode support... self.stream.write(fs % msg) else: try: @@ -1053,7 +1055,7 @@ class Logger(Filterer): logger.log(level, "We have a %s", "mysterious problem", exc_info=1) """ - if type(level) != types.IntType: + if not isinstance(level, int): if raiseExceptions: raise TypeError, "level must be an integer" else: @@ -1103,7 +1105,7 @@ class Logger(Filterer): else: fn, lno, func = "(unknown file)", 0, "(unknown function)" if exc_info: - if type(exc_info) != types.TupleType: + if not isinstance(exc_info, tuple): exc_info = sys.exc_info() record = self.makeRecord(self.name, level, fn, lno, msg, args, exc_info, func, extra) self.handle(record) diff --git a/Lib/logging/config.py b/Lib/logging/config.py index 8b281532c59..0bf79a5a206 100644 --- a/Lib/logging/config.py +++ b/Lib/logging/config.py @@ -27,7 +27,7 @@ Copyright (C) 2001-2004 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ -import sys, logging, logging.handlers, socket, struct, os, traceback, types +import sys, logging, logging.handlers, socket, struct, os, traceback try: import thread @@ -289,7 +289,7 @@ def listen(port=DEFAULT_LOGGING_CONFIG_PORT): traceback.print_exc() os.remove(file) except socket.error as e: - if type(e.args) != types.TupleType: + if not isinstancetype(e.args, tuple): raise else: errcode = e.args[0] diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index 084a9323ea8..75434b76abc 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -27,7 +27,7 @@ Copyright (C) 2001-2007 Vinay Sajip. All Rights Reserved. To use, simply 'import logging' and log away! """ -import sys, logging, socket, types, os, struct, time, glob +import sys, logging, socket, os, struct, time, glob try: import cPickle as pickle except ImportError: @@ -637,7 +637,7 @@ class SysLogHandler(logging.Handler): self.address = address self.facility = facility - if type(address) == types.StringType: + if isinstance(address, str): self.unixsocket = 1 self._connect_unixsocket(address) else: @@ -669,9 +669,9 @@ class SysLogHandler(logging.Handler): priority_names mapping dictionaries are used to convert them to integers. """ - if type(facility) == types.StringType: + if isinstance(facility, str): facility = self.facility_names[facility] - if type(priority) == types.StringType: + if isinstance(priority, str): priority = self.priority_names[priority] return (facility << 3) | priority @@ -738,16 +738,16 @@ class SMTPHandler(logging.Handler): for the credentials argument. """ logging.Handler.__init__(self) - if type(mailhost) == types.TupleType: + if isinstance(mailhost, tuple): self.mailhost, self.mailport = mailhost else: self.mailhost, self.mailport = mailhost, None - if type(credentials) == types.TupleType: + if isinstance(credentials, tuple): self.username, self.password = credentials else: self.username = None self.fromaddr = fromaddr - if type(toaddrs) == types.StringType: + if isinstance(toaddrs, str): toaddrs = [toaddrs] self.toaddrs = toaddrs self.subject = subject diff --git a/Lib/new.py b/Lib/new.py index 5559f6e9a17..e6079c2bb24 100644 --- a/Lib/new.py +++ b/Lib/new.py @@ -4,7 +4,7 @@ This module is no longer required except for backward compatibility. Objects of most types can now be created by calling the type object. """ -from types import ClassType as classobj +classobj = type from types import FunctionType as function from types import MethodType as instancemethod from types import ModuleType as module diff --git a/Lib/optparse.py b/Lib/optparse.py index 516fd5d9981..ed51b938204 100644 --- a/Lib/optparse.py +++ b/Lib/optparse.py @@ -67,7 +67,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ import sys, os -import types import textwrap def _repr(self): @@ -641,7 +640,7 @@ class Option: # Python 2.1 and earlier, and is short-circuited by the # first check on modern Pythons.) import __builtin__ - if ( type(self.type) is types.TypeType or + if ( isinstance(self.type, type) or (hasattr(self.type, "__name__") and getattr(__builtin__, self.type.__name__, None) is self.type) ): self.type = self.type.__name__ @@ -660,7 +659,7 @@ class Option: if self.choices is None: raise OptionError( "must supply a list of choices for type 'choice'", self) - elif type(self.choices) not in (types.TupleType, types.ListType): + elif not isinstance(self.choices, (tuple, list)): raise OptionError( "choices must be a list of strings ('%s' supplied)" % str(type(self.choices)).split("'")[1], self) @@ -704,12 +703,12 @@ class Option: raise OptionError( "callback not callable: %r" % self.callback, self) if (self.callback_args is not None and - type(self.callback_args) is not types.TupleType): + not isinstance(self.callback_args, tuple)): raise OptionError( "callback_args, if supplied, must be a tuple: not %r" % self.callback_args, self) if (self.callback_kwargs is not None and - type(self.callback_kwargs) is not types.DictType): + not isinstance(self.callback_kwargs, dict)): raise OptionError( "callback_kwargs, if supplied, must be a dict: not %r" % self.callback_kwargs, self) @@ -834,7 +833,7 @@ class Values: def __eq__(self, other): if isinstance(other, Values): return self.__dict__ == other.__dict__ - elif isinstance(other, types.DictType): + elif isinstance(other, dict): return self.__dict__ == other else: return NotImplemented diff --git a/Lib/pickle.py b/Lib/pickle.py index a028d9d549c..b9507170dec 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -26,7 +26,7 @@ Misc variables: __version__ = "$Revision$" # Code version -from types import * +from types import FunctionType, BuiltinFunctionType from copy_reg import dispatch_table from copy_reg import _extension_registry, _inverted_registry, _extension_cache import marshal @@ -283,7 +283,7 @@ class Pickler: # Check for a class with a custom metaclass; treat as regular class try: - issc = issubclass(t, TypeType) + issc = issubclass(t, type) except TypeError: # t is not a class (old Boost; see SF #502085) issc = 0 if issc: @@ -313,7 +313,7 @@ class Pickler: return # Assert that reduce() returned a tuple - if type(rv) is not TupleType: + if not isinstance(rv, tuple): raise PicklingError("%s must return string or tuple" % reduce) # Assert that it returned an appropriately sized tuple @@ -342,7 +342,7 @@ class Pickler: # This API is called by some subclasses # Assert that args is a tuple or None - if not isinstance(args, TupleType): + if not isinstance(args, tuple): raise PicklingError("args from reduce() should be a tuple") # Assert that func is callable @@ -420,7 +420,7 @@ class Pickler: def save_none(self, obj): self.write(NONE) - dispatch[NoneType] = save_none + dispatch[type(None)] = save_none def save_bool(self, obj): if self.proto >= 2: @@ -452,7 +452,7 @@ class Pickler: # Text pickle, or int too big to fit in signed 4-byte format. self.write(INT + bytes(repr(obj)) + b'\n') # XXX save_int is merged into save_long - # dispatch[IntType] = save_int + # dispatch[int] = save_int def save_long(self, obj, pack=struct.pack): if self.bin: @@ -483,14 +483,14 @@ class Pickler: self.write(LONG4 + pack("d', obj)) else: self.write(FLOAT + bytes(repr(obj)) + b'\n') - dispatch[FloatType] = save_float + dispatch[float] = save_float def save_string(self, obj, pack=struct.pack): if self.bin: @@ -568,7 +568,7 @@ class Pickler: self.write(TUPLE) self.memoize(obj) - dispatch[TupleType] = save_tuple + dispatch[tuple] = save_tuple # save_empty_tuple() isn't used by anything in Python 2.3. However, I # found a Pickler subclass in Zope3 that calls it, so it's not harmless @@ -587,7 +587,7 @@ class Pickler: self.memoize(obj) self._batch_appends(iter(obj)) - dispatch[ListType] = save_list + dispatch[list] = save_list # Keep in synch with cPickle's BATCHSIZE. Nothing will break if it gets # out of synch, though. @@ -636,8 +636,8 @@ class Pickler: self.memoize(obj) self._batch_setitems(iter(obj.items())) - dispatch[DictionaryType] = save_dict - if not PyStringMap is None: + dispatch[dict] = save_dict + if PyStringMap is not None: dispatch[PyStringMap] = save_dict def _batch_setitems(self, items): @@ -715,10 +715,9 @@ class Pickler: write(GLOBAL + bytes(module) + b'\n' + bytes(name) + b'\n') self.memoize(obj) - dispatch[ClassType] = save_global dispatch[FunctionType] = save_global dispatch[BuiltinFunctionType] = save_global - dispatch[TypeType] = save_global + dispatch[type] = save_global # Pickling helpers @@ -1007,7 +1006,7 @@ class Unpickler: del self.stack[k:] instantiated = 0 if (not args and - type(klass) is ClassType and + isinstance(klass, type) and not hasattr(klass, "__getinitargs__")): value = _EmptyClass() value.__class__ = klass diff --git a/Lib/pickletools.py b/Lib/pickletools.py index b2c95996a6a..000fc6b58d8 100644 --- a/Lib/pickletools.py +++ b/Lib/pickletools.py @@ -1531,7 +1531,7 @@ opcodes = [ opcode is followed by code to create setstate's argument, and then a BUILD opcode to apply __setstate__ to that argument. - If type(callable) is not ClassType, REDUCE complains unless the + If not isinstance(callable, type), REDUCE complains unless the callable has been registered with the copy_reg module's safe_constructors dict, or the callable has a magic '__safe_for_unpickling__' attribute with a true value. I'm not sure @@ -1587,9 +1587,6 @@ opcodes = [ + The argtuple is empty (markobject was at the top of the stack at the start). - + It's an old-style class object (the type of the class object is - ClassType). - + The class object does not have a __getinitargs__ attribute. then we want to create an old-style class instance without invoking diff --git a/Lib/plat-mac/aepack.py b/Lib/plat-mac/aepack.py index 3511270d9a8..7ce8548cd4a 100644 --- a/Lib/plat-mac/aepack.py +++ b/Lib/plat-mac/aepack.py @@ -13,8 +13,6 @@ coerce(x, wanted_sample) coerces a python object to another python object # import struct -import types -from types import * from Carbon import AE from Carbon.AppleEvents import * import MacOS @@ -74,7 +72,7 @@ def pack(x, forcetype = None): """Pack a python object into an AE descriptor""" if forcetype: - if type(x) is StringType: + if isinstance(x, str): return AE.AECreateDesc(forcetype, x) else: return pack(x).AECoerceDesc(forcetype) @@ -90,29 +88,29 @@ def pack(x, forcetype = None): return AE.AECreateDesc('fsrf', x.data) if isinstance(x, AliasType): return AE.AECreateDesc('alis', x.data) - if isinstance(x, IntType): + if isinstance(x, int): return AE.AECreateDesc('long', struct.pack('l', x)) - if isinstance(x, FloatType): + if isinstance(x, float): return AE.AECreateDesc('doub', struct.pack('d', x)) - if isinstance(x, StringType): + if isinstance(x, str): return AE.AECreateDesc('TEXT', x) - if isinstance(x, UnicodeType): + if isinstance(x, unicode): data = x.encode('utf16') if data[:2] == '\xfe\xff': data = data[2:] return AE.AECreateDesc('utxt', data) - if isinstance(x, ListType): + if isinstance(x, list): list = AE.AECreateList('', 0) for item in x: list.AEPutDesc(0, pack(item)) return list - if isinstance(x, DictionaryType): + if isinstance(x, dict): record = AE.AECreateList('', 1) for key, value in x.items(): packkey(record, key, value) #record.AEPutParamDesc(key, pack(value)) return record - if type(x) == types.ClassType and issubclass(x, ObjectSpecifier): + if isinstance(x, type) and issubclass(x, ObjectSpecifier): # Note: we are getting a class object here, not an instance return AE.AECreateDesc('type', x.want) if hasattr(x, '__aepack__'): @@ -340,7 +338,7 @@ def mkobject(dict): # to __class__ is safe. Moreover, shouldn't there be a better # initializer for the classes in the suites? def mkobjectfrommodule(dict, modulename): - if type(dict['want']) == types.ClassType and issubclass(dict['want'], ObjectSpecifier): + if isinstance(dict['want'], type) and issubclass(dict['want'], ObjectSpecifier): # The type has already been converted to Python. Convert back:-( classtype = dict['want'] dict['want'] = aetypes.mktype(classtype.want) diff --git a/Lib/plat-mac/aetypes.py b/Lib/plat-mac/aetypes.py index 9b739f6d329..aacea5594e7 100644 --- a/Lib/plat-mac/aetypes.py +++ b/Lib/plat-mac/aetypes.py @@ -2,7 +2,6 @@ from Carbon.AppleEvents import * import struct -from types import * # # convoluted, since there are cyclic dependencies between this file and @@ -14,7 +13,7 @@ def pack(*args, **kwargs): def nice(s): """'nice' representation of an object""" - if type(s) is StringType: return repr(s) + if isinstance(s, str): return repr(s) else: return str(s) class Unknown: @@ -222,7 +221,7 @@ class Logical: return "Logical(%r, %r)" % (self.logc, self.term) def __str__(self): - if type(self.term) == ListType and len(self.term) == 2: + if isinstance(self.term, list) and len(self.term) == 2: return "%s %s %s" % (nice(self.term[0]), self.logc.strip(), nice(self.term[1])) @@ -481,13 +480,13 @@ class SelectableItem(ObjectSpecifier): def __init__(self, want, seld, fr = None): t = type(seld) - if t == StringType: + if isinstance(t, str): form = 'name' elif IsRange(seld): form = 'rang' elif IsComparison(seld) or IsLogical(seld): form = 'test' - elif t == TupleType: + elif isinstance(t, tuple): # Breakout: specify both form and seld in a tuple # (if you want ID or rele or somesuch) form, seld = seld @@ -513,7 +512,7 @@ class ComponentItem(SelectableItem): def __str__(self): seld = self.seld - if type(seld) == StringType: + if isinstance(seld, str): ss = repr(seld) elif IsRange(seld): start, stop = seld.start, seld.stop diff --git a/Lib/plat-mac/gensuitemodule.py b/Lib/plat-mac/gensuitemodule.py index 6d1ceae268a..10a996faf00 100644 --- a/Lib/plat-mac/gensuitemodule.py +++ b/Lib/plat-mac/gensuitemodule.py @@ -279,9 +279,9 @@ def decode(data, verbose=None): def simplify(item): """Recursively replace singleton tuples by their constituent item""" - if type(item) is types.ListType: + if isinstance(item, list): return map(simplify, item) - elif type(item) == types.TupleType and len(item) == 2: + elif isinstance(item, tuple) and len(item) == 2: return simplify(item[1]) else: return item @@ -352,7 +352,7 @@ def alt_generic(what, f, *args): def generic(what, f, *args): if type(what) == types.FunctionType: return what(f, *args) - if type(what) == types.ListType: + if isinstance(what, list): record = [] for thing in what: item = generic(thing[:1], f, *thing[1:]) diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index d53d37cf752..99f33fc4e93 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -101,7 +101,7 @@ class SubPattern: self.width = None def dump(self, level=0): nl = 1 - seqtypes = type(()), type([]) + seqtypes = (tuple, list) for op, av in self.data: print(level*" " + op, end=' '); nl = 0 if op == "in": @@ -117,7 +117,7 @@ class SubPattern: print(level*" " + "or") a.dump(level+1); nl = 1 i = i + 1 - elif type(av) in seqtypes: + elif isinstance(av, seqtypes): for a in av: if isinstance(a, SubPattern): if not nl: print() @@ -709,7 +709,7 @@ def parse_template(source, pattern): else: pappend((LITERAL, literal)) sep = source[:0] - if type(sep) is type(""): + if isinstance(sep, str): makechar = chr else: makechar = chr diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index e8d94f4bc52..f20f676aa24 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -4103,7 +4103,8 @@ def notimplemented(): N1 = sys.maxint + 1 # might trigger OverflowErrors instead of TypeErrors N2 = sys.maxint # if sizeof(int) < sizeof(long), might trigger # ValueErrors instead of TypeErrors - for metaclass in [type, types.ClassType]: + if 1: + metaclass = type for name, expr, iexpr in [ ('__add__', 'x + y', 'x += y'), ('__sub__', 'x - y', 'x -= y'), diff --git a/Lib/test/test_isinstance.py b/Lib/test/test_isinstance.py index 57aea0d3b3e..c10fd3257c9 100644 --- a/Lib/test/test_isinstance.py +++ b/Lib/test/test_isinstance.py @@ -15,7 +15,7 @@ class TestIsInstanceExceptions(unittest.TestCase): # (leading to an "undetected error" in the debug build). Set up is, # isinstance(inst, cls) where: # - # - cls isn't a ClassType, a TypeType, or a TupleType + # - cls isn't a a type, or a tuple # - cls has a __bases__ attribute # - inst has a __class__ attribute # - inst.__class__ as no __bases__ attribute diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py index c8e77e8bea8..953acad4d5b 100644 --- a/Lib/test/test_logging.py +++ b/Lib/test/test_logging.py @@ -25,7 +25,7 @@ Copyright (C) 2001-2002 Vinay Sajip. All Rights Reserved. """ import select -import os, sys, struct, types, pickle, cStringIO +import os, sys, struct, pickle, cStringIO import socket, tempfile, threading, time import logging, logging.handlers, logging.config from test.test_support import run_with_locale diff --git a/Lib/test/test_optparse.py b/Lib/test/test_optparse.py index 751f7a220fa..b196ec96ed7 100644 --- a/Lib/test/test_optparse.py +++ b/Lib/test/test_optparse.py @@ -12,7 +12,6 @@ import sys import os import re import copy -import types import unittest from StringIO import StringIO @@ -171,7 +170,7 @@ and kwargs %(kwargs)r except InterceptedError as err: self.assert_( - type(output) is types.StringType, + isinstance(output, str), "expected output to be an ordinary string, not %r" % type(output)) @@ -432,18 +431,12 @@ class TestTypeAliases(BaseTest): self.parser.add_option("-s", type="str") self.assertEquals(self.parser.get_option("-s").type, "string") - def test_new_type_object(self): + def test_type_object(self): self.parser.add_option("-s", type=str) self.assertEquals(self.parser.get_option("-s").type, "string") self.parser.add_option("-x", type=int) self.assertEquals(self.parser.get_option("-x").type, "int") - def test_old_type_object(self): - self.parser.add_option("-s", type=types.StringType) - self.assertEquals(self.parser.get_option("-s").type, "string") - self.parser.add_option("-x", type=types.IntType) - self.assertEquals(self.parser.get_option("-x").type, "int") - # Custom type for testing processing of default values. _time_units = { 's' : 1, 'm' : 60, 'h' : 60*60, 'd' : 60*60*24 } @@ -1470,7 +1463,7 @@ class TestHelp(BaseTest): os.environ['COLUMNS'] = orig_columns def assertHelpEquals(self, expected_output): - if type(expected_output) is types.UnicodeType: + if isinstance(expected_output, unicode): encoding = self.parser._get_encoding(sys.stdout) expected_output = expected_output.encode(encoding, "replace") diff --git a/Lib/test/test_pyclbr.py b/Lib/test/test_pyclbr.py index 749c568b2c0..899e3442b4c 100644 --- a/Lib/test/test_pyclbr.py +++ b/Lib/test/test_pyclbr.py @@ -4,7 +4,7 @@ ''' from test.test_support import run_unittest import unittest, sys -from types import ClassType, FunctionType, MethodType, BuiltinFunctionType +from types import FunctionType, MethodType, BuiltinFunctionType import pyclbr from unittest import TestCase @@ -95,7 +95,7 @@ class PyclbrTest(TestCase): continue # skip functions that came from somewhere else self.assertEquals(py_item.__module__, value.module) else: - self.failUnless(isinstance(py_item, (ClassType, type))) + self.failUnless(isinstance(py_item, type)) if py_item.__module__ != moduleName: continue # skip classes that came from somewhere else @@ -133,14 +133,14 @@ class PyclbrTest(TestCase): # Now check for missing stuff. def defined_in(item, module): - if isinstance(item, ClassType): + if isinstance(item, type): return item.__module__ == module.__name__ if isinstance(item, FunctionType): return item.__globals__ is module.__dict__ return False for name in dir(module): item = getattr(module, name) - if isinstance(item, (ClassType, FunctionType)): + if isinstance(item, (type, FunctionType)): if defined_in(item, module): self.assertHaskey(dict, name, ignore) diff --git a/Lib/types.py b/Lib/types.py index 1c396fa2c1d..4c49ba39397 100644 --- a/Lib/types.py +++ b/Lib/types.py @@ -39,7 +39,7 @@ GeneratorType = type(_g()) class _C: def _m(self): pass -ClassType = type(_C) +ClassType = type UnboundMethodType = type(_C._m) # Same as MethodType MethodType = type(_C()._m) diff --git a/Lib/unittest.py b/Lib/unittest.py index 6ede5ad5905..a4ced3dd4e2 100644 --- a/Lib/unittest.py +++ b/Lib/unittest.py @@ -412,8 +412,7 @@ class TestSuite: # sanity checks if not hasattr(test, '__call__'): raise TypeError("the test to add must be callable") - if (isinstance(test, (type, types.ClassType)) and - issubclass(test, (TestCase, TestSuite))): + if isinstance(test, type) and issubclass(test, (TestCase, TestSuite)): raise TypeError("TestCases and TestSuites must be instantiated " "before passing them to addTest()") self._tests.append(test) @@ -525,8 +524,7 @@ class TestLoader: tests = [] for name in dir(module): obj = getattr(module, name) - if (isinstance(obj, (type, types.ClassType)) and - issubclass(obj, TestCase)): + if isinstance(obj, type) and issubclass(obj, TestCase): tests.append(self.loadTestsFromTestCase(obj)) return self.suiteClass(tests) @@ -556,11 +554,10 @@ class TestLoader: if type(obj) == types.ModuleType: return self.loadTestsFromModule(obj) - elif (isinstance(obj, (type, types.ClassType)) and - issubclass(obj, TestCase)): + elif isinstance(obj, type) and issubclass(obj, TestCase): return self.loadTestsFromTestCase(obj) - elif (type(obj) == types.UnboundMethodType and - isinstance(parent, (type, types.ClassType)) and + elif (isinstance(obj, types.UnboundMethodType) and + isinstance(parent, type) and issubclass(parent, TestCase)): return TestSuite([parent(obj.__name__)]) elif isinstance(obj, TestSuite): @@ -816,7 +813,7 @@ Examples: self.module) def runTests(self): - if isinstance(self.testRunner, (type, types.ClassType)): + if isinstance(self.testRunner, type): try: testRunner = self.testRunner(verbosity=self.verbosity) except TypeError: diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 8d44a0dfffc..4321c366420 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -428,9 +428,8 @@ def build_opener(*handlers): If any of the handlers passed as arguments are subclasses of the default handlers, the default handlers will not be used. """ - import types def isclass(obj): - return isinstance(obj, types.ClassType) or hasattr(obj, "__bases__") + return isinstance(obj, type) or hasattr(obj, "__bases__") opener = OpenerDirector() default_classes = [ProxyHandler, UnknownHandler, HTTPHandler, diff --git a/Lib/warnings.py b/Lib/warnings.py index 87ae8494a2f..ae17c7b93c5 100644 --- a/Lib/warnings.py +++ b/Lib/warnings.py @@ -3,7 +3,7 @@ # Note: function level imports should *not* be used # in this module as it may cause import lock deadlock. # See bug 683658. -import sys, types +import sys import linecache __all__ = ["warn", "showwarning", "formatwarning", "filterwarnings", @@ -151,8 +151,7 @@ def filterwarnings(action, message="", category=Warning, module="", lineno=0, assert action in ("error", "ignore", "always", "default", "module", "once"), "invalid action: %r" % (action,) assert isinstance(message, basestring), "message must be a string" - assert isinstance(category, (type, types.ClassType)), \ - "category must be a class" + assert isinstance(category, type), "category must be a class" assert issubclass(category, Warning), "category must be a Warning subclass" assert isinstance(module, basestring), "module must be a string" assert isinstance(lineno, int) and lineno >= 0, \ diff --git a/Lib/wsgiref/headers.py b/Lib/wsgiref/headers.py index c364b26b87f..c3774bb44d4 100644 --- a/Lib/wsgiref/headers.py +++ b/Lib/wsgiref/headers.py @@ -5,8 +5,6 @@ so portions are Copyright (C) 2001,2002 Python Software Foundation, and were written by Barry Warsaw. """ -from types import ListType, TupleType - # Regular expression that matches `special' characters in parameters, the # existance of which force quoting of the parameter value. import re @@ -44,7 +42,7 @@ class Headers: """Manage a collection of HTTP response headers""" def __init__(self,headers): - if type(headers) is not ListType: + if not isinstance(headers, list): raise TypeError("Headers must be a list of name/value tuples") self._headers = headers diff --git a/Lib/wsgiref/validate.py b/Lib/wsgiref/validate.py index 09b0d950e2d..fbd35361e6d 100644 --- a/Lib/wsgiref/validate.py +++ b/Lib/wsgiref/validate.py @@ -113,7 +113,6 @@ __all__ = ['validator'] import re import sys -from types import DictType, StringType, TupleType, ListType import warnings header_re = re.compile(r'^[a-zA-Z][a-zA-Z0-9\-_]*$') @@ -191,20 +190,20 @@ class InputWrapper: def read(self, *args): assert_(len(args) <= 1) v = self.input.read(*args) - assert_(type(v) is type("")) + assert_(isinstance(v, str)) return v def readline(self): v = self.input.readline() - assert_(type(v) is type("")) + assert_(isinstance(v, str)) return v def readlines(self, *args): assert_(len(args) <= 1) lines = self.input.readlines(*args) - assert_(type(lines) is type([])) + assert_(isinstance(lines, list)) for line in lines: - assert_(type(line) is type("")) + assert_(isinstance(line, str)) return lines def __iter__(self): @@ -223,7 +222,7 @@ class ErrorWrapper: self.errors = wsgi_errors def write(self, s): - assert_(type(s) is type("")) + assert_(isinstance(s, str)) self.errors.write(s) def flush(self): @@ -242,7 +241,7 @@ class WriteWrapper: self.writer = wsgi_writer def __call__(self, s): - assert_(type(s) is type("")) + assert_(isinstance(s, str)) self.writer(s) class PartialIteratorWrapper: @@ -288,7 +287,7 @@ class IteratorWrapper: "Iterator garbage collected without being closed") def check_environ(environ): - assert_(type(environ) is DictType, + assert_(isinstance(environ, dict), "Environment is not of the right type: %r (environment: %r)" % (type(environ), environ)) @@ -315,11 +314,11 @@ def check_environ(environ): if '.' in key: # Extension, we don't care about its type continue - assert_(type(environ[key]) is StringType, + assert_(isinstance(environ[key], str), "Environmental variable %s is not a string: %r (value: %r)" % (key, type(environ[key]), environ[key])) - assert_(type(environ['wsgi.version']) is TupleType, + assert_(isinstance(environ['wsgi.version'], tuple), "wsgi.version should be a tuple (%r)" % (environ['wsgi.version'],)) assert_(environ['wsgi.url_scheme'] in ('http', 'https'), "wsgi.url_scheme unknown: %r" % environ['wsgi.url_scheme']) @@ -365,7 +364,7 @@ def check_errors(wsgi_errors): % (wsgi_errors, attr)) def check_status(status): - assert_(type(status) is StringType, + assert_(isinstance(status, str), "Status must be a string (not %r)" % status) # Implicitly check that we can turn it into an integer: status_code = status.split(None, 1)[0] @@ -380,12 +379,12 @@ def check_status(status): % status, WSGIWarning) def check_headers(headers): - assert_(type(headers) is ListType, + assert_(isinstance(headers, list), "Headers (%r) must be of type list: %r" % (headers, type(headers))) header_names = {} for item in headers: - assert_(type(item) is TupleType, + assert_(isinstance(item, tuple), "Individual headers (%r) must be of type tuple: %r" % (item, type(item))) assert_(len(item) == 2) @@ -419,7 +418,7 @@ def check_content_type(status, headers): assert_(0, "No Content-Type header found in headers (%s)" % headers) def check_exc_info(exc_info): - assert_(exc_info is None or type(exc_info) is type(()), + assert_(exc_info is None or isinstance(exc_info, tuple), "exc_info (%r) is not a tuple: %r" % (exc_info, type(exc_info))) # More exc_info checks? diff --git a/Lib/xml/sax/saxutils.py b/Lib/xml/sax/saxutils.py index ff9f5962744..a4bcb0894d6 100644 --- a/Lib/xml/sax/saxutils.py +++ b/Lib/xml/sax/saxutils.py @@ -3,18 +3,10 @@ A library of useful helper classes to the SAX classes, for the convenience of application and driver writers. """ -import os, urlparse, urllib, types +import os, urlparse, urllib from . import handler from . import xmlreader -try: - _StringTypes = [types.StringType, types.UnicodeType] -except AttributeError: - try: - _StringTypes = [types.StringType] - except AttributeError: - _StringTypes = [str] - # See whether the xmlcharrefreplace error handler is # supported try: @@ -280,7 +272,7 @@ def prepare_input_source(source, base = ""): """This function takes an InputSource and an optional base URL and returns a fully resolved InputSource object ready for reading.""" - if type(source) in _StringTypes: + if isinstance(source, basestring): source = xmlreader.InputSource(source) elif hasattr(source, "read"): f = source diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py index 2b5ed6e51f4..9a345ae8f03 100644 --- a/Lib/xmlrpclib.py +++ b/Lib/xmlrpclib.py @@ -138,8 +138,6 @@ Exported functions: import re, time, operator -from types import * - # -------------------------------------------------------------------- # Internal stuff @@ -306,7 +304,7 @@ class DateTime: today = datetime.datetime.now().strftime("%Y%m%d") self.value = value.strftime(today+"T%H:%M:%S") return - if not isinstance(value, (TupleType, time.struct_time)): + if not isinstance(value, (tuple, time.struct_time)): if value == 0: value = time.time() value = time.localtime(value) @@ -580,7 +578,7 @@ class Marshaller: if not self.allow_none: raise TypeError, "cannot marshal None unless allow_none is enabled" write("") - dispatch[NoneType] = dump_nil + dispatch[type(None)] = dump_nil def dump_int(self, value, write): # in case ints are > 32 bits @@ -589,7 +587,7 @@ class Marshaller: write("") write(str(value)) write("\n") - dispatch[IntType] = dump_int + #dispatch[int] = dump_int if _bool_is_builtin: def dump_bool(self, value, write): @@ -604,13 +602,13 @@ class Marshaller: write("") write(str(int(value))) write("\n") - dispatch[LongType] = dump_long + dispatch[int] = dump_long def dump_double(self, value, write): write("") write(repr(value)) write("\n") - dispatch[FloatType] = dump_double + dispatch[float] = dump_double def dump_string(self, value, write, escape=escape): write("") @@ -636,8 +634,8 @@ class Marshaller: dump(v, write) write("\n") del self.memo[i] - dispatch[TupleType] = dump_array - dispatch[ListType] = dump_array + dispatch[tuple] = dump_array + dispatch[list] = dump_array def dump_struct(self, value, write, escape=escape): i = id(value) @@ -657,7 +655,7 @@ class Marshaller: write("\n") write("\n") del self.memo[i] - dispatch[DictType] = dump_struct + dispatch[dict] = dump_struct if datetime: def dump_datetime(self, value, write): @@ -1005,12 +1003,10 @@ def dumps(params, methodname=None, methodresponse=None, encoding=None, where necessary. """ - assert isinstance(params, TupleType) or isinstance(params, Fault),\ - "argument must be tuple or Fault instance" - + assert isinstance(params, (tuple, Fault)), "argument must be tuple or Fault instance" if isinstance(params, Fault): methodresponse = 1 - elif methodresponse and isinstance(params, TupleType): + elif methodresponse and isinstance(params, tuple): assert len(params) == 1, "response tuple must be a singleton" if not encoding: @@ -1166,7 +1162,7 @@ class Transport: def get_host_info(self, host): x509 = {} - if isinstance(host, TupleType): + if isinstance(host, tuple): host, x509 = host import urllib @@ -1216,7 +1212,7 @@ class Transport: host, extra_headers, x509 = self.get_host_info(host) connection.putheader("Host", host) if extra_headers: - if isinstance(extra_headers, DictType): + if isinstance(extra_headers, dict): extra_headers = extra_headers.items() for key, value in extra_headers: connection.putheader(key, value) diff --git a/Tools/versioncheck/pyversioncheck.py b/Tools/versioncheck/pyversioncheck.py index 00ea49680b2..ff041224897 100644 --- a/Tools/versioncheck/pyversioncheck.py +++ b/Tools/versioncheck/pyversioncheck.py @@ -1,5 +1,4 @@ """pyversioncheck - Module to help with checking versions""" -import types import rfc822 import urllib import sys @@ -35,7 +34,7 @@ def versioncheck(package, url, version, verbose=0): def checkonly(package, url, version, verbose=0): if verbose >= VERBOSE_EACHFILE: print '%s:'%package - if type(url) == types.StringType: + if isinstance(url, str): ok, newversion, fp = _check1version(package, url, version, verbose) else: for u in url: