
To integrate with the pbsmrtpipe workflow engine, one must to be able to generate a Tool Contract and to be able to run from a Resolved Tool Contract. A Tool Contract contains the metadata of the exe, such as the file types of inputs, outputs and options. There are two principal use cases, first wrapping/calling Python functions that have been defined in external Python 3 packages, or scripts. Second, creating a CLI tool that supports emitting tool contracts, running resolved tool contracts and complete argparse-style CLI.