slmp-connect-python 1.1.1__tar.gz → 1.2.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.
- {slmp_connect_python-1.1.1/slmp_connect_python.egg-info → slmp_connect_python-1.2.0}/PKG-INFO +5 -8
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/README.md +7 -10
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/pyproject.toml +1 -1
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/__init__.py +15 -9
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/_operations.py +1339 -1151
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/async_client.py +81 -6
- slmp_connect_python-1.2.0/slmp/capability_profiles.py +411 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/client.py +83 -7
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/constants.py +1 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/core.py +1550 -1387
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/device_ranges.py +33 -19
- slmp_connect_python-1.2.0/slmp/errors.py +97 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/utils.py +24 -2
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0/slmp_connect_python.egg-info}/PKG-INFO +5 -8
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp_connect_python.egg-info/SOURCES.txt +1 -0
- slmp_connect_python-1.1.1/slmp/errors.py +0 -42
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/LICENSE +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/MANIFEST.in +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/setup.cfg +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/cli.py +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/error_codes.py +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp/py.typed +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp_connect_python.egg-info/dependency_links.txt +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp_connect_python.egg-info/entry_points.txt +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp_connect_python.egg-info/requires.txt +0 -0
- {slmp_connect_python-1.1.1 → slmp_connect_python-1.2.0}/slmp_connect_python.egg-info/top_level.txt +0 -0
{slmp_connect_python-1.1.1/slmp_connect_python.egg-info → slmp_connect_python-1.2.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: slmp-connect-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: SLMP Connect Python: client library for MELSEC SLMP binary communication
|
|
5
5
|
Author: fa-yoshinobu
|
|
6
6
|
License-Expression: MIT
|
|
@@ -45,9 +45,11 @@ Python library for MELSEC SLMP (Binary 3E/4E) PLC communication.
|
|
|
45
45
|
|
|
46
46
|
The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
|
|
47
47
|
|
|
48
|
+
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.
|
|
49
|
+
|
|
48
50
|
## Supported device types
|
|
49
51
|
|
|
50
|
-
The maintained device and range tables are in [
|
|
52
|
+
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.
|
|
51
53
|
|
|
52
54
|
## Installation
|
|
53
55
|
|
|
@@ -77,15 +79,10 @@ asyncio.run(main())
|
|
|
77
79
|
| [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
|
|
78
80
|
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
79
81
|
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
80
|
-
| [
|
|
82
|
+
| [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. |
|
|
81
83
|
| [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
|
|
82
84
|
| [Examples](samples/README.md) | Run maintained Python samples. |
|
|
83
85
|
|
|
84
|
-
## Hardware verified
|
|
85
|
-
|
|
86
|
-
Live-device verification is maintained in [Latest communication verification](docsrc/user/LATEST_COMMUNICATION_VERIFICATION.md).
|
|
87
|
-
See that page for verified PLC models, transports, dates, limitations, and retained validation notes.
|
|
88
|
-
|
|
89
86
|
## License and registry
|
|
90
87
|
|
|
91
88
|
| Item | Value |
|
|
@@ -11,9 +11,11 @@ Python library for MELSEC SLMP (Binary 3E/4E) PLC communication.
|
|
|
11
11
|
|
|
12
12
|
The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
|
|
13
13
|
|
|
14
|
+
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.
|
|
15
|
+
|
|
14
16
|
## Supported device types
|
|
15
17
|
|
|
16
|
-
The maintained device and range tables are in [
|
|
18
|
+
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.
|
|
17
19
|
|
|
18
20
|
## Installation
|
|
19
21
|
|
|
@@ -41,16 +43,11 @@ asyncio.run(main())
|
|
|
41
43
|
| Page | Use it for |
|
|
42
44
|
| --- | --- |
|
|
43
45
|
| [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
|
|
44
|
-
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
45
|
-
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
46
|
-
| [
|
|
46
|
+
| [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
|
|
47
|
+
| [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
|
|
48
|
+
| [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. |
|
|
47
49
|
| [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
|
|
48
|
-
| [Examples](samples/README.md) | Run maintained Python samples. |
|
|
49
|
-
|
|
50
|
-
## Hardware verified
|
|
51
|
-
|
|
52
|
-
Live-device verification is maintained in [Latest communication verification](docsrc/user/LATEST_COMMUNICATION_VERIFICATION.md).
|
|
53
|
-
See that page for verified PLC models, transports, dates, limitations, and retained validation notes.
|
|
50
|
+
| [Examples](samples/README.md) | Run maintained Python samples. |
|
|
54
51
|
|
|
55
52
|
## License and registry
|
|
56
53
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "slmp-connect-python"
|
|
7
|
-
version = "1.
|
|
7
|
+
version = "1.2.0"
|
|
8
8
|
description = "SLMP Connect Python: client library for MELSEC SLMP binary communication"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -10,12 +10,13 @@ The primary user-facing entry points are:
|
|
|
10
10
|
- ``poll``
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
__version__ = "1.0
|
|
13
|
+
__version__ = "1.2.0"
|
|
14
14
|
|
|
15
|
-
from .async_client import AsyncSlmpClient
|
|
16
|
-
from .
|
|
17
|
-
from .
|
|
18
|
-
from .
|
|
15
|
+
from .async_client import AsyncSlmpClient
|
|
16
|
+
from .capability_profiles import display_name
|
|
17
|
+
from .client import SlmpClient
|
|
18
|
+
from .constants import Command, FrameType, ModuleIONo, PLCSeries
|
|
19
|
+
from .core import (
|
|
19
20
|
DEVICE_CODES,
|
|
20
21
|
BlockReadResult,
|
|
21
22
|
CpuOperationState,
|
|
@@ -39,8 +40,8 @@ from .core import (
|
|
|
39
40
|
decode_cpu_operation_state,
|
|
40
41
|
parse_device,
|
|
41
42
|
parse_extended_device,
|
|
42
|
-
)
|
|
43
|
-
from .device_ranges import (
|
|
43
|
+
)
|
|
44
|
+
from .device_ranges import (
|
|
44
45
|
SlmpDeviceRangeCatalog,
|
|
45
46
|
SlmpDeviceRangeCategory,
|
|
46
47
|
SlmpDeviceRangeEntry,
|
|
@@ -60,7 +61,9 @@ from .error_codes import (
|
|
|
60
61
|
from .errors import (
|
|
61
62
|
SlmpBoundaryBehaviorWarning,
|
|
62
63
|
SlmpError,
|
|
64
|
+
SlmpErrorInfo,
|
|
63
65
|
SlmpPracticalPathWarning,
|
|
66
|
+
SlmpProfileFeatureError,
|
|
64
67
|
SlmpUnsupportedDeviceError,
|
|
65
68
|
)
|
|
66
69
|
from .utils import (
|
|
@@ -139,15 +142,18 @@ __all__ = [
|
|
|
139
142
|
"SlmpClient",
|
|
140
143
|
"SlmpBoundaryBehaviorWarning",
|
|
141
144
|
"SlmpError",
|
|
145
|
+
"SlmpErrorInfo",
|
|
142
146
|
"SlmpPlcProfile",
|
|
147
|
+
"SlmpProfileFeatureError",
|
|
143
148
|
"SlmpPracticalPathWarning",
|
|
144
149
|
"SlmpUnsupportedDeviceError",
|
|
145
150
|
"SlmpResponse",
|
|
146
151
|
"SlmpTarget",
|
|
147
152
|
"SlmpTraceFrame",
|
|
148
153
|
"TypeNameInfo",
|
|
149
|
-
"decode_cpu_operation_state",
|
|
150
|
-
"
|
|
154
|
+
"decode_cpu_operation_state",
|
|
155
|
+
"display_name",
|
|
156
|
+
"format_address",
|
|
151
157
|
"get_end_code_message",
|
|
152
158
|
"get_end_code_name",
|
|
153
159
|
"is_remote_password_end_code",
|