Kinds of computation

data source

Executable classes not requiring any other resources other than the parameters are called the data source. That is to say, an Executable class is a data source if its run method overriding Executable.run does not taking any arguments. Example:

Loader(*args, **kwds) Data source loaded from disk.
data sink

Executable classes requiring other resource are called the data sink. That is to say, an Executable class is a data sink if its run method overriding Executable.run takes at least one argument. Example:

Plotter(*args, **kwds) An Assembler subclass specialized for plotting.

Executable classes which orchestrate other executable classes are called application or app. Note that an app is also a data source since it does not require additional data source. compapp.apps defines a few base classes for this purpose:

Computer(*args, **kwds) Application base class.
Memoizer(*args, **kwds) Computer with HashDataStore.

Taxonomy of executables

Various Executable subclasses provided by compapp can be understood well when kind of computations, the type of datastore and used plugins are compared.

Executables with SubDataStore require parent executable. It fits well with Loader since just loading data is useless. It also fits well with Plotter since it is a data sink, i.e., it needs data for plotting. Since Plotter needs some external data source, it makes sense that it is not a subclass of Computer.

Executable datastore Computation
Loader SubDataStore data source
Plotter SubDataStore data sink
Computer DirectoryDataStore app
Memoizer HashDataStore app