summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2000-07-04 23:51:31 (GMT)
committerFred Drake <fdrake@acm.org>2000-07-04 23:51:31 (GMT)
commit7bd9f41c65f5078279333dcd2bd07fa5bc5ebc11 (patch)
tree228c70b0cd2a16769b3f8afb39805bf9df51cbee
parentf93cb1875c9b3d47a77c3ab3b035e1a2c588c952 (diff)
downloadcpython-7bd9f41c65f5078279333dcd2bd07fa5bc5ebc11.zip
cpython-7bd9f41c65f5078279333dcd2bd07fa5bc5ebc11.tar.gz
cpython-7bd9f41c65f5078279333dcd2bd07fa5bc5ebc11.tar.bz2
pyexpat.errors is a *strange* module!
It gets initialized when pyexpat is imported, and is only accessible as an attribute of pyexpat; it cannot be imported itself. This allows it to at least be importable after pyexpat itself has been imported by adding it to sys.modules, so it is not quite as strange. This arrangement needs to be better thought out.
-rw-r--r--Modules/pyexpat.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c
index a403d94..e0c03f6 100644
--- a/Modules/pyexpat.c
+++ b/Modules/pyexpat.c
@@ -840,41 +840,43 @@ static char pyexpat_module_documentation[] =
void
initpyexpat(){
PyObject *m, *d;
- char *rev="$Revision$";
+ char *rev = "$Revision$";
PyObject *errors_module, *errors_dict;
+ PyObject *sys_modules;
- Xmlparsetype.ob_type = &PyType_Type;
+ Xmlparsetype.ob_type = &PyType_Type;
/* Create the module and add the functions */
m = Py_InitModule4("pyexpat", pyexpat_methods,
- pyexpat_module_documentation,
- (PyObject*)NULL,PYTHON_API_VERSION);
+ pyexpat_module_documentation,
+ (PyObject*)NULL, PYTHON_API_VERSION);
/* Add some symbolic constants to the module */
d = PyModule_GetDict(m);
ErrorObject = PyString_FromString("pyexpat.error");
PyDict_SetItemString(d, "error", ErrorObject);
- PyDict_SetItemString(d,"__version__",
+ PyDict_SetItemString(d, "__version__",
PyString_FromStringAndSize(rev+11,
strlen(rev+11)-2));
- errors_module=PyModule_New( "errors" );
- PyDict_SetItemString(d,"errors", errors_module );
+ sys_modules = PySys_GetObject("modules");
+ errors_module = PyModule_New("pyexpat.errors");
+ PyDict_SetItemString(d, "errors", errors_module);
+ PyDict_SetItemString(sys_modules, "pyexpat.errors", errors_module);
/* XXX When Expat supports some way of figuring out how it was
compiled, this should check and set native_encoding
appropriately.
*/
PyDict_SetItemString(d, "native_encoding",
- PyString_FromString("UTF-8") );
-
- errors_dict=PyModule_GetDict( errors_module );
+ PyString_FromString("UTF-8"));
+ errors_dict = PyModule_GetDict(errors_module);
#define MYCONST(name) \
PyDict_SetItemString(errors_dict, #name, \
- PyString_FromString( XML_ErrorString(name)))
-
+ PyString_FromString(XML_ErrorString(name)))
+
MYCONST(XML_ERROR_NO_MEMORY);
MYCONST(XML_ERROR_SYNTAX);
MYCONST(XML_ERROR_NO_ELEMENTS);
@@ -894,7 +896,7 @@ initpyexpat(){
MYCONST(XML_ERROR_MISPLACED_XML_PI);
MYCONST(XML_ERROR_UNKNOWN_ENCODING);
MYCONST(XML_ERROR_INCORRECT_ENCODING);
-
+
/* Check for errors */
if (PyErr_Occurred())
Py_FatalError("can't initialize module pyexpat");
@@ -1030,4 +1032,3 @@ statichere struct HandlerInfo handler_info[]=
{NULL, NULL, NULL } /* sentinel */
};
-