Metadata-Version: 2.4
Name: labthings-fastapi
Version: 0.3.0rc1
Summary: An implementation of LabThings using FastAPI
Project-URL: Homepage, https://github.com/labthings/labthings-fastapi
Project-URL: Bug Tracker, https://github.com/labthings/labthings-fastapi/issues
Author-email: Richard Bowman <richard.bowman@cantab.net>
License-File: LICENSE
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: anyio~=4.0
Requires-Dist: fastapi[all]~=0.135.0
Requires-Dist: httpx2
Requires-Dist: jsonschema
Requires-Dist: numpy>=1.20
Requires-Dist: pydantic~=2.13
Requires-Dist: typing-extensions
Requires-Dist: zeroconf>=0.28.0
Provides-Extra: dev
Requires-Dist: codespell; extra == 'dev'
Requires-Dist: flake8; extra == 'dev'
Requires-Dist: flake8-pyproject; extra == 'dev'
Requires-Dist: flake8-rst; extra == 'dev'
Requires-Dist: flake8-rst-docstrings; extra == 'dev'
Requires-Dist: mypy<2,>=1.6.1; extra == 'dev'
Requires-Dist: myst-parser<5; extra == 'dev'
Requires-Dist: pillow; extra == 'dev'
Requires-Dist: pydoclint[flake8]; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest-mock; extra == 'dev'
Requires-Dist: pytest>=8.4.0; extra == 'dev'
Requires-Dist: ruff>=0.1.3; extra == 'dev'
Requires-Dist: sphinx-autoapi; extra == 'dev'
Requires-Dist: sphinx-rtd-theme; extra == 'dev'
Requires-Dist: sphinx-toolbox; extra == 'dev'
Requires-Dist: sphinx>=7.2; extra == 'dev'
Requires-Dist: sphobjinv; extra == 'dev'
Requires-Dist: tomli; (python_version < '3.11') and extra == 'dev'
Requires-Dist: types-jsonschema; extra == 'dev'
Description-Content-Type: text/markdown

![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/bprobert97/936bcec8e1815a49d1e7f947924ffa3f/raw/labthings-fastapi-coverage.json)
[![Documentation Status](https://readthedocs.org/projects/labthings-fastapi/badge/?version=latest)](https://labthings-fastapi.readthedocs.io/en/latest/?badge=latest)

# labthings-fastapi

A FastAPI based library to implement a [Web of Things] interface for laboratory hardware using Python. This is a ground-up rewrite of [python-labthings], based on FastAPI and Pydantic. It is the underlying framework for v3 of the [OpenFlexure Microscope software].

Documentation, including install instructions, is available on [readthedocs].

## Installation

See [readthedocs] for installation instructions that are automatically tested. You can install this package with `pip install labthings-fastapi`.


### Installation Notes

`labthings-fastapi` supports **Python 3.10, 3.11, 3.12, and 3.13**. The upper limit is strictly capped at 3.13 due to current `pydantic-core` dependencies.

> **Note: Windows Installations on devices with ARM processors**
>
> Installing on Windows devices with ARM processors requires Visual Studio with the **"Desktop development with C++"** workload enabled. This is necessary because `pydantic` relies on Rust, which in turn requires C++ build tools to compile.
>
> *If you are using a centrally managed machine, you will need administrator privileges to install these system-level dependencies.*

For instructions on how to set up a development environment, run tests, and contribute to this project, please see our [Contributor Guidelines] and [Testing Guidelines].

## Demo

See [readthedocs] for a runnable demo.

[Web of Things]: https://www.w3.org/WoT/
[python-labthings]: https://github.com/labthings/python-labthings/
[OpenFlexure Microscope software]: https://gitlab.com/openflexure/openflexure-microscope-server/
[pre-commit hook]: https://openflexure.org/contribute#use-git-hooks-for-ci-checks
[readthedocs]: https://labthings-fastapi.readthedocs.io/
[Contributor Guidelines]: ./docs/source/contributing.md
[Testing Guidelines]: ./docs/source/testing.md
