You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
from importlib import import_module
 | 
						|
from pkgutil import walk_packages
 | 
						|
 | 
						|
import matplotlib
 | 
						|
import pytest
 | 
						|
 | 
						|
# Get the names of all matplotlib submodules,
 | 
						|
# except for the unit tests and private modules.
 | 
						|
module_names = [
 | 
						|
    m.name
 | 
						|
    for m in walk_packages(
 | 
						|
        path=matplotlib.__path__, prefix=f'{matplotlib.__name__}.'
 | 
						|
    )
 | 
						|
    if not m.name.startswith(__package__)
 | 
						|
    and not any(x.startswith('_') for x in m.name.split('.'))
 | 
						|
]
 | 
						|
 | 
						|
 | 
						|
@pytest.mark.parametrize('module_name', module_names)
 | 
						|
@pytest.mark.filterwarnings('ignore::DeprecationWarning')
 | 
						|
@pytest.mark.filterwarnings('ignore::ImportWarning')
 | 
						|
def test_getattr(module_name):
 | 
						|
    """
 | 
						|
    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
 | 
						|
        pytest.skip(f'Cannot import {module_name} due to {e}')
 | 
						|
 | 
						|
    key = 'THIS_SYMBOL_SHOULD_NOT_EXIST'
 | 
						|
    if hasattr(module, key):
 | 
						|
        delattr(module, key)
 |