@@ -30,9 +30,75 @@ pyimport_importmoduleattrstring(PyObject *self, PyObject *args)
3030}
3131
3232
33+ static PyObject *
34+ pyimport_setlazyimportsmode (PyObject * self , PyObject * args )
35+ {
36+ PyObject * mode ;
37+ if (!PyArg_ParseTuple (args , "U" , & mode )) {
38+ return NULL ;
39+ }
40+ if (strcmp (PyUnicode_AsUTF8 (mode ), "normal" ) == 0 ) {
41+ PyImport_SetLazyImportsMode (PyImport_LAZY_NORMAL );
42+ } else if (strcmp (PyUnicode_AsUTF8 (mode ), "all" ) == 0 ) {
43+ PyImport_SetLazyImportsMode (PyImport_LAZY_ALL );
44+ } else if (strcmp (PyUnicode_AsUTF8 (mode ), "none" ) == 0 ) {
45+ PyImport_SetLazyImportsMode (PyImport_LAZY_NONE );
46+ } else {
47+ PyErr_SetString (PyExc_ValueError , "invalid mode" );
48+ return NULL ;
49+ }
50+
51+ Py_RETURN_NONE ;
52+ }
53+
54+ static PyObject *
55+ pyimport_getlazyimportsmode (PyObject * self , PyObject * args )
56+ {
57+ switch (PyImport_GetLazyImportsMode ()) {
58+ case PyImport_LAZY_NORMAL :
59+ return PyUnicode_FromString ("normal" );
60+ case PyImport_LAZY_ALL :
61+ return PyUnicode_FromString ("all" );
62+ case PyImport_LAZY_NONE :
63+ return PyUnicode_FromString ("none" );
64+ default :
65+ PyErr_SetString (PyExc_ValueError , "unknown mode" );
66+ return NULL ;
67+ }
68+ }
69+
70+ static PyObject *
71+ pyimport_setlazyimportsfilter (PyObject * self , PyObject * args )
72+ {
73+ PyObject * filter ;
74+ if (!PyArg_ParseTuple (args , "O" , & filter )) {
75+ return NULL ;
76+ }
77+
78+ if (PyImport_SetLazyImportsFilter (filter ) < 0 ) {
79+ return NULL ;
80+ }
81+
82+ Py_RETURN_NONE ;
83+ }
84+
85+ static PyObject *
86+ pyimport_getlazyimportsfilter (PyObject * self , PyObject * args )
87+ {
88+ PyObject * res = PyImport_GetLazyImportsFilter ();
89+ if (res == NULL ) {
90+ Py_RETURN_NONE ;
91+ }
92+ return res ;
93+ }
94+
3395static PyMethodDef test_methods [] = {
3496 {"PyImport_ImportModuleAttr" , pyimport_importmoduleattr , METH_VARARGS },
3597 {"PyImport_ImportModuleAttrString" , pyimport_importmoduleattrstring , METH_VARARGS },
98+ {"PyImport_SetLazyImportsMode" , pyimport_setlazyimportsmode , METH_VARARGS },
99+ {"PyImport_GetLazyImportsMode" , pyimport_getlazyimportsmode , METH_NOARGS },
100+ {"PyImport_SetLazyImportsFilter" , pyimport_setlazyimportsfilter , METH_VARARGS },
101+ {"PyImport_GetLazyImportsFilter" , pyimport_getlazyimportsfilter , METH_NOARGS },
36102 {NULL },
37103};
38104
@@ -41,4 +107,3 @@ _PyTestCapi_Init_Import(PyObject *m)
41107{
42108 return PyModule_AddFunctions (m , test_methods );
43109}
44-
0 commit comments