slmp-connect-python 0.1.16__tar.gz → 1.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.
Files changed (38) hide show
  1. slmp_connect_python-1.0.0/MANIFEST.in +2 -0
  2. slmp_connect_python-1.0.0/PKG-INFO +95 -0
  3. slmp_connect_python-1.0.0/README.md +61 -0
  4. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/pyproject.toml +4 -7
  5. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/__init__.py +13 -13
  6. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/_operations.py +71 -54
  7. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/async_client.py +64 -52
  8. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/cli.py +58 -535
  9. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/client.py +64 -62
  10. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/core.py +145 -115
  11. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/device_ranges.py +102 -89
  12. slmp_connect_python-1.0.0/slmp/error_codes.py +2107 -0
  13. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/utils.py +66 -58
  14. slmp_connect_python-1.0.0/slmp_connect_python.egg-info/PKG-INFO +95 -0
  15. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp_connect_python.egg-info/SOURCES.txt +2 -11
  16. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp_connect_python.egg-info/entry_points.txt +0 -2
  17. slmp_connect_python-0.1.16/PKG-INFO +0 -242
  18. slmp_connect_python-0.1.16/README.md +0 -208
  19. slmp_connect_python-0.1.16/slmp/error_codes.py +0 -2093
  20. slmp_connect_python-0.1.16/slmp_connect_python.egg-info/PKG-INFO +0 -242
  21. slmp_connect_python-0.1.16/tests/test_async_client.py +0 -419
  22. slmp_connect_python-0.1.16/tests/test_bugs_and_edges.py +0 -32
  23. slmp_connect_python-0.1.16/tests/test_cpu_operation_state.py +0 -59
  24. slmp_connect_python-0.1.16/tests/test_device_ranges.py +0 -204
  25. slmp_connect_python-0.1.16/tests/test_device_vectors.py +0 -30
  26. slmp_connect_python-0.1.16/tests/test_error_codes.py +0 -71
  27. slmp_connect_python-0.1.16/tests/test_shared_spec.py +0 -131
  28. slmp_connect_python-0.1.16/tests/test_slmp.py +0 -2861
  29. slmp_connect_python-0.1.16/tests/test_sync_async_parity.py +0 -482
  30. slmp_connect_python-0.1.16/tests/test_utils.py +0 -675
  31. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/LICENSE +0 -0
  32. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/setup.cfg +0 -0
  33. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/constants.py +0 -0
  34. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/errors.py +0 -0
  35. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp/py.typed +0 -0
  36. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp_connect_python.egg-info/dependency_links.txt +0 -0
  37. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp_connect_python.egg-info/requires.txt +0 -0
  38. {slmp_connect_python-0.1.16 → slmp_connect_python-1.0.0}/slmp_connect_python.egg-info/top_level.txt +0 -0
