Warning

This is old documentation, please use: https://substantic.github.io/rain/docs/

Python API

The Rain Pyton API consists of two domains that observe the workflow graph differently, although the concepts are similar and some classes are used in both contexts.

  • Code run at the client, creating sessions and task graphs, executing and querying sessions. There, the tasks are only created and declared, never actually executed.
  • Python code that runs inside remote Pyhton tasks on the governors. This code has access to the actual input data, but only sees the adjacent data objects (input and output).

Client API

Client

One instance per connection to a server.

Session

One instance per a constructed graph (possibly with multiple submits). Tied to one Client.

Data objects

Tied to a Session.

Tasks

Tied to a Session.

Attributes

Input and Output

These are helper objects are used to specify task input and output attributes. In particular, specifying an Output is the preferred way to set properties of the output DataObject.

Builtin tasks and external programs

Native Rain tasks to be run at the governors.

Data instance objects

Tied to a session and a DataObject. Also used in Remote Python tasks.

Resources

Note

TODO: Describe and document task resources.

Labeled list

Remote Python tasks

API for creating routines to be run at the governors. Created by the decorating with remote (preferred) or by Remote.

Whe specifying the remote task in the client code, the relevant classes are Remote, Input, Output, RainException, RainWarning, LabeledList and the decorateor remote.

Inside the running remote task, only RainException, RainWarning, LabeledList, DataInstance and Context are relevant.

The inputs of a Remote task are arbitrary python objects containing a DataInstance in place of every DataObject, or loaded data object if autoload=True or load=True is set on the Input.

The remote should return a list, tuple or LabeledList of DataInstance (created by Context.blob()), bytes or string.