-
-
Notifications
You must be signed in to change notification settings - Fork 31.2k
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
bpo-1635741 port signalmodule to multi-phase init (PEP 489) #22049
Conversation
@vstinner @shihai1991 I split this from the other PR |
Modules/signalmodule.c
Outdated
#if defined(HAVE_SIGWAITINFO) || defined(HAVE_SIGTIMEDWAIT) | ||
if (!initialized) { | ||
if (PyStructSequence_InitType2(&SiginfoType, &struct_siginfo_desc) < 0) | ||
return NULL; | ||
return -1; | ||
} | ||
Py_INCREF((PyObject*) &SiginfoType); | ||
PyModule_AddObject(m, "struct_siginfo", (PyObject*) &SiginfoType); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please check for error. On error, DECREF is needed.
@@ -0,0 +1,2 @@ | |||
Port the :mod:`signalmodule` extension module to multi-phase initialization |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The module is called "_signal":
Port the :mod:`signalmodule` extension module to multi-phase initialization | |
Port the :mod:`_signal` extension module to multi-phase initialization | |
Modules/signalmodule.c
Outdated
static int | ||
signal_exec(PyObject *m) | ||
{ | ||
/* add the functions */ | ||
#if defined(HAVE_SIGWAITINFO) || defined(HAVE_SIGTIMEDWAIT) | ||
if (!initialized) { | ||
if (PyStructSequence_InitType2(&SiginfoType, &struct_siginfo_desc) < 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would be nice to convert the static type SiginfoType to a heap type, but it can be done later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vstinner what is the procedure for types defined using PyStructSequence_InitType2?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know.
Modules/signalmodule.c
Outdated
#if defined(HAVE_SIGWAITINFO) || defined(HAVE_SIGTIMEDWAIT) | ||
if (!initialized) { | ||
if (PyStructSequence_InitType2(&SiginfoType, &struct_siginfo_desc) < 0) | ||
return NULL; | ||
return -1; | ||
} | ||
Py_INCREF((PyObject*) &SiginfoType); | ||
PyModule_AddObject(m, "struct_siginfo", (PyObject*) &SiginfoType); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe you can use PyModule_AddType()
in here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shihai1991 good idea, this simplifies the error handling too.
This change introduced a regression: https://bugs.python.org/issue41713 |
I partially reverted this change with PR #22087 to quickly fix https://bugs.python.org/issue41713. |
…lots1 * origin/master: (63 commits) bpo-41627: Distinguish 32 and 64-bit user site packages on Windows (pythonGH-22098) bpo-38585: Remove references to defusedexpat (pythonGH-22095) bpo-41721: Add xlc options (pythonGH-22096) bpo-40486: Specify what happens if directory content change diring iteration (pythonGH-22025) bpo-41638: Improve ProgrammingError message for absent parameter. (pythonGH-21999) bpo-41713: _signal doesn't use multi-phase init (pythonGH-22087) bpo-41700: Skip test if the locale is not supported (pythonGH-22081) [doc] Update documentation on logging optimization. (pythonGH-22075) Fix 'gather' rules in the python parser generator (pythonGH-22021) bpo-41697: Correctly handle KeywordOrStarred when parsing arguments in the parser (pythonGH-22077) [doc] Fix a typo in the graphlib docs (python#22030) bpo-1635741: Port _signal module to multi-phase init (PEP 489) (pythonGH-22049) bpo-39883: Use BSD0 license for code in docs (pythonGH-17635) bpo-39010: Improve test shutdown (python#22066) bpo-41696: Fix handling of debug mode in asyncio.run (python#22069) bpo-41690: Use a loop to collect args in the parser instead of recursion (pythonGH-22053) closes bpo-41689: Preserve text signature from tp_doc in C heap type creation. (pythonGH-22058) Fix invalid escape sequences in the peg_highlight Sphinx extension (pythonGH-22047) bpo-41675: Modernize siginterrupt calls (pythonGH-22028) bpo-41685: Don't pin setuptools version anymore in Doc/Makefile (pythonGH-22062) ...
https://bugs.python.org/issue1635741