[3.12] GH-107774: Add missing audit event for PEP 669 (GH-107775) (#107839)

GH-107774: Add missing audit event for PEP 669 (GH-107775)
(cherry picked from commit 494e3d4436)

Co-authored-by: Mark Shannon <mark@hotpy.org>
This commit is contained in:
Miss Islington (bot) 2023-08-11 02:58:58 -07:00 committed by GitHub
parent ddca26188d
commit 81d3afae1a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 0 deletions

View file

@ -514,6 +514,17 @@ def test_not_in_gc():
assert hook not in o
def test_sys_monitoring_register_callback():
import sys
def hook(event, args):
if event.startswith("sys.monitoring"):
print(event, args)
sys.addaudithook(hook)
sys.monitoring.register_callback(1, 1, None)
if __name__ == "__main__":
from test.support import suppress_msvcrt_asserts

View file

@ -257,5 +257,18 @@ def test_not_in_gc(self):
self.fail(stderr)
def test_sys_monitoring_register_callback(self):
returncode, events, stderr = self.run_python("test_sys_monitoring_register_callback")
if returncode:
self.fail(stderr)
if support.verbose:
print(*events, sep='\n')
actual = [(ev[0], ev[2]) for ev in events]
expected = [("sys.monitoring.register_callback", "(None,)")]
self.assertEqual(actual, expected)
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1,3 @@
PEP 669 specifies that ``sys.monitoring.register_callback`` will generate an
audit event. Pre-releases of Python 3.12 did not generate the audit event.
This is now fixed.

View file

@ -1858,6 +1858,9 @@ monitoring_register_callback_impl(PyObject *module, int tool_id, int event,
PyErr_Format(PyExc_ValueError, "invalid event %d", event);
return NULL;
}
if (PySys_Audit("sys.monitoring.register_callback", "O", func) < 0) {
return NULL;
}
if (func == Py_None) {
func = NULL;
}