diff options
author | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2008-04-08 22:07:05 +0000 |
---|---|---|
committer | Amaury Forgeot d'Arc <amauryfa@gmail.com> | 2008-04-08 22:07:05 +0000 |
commit | 7adc776ea6ab808a4bf8fbf2740bb3bb9a7928a4 (patch) | |
tree | c9ba8bbc4fd541cd5761c5de0e92d782b3e3ddf0 | |
parent | 24f3c5c646d26350e4de6a878fed3e6db1e4ff9a (diff) | |
download | cpython-git-7adc776ea6ab808a4bf8fbf2740bb3bb9a7928a4.tar.gz |
Issue 2408: remove the _types module
It was only used as a helper in types.py to access types (GetSetDescriptorType and MemberDescriptorType),
when they can easily be obtained with python code.
These expressions even work with Jython.
I don't know what the future of the types module is; (cf. discussion in http://bugs.python.org/issue1605 )
at least this change makes it simpler.
-rw-r--r-- | Doc/library/types.rst | 18 | ||||
-rw-r--r-- | Lib/types.py | 14 | ||||
-rw-r--r-- | Makefile.pre.in | 2 | ||||
-rw-r--r-- | Modules/_typesmodule.c | 93 | ||||
-rw-r--r-- | Modules/config.c.in | 4 | ||||
-rw-r--r-- | PC/VC6/pythoncore.dsp | 4 | ||||
-rw-r--r-- | PC/VS7.1/pythoncore.vcproj | 3 | ||||
-rw-r--r-- | PC/VS8.0/pythoncore.vcproj | 4 | ||||
-rw-r--r-- | PC/config.c | 3 | ||||
-rw-r--r-- | PCbuild/pythoncore.vcproj | 4 |
10 files changed, 13 insertions, 136 deletions
diff --git a/Doc/library/types.rst b/Doc/library/types.rst index b5e3830d24..6c90ec99eb 100644 --- a/Doc/library/types.rst +++ b/Doc/library/types.rst @@ -233,20 +233,22 @@ The module defines the following names: .. data:: GetSetDescriptorType - The type of objects defined in extension modules with ``PyGetSetDef``, such as - ``FrameType.f_locals`` or ``array.array.typecode``. This constant is not - defined in implementations of Python that do not have such extension types, so - for portable code use ``hasattr(types, 'GetSetDescriptorType')``. + The type of objects defined in extension modules with ``PyGetSetDef``, such + as ``FrameType.f_locals`` or ``array.array.typecode``. This type is used as + descriptor for object attributes; it has the same purpose as the + :class:`property` type, but for classes defined in extension modules. .. versionadded:: 2.5 .. data:: MemberDescriptorType - The type of objects defined in extension modules with ``PyMemberDef``, such as - ``datetime.timedelta.days``. This constant is not defined in implementations of - Python that do not have such extension types, so for portable code use - ``hasattr(types, 'MemberDescriptorType')``. + The type of objects defined in extension modules with ``PyMemberDef``, such + as ``datetime.timedelta.days``. This type is used as descriptor for simple C + data members which use standard conversion functions; it has the same purpose + as the :class:`property` type, but for classes defined in extension modules. + In other implementations of Python, this type may be identical to + ``GetSetDescriptorType``. .. versionadded:: 2.5 diff --git a/Lib/types.py b/Lib/types.py index 6c8c2b26f3..ea316fa327 100644 --- a/Lib/types.py +++ b/Lib/types.py @@ -86,16 +86,8 @@ EllipsisType = type(Ellipsis) DictProxyType = type(TypeType.__dict__) NotImplementedType = type(NotImplemented) -# Extension types defined in a C helper module. XXX There may be no -# equivalent in implementations other than CPython, so it seems better to -# leave them undefined then to set them to e.g. None. -try: - import _types -except ImportError: - pass -else: - GetSetDescriptorType = type(_types.Helper.getter) - MemberDescriptorType = type(_types.Helper.member) - del _types +# For Jython, the following two types are identical +GetSetDescriptorType = type(FunctionType.func_code) +MemberDescriptorType = type(FunctionType.func_globals) del sys, _f, _g, _C, _x # Not for export diff --git a/Makefile.pre.in b/Makefile.pre.in index acf060fba8..af16d89be1 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -333,7 +333,6 @@ OBJECT_OBJS= \ ########################################################################## # objects that get linked into the Python library LIBRARY_OBJS= \ - Modules/_typesmodule.o \ Modules/getbuildinfo.o \ $(PARSER_OBJS) \ $(OBJECT_OBJS) \ @@ -371,7 +370,6 @@ sharedmods: $(BUILDPYTHON) $(LIBRARY): $(LIBRARY_OBJS) -rm -f $@ $(AR) cr $@ Modules/getbuildinfo.o - $(AR) cr $@ Modules/_typesmodule.o $(AR) cr $@ $(PARSER_OBJS) $(AR) cr $@ $(OBJECT_OBJS) $(AR) cr $@ $(PYTHON_OBJS) diff --git a/Modules/_typesmodule.c b/Modules/_typesmodule.c deleted file mode 100644 index e925664693..0000000000 --- a/Modules/_typesmodule.c +++ /dev/null @@ -1,93 +0,0 @@ -/* This extension module exposes some types that are only available at the - * C level. It should not be used directly, but instead through the Python - * level types modules, which imports this. - */ - -#include "Python.h" -#include "structmember.h" - -typedef struct -{ - PyObject_HEAD - int member; -} Helper; - -static PyMemberDef helper_members[] = { - { "member", T_INT, offsetof(Helper, member), READONLY, - PyDoc_STR("A member descriptor") - }, - { NULL } -}; - -static PyObject * -helper_getter(Helper *self, void *unused) -{ - Py_RETURN_NONE; -} - -static PyGetSetDef helper_getset[] = { - { "getter", (getter)helper_getter, NULL, - PyDoc_STR("A getset descriptor"), - }, - { NULL } -}; - -static PyTypeObject HelperType = { - PyVarObject_HEAD_INIT(NULL, 0) - "_types.Helper", /* tp_name */ - sizeof(Helper), /* tp_basicsize */ - 0, /* tp_itemsize */ - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - helper_members, /* tp_members */ - helper_getset, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ - 0, /* tp_free */ -}; - -PyMODINIT_FUNC -init_types(void) -{ - PyObject *m; - - m = Py_InitModule3("_types", NULL, "A types module helper"); - if (!m) - return; - - if (PyType_Ready(&HelperType) < 0) - return; - - Py_INCREF(&HelperType); - PyModule_AddObject(m, "Helper", (PyObject *)&HelperType); -} - - diff --git a/Modules/config.c.in b/Modules/config.c.in index 1ef1e66d98..f8119914af 100644 --- a/Modules/config.c.in +++ b/Modules/config.c.in @@ -28,7 +28,6 @@ extern void PyMarshal_Init(void); extern void initimp(void); extern void initgc(void); extern void init_ast(void); -extern void init_types(void); struct _inittab _PyImport_Inittab[] = { @@ -43,9 +42,6 @@ struct _inittab _PyImport_Inittab[] = { /* This lives in Python/Python-ast.c */ {"_ast", init_ast}, - /* This lives in Modules/_typesmodule.c */ - {"_types", init_types}, - /* These entries are here for sys.builtin_module_names */ {"__main__", NULL}, {"__builtin__", NULL}, diff --git a/PC/VC6/pythoncore.dsp b/PC/VC6/pythoncore.dsp index 7c929ef7d7..adcef6a8c3 100644 --- a/PC/VC6/pythoncore.dsp +++ b/PC/VC6/pythoncore.dsp @@ -173,10 +173,6 @@ SOURCE=..\..\PC\_subprocess.c # End Source File
# Begin Source File
-SOURCE=..\..\Modules\_typesmodule.c
-# End Source File
-# Begin Source File
-
SOURCE=..\..\Modules\_weakref.c
# End Source File
# Begin Source File
diff --git a/PC/VS7.1/pythoncore.vcproj b/PC/VS7.1/pythoncore.vcproj index 5e847837e5..3a20a41822 100644 --- a/PC/VS7.1/pythoncore.vcproj +++ b/PC/VS7.1/pythoncore.vcproj @@ -398,9 +398,6 @@ RelativePath="..\..\Pc\_subprocess.c"> </File> <File - RelativePath="..\..\Modules\_typesmodule.c"> - </File> - <File RelativePath="..\..\Modules\_weakref.c"> </File> <File diff --git a/PC/VS8.0/pythoncore.vcproj b/PC/VS8.0/pythoncore.vcproj index e2ce1f8056..6525934994 100644 --- a/PC/VS8.0/pythoncore.vcproj +++ b/PC/VS8.0/pythoncore.vcproj @@ -1023,10 +1023,6 @@ >
</File>
<File
- RelativePath="..\..\Modules\_typesmodule.c"
- >
- </File>
- <File
RelativePath="..\..\Modules\_weakref.c"
>
</File>
diff --git a/PC/config.c b/PC/config.c index 816edcacd2..9cce923572 100644 --- a/PC/config.c +++ b/PC/config.c @@ -66,7 +66,6 @@ extern void init_codecs_tw(void); extern void init_subprocess(void); extern void init_lsprof(void); extern void init_ast(void); -extern void init_types(void); /* tools/freeze/makeconfig.py marker for additional "extern" */ /* -- ADDMODULE MARKER 1 -- */ @@ -161,8 +160,6 @@ struct _inittab _PyImport_Inittab[] = { {"sys", NULL}, {"exceptions", NULL}, - {"_types", init_types}, - /* Sentinel */ {0, 0} }; diff --git a/PCbuild/pythoncore.vcproj b/PCbuild/pythoncore.vcproj index 9683bd1b0a..a75c48e14d 100644 --- a/PCbuild/pythoncore.vcproj +++ b/PCbuild/pythoncore.vcproj @@ -1023,10 +1023,6 @@ > </File> <File - RelativePath="..\Modules\_typesmodule.c" - > - </File> - <File RelativePath="..\Modules\_weakref.c" > </File> |