@@ -0,0 +1,2 @@
1
+ prune tests
2
+ prune internal_docs
@@ -0,0 +1,95 @@
1
+ Metadata-Version: 2.4
2
+ Name: slmp-connect-python
3
+ Version: 1.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: slmp,melsec,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
+ [![CI](https://github.com/fa-yoshinobu/plc-comm-slmp-python/actions/workflows/ci.yml/badge.svg)](https://github.com/fa-yoshinobu/plc-comm-slmp-python/actions/workflows/ci.yml)
36
+ [![PyPI](https://img.shields.io/pypi/v/slmp-connect-python.svg)](https://pypi.org/project/slmp-connect-python/)
37
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
38
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
39
+
40
+ # MELSEC SLMP for Python
41
+
42
+ Python library for MELSEC SLMP (Binary 3E/4E) PLC communication.
43
+
44
+ ## Supported PLC profiles
45
+
46
+ The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
47
+
48
+ ## Supported device types
49
+
50
+ The maintained device and range tables are in [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md). Use that page for supported device families, address syntax, and profile-specific notes.
51
+
52
+ ## Installation
53
+
54
+ ```bash
55
+ pip install slmp-connect-python
56
+ ```
57
+
58
+ ## Quick example
59
+
60
+ ```python
61
+ import asyncio
62
+ from slmp import SlmpConnectionOptions, open_and_connect, read_typed
63
+
64
+ async def main() -> None:
65
+ options = SlmpConnectionOptions(host="192.168.250.100", port=1025, plc_profile="melsec:iq-r")
66
+ async with await open_and_connect(options) as client:
67
+ value = await read_typed(client, "D100", "U")
68
+ print(f"D100={value}")
69
+
70
+ asyncio.run(main())
71
+ ```
72
+
73
+ ## Documentation
74
+
75
+ | Page | Use it for |
76
+ | --- | --- |
77
+ | [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
78
+ | [Getting started](docsrc/user/GETTING_STARTED.md) | Install the package, connect to your PLC, and run your first SLMP read/write. |
79
+ | [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use the high-level API and common SLMP workflows. |
80
+ | [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md) | Check supported device families, address syntax, and numbering rules. |
81
+ | [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
82
+ | [Examples](samples/README.md) | Run maintained Python samples. |
83
+
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
+ ## License and registry
90
+
91
+ | Item | Value |
92
+ | --- | --- |
93
+ | License | [MIT](LICENSE) |
94
+ | Registry | [PyPI](https://pypi.org/project/slmp-connect-python/) |
95
+ | Package | `slmp-connect-python` |
@@ -0,0 +1,61 @@
1
+ [![CI](https://github.com/fa-yoshinobu/plc-comm-slmp-python/actions/workflows/ci.yml/badge.svg)](https://github.com/fa-yoshinobu/plc-comm-slmp-python/actions/workflows/ci.yml)
2
+ [![PyPI](https://img.shields.io/pypi/v/slmp-connect-python.svg)](https://pypi.org/project/slmp-connect-python/)
3
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
+
6
+ # MELSEC SLMP for Python
7
+
8
+ Python library for MELSEC SLMP (Binary 3E/4E) PLC communication.
9
+
10
+ ## Supported PLC profiles
11
+
12
+ The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
13
+
14
+ ## Supported device types
15
+
16
+ The maintained device and range tables are in [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md). Use that page for supported device families, address syntax, and profile-specific notes.
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ pip install slmp-connect-python
22
+ ```
23
+
24
+ ## Quick example
25
+
26
+ ```python
27
+ import asyncio
28
+ from slmp import SlmpConnectionOptions, open_and_connect, read_typed
29
+
30
+ async def main() -> None:
31
+ options = SlmpConnectionOptions(host="192.168.250.100", port=1025, plc_profile="melsec:iq-r")
32
+ async with await open_and_connect(options) as client:
33
+ value = await read_typed(client, "D100", "U")
34
+ print(f"D100={value}")
35
+
36
+ asyncio.run(main())
37
+ ```
38
+
39
+ ## Documentation
40
+
41
+ | Page | Use it for |
42
+ | --- | --- |
43
+ | [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
+ | [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md) | Check supported device families, address syntax, and numbering rules. |
47
+ | [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.
54
+
55
+ ## License and registry
56
+
57
+ | Item | Value |
58
+ | --- | --- |
59
+ | License | [MIT](LICENSE) |
60
+ | Registry | [PyPI](https://pypi.org/project/slmp-connect-python/) |
61
+ | Package | `slmp-connect-python` |
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "slmp-connect-python"
7
- version = "0.1.16"
8
- description = "SLMP Connect Python: client library for Mitsubishi SLMP binary communication"
7
+ version = "1.0.0"
8
+ description = "SLMP Connect Python: client library for MELSEC SLMP binary communication"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
11
  dependencies = []
@@ -13,9 +13,9 @@ authors = [{ name = "fa-yoshinobu" }]
13
13
  license = "MIT"
14
14
 
15
15
  license-files = ["LICENSE"]
16
- keywords = ["slmp", "melsec", "mitsubishi", "plc", "3e", "4e", "binary"]
16
+ keywords = ["slmp", "melsec", "plc", "3e", "4e", "binary"]
17
17
  classifiers = [
18
- "Development Status :: 3 - Alpha",
18
+ "Development Status :: 5 - Production/Stable",
19
19
  "Intended Audience :: Developers",
20
20
  "Programming Language :: Python :: 3",
21
21
  "Programming Language :: Python :: 3.10",
@@ -55,8 +55,6 @@ slmp-g-hg-extended-device-coverage = "slmp.cli:g_hg_extended_device_coverage_mai
55
55
  slmp-extended-device-recheck = "slmp.cli:extended_device_recheck_main"
56
56
  slmp-pending-live-verification = "slmp.cli:pending_live_verification_main"
57
57
  slmp-init-model-docs = "slmp.cli:init_model_docs_main"
58
- slmp-device-access-matrix-sync = "slmp.cli:device_access_matrix_sync_main"
59
- slmp-manual-write-verification = "slmp.cli:manual_write_verification_main"
60
58
  slmp-manual-label-verification = "slmp.cli:manual_label_verification_main"
61
59
  slmp-read-soak = "slmp.cli:read_soak_main"
62
60
  slmp-mixed-read-load = "slmp.cli:mixed_read_load_main"
@@ -111,4 +109,3 @@ asyncio_mode = "auto"
111
109
  show_missing = true
112
110
 
113
111
 
114
-
@@ -10,7 +10,7 @@ The primary user-facing entry points are:
10
10
  - ``poll``
11
11
  """
12
12
 
13
- __version__ = "0.1.16"
13
+ __version__ = "0.8.0"
14
14
 
15
15
  from .async_client import AsyncSlmpClient
16
16
  from .client import SlmpClient
@@ -31,6 +31,7 @@ from .core import (
31
31
  LongTimerResult,
32
32
  MonitorResult,
33
33
  RandomReadResult,
34
+ SlmpPlcProfile,
34
35
  SlmpResponse,
35
36
  SlmpTarget,
36
37
  SlmpTraceFrame,
@@ -43,13 +44,12 @@ from .device_ranges import (
43
44
  SlmpDeviceRangeCatalog,
44
45
  SlmpDeviceRangeCategory,
45
46
  SlmpDeviceRangeEntry,
46
- SlmpDeviceRangeFamily,
47
47
  SlmpDeviceRangeNotation,
48
- build_device_range_catalog_for_family,
49
- family_label,
50
- normalize_device_range_family,
51
- read_device_range_catalog_for_family,
52
- read_device_range_catalog_for_family_sync,
48
+ build_device_range_catalog_for_plc_profile,
49
+ normalize_plc_profile,
50
+ plc_profile_label,
51
+ read_device_range_catalog_for_plc_profile,
52
+ read_device_range_catalog_for_plc_profile_sync,
53
53
  )
54
54
  from .error_codes import (
55
55
  SlmpEndCodeLanguage,
@@ -139,6 +139,7 @@ __all__ = [
139
139
  "SlmpClient",
140
140
  "SlmpBoundaryBehaviorWarning",
141
141
  "SlmpError",
142
+ "SlmpPlcProfile",
142
143
  "SlmpPracticalPathWarning",
143
144
  "SlmpUnsupportedDeviceError",
144
145
  "SlmpResponse",
@@ -153,10 +154,9 @@ __all__ = [
153
154
  "SlmpDeviceRangeCatalog",
154
155
  "SlmpDeviceRangeCategory",
155
156
  "SlmpDeviceRangeEntry",
156
- "SlmpDeviceRangeFamily",
157
157
  "SlmpDeviceRangeNotation",
158
158
  "normalize_address",
159
- "normalize_device_range_family",
159
+ "normalize_plc_profile",
160
160
  "open_and_connect",
161
161
  "open_and_connect_sync",
162
162
  "parse_address",
@@ -176,8 +176,8 @@ __all__ = [
176
176
  "read_named_sync",
177
177
  "read_typed",
178
178
  "read_typed_sync",
179
- "read_device_range_catalog_for_family",
180
- "read_device_range_catalog_for_family_sync",
179
+ "read_device_range_catalog_for_plc_profile",
180
+ "read_device_range_catalog_for_plc_profile_sync",
181
181
  "read_words",
182
182
  "read_words_chunked",
183
183
  "read_words_chunked_sync",
@@ -201,6 +201,6 @@ __all__ = [
201
201
  "write_words_single_request",
202
202
  "write_words_single_request_sync",
203
203
  "try_parse_address",
204
- "build_device_range_catalog_for_family",
205
- "family_label",
204
+ "build_device_range_catalog_for_plc_profile",
205
+ "plc_profile_label",
206
206
  ]