Skip to main content

LUTE

Docs Release build

Description

lute, or LUTE, is the LCLS Unified Task Executor - an automated workflow package for running analysis pipelines at SLAC's LCLS. This project is the next iteration of btx.

This package is used to run arbitrary analysis code (first-party or third-party) in the form of individual analysis Tasks. Tasks can be linked together to form complete end-to-end analysis pipelines or workflows. For workflow management, the package interfaces with Airflow running on S3DF.

Installation

Usage

Roadmap

A timeline is available in ...

Contributing

All contributions most proceed through pull (merge) requests (PRs). Please fork the repository and open a PR when ready to merge your contribution. There is a specific PR template (coming soon...) which should be used to describe the nature of the contribution and how it was implemented. Before beginning, please read through the following guidelines regarding code style, naming conventions and general practices.

Docstrings and Documentation

Modules, classes, and functions should be documented with docstrings. The Google style should be followed, with a minor addition - namely, module level docstrings should include a list of public classes, functions, etc. Example usage sections are optional but recommended for clarity. Refer to the link above for the full specification, or below for an abbreviated example.

"""This is a module level docstring.

Classes:
    Class1: Short description

Functions:
    function1(prototype): Short description

Exceptions:
    MyException: When/why it is raised.

Example usage:
    How one might use the classes and functions. Test modules may include how
        to run them.
"""

class Class1:
    """Class descriptions can go here or in __init__.

    Attributes:
        public_attr (type): Description
        # properties should be documented separately in their getter.
    """
    def __init__(self, arg1: type) -> None:
        """Description of class can go here.

        Args:
            param1 (type): Description
        """
        ...

    @property
    def my_property(self) -> type:
        """type: Property attributes are documented here."""
        ...

def function1(arg1: type) -> type:
    """Function description.

    Args:
        arg1 (type):  Description

    Returns: # Or Yields for generators
        name (type): Description # Alternatively, can just be `type: Description`

    Raises:
        MyException: Why?
    """
    ...

For documentation generation, MkDocs is used. Docstrings written using the above style guidelines should be parsed correctly for automatically generated documentation.

Branch Conventions

For development of new features on your personal forks of the repository, please try to follow the following naming convention for your branches: {ACRONYM}/{description}. Please see below, under commit messages, for the relevant acronyms. For example, a PR implementing a new feature which produces summaries in the eLog may be called: ENH/elog_summaries.

As new features are implemented in personal forks, this official repository maintains only two branches, which are used to indicate the state of the project in terms of feature-list and stability.

  • The main branch contains the latest stable release.
  • The dev branch contains the most recent features and changes. This branch should not be used for untested or partially implemented features; however, any and all new additions versus the main branch are subject to change. When opening a PR for a new feature, it should be merged first to the dev branch. This branch is periodically merged into main following the development timeline and list of milestones. Once merged into main, the commit is tagged, and a new release is made.

Code Style

  • Type hints should be used throughout the code base. For the time being, support is still provided for Python 3.9, so certain more recent typing constructions are not available. E.g.
my_var: str | int = get_str_or_int()

while valid in Python 3.10+, is unavailable in Python 3.9. Instead please use the typing module:

from typing import Union
my_var: Union[str, int] = get_str_or_int()

The typing module contains many other useful features for type hint support.

Note that it is possible to use from __future__ import annotations to enable the use of these features. It is a breaking change and is used on a module-by-module basis, please investigate if it applies to your use case.

Commit Messages

Inspired by pcdshub repositories, in turn following NumPy conventions, all commit messages should ideally be prefixed by a three letter acronym. Each of these acronyms has a specific meaning, making it easy to discern at a glance what the intended purpose of the commit is (bug fix, new feature, etc.). Pull (merge) request titles, and origin branches, should use the same acronyms. The following acronyms are in use:

Acronym Meaning
BUG Bug fix
DEP Deprecate a feature
DOC Documentation (either source code, or ADRs, design docs, etc.)
ENH Enhancement - new feature.
MNT Maintenance (refactoring, typos, name changes, code style, linting, etc)
SKL Skeleton. This should be used to outline what will later be an ENH.
TST Related to tests.
UTL Utilities. This can be any new tool or changes to CI/CD, etc.

Class and Object Naming Conventions

Style, Formatting, Linting

This repository uses Black for formatting of Python code. Ruff is used for linting with flake8 rules, and mypy for type checking.

Github actions implement checks for compliance. Formatting changes are auto-committed.

Debugging Code

Temporary debugging code should not be commited to the repository. E.g., extraneous print statements, etc, which are added when fixing a bug. Nonetheless, a selection of permanent debugging options may be included in the code provided they can be disabled when not running in debug mode. For standard operation, this package should be run using the -O flag which disables assert statements and sets the constant __debug__ = False. Without that flag, the package is considered to be running in "debug mode". As such, to include debug related code, please use a construction similar to the following:

if __debug__:
    # We are in debugging mode!
    # Here is my debug code
    ...
else: # optional clause if needed
    # Python was run like: `python -O ...`
    ...

Debug logging code (i.e. logger.debug("my message")) need not be placed inside the above if statement. However, the configuration statement for logging level should be. Ideally this is placed at the top of each module.

Authors and acknowledgment

License

This project's license is available in LICENSE.md.

Project status

Early active development - the public API is still subject to change, but some degree of stability can be expected at this point. The codebase is in active usage in production.

