.. _doot.reporters.basic: ==================== doot.reporters.basic ==================== .. py:module:: doot.reporters.basic Type Aliases ------------ .. autoapisummary:: doot.reporters.basic.TreeElem Classes ------- .. autoapisummary:: doot.reporters.basic.BaseGroup doot.reporters.basic.TreeGroup doot.reporters.basic.WorkflowGroup doot.reporters.basic.GenGroup doot.reporters.basic.SummaryGroup doot.reporters.basic.BasicReporter Module Contents =============== .. py:data:: TreeElem :type: TypeAlias :value: None | str | list[TreeElem] | dict[str, TreeElem] | tuple[str, TreeElem] .. _doot.reporters.basic.BaseGroup: .. py:class:: BaseGroup(*, log: logmod.Logger, fmt: doot.reporters.formatter.ReportFormatter, lvl: int = logmod.DEBUG) .. py:attribute:: _log :type: logmod.Logger .. py:attribute:: _fmt :type: doot.reporters._interface.ReportFormatter_p .. py:attribute:: _lvl :type: int .. py:attribute:: _entry_count :value: 0 .. py:attribute:: _stack .. py:property:: state :type: doot.reporters._interface.ReportStackEntry_d .. py:method:: _out(key: str, *, info: jgdv.Maybe = None, msg: jgdv.Maybe = None, level: int = 0) -> None reporter groups delegate formatting and logging/printing to this method .. py:method:: push_state(state: str, **kwargs: Any) -> Self .. py:method:: pop_state() -> Self .. py:method:: gap() -> Self .. py:method:: line(msg: jgdv.Maybe[str] = None, char: jgdv.Maybe[str] = None) -> Self .. _doot.reporters.basic.TreeGroup: .. py:class:: TreeGroup(**kwargs: Any) Bases: :py:obj:`BaseGroup`, :py:obj:`doot.reporters._interface.TreeGroup_p` Methods to report a tree of data. eg: a tree of jobs/tasks and their dependencies data format is a nesting of list, where each sublist is a branch .. py:attribute:: _labels :type: dict .. py:method:: _label(key: str) -> str .. py:method:: tree(data: dict | list, *, title: jgdv.Maybe[str] = None) -> Self .. py:method:: root(title: jgdv.Maybe[str] = None) -> Self .. py:method:: branch(name: str | doot.workflow._interface.TaskName_p, info: jgdv.Maybe[str] = None) -> Self .. py:method:: leaf(msg: str, level: int = 0) -> Self .. py:method:: unbranch() -> Self .. py:method:: finished() -> Self .. _doot.reporters.basic.WorkflowGroup: .. py:class:: WorkflowGroup(*, log: logmod.Logger, fmt: doot.reporters.formatter.ReportFormatter, lvl: int = logmod.DEBUG) Bases: :py:obj:`BaseGroup`, :py:obj:`doot.reporters._interface.WorkflowGroup_p` Methods for reporting the progress of a workflow eg: marking start/end of workflow, entry/exit of tasks, action content... .. py:method:: root() -> Self .. py:method:: wait() -> Self .. py:method:: act(info: str, msg: str, level: int = 0) -> Self .. py:method:: branch(name: str | doot.workflow._interface.TaskName_p, info: jgdv.Maybe[str] = None) -> Self .. py:method:: resume(name: str | doot.workflow._interface.TaskName_p) -> Self .. py:method:: pause(reason: str) -> Self .. py:method:: result(state: list[str], info: jgdv.Maybe[str] = None) -> Self .. py:method:: fail(*, info: jgdv.Maybe[str] = None, msg: jgdv.Maybe[str] = None) -> Self .. py:method:: finished() -> Self .. py:method:: queue(num: int) -> Self :abstractmethod: .. py:method:: state_result(*vals: str) -> Self :abstractmethod: .. _doot.reporters.basic.GenGroup: .. py:class:: GenGroup(*, log: logmod.Logger, fmt: doot.reporters.formatter.ReportFormatter, lvl: int = logmod.DEBUG) Bases: :py:obj:`BaseGroup`, :py:obj:`doot.reporters._interface.GeneralGroup_p` General user level messaging .. py:method:: header(*, header: jgdv.Maybe[str] = None) -> Self .. py:method:: user(msg: str, *rest: Any, **kwargs: Any) -> Self .. py:method:: trace(msg: str, *rest: Any, **kwargs: Any) -> Self .. py:method:: detail(msg: str, *rest: Any, **kwargs: Any) -> Self .. py:method:: failure(msg: str, *rest: Any, **kwargs: Any) -> Self .. py:method:: warn(msg: str, *rest: Any, **kwargs: Any) -> Self .. py:method:: error(msg: str, *rest: Any, **kwargs: Any) -> Self .. _doot.reporters.basic.SummaryGroup: .. py:class:: SummaryGroup(**kwargs: Any) Bases: :py:obj:`BaseGroup`, :py:obj:`doot.reporters._interface.SummaryGroup_p` A reporter group for producing a summary at end of the workflow. eg: success/failures, actions performed, time taken... .. py:attribute:: _start :type: jgdv.Maybe[jgdv.DateTime] .. py:attribute:: _end :type: jgdv.Maybe[jgdv.DateTime] .. py:attribute:: _subgroups :type: dict[str, list] .. py:method:: start() -> None :abstractmethod: Set the Start Time .. py:method:: finish() -> None :abstractmethod: Set the End Time .. py:method:: add(key: str, *vals: Any) -> Self :abstractmethod: Add a summary group value .. py:method:: summarise(*, state: bool = True) -> Self Output the summary that has been accumulated .. _doot.reporters.basic.BasicReporter: .. py:class:: BasicReporter(*args: Any, logger: jgdv.Maybe[logmod.Logger] = None, segments: jgdv.Maybe[dict] = None, **kwargs: Any) The initial reporter for prior to configuration .. py:attribute:: _entry_count :value: 0 .. py:attribute:: _fmt .. py:attribute:: _logger .. py:attribute:: _stack :value: [] .. py:attribute:: _tree .. py:attribute:: _workflow .. py:attribute:: _general .. py:attribute:: _summary .. py:property:: state :type: doot.reporters._interface.ReportStackEntry_d .. py:property:: wf :type: doot.reporters._interface.WorkflowGroup_p .. py:property:: gen :type: doot.reporters._interface.GeneralGroup_p .. py:property:: tree :type: doot.reporters._interface.TreeGroup_p .. py:property:: summary :type: doot.reporters._interface.SummaryGroup_p .. py:property:: log :type: logmod.Logger .. py:method:: active_level(level: int) -> None Set the base level the reporter will log at. .. py:method:: push_state(state: str, **kwargs: Any) -> Self .. py:method:: pop_state() -> Self