Architecture

The following diagram shows the architecture of the \(\Psi\)-TaLiRo library. This diagram outlines the data flow and the connections of the different components as well as identifies which components can be implemented by users.

_images/architecture.svg

Architecture diagram of \(\Psi\)-TaLiRo library

The following sections contain further discussion of any design decisions.

Components

Each component is represented using a python Abstract Base Class (ABC), which allows us to test for sub-class membership so we can ensure that the necessary behavior is satisfied. This approach was selected over using Protocol classes or plain functions because protocols define structural rather than nominal sub-typing (which is harder to enforce), and plain functions are not checkable beyond testing if they are callable.