| """ |
| Check the numpy config is valid. |
| """ |
| from unittest.mock import patch |
|
|
| import pytest |
|
|
| import numpy as np |
|
|
| pytestmark = pytest.mark.skipif( |
| not hasattr(np.__config__, "_built_with_meson"), |
| reason="Requires Meson builds", |
| ) |
|
|
|
|
| class TestNumPyConfigs: |
| REQUIRED_CONFIG_KEYS = [ |
| "Compilers", |
| "Machine Information", |
| "Python Information", |
| ] |
|
|
| @patch("numpy.__config__._check_pyyaml") |
| def test_pyyaml_not_found(self, mock_yaml_importer): |
| mock_yaml_importer.side_effect = ModuleNotFoundError() |
| with pytest.warns(UserWarning): |
| np.show_config() |
|
|
| def test_dict_mode(self): |
| config = np.show_config(mode="dicts") |
|
|
| assert isinstance(config, dict) |
| assert all(key in config for key in self.REQUIRED_CONFIG_KEYS), ( |
| "Required key missing," |
| " see index of `False` with `REQUIRED_CONFIG_KEYS`" |
| ) |
|
|
| def test_invalid_mode(self): |
| with pytest.raises(AttributeError): |
| np.show_config(mode="foo") |
|
|
| def test_warn_to_add_tests(self): |
| assert len(np.__config__.DisplayModes) == 2, ( |
| "New mode detected," |
| " please add UT if applicable and increment this count" |
| ) |
|
|