]> granicus.if.org Git - python/commitdiff
Issue 2408: remove the _types module
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>
Tue, 8 Apr 2008 22:07:05 +0000 (22:07 +0000)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>
Tue, 8 Apr 2008 22:07:05 +0000 (22:07 +0000)
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.

Doc/library/types.rst
Lib/types.py
Makefile.pre.in
Modules/_typesmodule.c [deleted file]
Modules/config.c.in
PC/VC6/pythoncore.dsp
PC/VS7.1/pythoncore.vcproj
PC/VS8.0/pythoncore.vcproj
PC/config.c
PCbuild/pythoncore.vcproj

index b5e3830d24b9d72ae09db399b245e5d21b00b33e..6c90ec99eb1630a27011439eef9b62980d407aa5 100644 (file)
@@ -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
 
index 6c8c2b26f392459c57d7f49a8d9c4fffce2a2d7f..ea316fa3275d8f8cbb48679b84371fbb3703c305 100644 (file)
@@ -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
index acf060fba80eac50cac07950d992943d3dd74746..af16d89be1bd1d554f32c346f0cdcfb5e2d885fd 100644 (file)
@@ -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 (file)
index e925664..0000000
+++ /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);
-}
-
-    
index 1ef1e66d9857d90e33701ac1f964839f67976f52..f8119914af6b4ed9e81995d1edf1b193cdd3bcaf 100644 (file)
@@ -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},
index 7c929ef7d77d1f29c84b4c055564dc84a73207f3..adcef6a8c3e17397b08d729a2ec3716ff52a3708 100644 (file)
@@ -173,10 +173,6 @@ SOURCE=..\..\PC\_subprocess.c
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=..\..\Modules\_typesmodule.c\r
-# End Source File\r
-# Begin Source File\r
-\r
 SOURCE=..\..\Modules\_weakref.c\r
 # End Source File\r
 # Begin Source File\r
index 5e847837e5c043161a1391a4fc661512355d6b09..3a20a41822443d63029102a55e4ec5b7236a0ba2 100644 (file)
                <File
                        RelativePath="..\..\Pc\_subprocess.c">
                </File>
-               <File
-                       RelativePath="..\..\Modules\_typesmodule.c">
-               </File>
                <File
                        RelativePath="..\..\Modules\_weakref.c">
                </File>
index e2ce1f8056ed81c9df03dbdd6d9787d6ce50af6d..6525934994192035cf59aca128122233b760b245 100644 (file)
                                RelativePath="..\..\Modules\_struct.c"\r
                                >\r
                        </File>\r
-                       <File\r
-                               RelativePath="..\..\Modules\_typesmodule.c"\r
-                               >\r
-                       </File>\r
                        <File\r
                                RelativePath="..\..\Modules\_weakref.c"\r
                                >\r
index 816edcacd2afe907b38afd00ecb00c77aeaa160a..9cce923572371efb42af8415d840a792e0f0ffc7 100644 (file)
@@ -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}
 };
index 9683bd1b0a0a12a11aa8ea313cf9ddd7bc5bae02..a75c48e14df68859aea4f080370079339e71c4a6 100644 (file)
                                RelativePath="..\Modules\_struct.c"
                                >
                        </File>
-                       <File
-                               RelativePath="..\Modules\_typesmodule.c"
-                               >
-                       </File>
                        <File
                                RelativePath="..\Modules\_weakref.c"
                                >