@@ -286,6 +286,19 @@ _PyImport_ClearLazyModules(PyInterpreterState *interp)
286286 Py_CLEAR (LAZY_PENDING_SUBMODULES (interp ));
287287}
288288
289+ static PyObject *
290+ get_importtime_name (PyObject * name )
291+ {
292+ PyObject * exc = PyErr_GetRaisedException ();
293+ PyObject * encoded = PyUnicode_AsEncodedString (name , "utf-8" ,
294+ "backslashreplace" );
295+ if (encoded == NULL ) {
296+ PyErr_Clear ();
297+ }
298+ PyErr_SetRaisedException (exc );
299+ return encoded ;
300+ }
301+
289302static int
290303import_ensure_initialized (PyInterpreterState * interp , PyObject * mod , PyObject * name )
291304{
@@ -323,8 +336,11 @@ import_ensure_initialized(PyInterpreterState *interp, PyObject *mod, PyObject *n
323336 if (_PyInterpreterState_GetConfig (interp )-> import_time == 2 ) {
324337 _IMPORT_TIME_HEADER (interp );
325338#define import_level FIND_AND_LOAD(interp).import_level
339+ PyObject * encoded_name = get_importtime_name (name );
326340 fprintf (stderr , "import time: cached | cached | %*s\n" ,
327- import_level * 2 , PyUnicode_AsUTF8 (name ));
341+ import_level * 2 ,
342+ encoded_name != NULL ? PyBytes_AS_STRING (encoded_name ) : "?" );
343+ Py_XDECREF (encoded_name );
328344#undef import_level
329345 }
330346
@@ -4121,10 +4137,13 @@ import_find_and_load_with_name(PyThreadState *tstate, PyObject *abs_name,
41214137 PyTime_t cum = t2 - t1 ;
41224138
41234139 import_level -- ;
4140+ PyObject * encoded_name = get_importtime_name (abs_name );
41244141 fprintf (stderr , "import time: %9ld | %10ld | %*s%s\n" ,
41254142 (long )_PyTime_AsMicroseconds (cum - accumulated , _PyTime_ROUND_CEILING ),
41264143 (long )_PyTime_AsMicroseconds (cum , _PyTime_ROUND_CEILING ),
4127- import_level * 2 , "" , PyUnicode_AsUTF8 (abs_name ));
4144+ import_level * 2 , "" ,
4145+ encoded_name != NULL ? PyBytes_AS_STRING (encoded_name ) : "?" );
4146+ Py_XDECREF (encoded_name );
41284147
41294148 accumulated = accumulated_copy + cum ;
41304149 }
0 commit comments