diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 96549c7..96257a3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -35,7 +35,8 @@ jobs: bash -x .travis-install-pari.sh - name: Local build run: | - pip install sphinx cython cysignals + pip install sphinx cython + pip install git+http://github.com/sagemath/cysignals.git@general_signal_hook#egg=cysignals make build make install make check diff --git a/VERSION b/VERSION index ac2cdeb..81d5100 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.1.3 +2.2.0a0 \ No newline at end of file diff --git a/cypari2/__init__.py b/cypari2/__init__.py index 1700c12..dbbade7 100644 --- a/cypari2/__init__.py +++ b/cypari2/__init__.py @@ -1,3 +1,6 @@ from .pari_instance import Pari from .handle_error import PariError from .gen import Gen +from .custom_block import init_custom_block + +init_custom_block() diff --git a/cypari2/custom_block.pyx b/cypari2/custom_block.pyx new file mode 100644 index 0000000..ddbb829 --- /dev/null +++ b/cypari2/custom_block.pyx @@ -0,0 +1,29 @@ +# distutils: libraries = gmp pari + +#***************************************************************************** +# Distributed under the terms of the GNU General Public License (GPL) +# as published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# http://www.gnu.org/licenses/ +#***************************************************************************** + +from cysignals.signals cimport add_custom_signals + +cdef extern from "pari/pari.h": + int PARI_SIGINT_block, PARI_SIGINT_pending + +cdef int custom_signal_is_blocked(): + return PARI_SIGINT_block + +cdef void custom_signal_unblock(): + global PARI_SIGINT_block + PARI_SIGINT_block = 0 + +cdef void custom_set_pending_signal(int sig): + global PARI_SIGINT_pending + PARI_SIGINT_pending = sig + +def init_custom_block(): + add_custom_signals(&custom_signal_is_blocked, + &custom_signal_unblock, + &custom_set_pending_signal)