static PyStatus
-pycore_init_types(PyThreadState *tstate)
+pycore_init_types(PyThreadState *tstate, int is_main_interp)
{
PyStatus status;
return status;
}
- status = _PyTypes_Init();
- if (_PyStatus_EXCEPTION(status)) {
- return status;
- }
+ if (is_main_interp) {
+ status = _PyTypes_Init();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
- if (!_PyLong_Init()) {
- return _PyStatus_ERR("can't init longs");
- }
+ if (!_PyLong_Init()) {
+ return _PyStatus_ERR("can't init longs");
+ }
- status = _PyUnicode_Init();
- if (_PyStatus_EXCEPTION(status)) {
- return status;
+ status = _PyUnicode_Init();
+ if (_PyStatus_EXCEPTION(status)) {
+ return status;
+ }
}
status = _PyExc_Init();
return status;
}
- if (!_PyFloat_Init()) {
- return _PyStatus_ERR("can't init float");
- }
+ if (is_main_interp) {
+ if (!_PyFloat_Init()) {
+ return _PyStatus_ERR("can't init float");
+ }
- if (_PyStructSequence_Init() < 0) {
- return _PyStatus_ERR("can't initialize structseq");
+ if (_PyStructSequence_Init() < 0) {
+ return _PyStatus_ERR("can't initialize structseq");
+ }
}
status = _PyErr_Init();
return status;
}
- if (!_PyContext_Init()) {
- return _PyStatus_ERR("can't init context");
+ if (is_main_interp) {
+ if (!_PyContext_Init()) {
+ return _PyStatus_ERR("can't init context");
+ }
}
return _PyStatus_OK();
config = &tstate->interp->config;
*tstate_p = tstate;
- status = pycore_init_types(tstate);
+ status = pycore_init_types(tstate, 1);
if (_PyStatus_EXCEPTION(status)) {
return status;
}
}
config = &interp->config;
- status = pycore_init_types(tstate);
+ status = pycore_init_types(tstate, 0);
/* XXX The following is lax in error checking */
PyObject *modules = PyDict_New();