Removed the new module
Removed a lot of types from the 'types' module that are available through builtins.
This commit is contained in:
parent
ceee0773d2
commit
c9543e4233
|
@ -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
|
||||
|
|
|
@ -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 <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,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
|
||||
|
|
14
Lib/new.py
14
Lib/new.py
|
@ -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
|
|
@ -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):
|
||||
|
|
23
Lib/types.py
23
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
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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?
|
||||
==========================
|
||||
|
|
Loading…
Reference in New Issue