Skip to main content

Python utilities for IBM Watson Studio Pipelines

Project description

IBM Watson Studio Pipelines Python Client

This package provides various utilities for working with IBM Watson Studio Pipelines. Its primary usage is to enable users to store artifact results of a notebook run.

Usage

Construction

WSPipelines client is constructed from IAM APIKEY, which can be provided in a few ways:

  • explicitly:

    from ibm_watson_studio_pipelines import WSPipelines
    
    client = WSPipelines(apikey)
    # or
    client = WSPipelines.from_apikey(apikey)
    # or
    client = WSPipelines.from_token(token)
    
  • implicitly:

    APIKEY=...
    export APIKEY
    

    or

    USER_ACCESS_TOKEN=...
    export USER_ACCESS_TOKEN
    
    from ibm_watson_studio_pipelines import WSPipelines
    
    # use APIKEY
    client = WSPipelines.from_apikey()
    
    # use USER_ACCESS_TOKEN
    client = WSPipelines.from_token()
    
    # try APIKEY, if absent then USER_ACCESS_TOKEN:
    client = WSPipelines()
    # or
    client = WSPipelines.new_instance()
    

All of the above may also define service_name and url.

The exact procedure of deciding which authentication method to use:

  1. If from_apikey or from_token is used, the method is forced.
  2. If constructor is used but either apikey or bearer_token argument was provided, that method will be forced (if both are present, an overloading error will be raised). Note that providing a nameless argument is equivalent to providing apikey.
  3. If constructor or new_instance is used, APIKEY env-var is used.
  4. If constructor or new_instance is used, but APIKEY env-var is not present, USER_ACCESS_TOKEN env-var is used.
  5. If none of the above matches, an error is returned.

Usage in Python notebooks

Notebooks run in IBM Watson Studio Pipelines get inputs and expose outputs as a node:

{
  "id": ...,
  "type": "execution_node",
  "op": "run_container",
  "app_data": {
    "pipeline_data": {
      "name": ...,
      "config": {
        "link": {
          "component_id_ref": "run-notebook"
        }
      },
      "inputs": [
        ...,
        {
          "name": "model_name",
          "group": "env_variables",
          "type": "String",
          "value_from": ...
        }
      ],
      "outputs": [
        {
          "name": "trained_model",
          "group": "output_variables",
          "type": {
            "CPDPath": {
              "path_type": "resource",
              "resource_type": "asset",
              "asset_type": "wml_model"
            }
          }
        }
      ]
    }
  },
  ...
}

Inside of the notebook, inputs are available as environmental variables:

model_name = os.environ['model_name']

Outputs are exposed using sdk method, store_results:

client = WSPipelines.from_apikey(...)
client.store_results({
  "trained_model": ... // cpd path to the trained model
})

Extracting credentials

On public cloud, this client provides a method for easy retrieval of WML instance credentials and scope storage credentials:

client.get_wml_credentials() # the scope passed in notebook
# or
client.get_wml_credentials("cpd:///projects/123456789")
client.get_storage_credentials() # the scope passed in notebook
# or
client.get_storage_credentials("cpd:///projects/123456789")

Note how the result will vary depending on the authentication method used to create the client.

CPD-Path manipulation

CPD-Path parsing is manipulation is also supported:

from ibm_watson_studio_pipelines import CpdScope, WSPipelines

client = WSPipelines.from_apikey()

scope = CpdScope.from_string("cpd:///projects/123456789")

assert scope.scope_type() == "projects"
assert scope.scope_id() == "123456789"

client.get_wml_credentials(scope)

Different kinds of CPD-Paths will have different properties, providing the same interface across scopes, resource and file paths:

from ibm_watson_studio_pipelines import CpdPath

scope_file_path = CpdPath.from_string("cpd:///projects/123456789/files/abc/def")
assert scope_file_path.scope_type() == "projects"
assert scope_file_path.scope_id() == "123456789"
assert scope_file_path.file_path() == "/abc/def"

connection_path = CpdPath.from_string("cpd:///projects/123456789/connections/3141592")
assert connection_path.scope_type() == "projects"
assert connection_path.scope_id() == "123456789"
assert connection_path.resource_type() == "connections"
assert connection_path.resource_id() == "3141592"

connection_file_path = CpdPath.from_string("cpd:///projects/123456789/connections/3141592/files/~/abc/def")
assert connection_file_path.scope_type() == "projects"
assert connection_file_path.scope_id() == "123456789"
assert connection_file_path.resource_type() == "connections"
assert connection_file_path.resource_id() == "3141592"
assert connection_file_path.bucket_name() == "~"
assert connection_file_path.file_path() == "/abc/def"

...additionally, for non-scope paths the scope can be extracted, if present:

from ibm_watson_studio_pipelines import CpdPath

scope_path = CpdPath.from_string("cpd:///projects/123456789")
connection_path = CpdPath.from_string("cpd:///projects/123456789/connections/3141592")
assert connection_path.scope() == scope_path

Contribution

See a separate document on contribution.

Project details


Download files

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

Source Distribution

ibm-watson-studio-pipelines-0.2.10.tar.gz (30.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ibm_watson_studio_pipelines-0.2.10-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file ibm-watson-studio-pipelines-0.2.10.tar.gz.

File metadata

  • Download URL: ibm-watson-studio-pipelines-0.2.10.tar.gz
  • Upload date:
  • Size: 30.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.12

File hashes

Hashes for ibm-watson-studio-pipelines-0.2.10.tar.gz
Algorithm Hash digest
SHA256 3a399b7fd618df29cd3ae319d9f6b4bc6f323dde9313745507e229023c721ca1
MD5 14bcd4354ab662549d54a15f8fe2762d
BLAKE2b-256 f973e9d6b9649faf2ec82622899666bd56ab4f0189319bf3474b2952eae7499d

See more details on using hashes here.

File details

Details for the file ibm_watson_studio_pipelines-0.2.10-py3-none-any.whl.

File metadata

  • Download URL: ibm_watson_studio_pipelines-0.2.10-py3-none-any.whl
  • Upload date:
  • Size: 29.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.9.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.12

File hashes

Hashes for ibm_watson_studio_pipelines-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 1d81a9589da2019b97853d15d69af57c1083b23f1fb08458d828b5e931963fc1
MD5 2bdffe83be1186f46153548f6239b7c2
BLAKE2b-256 65ba24a27ef81d48c8191b2d509ead9c597dfff9b721778614845df99ac78af8

See more details on using hashes here.

Supported by

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