Skip to content

Commit

Permalink
Suppress nonsense DeprecationWarning caused by unittest
Browse files Browse the repository at this point in the history
`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.
  • Loading branch information
jakelishman committed Jun 28, 2024
1 parent ea5a54b commit 3447642
Showing 1 changed file with 14 additions and 0 deletions.
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`.
warnings.filterwarnings(
"ignore",
category=DeprecationWarning,
message="__warningregistry__",
module=r"numpy(\.\w+)*",
)

# 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 3447642

Please sign in to comment.