From 864ded60ae40c621ccab4cf6f9721f81fa02ee34 Mon Sep 17 00:00:00 2001 From: Sergei Trofimov Date: Wed, 30 May 2018 11:22:14 +0100 Subject: [PATCH] fw/instrument: use signal priorities Use signal priorities to define priority decorators, rather than defining own priority enum. --- doc/build_instrument_method_map.py | 5 +++-- wa/__init__.py | 4 ++-- wa/framework/instrument.py | 21 ++++++++++----------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/doc/build_instrument_method_map.py b/doc/build_instrument_method_map.py index ae06edde..ad5bea4d 100644 --- a/doc/build_instrument_method_map.py +++ b/doc/build_instrument_method_map.py @@ -18,7 +18,8 @@ import sys import string from copy import copy -from wa.framework.instrument import SIGNAL_MAP, Priority +from wa.framework.instrument import SIGNAL_MAP +from wa.framework.signal import CallbackPriority from wa.utils.doc import format_simple_table @@ -36,7 +37,7 @@ def escape_trailing_underscore(value): def generate_instrument_method_map(outfile): signal_table = format_simple_table([(k, v) for k, v in SIGNAL_MAP.iteritems()], headers=['method name', 'signal'], align='<<') - priority_table = format_simple_table(zip(Priority.names, Priority.values), + priority_table = format_simple_table(zip(CallbackPriority.names, CallbackPriority.values), headers=['decorator', 'priority'], align='<>') with open(OUTPUT_TEMPLATE_FILE) as fh: template = string.Template(fh.read()) diff --git a/wa/__init__.py b/wa/__init__.py index 7ab0da00..f0e7262b 100644 --- a/wa/__init__.py +++ b/wa/__init__.py @@ -7,8 +7,8 @@ from wa.framework.exception import (CommandError, ConfigError, HostError, Instru PluginLoaderError, ResourceError, TargetError, TargetNotRespondingError, TimeoutError, ToolError, ValidationError, WAError, WorkloadError, WorkerThreadError) -from wa.framework.instrument import (Instrument, very_slow, slow, normal, fast, - very_fast) +from wa.framework.instrument import (Instrument, extremely_slow, very_slow, slow, normal, fast, + very_fast, extremely_fast) from wa.framework.output import RunOutput, discover_wa_outputs from wa.framework.output_processor import OutputProcessor from wa.framework.plugin import Plugin, Parameter, Alias diff --git a/wa/framework/instrument.py b/wa/framework/instrument.py index 0c8f46a2..5c3aee0c 100644 --- a/wa/framework/instrument.py +++ b/wa/framework/instrument.py @@ -108,7 +108,7 @@ from wa.framework.exception import (WAError, TargetNotRespondingError, TimeoutEr WorkloadError, TargetError) from wa.utils.log import log_error from wa.utils.misc import isiterable -from wa.utils.types import identifier, enum, level +from wa.utils.types import identifier, level logger = logging.getLogger('instruments') @@ -156,9 +156,6 @@ SIGNAL_MAP = OrderedDict([ ]) -Priority = enum(['very_slow', 'slow', 'normal', 'fast', 'very_fast'], -20, 10) - - def get_priority(func): return getattr(getattr(func, 'im_func', func), 'priority', Priority.normal) @@ -169,8 +166,8 @@ def priority(priority): def wrapper(*args, **kwargs): return func(*args, **kwargs) wrapper.func_name = func.func_name - if priority in Priority.levels: - wrapper.priority = Priority(priority) + if priority in signal.CallbackPriority.levels: + wrapper.priority = signal.CallbackPriority(priority) else: if not isinstance(priority, int): msg = 'Invalid priorty "{}"; must be an int or one of {}' @@ -180,11 +177,13 @@ def priority(priority): return decorate -very_slow = priority(Priority.very_slow) -slow = priority(Priority.slow) -normal = priority(Priority.normal) -fast = priority(Priority.fast) -very_fast = priority(Priority.very_fast) +extremely_slow = priority(signal.CallbackPriority.extremely_low) +very_slow = priority(signal.CallbackPriority.very_low) +slow = priority(signal.CallbackPriority.low) +normal = priority(signal.CallbackPriority.normal) +fast = priority(signal.CallbackPriority.high) +very_fast = priority(signal.CallbackPriority.very_high) +extremely_fast = priority(signal.CallbackPriority.extremely_high) installed = []