mirror of
https://github.com/python/cpython.git
synced 2025-09-19 15:10:58 +00:00
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
10 changed files with 18 additions and 198 deletions
|
@ -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
|
||||||
|
|
|
@ -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:
|
else:
|
||||||
mylist.remove(item)
|
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:
|
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
|
.. data:: FunctionType
|
||||||
LambdaType
|
LambdaType
|
||||||
|
|
||||||
|
@ -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:
|
||||||
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
|
||||||
|
|
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)')
|
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):
|
||||||
|
|
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
|
# 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:
|
||||||
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 = ()):
|
||||||
|
|
||||||
# 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):
|
||||||
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):
|
||||||
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):
|
||||||
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):
|
||||||
|
|
||||||
# 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):
|
||||||
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):
|
||||||
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):
|
||||||
|
|
||||||
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
|
||||||
- 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?
|
||||||
==========================
|
==========================
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue