Contributing

Licensing

Autoprotocol-Python is BSD licensed (see LICENSE). Before we can accept your pull request, we require that you sign a CLA (Contributor License Agreement) allowing us to distribute your work under the BSD license. Email one of the AUTHORS or support@transcriptic.com for more details.

Features and Bugs

The easiest way to contribute is to fork this repository and submit a pull request. You can also submit an issue or write an email to us at support@transcriptic.com if you want to discuss ideas or bugs.

Package Structure

Protocol

  • Primary user interface for Autoprotocol Python
  • Represent high level abstractions around instructions, refs, and constraints
  • Have more situational checks than those in Builders or Instruction
  • Have simple arguments that are as flat as possible, ideally with no nesting
  • Don’t necessarily have a 1:1 mapping to an Instruction
    • a single call may generate multiple Instruction instances
    • a complicated, modal Instruction may have multiple corresponding Protocol methods
    • significantly complex instructions (e.g. LiquidHandle) may require parametrization with user-configurable class instances to avoid overloading the Protocol method with too many arguments

Builders

  • Constructors for nested Instruction parameters
  • Assigned to the builders attribute of their corresponding Instruction
  • Only contain checks that are valid for all instances of their corresponding Instruction
  • Check the relationship between parameters
    • a modal Instruction generally has mode_params that depend on the specified mode (e.g. LiquidHandle and Spectrophotometry.groups)
    • parameters like shape are very interdependent, and only certain combinations of rows, columns, and format are physically possible

Instruction

  • Code analogue of an Autoprotocol Instruction; constructs Instruction JSON
  • __init___ parameters mirror structure of Autoprotocol Instruction
  • Only validate the type, structure, and extent of their inputs