summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan van Berkom <tristan@codethink.co.uk>2020-09-23 14:30:59 +0900
committerTristan van Berkom <tristan@codethink.co.uk>2020-10-27 18:15:54 +0900
commit80d02e3b61a69886f66aed92ae24ff49956dcb3a (patch)
tree02659251eb3e89619091f47e67e67271eacfe54e
parent30f226079b2324af9a0102308a0c223c40999e21 (diff)
downloadbuildstream-80d02e3b61a69886f66aed92ae24ff49956dcb3a.tar.gz
_messenger.py: Use kwargs in timed_activity() and simple_task()
This allows more flexible usage of the APIs, to allow passing all of the Message() constructor arguments through kwargs.
-rw-r--r--src/buildstream/_messenger.py39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/buildstream/_messenger.py b/src/buildstream/_messenger.py
index b9ceb2107..43904b470 100644
--- a/src/buildstream/_messenger.py
+++ b/src/buildstream/_messenger.py
@@ -154,16 +154,16 @@ class Messenger:
#
# Args:
# activity_name (str): The name of the activity
- # element_name (str): Optionally, the element full name of the plugin related to the message
# detail (str): An optional detailed message, can be multiline output
- # silent_nested (bool): If True, all but _message.unconditional_messages are silenced
+ # silent_nested (bool): If True, all nested messages are silenced except for unconditionaly ones
+ # kwargs: Remaining Message() constructor keyword arguments.
#
@contextmanager
- def timed_activity(self, activity_name, *, element_name=None, detail=None, silent_nested=False):
+ def timed_activity(self, activity_name, *, detail=None, silent_nested=False, **kwargs):
with self.timed_suspendable() as timedata:
try:
# Push activity depth for status messages
- message = Message(MessageType.START, activity_name, detail=detail, element_name=element_name)
+ message = Message(MessageType.START, activity_name, detail=detail, **kwargs)
self.message(message)
with self.silence(actually_silence=silent_nested):
yield
@@ -172,12 +172,12 @@ class Messenger:
# Note the failure in status messages and reraise, the scheduler
# expects an error when there is an error.
elapsed = datetime.datetime.now() - timedata.start_time
- message = Message(MessageType.FAIL, activity_name, elapsed=elapsed, element_name=element_name)
+ message = Message(MessageType.FAIL, activity_name, elapsed=elapsed, **kwargs)
self.message(message)
raise
elapsed = datetime.datetime.now() - timedata.start_time
- message = Message(MessageType.SUCCESS, activity_name, elapsed=elapsed, element_name=element_name)
+ message = Message(MessageType.SUCCESS, activity_name, elapsed=elapsed, **kwargs)
self.message(message)
# simple_task()
@@ -186,30 +186,31 @@ class Messenger:
#
# Args:
# activity_name (str): The name of the activity
- # element_name (str): Optionally, the element full name of the plugin related to the message
- # full_name (str): Optionally, the distinguishing name of the activity, e.g. element name
- # silent_nested (bool): If True, all but _message.unconditional_messages are silenced
+ # task_name (str): Optionally, the task name for the frontend during this task
+ # detail (str): An optional detailed message, can be multiline output
+ # silent_nested (bool): If True, all nested messages are silenced except for unconditionaly ones
+ # kwargs: Remaining Message() constructor keyword arguments.
#
# Yields:
# Task: A Task object that represents this activity, principally used to report progress
#
@contextmanager
- def simple_task(self, activity_name, *, element_name=None, full_name=None, silent_nested=False):
+ def simple_task(self, activity_name, *, task_name=None, detail=None, silent_nested=False, **kwargs):
# Bypass use of State when none exists (e.g. tests)
if not self._state:
- with self.timed_activity(activity_name, element_name=element_name, silent_nested=silent_nested):
+ with self.timed_activity(activity_name, detail=detail, silent_nested=silent_nested, **kwargs):
yield
return
- if not full_name:
- full_name = activity_name
+ if not task_name:
+ task_name = activity_name
with self.timed_suspendable() as timedata:
try:
- message = Message(MessageType.START, activity_name, element_name=element_name)
+ message = Message(MessageType.START, activity_name, detail=detail, **kwargs)
self.message(message)
- task = self._state.add_task(full_name, activity_name, full_name)
+ task = self._state.add_task(task_name, activity_name, task_name)
task.set_render_cb(self._render_status)
self._active_simple_tasks += 1
if not self._next_render:
@@ -220,11 +221,11 @@ class Messenger:
except BstError:
elapsed = datetime.datetime.now() - timedata.start_time
- message = Message(MessageType.FAIL, activity_name, elapsed=elapsed, element_name=element_name)
+ message = Message(MessageType.FAIL, activity_name, elapsed=elapsed, **kwargs)
self.message(message)
raise
finally:
- self._state.remove_task(full_name)
+ self._state.remove_task(task_name)
self._active_simple_tasks -= 1
if self._active_simple_tasks == 0:
self._next_render = None
@@ -237,9 +238,7 @@ class Messenger:
detail = "{} of {} subtasks processed".format(task.current_progress, task.maximum_progress)
else:
detail = "{} subtasks processed".format(task.current_progress)
- message = Message(
- MessageType.SUCCESS, activity_name, elapsed=elapsed, detail=detail, element_name=element_name
- )
+ message = Message(MessageType.SUCCESS, activity_name, elapsed=elapsed, detail=detail, **kwargs)
self.message(message)
# recorded_messages()