Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gh-129354: Fix grammar in PyErr_FormatUnraisable() #129475

Merged
merged 2 commits into from
Jan 31, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Lib/test/test_cmd_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ def test_stdout_flush_at_shutdown(self):
rc, out, err = assert_python_failure('-c', code)
self.assertEqual(b'', out)
self.assertEqual(120, rc)
self.assertIn(b'Exception ignored on flushing sys.stdout:\n'
self.assertIn(b'Exception ignored while flushing sys.stdout:\n'
b'OSError: '.replace(b'\n', os.linesep.encode()),
err)

Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_ctypes/test_callbacks.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ def func():

self.assertIsInstance(cm.unraisable.exc_value, TypeError)
self.assertEqual(cm.unraisable.err_msg,
f"Exception ignored on converting result "
f"Exception ignored while converting result "
f"of ctypes callback function {func!r}")
self.assertIsNone(cm.unraisable.object)

Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_ctypes/test_random_things.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def expect_unraisable(self, exc_type, exc_msg=None):
if exc_msg is not None:
self.assertEqual(str(cm.unraisable.exc_value), exc_msg)
self.assertEqual(cm.unraisable.err_msg,
f"Exception ignored on calling ctypes "
f"Exception ignored while calling ctypes "
f"callback function {callback_func!r}")
self.assertIsNone(cm.unraisable.object)

Expand Down
6 changes: 3 additions & 3 deletions Lib/test/test_signal.py
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ def handler(signum, frame):
except ZeroDivisionError:
# An ignored exception should have been printed out on stderr
err = err.getvalue()
if ('Exception ignored when trying to write to the signal wakeup fd'
if ('Exception ignored while trying to write to the signal wakeup fd'
not in err):
raise AssertionError(err)
if ('OSError: [Errno %d]' % errno.EBADF) not in err:
Expand Down Expand Up @@ -572,7 +572,7 @@ def handler(signum, frame):
signal.raise_signal(signum)

err = err.getvalue()
if ('Exception ignored when trying to {action} to the signal wakeup fd'
if ('Exception ignored while trying to {action} to the signal wakeup fd'
not in err):
raise AssertionError(err)
""".format(action=action)
Expand Down Expand Up @@ -642,7 +642,7 @@ def handler(signum, frame):
"buffer" % written)

# By default, we get a warning when a signal arrives
msg = ('Exception ignored when trying to {action} '
msg = ('Exception ignored while trying to {action} '
'to the signal wakeup fd')
signal.set_wakeup_fd(write.fileno())

Expand Down
3 changes: 2 additions & 1 deletion Modules/_ctypes/_ctypes.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ _DictRemover_call(PyObject *myself, PyObject *args, PyObject *kw)
DictRemoverObject *self = _DictRemoverObject_CAST(myself);
if (self->key && self->dict) {
if (-1 == PyDict_DelItem(self->dict, self->key)) {
PyErr_FormatUnraisable("Exception ignored on calling _ctypes.DictRemover");
PyErr_FormatUnraisable("Exception ignored while "
"calling _ctypes.DictRemover");
}
Py_CLEAR(self->key);
Py_CLEAR(self->dict);
Expand Down
10 changes: 5 additions & 5 deletions Modules/_ctypes/callbacks.c
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,9 @@ static void _CallPythonObject(ctypes_state *st,

result = PyObject_Vectorcall(callable, args, nargs, NULL);
if (result == NULL) {
PyErr_FormatUnraisable(
"Exception ignored on calling ctypes callback function %R",
callable);
PyErr_FormatUnraisable("Exception ignored while "
"calling ctypes callback function %R",
callable);
}

#ifdef MS_WIN32
Expand Down Expand Up @@ -269,7 +269,7 @@ static void _CallPythonObject(ctypes_state *st,
if (keep == NULL) {
/* Could not convert callback result. */
PyErr_FormatUnraisable(
"Exception ignored on converting result "
"Exception ignored while converting result "
"of ctypes callback function %R",
callable);
}
Expand All @@ -282,7 +282,7 @@ static void _CallPythonObject(ctypes_state *st,
"memory leak in callback function.",
1) == -1) {
PyErr_FormatUnraisable(
"Exception ignored on converting result "
"Exception ignored while converting result "
"of ctypes callback function %R",
callable);
}
Expand Down
2 changes: 1 addition & 1 deletion Modules/_datetimemodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ clear_current_module(PyInterpreterState *interp, PyObject *expected)
goto finally;

error:
PyErr_FormatUnraisable("Exception ignored when clearing _datetime module");
PyErr_FormatUnraisable("Exception ignored while clearing _datetime module");

finally:
PyErr_SetRaisedException(exc);
Expand Down
3 changes: 2 additions & 1 deletion Modules/_lsprof.c
Original file line number Diff line number Diff line change
Expand Up @@ -933,7 +933,8 @@ profiler_dealloc(ProfilerObject *op)
if (op->flags & POF_ENABLED) {
PyThreadState *tstate = _PyThreadState_GET();
if (_PyEval_SetProfile(tstate, NULL, NULL) < 0) {
PyErr_FormatUnraisable("Exception ignored when destroying _lsprof profiler");
PyErr_FormatUnraisable("Exception ignored while "
"destroying _lsprof profiler");
}
}

Expand Down
6 changes: 3 additions & 3 deletions Modules/_testcapi/watchers.c
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,7 @@ allocate_too_many_code_watchers(PyObject *self, PyObject *args)
PyObject *exc = PyErr_GetRaisedException();
for (int i = 0; i < num_watchers; i++) {
if (PyCode_ClearWatcher(watcher_ids[i]) < 0) {
PyErr_FormatUnraisable("Exception ignored when "
PyErr_FormatUnraisable("Exception ignored while "
"clearing code watcher");
break;
}
Expand Down Expand Up @@ -610,7 +610,7 @@ allocate_too_many_func_watchers(PyObject *self, PyObject *args)
PyObject *exc = PyErr_GetRaisedException();
for (int i = 0; i < num_watchers; i++) {
if (PyFunction_ClearWatcher(watcher_ids[i]) < 0) {
PyErr_FormatUnraisable("Exception ignored when "
PyErr_FormatUnraisable("Exception ignored while "
"clearing function watcher");
break;
}
Expand Down Expand Up @@ -757,7 +757,7 @@ allocate_too_many_context_watchers(PyObject *self, PyObject *args)
PyObject *exc = PyErr_GetRaisedException();
for (int i = 0; i < num_watchers; i++) {
if (PyContext_ClearWatcher(watcher_ids[i]) < 0) {
PyErr_FormatUnraisable("Exception ignored when "
PyErr_FormatUnraisable("Exception ignored while "
"clearing context watcher");
break;
}
Expand Down
2 changes: 1 addition & 1 deletion Modules/_winapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ overlapped_dealloc(OverlappedObject *self)
PyErr_SetString(PyExc_PythonFinalizationError,
"I/O operations still in flight while destroying "
"Overlapped object, the process may crash");
PyErr_FormatUnraisable("Exception ignored when deallocating "
PyErr_FormatUnraisable("Exception ignored while deallocating "
"overlapped operation %R", self);
}
else {
Expand Down
2 changes: 1 addition & 1 deletion Modules/atexitmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ atexit_callfuncs(struct atexit_state *state)
PyObject *copy = PyList_GetSlice(state->callbacks, 0, PyList_GET_SIZE(state->callbacks));
if (copy == NULL)
{
PyErr_FormatUnraisable("Exception ignored when "
PyErr_FormatUnraisable("Exception ignored while "
"copying atexit callbacks");
return;
}
Expand Down
6 changes: 3 additions & 3 deletions Modules/getpath.c
Original file line number Diff line number Diff line change
Expand Up @@ -955,7 +955,7 @@ _PyConfig_InitPathConfig(PyConfig *config, int compute_path_config)
) {
Py_DECREF(co);
Py_DECREF(dict);
PyErr_FormatUnraisable("Exception ignored in preparing getpath");
PyErr_FormatUnraisable("Exception ignored while preparing getpath");
return PyStatus_Error("error evaluating initial values");
}

Expand All @@ -964,13 +964,13 @@ _PyConfig_InitPathConfig(PyConfig *config, int compute_path_config)

if (!r) {
Py_DECREF(dict);
PyErr_FormatUnraisable("Exception ignored in running getpath");
PyErr_FormatUnraisable("Exception ignored while running getpath");
return PyStatus_Error("error evaluating path");
}
Py_DECREF(r);

if (_PyConfig_FromDict(config, configDict) < 0) {
PyErr_FormatUnraisable("Exception ignored in reading getpath results");
PyErr_FormatUnraisable("Exception ignored while reading getpath results");
Py_DECREF(dict);
return PyStatus_Error("error getting getpath results");
}
Expand Down
2 changes: 1 addition & 1 deletion Modules/overlapped.c
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ Overlapped_dealloc(OverlappedObject *self)
PyExc_RuntimeError,
"%R still has pending operation at "
"deallocation, the process may crash", self);
PyErr_FormatUnraisable("Exception ignored when deallocating "
PyErr_FormatUnraisable("Exception ignored while deallocating "
"overlapped operation %R", self);
}
}
Expand Down
8 changes: 5 additions & 3 deletions Modules/signalmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,8 @@ report_wakeup_write_error(void *data)
errno = (int) (intptr_t) data;
PyObject *exc = PyErr_GetRaisedException();
PyErr_SetFromErrno(PyExc_OSError);
PyErr_FormatUnraisable("Exception ignored when trying to write to the signal wakeup fd");
PyErr_FormatUnraisable("Exception ignored while "
"trying to write to the signal wakeup fd");
PyErr_SetRaisedException(exc);
errno = save_errno;
return 0;
Expand All @@ -262,7 +263,8 @@ report_wakeup_send_error(void* data)
recognizes the error codes used by both GetLastError() and
WSAGetLastError */
PyErr_SetExcFromWindowsErr(PyExc_OSError, send_errno);
PyErr_FormatUnraisable("Exception ignored when trying to send to the signal wakeup fd");
PyErr_FormatUnraisable("Exception ignored while "
"trying to send to the signal wakeup fd");
PyErr_SetRaisedException(exc);
return 0;
}
Expand Down Expand Up @@ -1837,7 +1839,7 @@ _PyErr_CheckSignalsTstate(PyThreadState *tstate)
PyErr_Format(PyExc_OSError,
"Signal %i ignored due to race condition",
i);
PyErr_FormatUnraisable("Exception ignored when "
PyErr_FormatUnraisable("Exception ignored while "
"calling signal handler");
continue;
}
Expand Down
2 changes: 1 addition & 1 deletion Objects/dictobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -7351,7 +7351,7 @@ PyObject_ClearManagedDict(PyObject *obj)
if (set_or_clear_managed_dict(obj, NULL, true) < 0) {
/* Must be out of memory */
assert(PyErr_Occurred() == PyExc_MemoryError);
PyErr_FormatUnraisable("Exception ignored when "
PyErr_FormatUnraisable("Exception ignored while "
"clearing an object managed dict");
/* Clear the dict */
PyDictObject *dict = _PyObject_GetManagedDict(obj);
Expand Down
6 changes: 4 additions & 2 deletions Objects/moduleobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,8 @@ _PyModule_ClearDict(PyObject *d)
PyErr_Clear();
}
if (PyDict_SetItem(d, key, Py_None) != 0) {
PyErr_FormatUnraisable("Exception ignored on clearing module dict");
PyErr_FormatUnraisable("Exception ignored while "
"clearing module dict");
}
}
}
Expand All @@ -724,7 +725,8 @@ _PyModule_ClearDict(PyObject *d)
PyErr_Clear();
}
if (PyDict_SetItem(d, key, Py_None) != 0) {
PyErr_FormatUnraisable("Exception ignored on clearing module dict");
PyErr_FormatUnraisable("Exception ignored while "
"clearing module dict");
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion Objects/weakrefobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -1042,7 +1042,8 @@ PyObject_ClearWeakRefs(PyObject *object)
PyObject *tuple = PyTuple_New(num_weakrefs * 2);
if (tuple == NULL) {
_PyWeakref_ClearWeakRefsNoCallbacks(object);
PyErr_FormatUnraisable("Exception ignored when clearing object weakrefs");
PyErr_FormatUnraisable("Exception ignored while "
"clearing object weakrefs");
PyErr_SetRaisedException(exc);
return;
}
Expand Down
4 changes: 2 additions & 2 deletions Python/compile.c
Original file line number Diff line number Diff line change
Expand Up @@ -704,12 +704,12 @@ _PyCompile_ExitScope(compiler *c)
assert(c->u);
/* we are deleting from a list so this really shouldn't fail */
if (PySequence_DelItem(c->c_stack, n) < 0) {
PyErr_FormatUnraisable("Exception ignored on removing "
PyErr_FormatUnraisable("Exception ignored while removing "
"the last compiler stack item");
}
if (nested_seq != NULL) {
if (_PyInstructionSequence_AddNested(c->u->u_instr_sequence, nested_seq) < 0) {
PyErr_FormatUnraisable("Exception ignored on appending "
PyErr_FormatUnraisable("Exception ignored while appending "
"nested instruction sequence");
}
}
Expand Down
3 changes: 2 additions & 1 deletion Python/crossinterp.c
Original file line number Diff line number Diff line change
Expand Up @@ -784,7 +784,8 @@ _PyXI_excinfo_Apply(_PyXI_excinfo *info, PyObject *exctype)
PyObject *exc = PyErr_GetRaisedException();
if (PyObject_SetAttrString(exc, "_errdisplay", tbexc) < 0) {
#ifdef Py_DEBUG
PyErr_FormatUnraisable("Exception ignored when setting _errdisplay");
PyErr_FormatUnraisable("Exception ignored while "
"setting _errdisplay");
#endif
PyErr_Clear();
}
Expand Down
2 changes: 1 addition & 1 deletion Python/errors.c
Original file line number Diff line number Diff line change
Expand Up @@ -1633,7 +1633,7 @@ format_unraisable_v(const char *format, va_list va, PyObject *obj)
PyObject *hook_args = make_unraisable_hook_args(
tstate, exc_type, exc_value, exc_tb, err_msg, obj);
if (hook_args == NULL) {
err_msg_str = ("Exception ignored on building "
err_msg_str = ("Exception ignored while building "
"sys.unraisablehook arguments");
goto error;
}
Expand Down
4 changes: 2 additions & 2 deletions Python/gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1779,15 +1779,15 @@ do_gc_callback(GCState *gcstate, const char *phase,
"collected", stats->collected,
"uncollectable", stats->uncollectable);
if (info == NULL) {
PyErr_FormatUnraisable("Exception ignored on invoking gc callbacks");
PyErr_FormatUnraisable("Exception ignored while invoking gc callbacks");
return;
}
}

PyObject *phase_obj = PyUnicode_FromString(phase);
if (phase_obj == NULL) {
Py_XDECREF(info);
PyErr_FormatUnraisable("Exception ignored on invoking gc callbacks");
PyErr_FormatUnraisable("Exception ignored while invoking gc callbacks");
return;
}

Expand Down
6 changes: 4 additions & 2 deletions Python/gc_free_threading.c
Original file line number Diff line number Diff line change
Expand Up @@ -1427,15 +1427,17 @@ invoke_gc_callback(PyThreadState *tstate, const char *phase,
"collected", collected,
"uncollectable", uncollectable);
if (info == NULL) {
PyErr_FormatUnraisable("Exception ignored on invoking gc callbacks");
PyErr_FormatUnraisable("Exception ignored while "
"invoking gc callbacks");
return;
}
}

PyObject *phase_obj = PyUnicode_FromString(phase);
if (phase_obj == NULL) {
Py_XDECREF(info);
PyErr_FormatUnraisable("Exception ignored on invoking gc callbacks");
PyErr_FormatUnraisable("Exception ignored while "
"invoking gc callbacks");
return;
}

Expand Down
15 changes: 10 additions & 5 deletions Python/import.c
Original file line number Diff line number Diff line change
Expand Up @@ -594,7 +594,8 @@ _PyImport_ClearModulesByIndex(PyInterpreterState *interp)
if (PyList_SetSlice(MODULES_BY_INDEX(interp),
0, PyList_GET_SIZE(MODULES_BY_INDEX(interp)),
NULL)) {
PyErr_FormatUnraisable("Exception ignored on clearing interpreters module list");
PyErr_FormatUnraisable("Exception ignored while "
"clearing interpreters module list");
}
}

Expand Down Expand Up @@ -4080,13 +4081,15 @@ _PyImport_FiniCore(PyInterpreterState *interp)
int verbose = _PyInterpreterState_GetConfig(interp)->verbose;

if (_PySys_ClearAttrString(interp, "meta_path", verbose) < 0) {
PyErr_FormatUnraisable("Exception ignored on clearing sys.meta_path");
PyErr_FormatUnraisable("Exception ignored while "
"clearing sys.meta_path");
}

// XXX Pull in most of finalize_modules() in pylifecycle.c.

if (_PySys_ClearAttrString(interp, "modules", verbose) < 0) {
PyErr_FormatUnraisable("Exception ignored on clearing sys.modules");
PyErr_FormatUnraisable("Exception ignored while "
"clearing sys.modules");
}

_PyImport_ClearCore(interp);
Expand Down Expand Up @@ -4161,10 +4164,12 @@ _PyImport_FiniExternal(PyInterpreterState *interp)
// XXX Uninstall importlib metapath importers here?

if (_PySys_ClearAttrString(interp, "path_importer_cache", verbose) < 0) {
PyErr_FormatUnraisable("Exception ignored on clearing sys.path_importer_cache");
PyErr_FormatUnraisable("Exception ignored while "
"clearing sys.path_importer_cache");
}
if (_PySys_ClearAttrString(interp, "path_hooks", verbose) < 0) {
PyErr_FormatUnraisable("Exception ignored on clearing sys.path_hooks");
PyErr_FormatUnraisable("Exception ignored while "
"clearing sys.path_hooks");
}
}

Expand Down
3 changes: 2 additions & 1 deletion Python/jit.c
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,8 @@ _PyJIT_Free(_PyExecutorObject *executor)
executor->jit_side_entry = NULL;
executor->jit_size = 0;
if (jit_free(memory, size)) {
PyErr_FormatUnraisable("Exception ignored when freeing JIT memory");
PyErr_FormatUnraisable("Exception ignored while "
"freeing JIT memory");
}
}
}
Expand Down
Loading
Loading