Initial upload: aesthetic-immich-starter
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
from importlib import import_module
|
||||
from pkgutil import walk_packages
|
||||
import sys
|
||||
import warnings
|
||||
|
||||
import pytest
|
||||
|
||||
import matplotlib
|
||||
from matplotlib.testing import is_ci_environment, subprocess_run_helper
|
||||
|
||||
# Get the names of all matplotlib submodules,
|
||||
# except for the unit tests and private modules.
|
||||
module_names = []
|
||||
backend_module_names = []
|
||||
for m in walk_packages(path=matplotlib.__path__, prefix=f'{matplotlib.__name__}.'):
|
||||
if m.name.startswith(__package__):
|
||||
continue
|
||||
if any(x.startswith('_') for x in m.name.split('.')):
|
||||
continue
|
||||
if 'backends.backend_' in m.name:
|
||||
backend_module_names.append(m.name)
|
||||
else:
|
||||
module_names.append(m.name)
|
||||
|
||||
|
||||
def _test_getattr(module_name, use_pytest=True):
|
||||
"""
|
||||
Test that __getattr__ methods raise AttributeError for unknown keys.
|
||||
See #20822, #20855.
|
||||
"""
|
||||
try:
|
||||
module = import_module(module_name)
|
||||
except (ImportError, RuntimeError, OSError) as e:
|
||||
# Skip modules that cannot be imported due to missing dependencies
|
||||
if use_pytest:
|
||||
pytest.skip(f'Cannot import {module_name} due to {e}')
|
||||
else:
|
||||
print(f'SKIP: Cannot import {module_name} due to {e}')
|
||||
return
|
||||
|
||||
key = 'THIS_SYMBOL_SHOULD_NOT_EXIST'
|
||||
if hasattr(module, key):
|
||||
delattr(module, key)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('module_name', module_names)
|
||||
@pytest.mark.filterwarnings('ignore::DeprecationWarning')
|
||||
@pytest.mark.filterwarnings('ignore::ImportWarning')
|
||||
def test_getattr(module_name):
|
||||
_test_getattr(module_name)
|
||||
|
||||
|
||||
def _test_module_getattr():
|
||||
warnings.filterwarnings('ignore', category=DeprecationWarning)
|
||||
warnings.filterwarnings('ignore', category=ImportWarning)
|
||||
module_name = sys.argv[1]
|
||||
_test_getattr(module_name, use_pytest=False)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('module_name', backend_module_names)
|
||||
def test_backend_getattr(module_name):
|
||||
proc = subprocess_run_helper(_test_module_getattr, module_name,
|
||||
timeout=120 if is_ci_environment() else 20)
|
||||
if 'SKIP: ' in proc.stdout:
|
||||
pytest.skip(proc.stdout.removeprefix('SKIP: '))
|
||||
print(proc.stdout)
|
||||
Reference in New Issue
Block a user