Metadata-Version: 2.4
Name: matterlab_rotavaps
Version: 1.1.0
Summary: A Python API for the rotavaps in the Matter Lab.
Author: Han Hao, Martin Seifrid, Tony C. Wu
License-Expression: MIT
Project-URL: homepage, https://gitlab.com/aspuru-guzik-group/self-driving-lab/devices/rotavaps
Keywords: rotavap,automation,matterlab
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Chemistry
Classifier: Topic :: System :: Hardware
Classifier: Topic :: System :: Hardware :: Hardware Drivers
Classifier: Topic :: System :: Hardware :: Universal Serial Bus (USB)
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: matterlab_serial_device
Provides-Extra: dev
Requires-Dist: mypy>=0; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-cov>=3; extra == "dev"
Requires-Dist: pytest-mock>=3; extra == "dev"
Requires-Dist: pytest-rerunfailures; extra == "dev"
Requires-Dist: pytest-timeout; extra == "dev"
Requires-Dist: ruff; extra == "dev"

# Matter Lab Rotavaps

`matterlab_rotavaps` provides Python drivers for rotary evaporators used in Matter Lab automation workflows.

The package currently includes:

- `Rotavap`: abstract base class for rotavap interfaces
- `IKARV10`: serial driver for the IKA RV10 rotavap

## Installation

Use the `matterlab` conda environment and install the package in editable mode during development:

```bash
pip install -e .[dev]
```

The package depends on `matterlab_serial_device` for serial communication.

## Quick Start

```python
from matterlab_rotavaps import IKARV10

rotavap = IKARV10(com_port="COM4", max_rpm=200)
print(rotavap.name)
print(rotavap.rpm)
rotavap.interval = 5
rotavap.timer = 1
rotavap.rpm = 80
rotavap.standby()
```

## Testing

Simulation tests are the default and are the only tests intended for CI enforcement.

One-click local sim run:

```bash
python examples/test_sim.py
```

Direct pytest run:

```bash
pytest
```

Real hardware tests are present for manual validation but are skipped unless explicitly enabled.

Run real tests with a COM port:

```bash
pytest tests/test_ika_rotavap_real.py --run-real --com-port COM4
```

You can also provide the port through an environment variable:

```bash
set ROTAVAP_COM_PORT=COM4
pytest tests/test_ika_rotavap_real.py --run-real
```

## Examples

Additional examples live in [examples/README.md](examples/README.md):

- `examples/test_sim.py` for the sim suite
- `examples/real_devices.py` for readable hardware usage examples

## Development Notes

- Source code lives under `src/`
- Pytest uses `src` as the import root
- Hardware-backed tests are marked with `@pytest.mark.real`
- Generated coverage, build, and cache artifacts are ignored
