Metadata-Version: 2.4
Name: matterlab_vacuum_controls
Version: 1.1.0
Summary: A Python API for the vacuum_controls 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/vacuum
Keywords: vacuum,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 Vacuum Controls

`matterlab_vacuum_controls` provides Python drivers for vacuum controllers used in Matter Lab automation workflows.

The package currently includes:

- `VacuumControl`: abstract base class for vacuum controller interfaces
- `IKAVC10`: serial driver for the IKA VC10 vacuum controller

## 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_vacuum_controls import IKAVC10

vacuum = IKAVC10(com_port="COM4", min_pressure=50)
print(vacuum.name)
print(vacuum.pressure)
vacuum.hysteresis = 25
vacuum.mode = "manual"
vacuum.pressure = 250
vacuum.standby()
vacuum.stop()
```

## 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_vc10_real.py --run-real --com-port COM4
```

You can also provide the port through an environment variable:

```bash
set VACUUM_COM_PORT=COM4
pytest tests/test_ika_vc10_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`
- The repository keeps generated coverage and build artifacts out of version control
