Wrapper API

The following are wrappers around common Orion data types that allow for simplified testing of workfloes.

Copyright (C) 2023 Cadence Design Systems, Inc. (Cadence)

Utilities

wrappers.using_orion() bool

Method to check whether the tests are being run against Orion

WorkFloe Wrapper

class artemis.wrappers.WorkFloeWrapper(workfloe_path='', upload=False, run_timeout=600, queue_timeout=600, reuse: bool = False, package=None, workfloe_spec=None, orion_job=None, using_orion=NOTHING, last_refresh=None, start_time=None, local_job=NOTHING)
cancel() None

Cancels a running workfloe, only useful when running a job as non-blocking in Orion.

classmethod get_workfloe(workfloe_path: str, run_timeout: int = 600, queue_timeout: int = 600, upload: bool = False, package=None) WorkFloeWrapper

Create a WorkFloeWrapper that will be cleaned up at the end of the tests

Parameters:
  • workfloe_path (string) – Path to the local workfloe

  • run_timeout (int) – How long to run floe before canceling

  • queue_timeout (int) – How long to wait for the floe to start Only used when testing against Orion

  • upload (bool) – Tries to upload floe to Orion and expects cubes to already be on orion. WARNING: Preliminary API that is fragile

Returns:

WorkFloeWrapper

Return type:

WorkFloeWrapper

property identifier: int | str

Returns either the path of the WorkFloe or the Orion WorkFloe Job Id that specifies the Job

Returns:

Workfloe Path or Orion Job Id

property logs: Generator[None, None, Any]

Returns an iterator of bytes that makes up the Job Logs

Locally raises an ArtemisError :rtype: iter

property reason: str

The reason for why the state is the way it is. If the reason isn’t empty then something went wrong

Locally always returns “” :rtype: string

start(parameters: Dict, name: str = '', block: bool = True) None

Triggers the Workfloe to be run.

Parameters:
  • parameters (dict) – Parameters to run the Floe with, see below

  • name (string) – Optional name to give floe, otherwise it will default to the path name

  • block (bool) – Whether the call to start should block or not, only supported if testing against orion

Raises:

WorkFloeException: Something went wrong while running the floe

Returns:

None

The parameter dictionary is expected to be structured as follows

{
  "promoted": {
    "promoted_name": "value"
  },
  "cube": {
    "cube_name": {
      "param_name": "value"
    }
  }
}
property state: str

The state of the Workfloe as it is right now

Locally always returns complete :rtype: string

property status: Dict

Retrieves the status of the Workfloe job. The status is the summary of the current job.

Locally raises an ArtemisError :rtype: dict

wait(max_wait: int = 600) None

Waits on Workfloe until it is complete

Should only be used if you are running workfloes in a non-blocking manner

Input Wrappers

DatasetWrapper

class artemis.wrappers.DatasetWrapper(dataset_path='', dataset_obj=None)
classmethod from_file(dataset_path: str, reuse: bool = False) DatasetWrapper

Create a DatasetWrapper that will be cleaned up at the end of the tests

Parameters:
  • dataset_path (string) – Path to the local dataset (.oedb)

  • reuse (bool) – Whether to cache the dataset for testing

Returns:

DatasetWrapper

Return type:

DatasetWrapper

classmethod get_dataset(dataset_path: str, reuse: bool = False) DatasetWrapper

Create a DatasetWrapper that will be cleaned up at the end of the tests

Parameters:
  • dataset_path (string) – Path to the local dataset (.oedb)

  • reuse (bool) – Whether to cache the dataset for testing

Returns:

DatasetWrapper

Return type:

DatasetWrapper

property identifier: int | str

Provides the File Path or the Orion Dataset Id to the resource that is being used.

Returns:

Dataset path or Orion Dataset Id

FileWrapper

class artemis.wrappers.FileWrapper(file_path='', file_obj=None, reuse=True)
classmethod from_file(file_path: str, reuse: bool = False) FileWrapper

Create a FileWrapper that will be cleaned up at the end of the tests

Parameters:
  • file_path (string) – Path to the local file

  • reuse (bool) – Whether to cache the file for testing

Returns:

FileWrapper

Return type:

FileWrapper

classmethod get_file(file_path: str, reuse: bool = False) FileWrapper

Create a FileWrapper that will be cleaned up at the end of the tests

Parameters:
  • file_path (string) – Path to the local file

  • reuse (bool) – Whether to cache the file for testing

Returns:

FileWrapper

Return type:

FileWrapper

property identifier: int | str

Provides the File Path or the Orion File Id to the resource that is being used.

Returns:

File path or Orion File Id

CollectionWrapper

class artemis.wrappers.CollectionWrapper(resource=None, num_shards: int = 0, v2=False)

Utility for testing floes that require Collections.

Requires an authenticated Orion Client to perform creation of ShardCollection objects, even if not running tests against orion.

classmethod from_collection(collection: ShardCollection) CollectionWrapper

Provide a preconstructed collection as input. Allows for automatic clean up collections as a part of Artemis cleanup.

classmethod from_file(file_path: str, as_records: bool = True, num_shards: int = 10, v2: bool = False) CollectionWrapper

Convert a file into a collection automatically.

Parameters:
  • file_path (string) – Path to file, must be readable by OEChem

  • as_records (bool) – Convert molecular file to records, otherwise writes as oeb.gz

  • num_shards (int item per shard if unable to pack in the requested number of shards.) – Number of shards to create from file, defaults to 1

property identifier: int

Returns the id of the collection

Returns:

Collection id

Return type:

int

property metadata: Dict

Returns the metadata of the collection

Returns:

Collection metadata

Return type:

dict

Output Wrappers

OutputDatasetWrapper

class artemis.wrappers.OutputDatasetWrapper(dataset_name='', extension='.oedb', temp=None, orion_resource=None)

A Utility class to be able to retrieve the output values of a dataset

property count: int

Return the number of records in a dataset

Returns:

Number of records in dataset

Return type:

int

property identifier: str

Provides the output name of the Dataset, this is a random file name

Returns:

Name of the output dataset

Return type:

string

property path: str

Path to the output Dataset.

This will download the Dataset from Orion when it is requested

Returns:

Path to the Dataset

Return type:

string

records() Generator[OEMolRecord, None, None]

Return the records contained with the output dataset as an iterator of OEMolRecords

Returns:

Iterator of OEMolRecords

OutputFileWrapper

class artemis.wrappers.OutputFileWrapper(file_name='', extension='.txt', temp=None)
property identifier: str

Provides the output name of the file, this is a random file name

Returns:

Name of the output file

Return type:

string

property path: str

Path to the output file.

This will download the file from Orion when it is requested

Returns:

Path to the Dataset

Return type:

string

property size: int

Size of the output file.

Returns:

Size of the output file

Return type:

int

OutputCollectionWrapper

class artemis.wrappers.OutputCollectionWrapper(name=None, resource=None, v2=False)
get() ShardCollection

Returns the collection that was output

Returns:

Output shard collection

Return type:

ShardCollection

property identifier: str

Returns the randomly generated name of the output collection