Releases: fa-yoshinobu/plc-comm-computerlink-python
Releases · fa-yoshinobu/plc-comm-computerlink-python
Release list
Release v3.2.1
[3.2.1] - 2026-07-29
- Release: Bumped package metadata and
toyopuc.__version__to3.2.1. - Release: GitHub Release drafts now prepend this version's changelog section to generated notes and repair a missing section on workflow reruns.
- Tooling: Pinned canonical profile fixture refreshes to
plc-comm-computerlink-profilesv1.0.4, matching the embedded profile data used by this release.
BREAKING
- Library: Removed obsolete command upper-bit response flags and routes. Consumers must classify responses from their structural length and command contract instead of the removed flags.
Fixed
- Library: Write commands are never retried after a transport failure that may follow transmission; read-only classification is structural rather than dependent on the removed flags.
- Library: Relay response length decoding now handles a zero low byte correctly and rejects truncated or trailing response data exactly.
- Library: Profile catalog address bounds are advisory and do not reject transport sends; wire-format width checks remain.
What's Changed
- Close targetless live verification TODOs by @fa-yoshinobu in #29
- Align Computer Link Python safety contracts by @fa-yoshinobu in #30
- Release 3.2.1 with changelog-backed GitHub notes by @fa-yoshinobu in #31
- Pin Computer Link profiles v1.0.4 by @fa-yoshinobu in #32
Full Changelog: v3.2.0...v3.2.1
Release v3.2.0
v3.2.0 changes
-
Release: Bumped package metadata and
toyopuc.__version__to3.2.0. -
CI: Excluded maintainer-only files, tests, and release tooling from generated source archives while retaining the complete sample set, and added source-archive contract checks to local, CI, and release gates.
-
Library: Added immutable client-lifetime traffic snapshots through
traffic_stats()on synchronous and asynchronous clients.
Release v3.1.0
v3.1.0 changes
BREAKING
- Samples: All runnable endpoint, multi-PLC, and configuration-driven samples require an explicit destination port and transport instead of defaulting to
1025/TCP. - Library: Split scalar
read_one/relay_read_onefrom count-required list reads;count=1now returns a list and all range reads reject implicit multi-request splitting. - Library: Renamed sparse
read_many/relay_read_manytoread_devices/relay_read_devicesso contiguous and sparse semantics are not overloaded. - Library: Removed public chunking helpers and the
atomic_transferoption. Dword and float arrays now require one protocol request and reject boundary or limit overflow before communication. - Library: Removed FR write/commit combination, range commit, wait/poll helpers, and raw FR-register methods. FR work-area writes and one-block commits are separate operations.
- Library: FR work-area word values require actual integers in
0..65535; negative, overflowing, Boolean, fractional, and string values are rejected before transport instead of being coerced or masked. - Library: Generic bit/byte/word/dword writes reject masking and coercion; sequence writes use one request or fail before transport, and empty collections are invalid.
- Library: Added
ToyopucOperationOutcomeUnknownErrorfor state-changing requests that may have reached the PLC before timeout, disconnect, or cancellation. - Library: UDP sockets are connected to the configured PLC endpoint. A fixed-local-port UDP client becomes terminal after an uncertain post-send failure because Computerlink cannot identify stale same-endpoint responses.
- Library: Relay reads retry the retry-required outer response when configured; relay writes remain non-retryable after send.
- Library: Retries now apply to pre-send connection failures and approved reads only; async cancellation interrupts the synchronous worker and waits for it to finish before returning.
- Library: Removed public trace callback configuration and isolated the maintainer callback on a bounded background queue so callback delay or failure cannot alter communication.
- Library: Bound resolved and parsed address objects to one canonical PLC profile, removed public addressing-option overrides, and reject cross-profile object reuse.
- Library: Moved raw command and prebuilt-payload senders to maintainer-only underscore paths and removed them from async and documented public surfaces.
- Migration: Replace scalar
read(device)withread_one(device), sparseread_many(devices)withread_devices(devices), and intentional multi-request ranges with explicit application calls. - Migration: Replace
write_fr(..., commit=True)withwrite_fr(...)followed bycommit_fr(block_start); use explicit CPU-status reads when completion monitoring is required.
Added
- Library: Added
ToyopucPlcProfileDescriptorandplc_profile_descriptors()for canonical TOYOPUC Computer Link profile metadata.
Fixed
- Library: Keep protocol-width and unsupported-route validation while treating profile catalog index ranges as advisory application/UI metadata.
- Samples: Updated all sample and maintainer-tool client constructors from the removed
protocol=keyword totransport=. - CI: Made release dispatch check out an existing exact tag and verify the tag, manifest, runtime version, and built asset names before upload.
- Docs: Corrected the release guide and removed the hand-maintained Getting Started navigation block.
Tests
- Tests: Added return-shape, strict count, request-boundary, Dword/float no-partial-transfer, FR single-request and strict-value, explicit block commit, and removed-surface regression coverage.
- CI: Write the generated PyInstaller spec under the ignored
builddirectory so a successful release check does not leave a root-level untracked artifact.
Release integrity
- The registry package, �3.1.0 tag, and attached assets remain immutable.
- Main-branch CHANGELOG classification was corrected by PR #24 without changing runtime code, package metadata, the tag, or published artifacts.
v2.0.0
v2.0.0
BREAKING
PyPI install package renamed. Python import names are unchanged.
| Old install name | New install name | Import name |
|---|---|---|
toyopuc-computerlink |
plc-comm-toyopuc |
toyopuc |
Highlights
- Version metadata bumped to 2.0.0.
- Release duplicate checks now target
plc-comm-toyopuc. - API reference and README links are updated for the plc-comm package family.
Package matrix: https://fa-yoshinobu.github.io/plc-comm-docs-site/package-matrix/
Release v1.2.0
What's Changed
- [codex] fix doc typo audit findings by @fa-yoshinobu in #13
- [codex] Improve sample navigation and reconnect examples by @fa-yoshinobu in #14
- [codex] Complete Python API doc coverage by @fa-yoshinobu in #15
- [codex] Add operational polling recipes by @fa-yoshinobu in #16
Full Changelog: v1.1.0...v1.2.0
v1.1.0
Changed
- Release: Bumped package metadata to
1.1.0. - Library: Made byte-unit parsing require explicit
L/Hsuffixes and maderead_many/write_many/read_namedreject implicit multi-request splitting before communication. - Docs: Documented explicit request-boundary behavior for multi-address helpers.
- Samples: Updated high-level samples to keep
read_many,write_many,read_named, andpollrequest boundaries explicit. - Tests: Added coverage for explicit byte suffix requirements and rejected implicit multi-request named reads.
Fixed
- Library: Made
BIT_IN_WORDhelper addresses require an explicit bit index such asP1-D0100.0throughP1-D0100.F;P1-D0100:BIT_IN_WORDnow fails inparse_device_address,try_parse_device_address, andread_namedinstead of silently reading bit 0. - Tests: Added coverage for rejecting
BIT_IN_WORDaddresses without an explicit bit index.
v1.0.1
Changed
- Bump package metadata to 1.0.1.
- Document explicit canonical
plc_profilehandling and rejection of omitted or alias profile values.
Validation
- python -m compileall
Release v1.0.0
What's Changed
- [codex] Clean up Python refactor internals by @fa-yoshinobu in #10
- [codex] release 1.0.0 alignment by @fa-yoshinobu in #11
Full Changelog: v0.8.0...v1.0.0
Release v0.8.0
What's Changed
- [codex] Align address syntax convention by @fa-yoshinobu in #7
- [codex] align Toyopuc profile handling by @fa-yoshinobu in #9
Full Changelog: v0.1.9...v0.8.0
Release v0.1.9
TOYOPUC Computer Link Python maintenance release.
Highlights:
- Records the 2026-06-12 defect verification results for PC10 sparse reads, FR commit/persistence, and relay-hop access.
- Keeps generic FR writes guarded; use explicit write_fr(..., commit=False|True) or commit_fr().
- Keeps single-request and chunked APIs explicit so the caller decides when protocol splitting is acceptable.
- Refreshes release dependencies and MkDocs release-build instructions.
- Brings GitHub Releases back in sync after the repository release list stopped at v0.1.5 while PyPI had 0.1.8.
Verification:
- release_check.bat passed.
- python -m build passed.
- python -m twine check dist/* passed.
- PyPI duplicate check for toyopuc-computerlink 0.1.9: not already published.
Assets:
- toyopuc_computerlink-0.1.9-py3-none-any.whl
- toyopuc_computerlink-0.1.9.tar.gz