From c763432549db89f6bd0516115ec885e1deb88a68 Mon Sep 17 00:00:00 2001 From: Mauricio Collares Date: Fri, 11 Feb 2022 19:09:10 -0300 Subject: [PATCH] sage: don't test for Cython source code in tracebacks (temporarily) --- ...on-sources-in-tracebacks-on-ipython8.patch | 52 +++++++++++++++++++ .../science/math/sage/sage-src.nix | 10 ++++ 2 files changed, 62 insertions(+) create mode 100644 pkgs/applications/science/math/sage/patches/no-cython-sources-in-tracebacks-on-ipython8.patch diff --git a/pkgs/applications/science/math/sage/patches/no-cython-sources-in-tracebacks-on-ipython8.patch b/pkgs/applications/science/math/sage/patches/no-cython-sources-in-tracebacks-on-ipython8.patch new file mode 100644 index 000000000000..871e494c3625 --- /dev/null +++ b/pkgs/applications/science/math/sage/patches/no-cython-sources-in-tracebacks-on-ipython8.patch @@ -0,0 +1,52 @@ +diff --git a/src/sage/repl/interface_magic.py b/src/sage/repl/interface_magic.py +index 8a455b69b0..a93e1c9e04 100644 +--- a/src/sage/repl/interface_magic.py ++++ b/src/sage/repl/interface_magic.py +@@ -260,7 +260,7 @@ class InterfaceMagic(object): + 2 + 120 + sage: shell.run_cell('%%gap foo\n1+1;\n') +- ...File "", line unknown ++ ...File...... + SyntaxError: Interface magics have no options, got "foo" + + sage: shell.run_cell('%%gap?') +diff --git a/src/sage/repl/interpreter.py b/src/sage/repl/interpreter.py +index 71dbe429fd..36b1d986d6 100644 +--- a/src/sage/repl/interpreter.py ++++ b/src/sage/repl/interpreter.py +@@ -70,25 +70,6 @@ that shell. The bulk of this functionality is provided through + + TESTS: + +-Check that Cython source code appears in tracebacks:: +- +- sage: from sage.repl.interpreter import get_test_shell +- sage: shell = get_test_shell() +- sage: print("dummy line"); shell.run_cell('1/0') # see #25320 for the reason of the `...` and the dummy line in this test +- dummy line +- ... +- ZeroDivisionError...Traceback (most recent call last) +- in ... +- ----> 1 Integer(1)/Integer(0) +- .../sage/rings/integer.pyx in sage.rings.integer.Integer...div... +- ... +- -> ... raise ZeroDivisionError("rational division by zero") +- ....: x = Rational.__new__(Rational) +- ....: mpq_div_zz(x.value, ....value, (right).value) +- +- ZeroDivisionError: rational division by zero +- sage: shell.quit() +- + Test prompt transformer:: + + sage: from sage.repl.interpreter import SagePromptTransformer +@@ -423,7 +404,7 @@ def SagePreparseTransformer(lines): + sage: from sage.repl.interpreter import get_test_shell + sage: shell = get_test_shell() + sage: shell.run_cell(bad_syntax) +- File "", line unknown ++ File...... + SyntaxError: Mismatched ']' + + sage: shell.quit() diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix index 019694fd265e..e4531f0e5c2d 100644 --- a/pkgs/applications/science/math/sage/sage-src.nix +++ b/pkgs/applications/science/math/sage/sage-src.nix @@ -119,6 +119,16 @@ stdenv.mkDerivation rec { # https://trac.sagemath.org/ticket/32959 ./patches/linbox-1.7-upgrade.patch + # To emit better tracebacks, IPython 8 parses Python files using the ast + # module (via the stack_data package). Since Cython is a superset of Python, + # this results in no Cython code being printed in tracebacks. Fixing this + # properly is tracked in https://github.com/alexmojaki/stack_data/issues/21, + # but for now we just disable the corresponding test. An alternative would + # be to revert IPython's IPython/core/ultratb.py, but this would need to be + # Sage-specific (since it would worsen tracebacks for pure Python code). + # Sage tracks this at https://trac.sagemath.org/ticket/33170 + ./patches/no-cython-sources-in-tracebacks-on-ipython8.patch + # https://trac.sagemath.org/ticket/32968 (fetchSageDiff { base = "9.5";