SNAP CPython Adapter

SNAP CPython Adapter

Target release

2.0

Epic

https://senbox.atlassian.net/browse/SNAP-79

Document status

DRAFT

Document owner

@Former user (Deleted)

Designer

@Former user (Deleted)

Developers

@Former user (Deleted), @Marco Peters

QA

@Olga Faber (Unlicensed)

Goals

  • Let Python programmers write GPF operators using CPython and its scientific extension libraries numpy, scipy, pandas, etc.

  • It should be transparent to users how operators are implemented, e.g. using the native Java GPF API, using the Python API or using the stand-alone tools adapter.

Background and strategic fit

Scientists prefer Python over Java.

Assumptions

  • Users have Python 2.7, 3.3 or 3.4 installed.

Requirements

#

Title

User Story

Importance

Notes

#

Title

User Story

Importance

Notes

1

 

 

 

 

 

User interaction and design

A Python extension module is a JAR file or directory which must contain a plain text file META-INF/snappy.def which lists all Python extensions contained in the modulePython extension modules are found in the following locations:

  • <module-jar-file>   a module JAR file

  • ${user.home}/.snap/snappy/ext/*    the directories in directory snappy/ext in the SNAP user directory

  • ${snap.snappy.ext}   from the directory paths given in the special system property snap.snappy.ext

The text file snappy.def contains either empty lines, comment lines starting with the '#' character, or lines declaring a Python extension as follows:

[<ext-rel-path>/]<ext>      ExtClass

The type of the extension is derived from the Python class ExtClass. If the class name ends with Op it is assumed to be a GPF operator, if it ends with Action it is assumed to be an action to be placed in the menu or in a toolbar. A single <ext> may contain any number of Python classes that provide extensions to SNAP.

Each Python extension must follow this schema:

[<ext-rel-path>/]

<ext>.py   the Python code containing the class ExtClass  

<ext>-info.xml   contains the operator metadata such as processing parameter definitions (for GPF operators only)

Questions

Below is a list of questions to be addressed as a result of this requirements document:

Question

Outcome

Question

Outcome

Not Doing