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.
@@ -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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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
+ ]