Skip to main content

Hardware interfacing code for the Autonomous Formulation Lab

Project description

NIST Autonomous Formulation Laboratory - Automation Software

This package contains the core laboratory automation software used in the NIST AFL platform.

Its core is the 'DeviceServer' API, a simple way of exposing functionality in simple Python classes to the outside world via HTTP servers. It includes robust item queueing support, output rendering, and hooks to allow for 'smart' generation of user interfaces automatically.

Specific deviceserver instances are provided for a variety of hardware used in the AFL platform: syringe pumps, valves, multiposition flow selectors, UV-Vis spectrometers, x-ray and neutron scattering instruments/beamlines. There are further deviceserver classes that integrate these base devices to perform higher-level functions, e.g. "loading". These classes aim to specify instructions for running a particular protocol in a hardware-agnostic way.

Production deployment

By default the APIServer will use the waitress WSGI server if it is installed. To fall back to Flask's built-in server pass --no-waitress to AFL.automation.shared.launcher.

Running tests

This repository uses pytest for unit tests. A GitHub Actions workflow runs the tests automatically on every push and pull request using .github/workflows/test.yaml. The workflow installs the package along with the dependencies listed in pyproject.toml.

To execute the tests locally, install the package in editable mode and run pytest. If the installation fails because the package version cannot be determined from Git tags, set SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0 as in the CI workflow:

SETUPTOOLS_SCM_PRETEND_VERSION=0.0.0 pip install -e .
pytest

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

afl_automation-1.1.0.tar.gz (18.2 MB view details)

Uploaded Source

Built Distribution

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

afl_automation-1.1.0-py3-none-any.whl (18.9 MB view details)

Uploaded Python 3

File details

Details for the file afl_automation-1.1.0.tar.gz.

File metadata

  • Download URL: afl_automation-1.1.0.tar.gz
  • Upload date:
  • Size: 18.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for afl_automation-1.1.0.tar.gz
Algorithm Hash digest
SHA256 d1384d95b3adb14bdd7cdf817196ac75e99d2f17ed1b677f94afb2a084597bea
MD5 68b2d6d2562124dc44b55a3a748b4918
BLAKE2b-256 bfa34abf86f9fd3f4de6320ca7a394f12ce590c86a833edc47f188383b5f3cf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for afl_automation-1.1.0.tar.gz:

Publisher: publish-to-pypi.yml on usnistgov/AFL-automation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file afl_automation-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: afl_automation-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for afl_automation-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ee02032fa1acc42ec3416359787050f20686c790c95a342dbb8b51af3ab28443
MD5 0f4f65f4704a53d0ce0d49ab0bde8801
BLAKE2b-256 270311effdbf0bf9f5ca566e227f8fa27566bf410647405d0690b84fb6de5f82

See more details on using hashes here.

Provenance

The following attestation bundles were made for afl_automation-1.1.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on usnistgov/AFL-automation

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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