24 lines
		
	
	
		
			703 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			703 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from sanic.base.meta import SanicMeta
 | |
| from sanic.exceptions import SanicException
 | |
| 
 | |
| from .service import TouchUp
 | |
| 
 | |
| 
 | |
| class TouchUpMeta(SanicMeta):
 | |
|     def __new__(cls, name, bases, attrs, **kwargs):
 | |
|         gen_class = super().__new__(cls, name, bases, attrs, **kwargs)
 | |
| 
 | |
|         methods = attrs.get("__touchup__")
 | |
|         attrs["__touched__"] = False
 | |
|         if methods:
 | |
| 
 | |
|             for method in methods:
 | |
|                 if method not in attrs:
 | |
|                     raise SanicException(
 | |
|                         "Cannot perform touchup on non-existent method: "
 | |
|                         f"{name}.{method}"
 | |
|                     )
 | |
|                 TouchUp.register(gen_class, method)
 | |
| 
 | |
|         return gen_class
 | 
