37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
import py
 | 
						|
 | 
						|
def deprecated_call(func, *args, **kwargs): 
 | 
						|
    """ assert that calling func(*args, **kwargs)
 | 
						|
        triggers a DeprecationWarning. 
 | 
						|
    """ 
 | 
						|
    oldfilters = py.std.warnings.filters[:]
 | 
						|
    onceregistry = py.std.warnings.onceregistry.copy()
 | 
						|
    try: 
 | 
						|
        py.std.warnings.onceregistry.clear()
 | 
						|
        py.std.warnings.filterwarnings("error", category=DeprecationWarning)
 | 
						|
        try:
 | 
						|
            _ = func(*args, **kwargs) 
 | 
						|
        except DeprecationWarning: 
 | 
						|
            pass
 | 
						|
        else:
 | 
						|
            print __warningregistry__
 | 
						|
            raise AssertionError("%s not deprecated" % (func,))
 | 
						|
    finally: 
 | 
						|
        py.std.warnings.filters[:] = oldfilters 
 | 
						|
        py.std.warnings.onceregistry.clear()
 | 
						|
        py.std.warnings.onceregistry.update(onceregistry) 
 | 
						|
 | 
						|
def deprecated_call(func, *args, **kwargs):
 | 
						|
    l = []
 | 
						|
    oldwarn = py.std.warnings.warn_explicit
 | 
						|
    def warn_explicit(*args, **kwargs): 
 | 
						|
        l.append(args) 
 | 
						|
        oldwarn(*args, **kwargs)
 | 
						|
        
 | 
						|
    py.magic.patch(py.std.warnings, 'warn_explicit', warn_explicit)
 | 
						|
    try:
 | 
						|
        _ = func(*args, **kwargs)
 | 
						|
    finally:
 | 
						|
        py.magic.revert(py.std.warnings, 'warn_explicit')
 | 
						|
    assert l
 |