Welcome to labthings-fastapi’s documentation!
Contents:
labthings-fastapi implements a Web of Things interface for laboratory hardware using Python. This is a ground-up rewrite of python-labthings, replacing Flask 1 and Marshmallow with FastAPI and Pydantic. It is the underlying framework for v3 of the OpenFlexure Microscope software.
Features include:
- Alignment with the W3C Web of Things standard (see Core Concepts)
Things are classes, with properties and actions defined exactly once
Various improvements to TD generation and validation with pydantic
- Cleaner API
Datatypes of action input/outputs and properties are defined with Python type hints
Actions are defined exactly once, as a method of a Thing class
Properties and actions are declared using decorators (or descriptors if that’s preferred)
Dependency injection is used to manage relationships between Things and dependency on the server
- Async HTTP handling
Starlette (used by FastAPI) can handle requests asynchronously - potential for websockets/events (not used much yet)
Thing code is still, for now, threaded. I intend to make it possible to write async things in the future, but don’t intend it to become mandatory
- Smaller codebase
FastAPI more or less completely eliminates OpenAPI generation code from our codebase
Thing Description generation is very much simplified by the new structure (multiple Things instead of one massive Thing with many extensions)
Installation
pip install labthings-fastapi