[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-03-31 Thread Brett Cannon


Change by Brett Cannon :


--
nosy: +brett.cannon

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-03-08 Thread miss-islington


miss-islington  added the comment:


New changeset 95b001fe6766f491f4356f8bcf23d6895bab2342 by Miss Islington (bot) 
in branch '3.10':
bpo-23325: Fix SIG_IGN and SIG_DFL int comparison in signal module (GH-31759)
https://github.com/python/cpython/commit/95b001fe6766f491f4356f8bcf23d6895bab2342


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-03-08 Thread miss-islington


miss-islington  added the comment:


New changeset c8a47e76a391c8818bf10a282cdcd3bb5c23ebf6 by Christian Heimes in 
branch 'main':
bpo-23325: Fix SIG_IGN and SIG_DFL int comparison in signal module (GH-31759)
https://github.com/python/cpython/commit/c8a47e76a391c8818bf10a282cdcd3bb5c23ebf6


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-03-08 Thread miss-islington


Change by miss-islington :


--
nosy: +miss-islington
nosy_count: 7.0 -> 8.0
pull_requests: +29876
pull_request: https://github.com/python/cpython/pull/31768

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-03-08 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Agree. There were too many changes in this code, and making SIG_DFL and SIG_IGN 
functions exposes some issues with sharing objects between interpreters. It is 
easier to keep them integers for now.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-03-08 Thread Christian Heimes


Christian Heimes  added the comment:

My PR 31759 removes the assumption of small int singletons and replaces C 
comparison with PyObject_RichCompareBool() Py_EQ calls.

I still prefer Serhiy's solution, but it may cause backwards incompatible 
breakage. My fix can be backported to 3.9 and 3.10 without breakage. It 
resolves my failing tests on Emscripten, too.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-03-08 Thread Christian Heimes


Change by Christian Heimes :


--
pull_requests: +29871
pull_request: https://github.com/python/cpython/pull/31759

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-01-21 Thread Christian Heimes


Christian Heimes  added the comment:

Understood, thanks!

A trivial fix for the integer comparison bug would solve my issue:

--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -527,21 +527,20 @@ signal_signal_impl(PyObject *module, int signalnum, 
PyObject *handler)
  "signal number out of range");
 return NULL;
 }
-if (handler == modstate->ignore_handler) {
+if (PyCallable_Check(handler)) {
+func = signal_handler;
+}
+else if (PyObject_RichCompareBool(handler, modstate->ignore_handler, 
Py_EQ) == 1) {
 func = SIG_IGN;
 }
-else if (handler == modstate->default_handler) {
+else if (PyObject_RichCompareBool(handler, modstate->default_handler, 
Py_EQ) == 1) {
 func = SIG_DFL;
-}
-else if (!PyCallable_Check(handler)) {
+} else {
 _PyErr_SetString(tstate, PyExc_TypeError,
  "signal handler must be signal.SIG_IGN, "
  "signal.SIG_DFL, or a callable object");
 return NULL;
 }
-else {
-func = signal_handler;
-}
 
 /* Check for pending signals before changing signal handler */
 if (_PyErr_CheckSignalsTstate(tstate)) {

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-01-20 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

It may take a time, because the module initialization code has been completely 
rewritten.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2022-01-20 Thread Christian Heimes


Christian Heimes  added the comment:

Serhiy, could you please rebase your PR to tip of main branch? I'd like to try 
it out.

--
nosy: +christian.heimes
versions: +Python 3.11, Python 3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2020-06-28 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


--
versions: +Python 3.10 -Python 3.8

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2018-08-25 Thread Xiang Zhang


Xiang Zhang  added the comment:

I miss that. So this change seems to be user transparent and make more sense 
then.

--
nosy: +vstinner

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2018-08-25 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Numerical values of signal numbers are standardized. signal.signal(15, handler) 
is valid. SIGTERM is just a handy name for the constant 15.

But SIG_DFL and SIG_IGN are not integers in C (they are special pointers), and 
it is not declared anywhere that they should be integers in Python. The code 
that converts them to Python integer is implementation depending 
(PyLong_FromVoidPtr). Handcrafted SIG_DFL and SIG_IGN are broken by design, 
because the signal module uses identity comparison for SIG_DFL and SIG_IGN.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2018-08-25 Thread Xiang Zhang


Xiang Zhang  added the comment:

I'm afraid this could break old codes so not sure it's worth or not. I've seen 
code like `SIGTERM = 15; signal.signal(SIGTERM, handler)`. I won't be surprised 
to see a handcraft SIG_DFL/IGN.

--
nosy: +xiang.zhang
versions: +Python 3.8 -Python 3.5

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2018-08-25 Thread Serhiy Storchaka


Change by Serhiy Storchaka :


--
pull_requests: +8393

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2015-07-21 Thread Ethan Furman

Changes by Ethan Furman et...@stoneleaf.us:


--
nosy:  -ethan.furman

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23325
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2015-03-19 Thread Serhiy Storchaka

Serhiy Storchaka added the comment:

Currently the action parameter of signal.signal() can be SIG_DFL, SIG_IGN, or a 
callable Python object. Would be just a callable Python object. This is simpler.

The main benefit is that they will be better look in pydoc output.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23325
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2015-03-19 Thread Ethan Furman

Ethan Furman added the comment:

Thanks for the explanation, point taken.

However, it seems to me that changing the type of the constants from 'int' to 
'function' is backwards incompatible, will break code, and is probably not 
worth it (and would require a deprecation period if it was worth it).

I still think the better answer is to delve into Modules/signalmodule.c and fix 
the comparisons.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23325
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2015-03-17 Thread Ethan Furman

Ethan Furman added the comment:

A private method is being added to Enum to better support Enum replacement of 
constants, part of which includes changing __reduce_ex__ to return the string 
of the name.

These changes answer points 1 and 4.

Point 2 would be nice, but seems somewhat less important if Enums are being 
used.

Point 3 -- I don't see how 'Signal(xxx, yyy)' is more complicated than 
'Signal(xxx, zzz)'?

--
nosy: +barry, eli.bendersky

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23325
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue23325] Turn SIG_DFL and SIG_IGN into functions

2015-01-26 Thread Serhiy Storchaka

New submission from Serhiy Storchaka:

In C the SIG_DFL and SIG_IGN macros expand into integral expressions that are 
not equal to an address of any function. In Python they are int objects with 
platform depended values. Second argument of the signal() function should be 
SIG_DFL, SIG_IGN, or a function. The getsignal() function returns SIG_DFL, 
SIG_IGN, None, or a function. They are tested for identity in signal() and 
getsignal() returns identical values. So actually SIG_DFL and SIG_IGN are just 
singletons.

I propose to turn SIG_DFL and SIG_IGN into functions. Benefits:

1. They will have names and self-descriptive representation.
2. They will have docstrings.
3. The signature of signal() will be simpler. The type of second argument would 
be function.
4. Their pickling will be portable.

This patch depends on the backout of turning these constants to enums 
(issue21076).

--
components: Library (Lib)
files: signal_std_handlers.patch
keywords: patch
messages: 234775
nosy: ethan.furman, giampaolo.rodola, serhiy.storchaka
priority: normal
severity: normal
stage: patch review
status: open
title: Turn SIG_DFL and SIG_IGN into functions
type: enhancement
versions: Python 3.5
Added file: http://bugs.python.org/file37868/signal_std_handlers.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue23325
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com