summary refs log tree commit diff
path: root/pkgs/applications/science/math
diff options
context:
space:
mode:
author7c6f434c <7c6f434c@mail.ru>2022-02-14 17:18:21 +0000
committerGitHub <noreply@github.com>2022-02-14 17:18:21 +0000
commit117fdae4b6b39eee9388c2713c416a93d8b5cd0c (patch)
treebdd5d61af0e258e80d70ff4885e07629295d7cf8 /pkgs/applications/science/math
parenta97e45feaee3804734699279257c42b7083130fe (diff)
parentc763432549db89f6bd0516115ec885e1deb88a68 (diff)
downloadnixpkgs-117fdae4b6b39eee9388c2713c416a93d8b5cd0c.tar
nixpkgs-117fdae4b6b39eee9388c2713c416a93d8b5cd0c.tar.gz
nixpkgs-117fdae4b6b39eee9388c2713c416a93d8b5cd0c.tar.bz2
nixpkgs-117fdae4b6b39eee9388c2713c416a93d8b5cd0c.tar.lz
nixpkgs-117fdae4b6b39eee9388c2713c416a93d8b5cd0c.tar.xz
nixpkgs-117fdae4b6b39eee9388c2713c416a93d8b5cd0c.tar.zst
nixpkgs-117fdae4b6b39eee9388c2713c416a93d8b5cd0c.zip
Merge pull request #159351 from collares/sage-ipython-8
sage: don't test for Cython source code in tracebacks (temporarily)
Diffstat (limited to 'pkgs/applications/science/math')
-rw-r--r--pkgs/applications/science/math/sage/patches/no-cython-sources-in-tracebacks-on-ipython8.patch52
-rw-r--r--pkgs/applications/science/math/sage/sage-src.nix10
2 files changed, 62 insertions, 0 deletions
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 00000000000..871e494c362
--- /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 "<string>", line unknown
++            ...File...<string>...
+             SyntaxError: Interface magics have no options, got "foo"
+             <BLANKLINE>
+             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)
+-    <ipython-input-...> in <module>...
+-    ----> 1 Integer(1)/Integer(0)
+-    .../sage/rings/integer.pyx in sage.rings.integer.Integer...div...
+-    ...
+-    -> ...                  raise ZeroDivisionError("rational division by zero")
+-       ....:            x = <Rational> Rational.__new__(Rational)
+-       ....:            mpq_div_zz(x.value, ....value, (<Integer>right).value)
+-    <BLANKLINE>
+-    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 "<string>", line unknown
++          File...<string>...
+         SyntaxError: Mismatched ']'
+         <BLANKLINE>
+         sage: shell.quit()
diff --git a/pkgs/applications/science/math/sage/sage-src.nix b/pkgs/applications/science/math/sage/sage-src.nix
index 019694fd265..e4531f0e5c2 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";