plc-comm-slmp 2.0.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.
- plc_comm_slmp-2.0.0/LICENSE +21 -0
- plc_comm_slmp-2.0.0/MANIFEST.in +2 -0
- plc_comm_slmp-2.0.0/PKG-INFO +102 -0
- plc_comm_slmp-2.0.0/README.md +68 -0
- plc_comm_slmp-2.0.0/plc_comm_slmp.egg-info/PKG-INFO +102 -0
- plc_comm_slmp-2.0.0/plc_comm_slmp.egg-info/SOURCES.txt +23 -0
- plc_comm_slmp-2.0.0/plc_comm_slmp.egg-info/dependency_links.txt +1 -0
- plc_comm_slmp-2.0.0/plc_comm_slmp.egg-info/entry_points.txt +16 -0
- plc_comm_slmp-2.0.0/plc_comm_slmp.egg-info/requires.txt +10 -0
- plc_comm_slmp-2.0.0/plc_comm_slmp.egg-info/top_level.txt +1 -0
- plc_comm_slmp-2.0.0/pyproject.toml +111 -0
- plc_comm_slmp-2.0.0/setup.cfg +4 -0
- plc_comm_slmp-2.0.0/slmp/__init__.py +212 -0
- plc_comm_slmp-2.0.0/slmp/_operations.py +1339 -0
- plc_comm_slmp-2.0.0/slmp/async_client.py +1286 -0
- plc_comm_slmp-2.0.0/slmp/capability_profiles.py +427 -0
- plc_comm_slmp-2.0.0/slmp/cli.py +5036 -0
- plc_comm_slmp-2.0.0/slmp/client.py +1644 -0
- plc_comm_slmp-2.0.0/slmp/constants.py +167 -0
- plc_comm_slmp-2.0.0/slmp/core.py +1550 -0
- plc_comm_slmp-2.0.0/slmp/device_ranges.py +841 -0
- plc_comm_slmp-2.0.0/slmp/error_codes.py +45 -0
- plc_comm_slmp-2.0.0/slmp/errors.py +97 -0
- plc_comm_slmp-2.0.0/slmp/py.typed +1 -0
- plc_comm_slmp-2.0.0/slmp/utils.py +1582 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 fa-yoshinobu
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: plc-comm-slmp
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: SLMP Connect Python: client library for MELSEC SLMP binary communication
|
|
5
|
+
Author: fa-yoshinobu
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/fa-yoshinobu/plc-comm-slmp-python
|
|
8
|
+
Project-URL: Repository, https://github.com/fa-yoshinobu/plc-comm-slmp-python
|
|
9
|
+
Project-URL: Issues, https://github.com/fa-yoshinobu/plc-comm-slmp-python/issues
|
|
10
|
+
Keywords: plc-comm,slmp,melsec,mitsubishi,plc,3e,4e,binary
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Classifier: Topic :: System :: Networking
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
26
|
+
Requires-Dist: mypy>=1.10; extra == "dev"
|
|
27
|
+
Requires-Dist: pre-commit>=3.7; extra == "dev"
|
|
28
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
29
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
30
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
31
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
32
|
+
Requires-Dist: twine>=5.1; extra == "dev"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
[](https://github.com/fa-yoshinobu/plc-comm-slmp-python/actions/workflows/ci.yml)
|
|
36
|
+
[](https://pypi.org/project/plc-comm-slmp/)
|
|
37
|
+
[](https://www.python.org/downloads/)
|
|
38
|
+
[](LICENSE)
|
|
39
|
+
|
|
40
|
+
# MELSEC SLMP for Python
|
|
41
|
+
|
|
42
|
+
Python library for MELSEC SLMP (Binary 3E/4E) PLC communication.
|
|
43
|
+
|
|
44
|
+
## PLC Comm Family
|
|
45
|
+
|
|
46
|
+
This library is part of the plc-comm family. See the [package matrix](https://fa-yoshinobu.github.io/plc-comm-docs-site/package-matrix/) for protocol, language, registry, and install-command mapping.
|
|
47
|
+
|
|
48
|
+
## Supported PLC profiles
|
|
49
|
+
|
|
50
|
+
The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
|
|
51
|
+
|
|
52
|
+
Sync and async clients use `strict_profile=True` by default. With a selected profile, operations known to be unavailable for that PLC are rejected before sending. Set `strict_profile=False` only for deliberate verification where you want the PLC to answer directly. Point limits and read-only write policies are always enforced.
|
|
53
|
+
|
|
54
|
+
## Supported device types
|
|
55
|
+
|
|
56
|
+
The maintained device and range tables are in the [SLMP Profile Reference](https://fa-yoshinobu.github.io/plc-comm-docs-site/slmp/profile-reference/). Use that page for supported device families, address syntax, and profile-specific notes.
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install plc-comm-slmp
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Quick example
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
import asyncio
|
|
68
|
+
from slmp import SlmpConnectionOptions, open_and_connect, read_typed
|
|
69
|
+
|
|
70
|
+
async def main() -> None:
|
|
71
|
+
options = SlmpConnectionOptions(host="192.168.250.100", port=1025, plc_profile="melsec:iq-r")
|
|
72
|
+
async with await open_and_connect(options) as client:
|
|
73
|
+
value = await read_typed(client, "D100", "U")
|
|
74
|
+
print(f"D100={value}")
|
|
75
|
+
|
|
76
|
+
asyncio.run(main())
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Documentation
|
|
80
|
+
|
|
81
|
+
| Page | Use it for |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
|
|
84
|
+
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
85
|
+
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
86
|
+
| [SLMP profile reference](https://fa-yoshinobu.github.io/plc-comm-docs-site/slmp/profile-reference/) | Check profile parameters, device families, address syntax, and numbering rules. |
|
|
87
|
+
| [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
|
|
88
|
+
| [Examples](samples/README.md) | Run maintained Python samples. |
|
|
89
|
+
|
|
90
|
+
## License and registry
|
|
91
|
+
|
|
92
|
+
| Item | Value |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| License | [MIT](LICENSE) |
|
|
95
|
+
| Registry | [PyPI](https://pypi.org/project/plc-comm-slmp/) |
|
|
96
|
+
| Package | `plc-comm-slmp` |
|
|
97
|
+
|
|
98
|
+
## Commercial support
|
|
99
|
+
|
|
100
|
+
If you plan to embed this library in a paid or commercial product, please consider a separate support agreement or supporting the project as a sponsor.
|
|
101
|
+
|
|
102
|
+
Contact: <https://fa-labo.com/contact.html>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
[](https://github.com/fa-yoshinobu/plc-comm-slmp-python/actions/workflows/ci.yml)
|
|
2
|
+
[](https://pypi.org/project/plc-comm-slmp/)
|
|
3
|
+
[](https://www.python.org/downloads/)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
# MELSEC SLMP for Python
|
|
7
|
+
|
|
8
|
+
Python library for MELSEC SLMP (Binary 3E/4E) PLC communication.
|
|
9
|
+
|
|
10
|
+
## PLC Comm Family
|
|
11
|
+
|
|
12
|
+
This library is part of the plc-comm family. See the [package matrix](https://fa-yoshinobu.github.io/plc-comm-docs-site/package-matrix/) for protocol, language, registry, and install-command mapping.
|
|
13
|
+
|
|
14
|
+
## Supported PLC profiles
|
|
15
|
+
|
|
16
|
+
The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
|
|
17
|
+
|
|
18
|
+
Sync and async clients use `strict_profile=True` by default. With a selected profile, operations known to be unavailable for that PLC are rejected before sending. Set `strict_profile=False` only for deliberate verification where you want the PLC to answer directly. Point limits and read-only write policies are always enforced.
|
|
19
|
+
|
|
20
|
+
## Supported device types
|
|
21
|
+
|
|
22
|
+
The maintained device and range tables are in the [SLMP Profile Reference](https://fa-yoshinobu.github.io/plc-comm-docs-site/slmp/profile-reference/). Use that page for supported device families, address syntax, and profile-specific notes.
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install plc-comm-slmp
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Quick example
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
import asyncio
|
|
34
|
+
from slmp import SlmpConnectionOptions, open_and_connect, read_typed
|
|
35
|
+
|
|
36
|
+
async def main() -> None:
|
|
37
|
+
options = SlmpConnectionOptions(host="192.168.250.100", port=1025, plc_profile="melsec:iq-r")
|
|
38
|
+
async with await open_and_connect(options) as client:
|
|
39
|
+
value = await read_typed(client, "D100", "U")
|
|
40
|
+
print(f"D100={value}")
|
|
41
|
+
|
|
42
|
+
asyncio.run(main())
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Documentation
|
|
46
|
+
|
|
47
|
+
| Page | Use it for |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
| [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
|
|
50
|
+
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
51
|
+
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
52
|
+
| [SLMP profile reference](https://fa-yoshinobu.github.io/plc-comm-docs-site/slmp/profile-reference/) | Check profile parameters, device families, address syntax, and numbering rules. |
|
|
53
|
+
| [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
|
|
54
|
+
| [Examples](samples/README.md) | Run maintained Python samples. |
|
|
55
|
+
|
|
56
|
+
## License and registry
|
|
57
|
+
|
|
58
|
+
| Item | Value |
|
|
59
|
+
| --- | --- |
|
|
60
|
+
| License | [MIT](LICENSE) |
|
|
61
|
+
| Registry | [PyPI](https://pypi.org/project/plc-comm-slmp/) |
|
|
62
|
+
| Package | `plc-comm-slmp` |
|
|
63
|
+
|
|
64
|
+
## Commercial support
|
|
65
|
+
|
|
66
|
+
If you plan to embed this library in a paid or commercial product, please consider a separate support agreement or supporting the project as a sponsor.
|
|
67
|
+
|
|
68
|
+
Contact: <https://fa-labo.com/contact.html>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: plc-comm-slmp
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Summary: SLMP Connect Python: client library for MELSEC SLMP binary communication
|
|
5
|
+
Author: fa-yoshinobu
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/fa-yoshinobu/plc-comm-slmp-python
|
|
8
|
+
Project-URL: Repository, https://github.com/fa-yoshinobu/plc-comm-slmp-python
|
|
9
|
+
Project-URL: Issues, https://github.com/fa-yoshinobu/plc-comm-slmp-python/issues
|
|
10
|
+
Keywords: plc-comm,slmp,melsec,mitsubishi,plc,3e,4e,binary
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
20
|
+
Classifier: Topic :: System :: Networking
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
26
|
+
Requires-Dist: mypy>=1.10; extra == "dev"
|
|
27
|
+
Requires-Dist: pre-commit>=3.7; extra == "dev"
|
|
28
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
29
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
30
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
31
|
+
Requires-Dist: ruff>=0.6; extra == "dev"
|
|
32
|
+
Requires-Dist: twine>=5.1; extra == "dev"
|
|
33
|
+
Dynamic: license-file
|
|
34
|
+
|
|
35
|
+
[](https://github.com/fa-yoshinobu/plc-comm-slmp-python/actions/workflows/ci.yml)
|
|
36
|
+
[](https://pypi.org/project/plc-comm-slmp/)
|
|
37
|
+
[](https://www.python.org/downloads/)
|
|
38
|
+
[](LICENSE)
|
|
39
|
+
|
|
40
|
+
# MELSEC SLMP for Python
|
|
41
|
+
|
|
42
|
+
Python library for MELSEC SLMP (Binary 3E/4E) PLC communication.
|
|
43
|
+
|
|
44
|
+
## PLC Comm Family
|
|
45
|
+
|
|
46
|
+
This library is part of the plc-comm family. See the [package matrix](https://fa-yoshinobu.github.io/plc-comm-docs-site/package-matrix/) for protocol, language, registry, and install-command mapping.
|
|
47
|
+
|
|
48
|
+
## Supported PLC profiles
|
|
49
|
+
|
|
50
|
+
The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
|
|
51
|
+
|
|
52
|
+
Sync and async clients use `strict_profile=True` by default. With a selected profile, operations known to be unavailable for that PLC are rejected before sending. Set `strict_profile=False` only for deliberate verification where you want the PLC to answer directly. Point limits and read-only write policies are always enforced.
|
|
53
|
+
|
|
54
|
+
## Supported device types
|
|
55
|
+
|
|
56
|
+
The maintained device and range tables are in the [SLMP Profile Reference](https://fa-yoshinobu.github.io/plc-comm-docs-site/slmp/profile-reference/). Use that page for supported device families, address syntax, and profile-specific notes.
|
|
57
|
+
|
|
58
|
+
## Installation
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pip install plc-comm-slmp
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Quick example
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
import asyncio
|
|
68
|
+
from slmp import SlmpConnectionOptions, open_and_connect, read_typed
|
|
69
|
+
|
|
70
|
+
async def main() -> None:
|
|
71
|
+
options = SlmpConnectionOptions(host="192.168.250.100", port=1025, plc_profile="melsec:iq-r")
|
|
72
|
+
async with await open_and_connect(options) as client:
|
|
73
|
+
value = await read_typed(client, "D100", "U")
|
|
74
|
+
print(f"D100={value}")
|
|
75
|
+
|
|
76
|
+
asyncio.run(main())
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Documentation
|
|
80
|
+
|
|
81
|
+
| Page | Use it for |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
|
|
84
|
+
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
85
|
+
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
86
|
+
| [SLMP profile reference](https://fa-yoshinobu.github.io/plc-comm-docs-site/slmp/profile-reference/) | Check profile parameters, device families, address syntax, and numbering rules. |
|
|
87
|
+
| [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
|
|
88
|
+
| [Examples](samples/README.md) | Run maintained Python samples. |
|
|
89
|
+
|
|
90
|
+
## License and registry
|
|
91
|
+
|
|
92
|
+
| Item | Value |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| License | [MIT](LICENSE) |
|
|
95
|
+
| Registry | [PyPI](https://pypi.org/project/plc-comm-slmp/) |
|
|
96
|
+
| Package | `plc-comm-slmp` |
|
|
97
|
+
|
|
98
|
+
## Commercial support
|
|
99
|
+
|
|
100
|
+
If you plan to embed this library in a paid or commercial product, please consider a separate support agreement or supporting the project as a sponsor.
|
|
101
|
+
|
|
102
|
+
Contact: <https://fa-labo.com/contact.html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
MANIFEST.in
|
|
3
|
+
README.md
|
|
4
|
+
pyproject.toml
|
|
5
|
+
plc_comm_slmp.egg-info/PKG-INFO
|
|
6
|
+
plc_comm_slmp.egg-info/SOURCES.txt
|
|
7
|
+
plc_comm_slmp.egg-info/dependency_links.txt
|
|
8
|
+
plc_comm_slmp.egg-info/entry_points.txt
|
|
9
|
+
plc_comm_slmp.egg-info/requires.txt
|
|
10
|
+
plc_comm_slmp.egg-info/top_level.txt
|
|
11
|
+
slmp/__init__.py
|
|
12
|
+
slmp/_operations.py
|
|
13
|
+
slmp/async_client.py
|
|
14
|
+
slmp/capability_profiles.py
|
|
15
|
+
slmp/cli.py
|
|
16
|
+
slmp/client.py
|
|
17
|
+
slmp/constants.py
|
|
18
|
+
slmp/core.py
|
|
19
|
+
slmp/device_ranges.py
|
|
20
|
+
slmp/error_codes.py
|
|
21
|
+
slmp/errors.py
|
|
22
|
+
slmp/py.typed
|
|
23
|
+
slmp/utils.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
[console_scripts]
|
|
2
|
+
slmp-connection-check = slmp.cli:connection_check_main
|
|
3
|
+
slmp-device-range-probe = slmp.cli:device_range_probe_main
|
|
4
|
+
slmp-extended-device-recheck = slmp.cli:extended_device_recheck_main
|
|
5
|
+
slmp-g-hg-extended-device-coverage = slmp.cli:g_hg_extended_device_coverage_main
|
|
6
|
+
slmp-g-hg-extended-device-recheck = slmp.cli:g_hg_extended_device_recheck_main
|
|
7
|
+
slmp-init-model-docs = slmp.cli:init_model_docs_main
|
|
8
|
+
slmp-manual-label-verification = slmp.cli:manual_label_verification_main
|
|
9
|
+
slmp-mixed-read-load = slmp.cli:mixed_read_load_main
|
|
10
|
+
slmp-open-items-recheck = slmp.cli:open_items_recheck_main
|
|
11
|
+
slmp-other-station-check = slmp.cli:other_station_check_main
|
|
12
|
+
slmp-pending-live-verification = slmp.cli:pending_live_verification_main
|
|
13
|
+
slmp-read-soak = slmp.cli:read_soak_main
|
|
14
|
+
slmp-register-boundary-probe = slmp.cli:register_boundary_probe_main
|
|
15
|
+
slmp-regression-suite = slmp.cli:regression_suite_main
|
|
16
|
+
slmp-tcp-concurrency = slmp.cli:tcp_concurrency_main
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
slmp
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=69", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "plc-comm-slmp"
|
|
7
|
+
version = "2.0.0"
|
|
8
|
+
description = "SLMP Connect Python: client library for MELSEC SLMP binary communication"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
dependencies = []
|
|
12
|
+
authors = [{ name = "fa-yoshinobu" }]
|
|
13
|
+
license = "MIT"
|
|
14
|
+
|
|
15
|
+
license-files = ["LICENSE"]
|
|
16
|
+
keywords = ["plc-comm", "slmp", "melsec", "mitsubishi", "plc", "3e", "4e", "binary"]
|
|
17
|
+
classifiers = [
|
|
18
|
+
"Development Status :: 5 - Production/Stable",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Programming Language :: Python :: 3.13",
|
|
25
|
+
"Programming Language :: Python :: 3.14",
|
|
26
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
27
|
+
"Topic :: System :: Networking",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
[project.urls]
|
|
31
|
+
Homepage = "https://github.com/fa-yoshinobu/plc-comm-slmp-python"
|
|
32
|
+
Repository = "https://github.com/fa-yoshinobu/plc-comm-slmp-python"
|
|
33
|
+
Issues = "https://github.com/fa-yoshinobu/plc-comm-slmp-python/issues"
|
|
34
|
+
|
|
35
|
+
[project.optional-dependencies]
|
|
36
|
+
dev = [
|
|
37
|
+
"build>=1.2",
|
|
38
|
+
"mypy>=1.10",
|
|
39
|
+
"pre-commit>=3.7",
|
|
40
|
+
"pytest>=8.0",
|
|
41
|
+
"pytest-asyncio>=0.23",
|
|
42
|
+
"pytest-cov>=5.0",
|
|
43
|
+
"ruff>=0.6",
|
|
44
|
+
"twine>=5.1",
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
[project.scripts]
|
|
48
|
+
slmp-connection-check = "slmp.cli:connection_check_main"
|
|
49
|
+
slmp-device-range-probe = "slmp.cli:device_range_probe_main"
|
|
50
|
+
slmp-register-boundary-probe = "slmp.cli:register_boundary_probe_main"
|
|
51
|
+
slmp-other-station-check = "slmp.cli:other_station_check_main"
|
|
52
|
+
slmp-open-items-recheck = "slmp.cli:open_items_recheck_main"
|
|
53
|
+
slmp-g-hg-extended-device-recheck = "slmp.cli:g_hg_extended_device_recheck_main"
|
|
54
|
+
slmp-g-hg-extended-device-coverage = "slmp.cli:g_hg_extended_device_coverage_main"
|
|
55
|
+
slmp-extended-device-recheck = "slmp.cli:extended_device_recheck_main"
|
|
56
|
+
slmp-pending-live-verification = "slmp.cli:pending_live_verification_main"
|
|
57
|
+
slmp-init-model-docs = "slmp.cli:init_model_docs_main"
|
|
58
|
+
slmp-manual-label-verification = "slmp.cli:manual_label_verification_main"
|
|
59
|
+
slmp-read-soak = "slmp.cli:read_soak_main"
|
|
60
|
+
slmp-mixed-read-load = "slmp.cli:mixed_read_load_main"
|
|
61
|
+
slmp-tcp-concurrency = "slmp.cli:tcp_concurrency_main"
|
|
62
|
+
slmp-regression-suite = "slmp.cli:regression_suite_main"
|
|
63
|
+
|
|
64
|
+
[tool.setuptools.packages.find]
|
|
65
|
+
include = ["slmp*"]
|
|
66
|
+
exclude = ["tests*", "scripts*", "internal_docs*"]
|
|
67
|
+
|
|
68
|
+
[tool.setuptools]
|
|
69
|
+
include-package-data = true
|
|
70
|
+
exclude-package-data = { "*" = ["TODO.md", ".pre-commit-config.yaml"] }
|
|
71
|
+
|
|
72
|
+
[tool.setuptools.package-data]
|
|
73
|
+
slmp = ["py.typed"]
|
|
74
|
+
|
|
75
|
+
[tool.ruff]
|
|
76
|
+
line-length = 120
|
|
77
|
+
target-version = "py310"
|
|
78
|
+
|
|
79
|
+
[tool.ruff.lint]
|
|
80
|
+
select = ["E", "F", "I", "B", "UP"]
|
|
81
|
+
|
|
82
|
+
[tool.ruff.lint.per-file-ignores]
|
|
83
|
+
"slmp/error_codes.py" = ["E501"]
|
|
84
|
+
|
|
85
|
+
[tool.ruff.lint.isort]
|
|
86
|
+
known-first-party = ["slmp"]
|
|
87
|
+
|
|
88
|
+
[tool.mypy]
|
|
89
|
+
files = ["slmp"]
|
|
90
|
+
warn_unused_configs = true
|
|
91
|
+
disallow_untyped_defs = true
|
|
92
|
+
check_untyped_defs = true
|
|
93
|
+
disallow_incomplete_defs = true
|
|
94
|
+
no_implicit_optional = true
|
|
95
|
+
warn_redundant_casts = true
|
|
96
|
+
warn_unused_ignores = true
|
|
97
|
+
warn_return_any = true
|
|
98
|
+
strict_equality = true
|
|
99
|
+
|
|
100
|
+
[tool.coverage.run]
|
|
101
|
+
source = ["slmp"]
|
|
102
|
+
branch = true
|
|
103
|
+
|
|
104
|
+
[tool.pytest.ini_options]
|
|
105
|
+
testpaths = ["tests"]
|
|
106
|
+
asyncio_mode = "auto"
|
|
107
|
+
|
|
108
|
+
[tool.coverage.report]
|
|
109
|
+
show_missing = true
|
|
110
|
+
|
|
111
|
+
|