@@ -288,6 +288,19 @@ _PyImport_ClearLazyModules(PyInterpreterState *interp)
288288 Py_CLEAR (LAZY_PENDING_SUBMODULES (interp ));
289289}
290290
291+ static PyObject *
292+ get_importtime_name (PyObject * name )
293+ {
294+ PyObject * exc = PyErr_GetRaisedException ();
295+ PyObject * encoded = PyUnicode_AsEncodedString (name , "utf-8" ,
296+ "backslashreplace" );
297+ if (encoded == NULL ) {
298+ PyErr_Clear ();
299+ }
300+ PyErr_SetRaisedException (exc );
301+ return encoded ;
302+ }
303+
291304static int
292305import_ensure_initialized (PyInterpreterState * interp , PyObject * mod , PyObject * name )
293306{
@@ -325,8 +338,11 @@ import_ensure_initialized(PyInterpreterState *interp, PyObject *mod, PyObject *n
325338 if (_PyInterpreterState_GetConfig (interp )-> import_time == 2 ) {
326339 _IMPORT_TIME_HEADER (interp );
327340#define import_level FIND_AND_LOAD(interp).import_level
341+ PyObject * encoded_name = get_importtime_name (name );
328342 fprintf (stderr , "import time: cached | cached | %*s\n" ,
329- import_level * 2 , PyUnicode_AsUTF8 (name ));
343+ import_level * 2 ,
344+ encoded_name != NULL ? PyBytes_AS_STRING (encoded_name ) : "?" );
345+ Py_XDECREF (encoded_name );
330346#undef import_level
331347 }
332348
@@ -4118,10 +4134,13 @@ import_find_and_load_with_name(PyThreadState *tstate, PyObject *abs_name,
41184134 PyTime_t cum = t2 - t1 ;
41194135
41204136 import_level -- ;
4137+ PyObject * encoded_name = get_importtime_name (abs_name );
41214138 fprintf (stderr , "import time: %9ld | %10ld | %*s%s\n" ,
41224139 (long )_PyTime_AsMicroseconds (cum - accumulated , _PyTime_ROUND_CEILING ),
41234140 (long )_PyTime_AsMicroseconds (cum , _PyTime_ROUND_CEILING ),
4124- import_level * 2 , "" , PyUnicode_AsUTF8 (abs_name ));
4141+ import_level * 2 , "" ,
4142+ encoded_name != NULL ? PyBytes_AS_STRING (encoded_name ) : "?" );
4143+ Py_XDECREF (encoded_name );
41254144
41264145 accumulated = accumulated_copy + cum ;
41274146 }
0 commit comments