#task-execution #service #specification #workflow #bioinformatics #workflow-engine

tes

A crate for working with the Task Execution Service (TES) specification

1 unstable release

0.2.0 Sep 8, 2024
0.1.0 Sep 5, 2024

#12 in #workflow-engine

Download history 301/week @ 2024-09-05 40/week @ 2024-09-12 107/week @ 2024-09-19 49/week @ 2024-09-26 14/week @ 2024-10-03

176 downloads per month

MIT/Apache

40KB
605 lines

tes

A crate for working with the Task Execution Service (TES) specification.

Explore the docs » · Learn about TES »

📚 Getting Started

The tes crate contains types (via the types feature) and a simple client (via the client feature) for working with the Task Execution Service (TES) specification. Briefly, TES is a specification developed to uniformly submit units of execution ("tasks") to multiple compute environment through a single HTTP interface. It is of interest mostly when developing clients or servers that participate in the large-scale submission or monitoring of jobs.

To utilize tes in your crates, simply add it to your project.

# If you want to use the types.
cargo add tes

# If you also want to use the provided client.
cargo add tes --features client

After this, you can access the library using the tes module in your Rust code. You can take a look at the examples for inspiration, but a simple example could look like this.

use tes::v1::client;

#[tokio::main]
async fn main() {
    let url = std::env::args().nth(1).expect("url to be present");

    let client = client::Builder::default()
        .url_from_string(url)
        .expect("url could not be parsed")
        .try_build()
        .expect("could not build client");

    println!(
        "{:#?}",
        client
            .service_info()
            .await
            .expect("getting service information failed")
    );
}

Minimum Supported Rust Version

The minimum supported Rust version is currently 1.80.0.

There is a CI job that verifies the declared minimum supported version.

If a contributor submits a PR that uses a feature from a newer version of Rust, the contributor is responsible for updating the minimum supported version in the Cargo.toml.

Contributors may update the minimum supported version as-needed to the latest stable release of Rust.

To facilitate the discovery of what the minimum supported version should be, install the cargo-msrv tool:

cargo install cargo-msrv

And run the following command:

cargo msrv --min 1.80.0

If the reported version is newer than the crate's current minimum supported version, an update is required.

🖥️ Development

To bootstrap a development environment, please use the following commands.

# Clone the repository
git clone git@github.com:stjude-rust-labs/tes.git
cd tes

# Build the crate in release mode
cargo build --release

# List out the examples
cargo run --release --example

🚧️ Tests

Before submitting any pull requests, please make sure the code passes the following checks (from the root directory).

# Run the project's tests.
cargo test --all-features

# Run the tests for the examples.
cargo test --examples --all-features

# Ensure the project doesn't have any linting warnings.
cargo clippy --all-features

# Ensure the project passes `cargo fmt`.
# Currently this requires nightly Rust
cargo +nightly fmt --check

# Ensure the docs build.
cargo doc

🤝 Contributing

Contributions, issues and feature requests are welcome! Feel free to check issues page.

📝 License

This project is licensed as either Apache 2.0 or MIT at your discretion.

Copyright © 2024-Present St. Jude Children's Research Hospital.

Dependencies

~8–19MB
~269K SLoC