Skip to main content

Tetrascience Python SDK

Project description

ts-sdk

Tetrascience Python SDK

Version

v2.0.2

Table of Contents

Install

pip3 install ts-sdk

Usage

Init a new protocol

ts-sdk init -o <org> -p <protocol-slug> -t <task-script-slug> -f <protocol-folder>
cd <protocol-folder>/task-script
pipenv install --dev
# task-script code modifications...
pipenv run pytest

Upload artifact

export TS_ORG=<your-org-slug>
export TS_API_URL=https://api.tetrascience.com/v1
export TS_AUTH_TOKEN=<token>
ts-sdk put <ids|protocol|task-script> <namespace> <slug> <version> <artifact-folder>

It's also possible to use the configuration JSON file (cfg.json):

{
    "api_url": "https://api.tetrascience.com/v1",
    "auth_token": "your-token",
    "org": "your-org",
    "ignore_ssl": false
}

Usage: ts-sdk put <ids|protocol|task-script> <namespace> <slug> <version> <artifact-folder> -c cfg.json

IDS Validation

When uploading IDS artifact, validation will be performed using ts-ids-validator package. Validation failures for IDS will be printed on the console.

Task Script

Config.json

Overview

All Task Scripts have a config.json file that describes:

  • what language a Task Script is written in
  • the functions a Task Script has available for a Protocol to use
  • the runnerType, an optional field that is only used when letting the artifact builder know a Windows script (identified by using the value “windows-script”) is being built
  • the maxCount of container instances that will be used by the task
  • and an optional field describing the amount of memory a task will need, memoryInMB

Allowed IDS

Within the functions object of the configuration, the optional field allowedIds describes the IDS types a Task Script can produce.

The allowedIds field is used by the Context API's context.write_file (when writing an IDS) and context.write_ids functions to validate that the ids parameter of either function is allowed before writing an IDS.

allowedIds can be used in the following ways:

  1. A single object with three properties: namespace, slug, version

    • When a function only generates one kind of IDS

    • The ids parameter of the context.write_file and context.write_ids functions are optional since there is only one value in the allowedIds field

    • Example:

      "functions": [
        {
          "slug": "generates-ids",
          "function": "main.generate_ids",
          "allowedIds": {
            "namespace": "common",
            "slug": "my-ids",
            "version": "v1.0.0"
          }
        }
      ]
      
  2. An array of those objects with the three properties: namespace, slug, version

    • When a function can generate multiple IDS types

    • The ids parameter of the context.write_file and context.write_ids functions is required and will be validated against the allowedIds to confirm the task script is allowed to write that IDS

    • Example:

      "functions": [
        {
          "slug": "generates-ids",
          "function": "main.generate_ids",
          "allowedIds": [
            {
             "namespace": "common",
             "slug": "my-ids",
             "version": "v1.0.0"
            },
            {
             "namespace": "common",
             "slug": "my-ids",
             "version": "v1.1.0"
            },
            {
             "namespace": "common",
             "slug": "my-other-ids",
             "version": "v1.0.0"
            }
          ]
        }
      ]
      
  3. null

    • When a function does not generate any IDS

    • Calls to context.write_file (when file_category is “IDS”) and context.write_ids will raise an exception

      • When the file_category parameter is not "IDS", then context.write_file is not writing an IDS and therefore will not raise an exception
    • Example:

      "functions": [
        {
          "slug": "generates-ids",
          "function": "main.generate_ids",
          "allowedIds": null
        }
      ]
      
  4. allowedIds not defined

Changelog

v2.0.2

  • Update IDS artifact validation: now when using ts-sdk put to upload an IDS artifact, breaking change validation runs by downloading and comparing the previous version of the IDS from the Tetra Data Platform - see the ts-ids-validator package for more detail.

v2.0.1

  • Pin tenacity dependency to resolve compatibility issue with latest version

v2.0.0

  • Secure mode + bug fixes

v1.4.2

  • upgrade smart_open (v4.2.0v6.3.0)

v1.4.1

  • Make allowedIDS non-mandatory for task-script, to maintain backward compatibility

v1.4.0

  • Added functionality to support allowedIds feature

v1.3.10

  • Internal fixes (/update-status API call retry)

v1.3.9

CLI Improvements

  • Make artifact build failure more evident to the user
  • ts-sdk put will check for requirements.txt file before uploading

Context Function Improvements

  • Add support to write_file to receive a dictionary instead of only strings
  • Validate dictionary inputs to write_file against IDS
  • Enforce IDS input to write_ids must be a dictionary
  • Validate length of the name and value of labels
  • Validate labels more thoroughly, in more places
  • Add a new DataClass for better label definition

Other

  • All code formatted with black
  • Adjust abstract dependencies in setup.py to be less strict so that it will work better within task scripts
  • Replace json library with simplejsonfor speed and usability

v1.3.8

  • Internal fixes (secrets handling)

v1.3.7

  • Add --exclude-folders argument to ts-sdk put task-script that excludes common folders that generally do not need to be part of the uploaded task script (e.g. .git, example-input, __tests__)
  • Add local check to prevent uploading artifacts using ts-sdk put that would be rejected by the server for being too large
  • Improve error messages for adding invalid labels to files

v1.3.6

  • Add new s3 meta:
    • DO_NOT_INHERIT_LABELS
    • CONTENT_CREATED_FROM_FILE_ID

v1.3.5

  • Fix bug where datalake file_key was incorrectly generated

v1.3.2

  • Update context.write_file() to validate file upload path
  • Fix logging issues
  • Improve namespace validation
  • Update print functionality to be more accurate and group arguments to the same call together

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ts_sdk-2.0.2.tar.gz (57.2 kB view details)

Uploaded Source

Built Distribution

ts_sdk-2.0.2-py3-none-any.whl (73.5 kB view details)

Uploaded Python 3

File details

Details for the file ts_sdk-2.0.2.tar.gz.

File metadata

  • Download URL: ts_sdk-2.0.2.tar.gz
  • Upload date:
  • Size: 57.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for ts_sdk-2.0.2.tar.gz
Algorithm Hash digest
SHA256 5f8b0b3ff878209b8dd182abca434c05248eef68cb4dd52932b72c2e26f8da26
MD5 d7260576569e470d0285a1cfd1ecd561
BLAKE2b-256 c92d6901baf1c80dab672a0123993aa1d2fd31e6c4a25b2a5a8f395b0ae12bfd

See more details on using hashes here.

File details

Details for the file ts_sdk-2.0.2-py3-none-any.whl.

File metadata

  • Download URL: ts_sdk-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 73.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for ts_sdk-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 638df606bd893e2ba0bb88f6292344660413b90c93280dcabb6ae840ac5169a5
MD5 d020e3dbfdfa6f33409684ad81928344
BLAKE2b-256 d06b672c55c038cb02b4b8183394b75ae3be2e70bcf8f30a3fe3be14f70a8f36

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page