Release files for lute-lcls 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lute-lcls 0.3.0
File Size Uploaded
lute_lcls-0.3.0.tar.gz 2.4 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for lute-lcls 0.3.0
File
lute_lcls-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
lute_lcls-0.3.0-cp314-cp314t-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 Details
lute_lcls-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
lute_lcls-0.3.0-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
lute_lcls-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
lute_lcls-0.3.0-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
lute_lcls-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
lute_lcls-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
lute_lcls-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
lute_lcls-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
lute_lcls-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
lute_lcls-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
lute_lcls-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
lute_lcls-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details

Total release size: 27.1 MB

Release files / lute_lcls-0.3.0.tar.gz

Download URL lute_lcls-0.3.0.tar.gz
Size 2.4 MB
Tags Source
SHA-256 checksum
How to use checksums
b69be5f7006780476386b55f099805c4f71a7d23e000780c1ad27bb2a1683444
BLAKE2b-256 checksum
How to use checksums
5a3753cd3a954a5eafde50c0ee12d0a1d7818766cb7fd2b7a8b90439a6db6470
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL lute_lcls-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
0e49518fd06dc2e3e19c0a4985a6bd8a2ced0cfda01b65fdf452e286188ef0ec
BLAKE2b-256 checksum
How to use checksums
5e8ac329a59fc199f6a9c02259d46cede7452bd190b559e1a848ebdf9a80809c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp314-cp314t-manylinux_2_28_x86_64.whl

Download URL lute_lcls-0.3.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3619992d2b910c45dd8d31d709086ef3170340583167c1dfe9633bb9f80161b0
BLAKE2b-256 checksum
How to use checksums
f60f3e19c9605186ef7e7f8453c5966b0461c43abbffecab1770a7631badf19e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL lute_lcls-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
7f4643aab5b845085a525638296ef6348bcf889bc8ab4fcb867b04585239c941
BLAKE2b-256 checksum
How to use checksums
027c221c3699d8ba1f7a9419453aaf3e3b4e2a5d6105d44d4aff9b1028dc7e67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL lute_lcls-0.3.0-cp314-cp314-manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fe75546ac875582ae8d57c1528f114eee834d51f4c375a84ef0dda7af6886150
BLAKE2b-256 checksum
How to use checksums
dd863cbd382de66f388e6ba03ab1c470c5cbc5734f0d583456709550e60c8de5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL lute_lcls-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
981aa114d39f8178058428005d02e17b6e85a60dedb4b2fc56d8773232dcfee4
BLAKE2b-256 checksum
How to use checksums
d6ae9a85612b2706a49fd68f631c402f294ef27889daf42e896ded5f5b98f750
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL lute_lcls-0.3.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f7c7067848a98b15a07ad8b6e62e1c978dfb001a0e35461857b6e57a5123e203
BLAKE2b-256 checksum
How to use checksums
2bf501b4e12d8561a1553f789efe2f4bd15280cca644b4cb508e592224f685ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL lute_lcls-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
602c7c33950b2cca7ee0490740825f94247d492bc639c10c0f61b52cfc503ad2
BLAKE2b-256 checksum
How to use checksums
1ec2ddc6cfbe15eb829577fb6c7fd0cc9e208161c29bf1a7ff6298926ac22c9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL lute_lcls-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cbda2b0e414332fd9552d19c2a64b5034a5bc7818c5d00011ac968026257f67d
BLAKE2b-256 checksum
How to use checksums
c81ef0eba559999312e9ef5a86be0fda660accefd1dbf7f98e4e64408f4efccf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL lute_lcls-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
eb1487a42cba1bd6bc7460c9f6f189e7e2abd19ef1fe995b12921a27e3d22115
BLAKE2b-256 checksum
How to use checksums
04e3b7cebada951eced91d53e345b3f1d0a9cb8bbaaa905daa417b2293d5f2da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL lute_lcls-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1d27986a7599e52c13a99db1fa8dd34c1ab07a2815ed1e34fbb08481569dc0fb
BLAKE2b-256 checksum
How to use checksums
e59db72c60c025f56f51fe9297cbd5564b4cb572c2dee7c59a7f6b7f9e54320d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL lute_lcls-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
119c45eae6abf6b262bb16864daeef36ab3d757641d216177c1bd1d7f8ab1a52
BLAKE2b-256 checksum
How to use checksums
58e9c02d398531ffea104e2bf852329801e0f2940a0d1ec906b94cb3de95c26c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL lute_lcls-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7033e58af10b5dc2f63b3b72fc6a370b0029a609658fb0adb4e3a34cc6480e9c
BLAKE2b-256 checksum
How to use checksums
4006e7658c81abea920f29036be2c7f91e899c6a4259d3dd0cf10610c2d25a28
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL lute_lcls-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
Size 2.2 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2691c74f8e55ad5d851737e817e694964d2d0c612bcfc2dd7488bdac90b19062
BLAKE2b-256 checksum
How to use checksums
0854701210286c03790fefd8876ac0aa7e41e920860df426524df93a25d2e70d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / lute_lcls-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl

Download URL lute_lcls-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl
Size 1.3 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9784ab5b26f5e0c313d529235769e337462631010b8b0fbe548bd83577b05cfa
BLAKE2b-256 checksum
How to use checksums
d1379325003edc1997c25f404b47cc7d7eccfd16e41705bdc5f45d9f2ac57590
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

15 release files

0.2.0

13 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page