numexpr: Test failures on PyPy3.10: mostly `ValueError: ex_uses_vml parameter is required`

When running the test suite on PyPy3.10 7.3.13, I’m getting the following failures:

>>>> numexpr.test()
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Numexpr version:   2.8.8.dev1
NumPy version:     1.26.2
Python version:    3.10.13 (f1607341da97ff5a1e93430b6e8c4af0ad1aa019, Nov 21 2023, 14:47:09)
[PyPy 7.3.13 with GCC 13.2.1 20230826]
Platform:          linux-x86_64-#1 SMP PREEMPT_DYNAMIC Tue Nov 28 20:10:18 -00 2023
CPU vendor:        
CPU model:         
CPU clock speed:    MHz
VML available?     False
Number of threads used by default: 8 (out of 12 detected cores)
Maximum number of threads: 64
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
....E.EEEE...............E.EEEE...........E.E...................E...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
======================================================================
ERROR: test_rational_expr (numexpr.tests.test_numexpr.test_numexpr)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 76, in test_rational_expr
    y = func(a, b)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_refcount (numexpr.tests.test_numexpr.test_numexpr)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 314, in test_refcount
    assert sys.getrefcount(a) == 2
AttributeError: module 'sys' has no attribute 'getrefcount'

======================================================================
ERROR: test_simple (numexpr.tests.test_numexpr.test_numexpr)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 56, in test_simple
    x = func(array([1., 2, 3]), array([4., 5, 6]), array([7., 8, 9]))
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_simple_expr (numexpr.tests.test_numexpr.test_numexpr)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 68, in test_simple_expr
    y = func(x)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_simple_expr_small_array (numexpr.tests.test_numexpr.test_numexpr)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 62, in test_simple_expr_small_array
    y = func(x)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_rational_expr (numexpr.tests.test_numexpr.test_numexpr2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 76, in test_rational_expr
    y = func(a, b)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_refcount (numexpr.tests.test_numexpr.test_numexpr2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 314, in test_refcount
    assert sys.getrefcount(a) == 2
AttributeError: module 'sys' has no attribute 'getrefcount'

======================================================================
ERROR: test_simple (numexpr.tests.test_numexpr.test_numexpr2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 56, in test_simple
    x = func(array([1., 2, 3]), array([4., 5, 6]), array([7., 8, 9]))
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_simple_expr (numexpr.tests.test_numexpr.test_numexpr2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 68, in test_simple_expr
    y = func(x)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_simple_expr_small_array (numexpr.tests.test_numexpr.test_numexpr2)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 62, in test_simple_expr_small_array
    y = func(x)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_all_scalar (numexpr.tests.test_numexpr.test_evaluate)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 495, in test_all_scalar
    assert_equal(expr(a, b), 2 * a + 3 * b)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_broadcasting (numexpr.tests.test_numexpr.test_evaluate)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 488, in test_broadcasting
    assert_array_equal(expr(a, c), 2.0 * a + 3.0 * c)
ValueError: ex_uses_vml parameter is required

======================================================================
ERROR: test_run (numexpr.tests.test_numexpr.test_evaluate)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/numexpr/.venv/lib/pypy3.10/site-packages/numexpr/tests/test_numexpr.py", line 501, in test_run
    assert_array_equal(expr(a, b), expr.run(a, b))
ValueError: ex_uses_vml parameter is required

----------------------------------------------------------------------
Ran 5536 tests in 11.683s

FAILED (errors=13)
<unittest.runner.TextTestResult run=5536 errors=13 failures=0>

This is on 05bb401afc1f8fd84e45f0297d3a0b87e6a79b30 but I’ve seen roughly the same result on 2.8.7.

CC @mattip

About this issue

  • Original URL
  • State: closed
  • Created 7 months ago
  • Comments: 28 (22 by maintainers)

Commits related to this issue

Most upvoted comments

Yes, I’ve just confirmed that all tests pass now.

Is this a bug or intended not to implement

It is intentional. PyPy does not use a refcounting garbage collector. You are correct that it is hard to find information about that difference, I will add it to the garbage collection strategies section about differences between PyPy and CPython.