Tetrascience Python SDK
Project description
ts-sdk
Tetrascience Python SDK
Version
v2.0.0
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:
-
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 theallowedIds
field -
Example:
"functions": [ { "slug": "generates-ids", "function": "main.generate_ids", "allowedIds": { "namespace": "common", "slug": "my-ids", "version": "v1.0.0" } } ]
-
-
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 theallowedIds
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" } ] } ]
-
-
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
- When the
-
Example:
"functions": [ { "slug": "generates-ids", "function": "main.generate_ids", "allowedIds": null } ]
-
-
allowedIds
not defined- Any IDS JSON can be written via context.write_file or context.write_ids
- no allowed IDSs are specified, so no check is performed
- Any IDS JSON passed to the context.write_file or context.write_ids still has to pass validation against the IDS specified by the
ids
parameter
- Any IDS JSON can be written via context.write_file or context.write_ids
Changelog
v2.0.0
- Secure mode + bug fixes
v1.4.2
- upgrade
smart_open
(v4.2.0
→v6.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 forrequirements.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 withsimplejson
for speed and usability
v1.3.8
- Internal fixes (secrets handling)
v1.3.7
- Add
--exclude-folders
argument tots-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 Distributions
Built Distribution
Hashes for ts_sdk-2.0.0rc8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b999bfc6193b44cf79a7bb84df9c8a4041b6e9f59012aba43fc24675ae225cbf |
|
MD5 | c328f8136dde43e36a4568ffccb4c82f |
|
BLAKE2b-256 | 4da9dd6c71376c4b66a743ba32e9df3634f2a1501e42217fd1d63f8d8d06d298 |