From c9543e42330e5f339d6419eba6a8c5a61a39aeca Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Wed, 28 Nov 2007 08:28:28 +0000 Subject: [PATCH] Removed the new module Removed a lot of types from the 'types' module that are available through builtins. --- Doc/library/datatypes.rst | 1 - Doc/library/new.rst | 55 -------------------- Doc/library/types.rst | 101 ++---------------------------------- Lib/new.py | 14 ----- Lib/test/test_inspect.py | 2 +- Lib/types.py | 23 +------- Lib/xml/dom/domreg.py | 2 +- Lib/xml/dom/expatbuilder.py | 4 +- Lib/xml/dom/minidom.py | 10 ++-- Misc/NEWS | 4 ++ 10 files changed, 18 insertions(+), 198 deletions(-) delete mode 100644 Doc/library/new.rst delete mode 100644 Lib/new.py diff --git a/Doc/library/datatypes.rst b/Doc/library/datatypes.rst index 4cd042d503a..858af9669da 100644 --- a/Doc/library/datatypes.rst +++ b/Doc/library/datatypes.rst @@ -31,7 +31,6 @@ The following modules are documented in this chapter: weakref.rst userdict.rst types.rst - new.rst copy.rst pprint.rst repr.rst diff --git a/Doc/library/new.rst b/Doc/library/new.rst deleted file mode 100644 index 832dca6614f..00000000000 --- a/Doc/library/new.rst +++ /dev/null @@ -1,55 +0,0 @@ - -:mod:`new` --- Creation of runtime internal objects -=================================================== - -.. module:: new - :synopsis: Interface to the creation of runtime implementation objects. -.. sectionauthor:: Moshe Zadka - - -The :mod:`new` module allows an interface to the interpreter object creation -functions. This is for use primarily in marshal-type functions, when a new -object needs to be created "magically" and not by using the regular creation -functions. This module provides a low-level interface to the interpreter, so -care must be exercised when using this module. It is possible to supply -non-sensical arguments which crash the interpreter when the object is used. - -The :mod:`new` module defines the following functions: - - -.. function:: instancemethod(function, instance) - - This function will return a method object, bound to *instance*. - *function* must be callable. - - .. XXX no unbound methods anymore - - -.. function:: function(code, globals[, name[, argdefs[, closure]]]) - - Returns a (Python) function with the given code and globals. If *name* is given, - it must be a string or ``None``. If it is a string, the function will have the - given name, otherwise the function name will be taken from ``code.co_name``. If - *argdefs* is given, it must be a tuple and will be used to determine the default - values of parameters. If *closure* is given, it must be ``None`` or a tuple of - cell objects containing objects to bind to the names in ``code.co_freevars``. - - -.. function:: code(argcount, nlocals, stacksize, flags, codestring, constants, names, varnames, filename, name, firstlineno, lnotab) - - This function is an interface to the :cfunc:`PyCode_New` C function. - - .. XXX This is still undocumented!!! - - -.. function:: module(name[, doc]) - - This function returns a new module object with name *name*. *name* must be a - string. The optional *doc* argument can have any type. - - -.. function:: classobj(name, baseclasses, dict) - - This function returns a new class object, with name *name*, derived from - *baseclasses* (which should be a tuple of classes) and with namespace *dict*. - Alias for the built-in :class:`type`. diff --git a/Doc/library/types.rst b/Doc/library/types.rst index d291fd017fc..48940676473 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -33,78 +33,11 @@ Accordingly, the example above should be written as follows:: else: mylist.remove(item) +Starting in Python 3.0 all types that are also available as builtins are no +longer exposed through the types module. + The module defines the following names: - -.. data:: NoneType - - The type of ``None``. - - -.. data:: TypeType - ClassType - - .. index:: builtin: type - - The type of type objects (such as returned by :func:`type`) and user-defined - classes without metaclass; alias of the built-in :class:`type`. - - -.. data:: ObjectType - - Alias of the built-in :func:`object`. - - -.. data:: BooleanType - - The type of the :class:`bool` values ``True`` and ``False``; alias of the - built-in :class:`bool`. - - -.. data:: IntType - LongType - - The type of integers (e.g. ``1``); alias of the built-in :class:`int`. - - -.. data:: FloatType - - The type of floating point numbers (e.g. ``1.0``); alias of the built-in - :class:`float`. - - -.. data:: ComplexType - - The type of complex numbers (e.g. ``1.0j``); alias of the built-in - :class:`complex`. This is not defined if Python was built without complex - number support. - - -.. data:: StringType - - The type of character strings (e.g. ``'Spam'``); alias of the built-in - :class:`str`. - - -.. data:: TupleType - - The type of tuples (e.g. ``(1, 2, 3, 'Spam')``); alias of the built-in - :class:`tuple`. - - -.. data:: ListType - - The type of lists (e.g. ``[0, 1, 2, 3]``); alias of the built-in - :class:`list`. - - -.. data:: DictType - DictionaryType - - The type of dictionaries (e.g. ``{'Bacon': 1, 'Ham': 0}``); alias of the - built-in :class:`dict`. - - .. data:: FunctionType LambdaType @@ -141,19 +74,6 @@ The module defines the following names: The type of modules. -.. data:: SliceType - - .. index:: builtin: slice - - The type of objects returned by :func:`slice`; alias of the built-in - :class:`slice`. - - -.. data:: EllipsisType - - The type of ``Ellipsis``. - - .. data:: TracebackType The type of traceback objects such as found in ``sys.exc_info()[2]``. @@ -165,22 +85,9 @@ The module defines the following names: traceback object. -.. XXX! -.. data:: BufferType - - .. index:: builtin: buffer - - The type of buffer objects created by the :func:`buffer` function. - - .. data:: DictProxyType - The type of dict proxies, such as ``TypeType.__dict__``. - - -.. data:: NotImplementedType - - The type of ``NotImplemented`` + The type of dict proxies, such as ``type.__dict__``. .. data:: GetSetDescriptorType diff --git a/Lib/new.py b/Lib/new.py deleted file mode 100644 index 6ce9a5563a4..00000000000 --- a/Lib/new.py +++ /dev/null @@ -1,14 +0,0 @@ -"""Create new objects of various types. Deprecated. - -This module is no longer required except for backward compatibility. -Objects of most types can now be created by calling the type object. -""" -from warnings import warn as _warn -_warn("The 'new' module is not supported in 3.x, use the 'types' module " - "instead.", DeprecationWarning, 2) - -classobj = type -from types import FunctionType as function -from types import MethodType as instancemethod -from types import ModuleType as module -from types import CodeType as code diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 4b7870832ee..60a7ad1817d 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -364,7 +364,7 @@ class TestClassesAndFunctions(unittest.TestCase): formatted='(*arg1, arg2=1)') self.assertFullArgSpecEquals(mod2.annotated, ['arg1'], - ann_e={'arg1':types.ListType}, + ann_e={'arg1' : list}, formatted='(arg1: list)') def test_getargspec_method(self): diff --git a/Lib/types.py b/Lib/types.py index 402fa1865e8..72454a123fa 100644 --- a/Lib/types.py +++ b/Lib/types.py @@ -9,23 +9,6 @@ import sys # iterator. Don't check the type! Use hasattr to check for both # "__iter__" and "__next__" attributes instead. -NoneType = type(None) -TypeType = type -ObjectType = object - -IntType = int -LongType = int -FloatType = float -BooleanType = bool -try: - ComplexType = complex -except NameError: - pass - -TupleType = tuple -ListType = list -DictType = DictionaryType = dict - def _f(): pass FunctionType = type(_f) LambdaType = type(lambda: None) # Same as FunctionType @@ -53,11 +36,7 @@ except TypeError: FrameType = type(tb.tb_frame) tb = None; del tb -SliceType = slice -EllipsisType = type(Ellipsis) - -DictProxyType = type(TypeType.__dict__) -NotImplementedType = type(NotImplemented) +DictProxyType = type(type.__dict__) # Extension types defined in a C helper module. XXX There may be no # equivalent in implementations other than CPython, so it seems better to diff --git a/Lib/xml/dom/domreg.py b/Lib/xml/dom/domreg.py index f653563cbfc..67e0104d273 100644 --- a/Lib/xml/dom/domreg.py +++ b/Lib/xml/dom/domreg.py @@ -62,7 +62,7 @@ def getDOMImplementation(name = None, features = ()): # User did not specify a name, try implementations in arbitrary # order, returning the one that has the required features - if isinstance(features, StringTypes): + if isinstance(features, str): features = _parse_feature_string(features) for creator in registered.values(): dom = creator() diff --git a/Lib/xml/dom/expatbuilder.py b/Lib/xml/dom/expatbuilder.py index fdb55986259..a5354b93514 100644 --- a/Lib/xml/dom/expatbuilder.py +++ b/Lib/xml/dom/expatbuilder.py @@ -918,7 +918,7 @@ def parse(file, namespaces=True): else: builder = ExpatBuilder() - if isinstance(file, StringTypes): + if isinstance(file, str): fp = open(file, 'rb') try: result = builder.parseFile(fp) @@ -952,7 +952,7 @@ def parseFragment(file, context, namespaces=True): else: builder = FragmentBuilder(context) - if isinstance(file, StringTypes): + if isinstance(file, str): fp = open(file, 'rb') try: result = builder.parseFile(fp) diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py index 1b857a2424b..3087a5cec8e 100644 --- a/Lib/xml/dom/minidom.py +++ b/Lib/xml/dom/minidom.py @@ -498,7 +498,7 @@ class NamedNodeMap(object): return L def __contains__(self, key): - if isinstance(key, StringTypes): + if isinstance(key, str): return key in self._attrs else: return key in self._attrsNS @@ -531,7 +531,7 @@ class NamedNodeMap(object): # same as set def __setitem__(self, attname, value): - if isinstance(value, StringTypes): + if isinstance(value, str): try: node = self._attrs[attname] except KeyError: @@ -1606,7 +1606,7 @@ class Document(Node, DocumentLS): return e def createTextNode(self, data): - if not isinstance(data, StringTypes): + if not isinstance(data, str): raise TypeError("node contents must be a string") t = Text() t.data = data @@ -1614,7 +1614,7 @@ class Document(Node, DocumentLS): return t def createCDATASection(self, data): - if not isinstance(data, StringTypes): + if not isinstance(data, str): raise TypeError("node contents must be a string") c = CDATASection() c.data = data @@ -1927,7 +1927,7 @@ def parseString(string, parser=None): def getDOMImplementation(features=None): if features: - if isinstance(features, StringTypes): + if isinstance(features, str): features = domreg._parse_feature_string(features) for f, v in features: if not Document.implementation.hasFeature(f, v): diff --git a/Misc/NEWS b/Misc/NEWS index 83ce320c4ab..0fb28ad84c7 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -67,6 +67,10 @@ Library - The methods `os.tmpnam()`, `os.tempnam()` and `os.tmpfile()` have been removed in favor of the tempfile module. +- Removed the 'new' module. + +- Removed all types from the 'types' module that are easily accessable through + builtins. What's New in Python 3.0a1? ==========================