Lines Matching refs:self
29 def __post_init__(self):
30 self.id = self.section_id_filter(self.id)
33 def has_started(self) -> bool:
34 return self.__start_time is not None
37 def has_finished(self) -> bool:
38 return self.__end_time is not None
40 def get_timestamp(self, time: datetime) -> str:
44 def section(self, marker: str, header: str, time: datetime) -> str:
45 preamble = f"{self.escape}section_{marker}"
46 collapse = marker == "start" and self.start_collapsed
48 section_id = f"{self.id}{collapsed}"
50 timestamp = self.get_timestamp(time)
52 colored_header = f"{self.colour}{header}\x1b[0m" if header else ""
53 header_wrapper = "\r" + f"{self.escape}{colored_header}"
57 def __enter__(self):
58 print(self.start())
59 return self
61 def __exit__(self, exc_type, exc_val, exc_tb):
62 print(self.end())
64 def start(self) -> str:
65 assert not self.has_finished, "Starting an already finished section"
66 self.__start_time = datetime.now()
67 return self.section(marker="start", header=self.header, time=self.__start_time)
69 def end(self) -> str:
70 assert self.has_started, "Ending an uninitialized section"
71 self.__end_time = datetime.now()
73 self.__end_time >= self.__start_time
75 return self.section(marker="end", header="", time=self.__end_time)
77 def delta_time(self) -> Optional[timedelta]:
78 if self.__start_time and self.__end_time:
79 return self.__end_time - self.__start_time
81 if self.has_started:
82 return datetime.now() - self.__start_time