Skip to content

Commit

Permalink
Suppress nonsense DeprecationWarning caused by unittest (Qiskit#1…
Browse files Browse the repository at this point in the history
…2676)

* Suppress nonsense `DeprecationWarning` caused by `unittest`

`unittest.TestCase.assertWarns` in context-manager form has an awkward
habit of querying the `__warningregistry__` attribute on every module in
existence.  This interacts poorly with a Numpy 2 deprecation warning
trigger for code that's attempting to import functions from modules that
became private in Numpy 2, if a warning has previously been triggered
out of `numpy.linalg._linalg`.

This simply suppresses that particular warning from the test suite.

* Refine filter

* Pin Rustworkx to avoid buggy graphviz drawing

* Update test/utils/base.py

Co-authored-by: Elena Peña Tapia <[email protected]>

---------

Co-authored-by: Elena Peña Tapia <[email protected]>
  • Loading branch information
2 people authored and Procatv committed Aug 1, 2024
1 parent c8583d5 commit d09ad91
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
4 changes: 4 additions & 0 deletions constraints.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ scipy<1.11; python_version<'3.12'
# See https://github.com/Qiskit/qiskit/issues/12655 for current details.
scipy==1.13.1; python_version=='3.12'

# Rustworkx 0.15.0 contains a bug that breaks graphviz-related tests.
# See https://github.com/Qiskit/rustworkx/pull/1229 for the fix.
rustworkx==0.14.2

# z3-solver from 4.12.3 onwards upped the minimum macOS API version for its
# wheels to 11.7. The Azure VM images contain pre-built CPythons, of which at
# least CPython 3.8 was compiled for an older macOS, so does not match a
Expand Down
14 changes: 14 additions & 0 deletions test/utils/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,20 @@ def setUpClass(cls):
warnings.filterwarnings("error", category=DeprecationWarning)
warnings.filterwarnings("error", category=QiskitWarning)

# Numpy 2 made a few new modules private, and have warnings that trigger if you try to
# access attributes that _would_ have existed. Unfortunately, Python's `warnings` module
# adds a field called `__warningregistry__` to any module that triggers a warning, and
# `unittest.TestCase.assertWarns` then queries said fields on all existing modules. On
# macOS ARM, we see some (we think harmless) warnings come out of `numpy.linalg._linalg` (a
# now-private module) during transpilation, which means that subsequent `assertWarns` calls
# can spuriously trick Numpy into sending out a nonsense `DeprecationWarning`.
# Tracking issue: https://github.com/Qiskit/qiskit/issues/12679
warnings.filterwarnings(
"ignore",
category=DeprecationWarning,
message=r".*numpy\.(\w+\.)*__warningregistry__",
)

# We only use pandas transitively through seaborn, so it's their responsibility to mark if
# their use of pandas would be a problem.
warnings.filterwarnings(
Expand Down

0 comments on commit d09ad91

Please sign in to comment.