Commit c9543e42 authored by Christian Heimes's avatar Christian Heimes

Removed the new module

Removed a lot of types from the 'types' module that are available through builtins.
parent ceee0773
...@@ -31,7 +31,6 @@ The following modules are documented in this chapter: ...@@ -31,7 +31,6 @@ The following modules are documented in this chapter:
weakref.rst weakref.rst
userdict.rst userdict.rst
types.rst types.rst
new.rst
copy.rst copy.rst
pprint.rst pprint.rst
repr.rst repr.rst
:mod:`new` --- Creation of runtime internal objects
===================================================
.. module:: new
:synopsis: Interface to the creation of runtime implementation objects.
.. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
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`.
...@@ -33,77 +33,10 @@ Accordingly, the example above should be written as follows:: ...@@ -33,77 +33,10 @@ Accordingly, the example above should be written as follows::
else: else:
mylist.remove(item) mylist.remove(item)
The module defines the following names: Starting in Python 3.0 all types that are also available as builtins are no
longer exposed through the types module.
.. 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`.
The module defines the following names:
.. data:: FunctionType .. data:: FunctionType
LambdaType LambdaType
...@@ -141,19 +74,6 @@ The module defines the following names: ...@@ -141,19 +74,6 @@ The module defines the following names:
The type of modules. 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 .. data:: TracebackType
The type of traceback objects such as found in ``sys.exc_info()[2]``. The type of traceback objects such as found in ``sys.exc_info()[2]``.
...@@ -165,22 +85,9 @@ The module defines the following names: ...@@ -165,22 +85,9 @@ The module defines the following names:
traceback object. traceback object.
.. XXX!
.. data:: BufferType
.. index:: builtin: buffer
The type of buffer objects created by the :func:`buffer` function.
.. data:: DictProxyType .. data:: DictProxyType
The type of dict proxies, such as ``TypeType.__dict__``. The type of dict proxies, such as ``type.__dict__``.
.. data:: NotImplementedType
The type of ``NotImplemented``
.. data:: GetSetDescriptorType .. data:: GetSetDescriptorType
......
"""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
...@@ -364,7 +364,7 @@ class TestClassesAndFunctions(unittest.TestCase): ...@@ -364,7 +364,7 @@ class TestClassesAndFunctions(unittest.TestCase):
formatted='(*arg1, arg2=1)') formatted='(*arg1, arg2=1)')
self.assertFullArgSpecEquals(mod2.annotated, ['arg1'], self.assertFullArgSpecEquals(mod2.annotated, ['arg1'],
ann_e={'arg1':types.ListType}, ann_e={'arg1' : list},
formatted='(arg1: list)') formatted='(arg1: list)')
def test_getargspec_method(self): def test_getargspec_method(self):
......
...@@ -9,23 +9,6 @@ import sys ...@@ -9,23 +9,6 @@ import sys
# iterator. Don't check the type! Use hasattr to check for both # iterator. Don't check the type! Use hasattr to check for both
# "__iter__" and "__next__" attributes instead. # "__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 def _f(): pass
FunctionType = type(_f) FunctionType = type(_f)
LambdaType = type(lambda: None) # Same as FunctionType LambdaType = type(lambda: None) # Same as FunctionType
...@@ -53,11 +36,7 @@ except TypeError: ...@@ -53,11 +36,7 @@ except TypeError:
FrameType = type(tb.tb_frame) FrameType = type(tb.tb_frame)
tb = None; del tb tb = None; del tb
SliceType = slice DictProxyType = type(type.__dict__)
EllipsisType = type(Ellipsis)
DictProxyType = type(TypeType.__dict__)
NotImplementedType = type(NotImplemented)
# Extension types defined in a C helper module. XXX There may be no # Extension types defined in a C helper module. XXX There may be no
# equivalent in implementations other than CPython, so it seems better to # equivalent in implementations other than CPython, so it seems better to
......
...@@ -62,7 +62,7 @@ def getDOMImplementation(name = None, features = ()): ...@@ -62,7 +62,7 @@ def getDOMImplementation(name = None, features = ()):
# User did not specify a name, try implementations in arbitrary # User did not specify a name, try implementations in arbitrary
# order, returning the one that has the required features # order, returning the one that has the required features
if isinstance(features, StringTypes): if isinstance(features, str):
features = _parse_feature_string(features) features = _parse_feature_string(features)
for creator in registered.values(): for creator in registered.values():
dom = creator() dom = creator()
......
...@@ -918,7 +918,7 @@ def parse(file, namespaces=True): ...@@ -918,7 +918,7 @@ def parse(file, namespaces=True):
else: else:
builder = ExpatBuilder() builder = ExpatBuilder()
if isinstance(file, StringTypes): if isinstance(file, str):
fp = open(file, 'rb') fp = open(file, 'rb')
try: try:
result = builder.parseFile(fp) result = builder.parseFile(fp)
...@@ -952,7 +952,7 @@ def parseFragment(file, context, namespaces=True): ...@@ -952,7 +952,7 @@ def parseFragment(file, context, namespaces=True):
else: else:
builder = FragmentBuilder(context) builder = FragmentBuilder(context)
if isinstance(file, StringTypes): if isinstance(file, str):
fp = open(file, 'rb') fp = open(file, 'rb')
try: try:
result = builder.parseFile(fp) result = builder.parseFile(fp)
......
...@@ -498,7 +498,7 @@ class NamedNodeMap(object): ...@@ -498,7 +498,7 @@ class NamedNodeMap(object):
return L return L
def __contains__(self, key): def __contains__(self, key):
if isinstance(key, StringTypes): if isinstance(key, str):
return key in self._attrs return key in self._attrs
else: else:
return key in self._attrsNS return key in self._attrsNS
...@@ -531,7 +531,7 @@ class NamedNodeMap(object): ...@@ -531,7 +531,7 @@ class NamedNodeMap(object):
# same as set # same as set
def __setitem__(self, attname, value): def __setitem__(self, attname, value):
if isinstance(value, StringTypes): if isinstance(value, str):
try: try:
node = self._attrs[attname] node = self._attrs[attname]
except KeyError: except KeyError:
...@@ -1606,7 +1606,7 @@ class Document(Node, DocumentLS): ...@@ -1606,7 +1606,7 @@ class Document(Node, DocumentLS):
return e return e
def createTextNode(self, data): def createTextNode(self, data):
if not isinstance(data, StringTypes): if not isinstance(data, str):
raise TypeError("node contents must be a string") raise TypeError("node contents must be a string")
t = Text() t = Text()
t.data = data t.data = data
...@@ -1614,7 +1614,7 @@ class Document(Node, DocumentLS): ...@@ -1614,7 +1614,7 @@ class Document(Node, DocumentLS):
return t return t
def createCDATASection(self, data): def createCDATASection(self, data):
if not isinstance(data, StringTypes): if not isinstance(data, str):
raise TypeError("node contents must be a string") raise TypeError("node contents must be a string")
c = CDATASection() c = CDATASection()
c.data = data c.data = data
...@@ -1927,7 +1927,7 @@ def parseString(string, parser=None): ...@@ -1927,7 +1927,7 @@ def parseString(string, parser=None):
def getDOMImplementation(features=None): def getDOMImplementation(features=None):
if features: if features:
if isinstance(features, StringTypes): if isinstance(features, str):
features = domreg._parse_feature_string(features) features = domreg._parse_feature_string(features)
for f, v in features: for f, v in features:
if not Document.implementation.hasFeature(f, v): if not Document.implementation.hasFeature(f, v):
......
...@@ -67,6 +67,10 @@ Library ...@@ -67,6 +67,10 @@ Library
- The methods `os.tmpnam()`, `os.tempnam()` and `os.tmpfile()` have been - The methods `os.tmpnam()`, `os.tempnam()` and `os.tmpfile()` have been
removed in favor of the tempfile module. 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? What's New in Python 3.0a1?
========================== ==========================
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment