matterlab-mfcs 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- matterlab_mfcs-0.1.0/PKG-INFO +71 -0
- matterlab_mfcs-0.1.0/README.md +49 -0
- matterlab_mfcs-0.1.0/pyproject.toml +51 -0
- matterlab_mfcs-0.1.0/setup.cfg +4 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs/__init__.py +25 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs/alicat_mfc.py +619 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs/base_mfc.py +73 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs/enums.py +595 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs.egg-info/PKG-INFO +71 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs.egg-info/SOURCES.txt +13 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs.egg-info/dependency_links.txt +1 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs.egg-info/requires.txt +6 -0
- matterlab_mfcs-0.1.0/src/matterlab_mfcs.egg-info/top_level.txt +1 -0
- matterlab_mfcs-0.1.0/tests/test_alicat_mfc.py +409 -0
- matterlab_mfcs-0.1.0/tests/test_alicat_mfc_real.py +109 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: matterlab_mfcs
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Python APIs for mass flow controllers used in the Matter Lab.
|
|
5
|
+
Author: Han Hao
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: alicat,massflowcontroller,automation,matterlab
|
|
8
|
+
Classifier: Intended Audience :: Science/Research
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
11
|
+
Classifier: Topic :: Scientific/Engineering
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
13
|
+
Classifier: Topic :: System :: Hardware
|
|
14
|
+
Classifier: Topic :: System :: Hardware :: Hardware Drivers
|
|
15
|
+
Requires-Python: >=3.9
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Requires-Dist: matterlab_serial_device
|
|
18
|
+
Provides-Extra: dev
|
|
19
|
+
Requires-Dist: pytest>=7; extra == "dev"
|
|
20
|
+
Requires-Dist: pytest-timeout; extra == "dev"
|
|
21
|
+
Requires-Dist: ruff; extra == "dev"
|
|
22
|
+
|
|
23
|
+
# Matter Lab Mass Flow Controllers
|
|
24
|
+
|
|
25
|
+
`matterlab_mfcs` provides Python drivers for mass flow controllers used in Matter Lab automation workflows.
|
|
26
|
+
|
|
27
|
+
The first supported device family is Alicat instruments using the Modbus RTU manual bundled with this workspace.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
Use the `matterlab` conda environment and install the package in editable mode during development:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pip install -e .[dev]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The package depends on `matterlab_serial_device` for serial communication.
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
from matterlab_mfcs import AlicatMFC
|
|
43
|
+
|
|
44
|
+
mfc = AlicatMFC(com_port="COM5", address=1)
|
|
45
|
+
print(mfc.firmware_version)
|
|
46
|
+
print(mfc.serial_number)
|
|
47
|
+
print(mfc.pressure)
|
|
48
|
+
print(mfc.temperature)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Testing
|
|
52
|
+
|
|
53
|
+
Unit tests are the default:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pytest
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Real hardware validation is opt-in:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pytest tests/test_alicat_mfc_real.py --run-real --com-port COM5 --address 1
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Notes
|
|
66
|
+
|
|
67
|
+
- Source code lives under `src/`
|
|
68
|
+
- Pytest uses `src` as the import root
|
|
69
|
+
- Real hardware tests are skipped unless explicitly enabled
|
|
70
|
+
- The Alicat Modbus CRC implementation matches the Modbus RTU framing validated against the local device on `COM5`
|
|
71
|
+
- Multi-read snapshots should live in scripts or tests, not inside the driver
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Matter Lab Mass Flow Controllers
|
|
2
|
+
|
|
3
|
+
`matterlab_mfcs` provides Python drivers for mass flow controllers used in Matter Lab automation workflows.
|
|
4
|
+
|
|
5
|
+
The first supported device family is Alicat instruments using the Modbus RTU manual bundled with this workspace.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Use the `matterlab` conda environment and install the package in editable mode during development:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pip install -e .[dev]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The package depends on `matterlab_serial_device` for serial communication.
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from matterlab_mfcs import AlicatMFC
|
|
21
|
+
|
|
22
|
+
mfc = AlicatMFC(com_port="COM5", address=1)
|
|
23
|
+
print(mfc.firmware_version)
|
|
24
|
+
print(mfc.serial_number)
|
|
25
|
+
print(mfc.pressure)
|
|
26
|
+
print(mfc.temperature)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Testing
|
|
30
|
+
|
|
31
|
+
Unit tests are the default:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pytest
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Real hardware validation is opt-in:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pytest tests/test_alicat_mfc_real.py --run-real --com-port COM5 --address 1
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
- Source code lives under `src/`
|
|
46
|
+
- Pytest uses `src` as the import root
|
|
47
|
+
- Real hardware tests are skipped unless explicitly enabled
|
|
48
|
+
- The Alicat Modbus CRC implementation matches the Modbus RTU framing validated against the local device on `COM5`
|
|
49
|
+
- Multi-read snapshots should live in scripts or tests, not inside the driver
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=80.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "matterlab_mfcs"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Python APIs for mass flow controllers used in the Matter Lab."
|
|
9
|
+
authors = [
|
|
10
|
+
{ name = "Han Hao" }
|
|
11
|
+
]
|
|
12
|
+
license = "MIT"
|
|
13
|
+
readme = "README.md"
|
|
14
|
+
requires-python = ">=3.9"
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Intended Audience :: Science/Research",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
19
|
+
"Topic :: Scientific/Engineering",
|
|
20
|
+
"Topic :: Scientific/Engineering :: Chemistry",
|
|
21
|
+
"Topic :: System :: Hardware",
|
|
22
|
+
"Topic :: System :: Hardware :: Hardware Drivers",
|
|
23
|
+
]
|
|
24
|
+
keywords = ["alicat", "massflowcontroller", "automation", "matterlab"]
|
|
25
|
+
dependencies = [
|
|
26
|
+
"matterlab_serial_device",
|
|
27
|
+
]
|
|
28
|
+
|
|
29
|
+
[project.optional-dependencies]
|
|
30
|
+
dev = [
|
|
31
|
+
"pytest>=7",
|
|
32
|
+
"pytest-timeout",
|
|
33
|
+
"ruff",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
[tool.pytest.ini_options]
|
|
37
|
+
addopts = "--timeout 60 --color=yes"
|
|
38
|
+
testpaths = "tests"
|
|
39
|
+
python_files = "test_*.py"
|
|
40
|
+
pythonpath = "src"
|
|
41
|
+
markers = [
|
|
42
|
+
"real: requires connected hardware and explicit opt-in",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[tool.ruff]
|
|
46
|
+
fix = true
|
|
47
|
+
line-length = 160
|
|
48
|
+
src = ["src", "tests"]
|
|
49
|
+
|
|
50
|
+
[tool.ruff.format]
|
|
51
|
+
docstring-code-format = true
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from matterlab_mfcs.enums import (
|
|
2
|
+
GasNumber,
|
|
3
|
+
PressureUnit,
|
|
4
|
+
StandardFlowUnit,
|
|
5
|
+
TemperatureUnit,
|
|
6
|
+
TotalStandardVolumeUnit,
|
|
7
|
+
TotalVolumeUnit,
|
|
8
|
+
TrueMassFlowUnit,
|
|
9
|
+
VolumetricFlowUnit,
|
|
10
|
+
)
|
|
11
|
+
from matterlab_mfcs.alicat_mfc import AlicatMFC
|
|
12
|
+
from matterlab_mfcs.base_mfc import MassFlowController
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"AlicatMFC",
|
|
16
|
+
"GasNumber",
|
|
17
|
+
"MassFlowController",
|
|
18
|
+
"PressureUnit",
|
|
19
|
+
"StandardFlowUnit",
|
|
20
|
+
"TemperatureUnit",
|
|
21
|
+
"TotalStandardVolumeUnit",
|
|
22
|
+
"TotalVolumeUnit",
|
|
23
|
+
"TrueMassFlowUnit",
|
|
24
|
+
"VolumetricFlowUnit",
|
|
25
|
+
]
|