You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2022/07/26 06:20:19 UTC
[buildstream] 02/03: _message.py: Add type annotations
This is an automated email from the ASF dual-hosted git repository.
tvb pushed a commit to branch tristan/print-error-messages-before-prompt
in repository https://gitbox.apache.org/repos/asf/buildstream.git
commit a65f18cbe15c9e7b71531bf48ba9df6147c67818
Author: Tristan van Berkom <tr...@codethink.co.uk>
AuthorDate: Tue Jul 26 15:13:36 2022 +0900
_message.py: Add type annotations
---
src/buildstream/_message.py | 57 +++++++++++++++++++++++--------------------
src/buildstream/_messenger.py | 1 +
2 files changed, 31 insertions(+), 27 deletions(-)
diff --git a/src/buildstream/_message.py b/src/buildstream/_message.py
index 538d385d7..c54398c39 100644
--- a/src/buildstream/_message.py
+++ b/src/buildstream/_message.py
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2017 Codethink Limited
+# Copyright (C) 2022 Codethink Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,6 +18,9 @@
import datetime
import os
+from typing import Optional
+
+from .types import _DisplayKey
# Types of status messages.
@@ -48,33 +51,33 @@ unconditional_messages = [MessageType.INFO, MessageType.WARN, MessageType.FAIL,
class Message:
def __init__(
self,
- message_type,
- message,
+ message_type: str,
+ message: str,
*,
- task_element_name=None,
- task_element_key=None,
- element_name=None,
- element_key=None,
- detail=None,
- action_name=None,
- elapsed=None,
- logfile=None,
- sandbox=False,
- scheduler=False
+ task_element_name: Optional[str] = None,
+ task_element_key: Optional[_DisplayKey] = None,
+ element_name: Optional[str] = None,
+ element_key: Optional[_DisplayKey] = None,
+ detail: str = None,
+ action_name: str = None,
+ elapsed: Optional[datetime.timedelta] = None,
+ logfile: str = None,
+ sandbox: bool = False,
+ scheduler: bool = False
):
- self.message_type = message_type # Message type
- self.message = message # The message string
- self.task_element_name = task_element_name # The name of the issuing task element
- self.task_element_key = task_element_key # The DisplayKey of the issuing task element
- self.element_name = element_name # The name of the issuing element
- self.element_key = element_key # The DisplayKey of the issuing element
- self.detail = detail # An additional detail string
- self.action_name = action_name # Name of the task queue (fetch, refresh, build, etc)
- self.elapsed = elapsed # The elapsed time, in timed messages
- self.logfile = logfile # The log file path where commands took place
- self.sandbox = sandbox # Whether the error that caused this message used a sandbox
- self.pid = os.getpid() # The process pid
- self.scheduler = scheduler # Whether this is a scheduler level message
- self.creation_time = datetime.datetime.now()
+ self.message_type: str = message_type # Message type
+ self.message: str = message # The message string
+ self.task_element_name: Optional[str] = task_element_name # The name of the issuing task element
+ self.task_element_key: Optional[_DisplayKey] = task_element_key # The DisplayKey of the issuing task element
+ self.element_name: Optional[str] = element_name # The name of the issuing element
+ self.element_key: Optional[_DisplayKey] = element_key # The DisplayKey of the issuing element
+ self.detail: Optional[str] = detail # An additional detail string
+ self.action_name: Optional[str] = action_name # Name of the task queue (fetch, refresh, build, etc)
+ self.elapsed: Optional[datetime.timedelta] = elapsed # The elapsed time, in timed messages
+ self.logfile: Optional[str] = logfile # The log file path where commands took place
+ self.sandbox: bool = sandbox # Whether the error that caused this message used a sandbox
+ self.pid: int = os.getpid() # The process pid
+ self.scheduler: bool = scheduler # Whether this is a scheduler level message
+ self.creation_time: datetime.datetime = datetime.datetime.now()
if message_type in (MessageType.SUCCESS, MessageType.FAIL):
assert elapsed is not None
diff --git a/src/buildstream/_messenger.py b/src/buildstream/_messenger.py
index 71f8eda99..93b1db927 100644
--- a/src/buildstream/_messenger.py
+++ b/src/buildstream/_messenger.py
@@ -545,6 +545,7 @@ class Messenger:
timecode = EMPTYTIME
if message.message_type in (MessageType.SUCCESS, MessageType.FAIL):
+ assert message.elapsed is not None
hours, remainder = divmod(int(message.elapsed.total_seconds()), 60**2)
minutes, seconds = divmod(remainder, 60)
timecode = "{0:02d}:{1:02d}:{2:02d}".format(hours, minutes, seconds)