
* Update some tests * Resolve #2122 route decorator returning tuple * Use rc sanic-routing version * Update unit tests to <:str> * Minimal working version with some signals implemented * Add more http signals * Update ASGI and change listeners to signals * Allow for dynamic ODE signals * Allow signals to be stacked * Begin tests * Prioritize match_info on keyword argument injection * WIP on tests * Compat with signals * Work through some test coverage * Passing tests * Post linting * Setup proper resets * coverage reporting * Fixes from vltr comments * clear delayed tasks * Fix bad test * rm pycache
34 lines
990 B
Python
34 lines
990 B
Python
from inspect import getmembers, getmodule
|
|
from typing import Set, Tuple, Type
|
|
|
|
from .schemes import BaseScheme
|
|
|
|
|
|
class TouchUp:
|
|
_registry: Set[Tuple[Type, str]] = set()
|
|
|
|
@classmethod
|
|
def run(cls, app):
|
|
for target, method_name in cls._registry:
|
|
method = getattr(target, method_name)
|
|
|
|
if app.test_mode:
|
|
placeholder = f"_{method_name}"
|
|
if hasattr(target, placeholder):
|
|
method = getattr(target, placeholder)
|
|
else:
|
|
setattr(target, placeholder, method)
|
|
|
|
module = getmodule(target)
|
|
module_globals = dict(getmembers(module))
|
|
|
|
for scheme in BaseScheme._registry:
|
|
modified = scheme(app)(method, module_globals)
|
|
setattr(target, method_name, modified)
|
|
|
|
target.__touched__ = True
|
|
|
|
@classmethod
|
|
def register(cls, target, method_name):
|
|
cls._registry.add((target, method_name))
|