Skip to main content

gridworks-scada-protocol

This package contains data structures used in messages between gridworks-scada devices, the gridworks Ltn and the gridworks-admin.

Sema conformance

The named types in this package are hand-written twins of vocabulary words in the sema registry, and sema is the contract: each type's docstring carries its schema URL (Sema: https://schemas.electricity.works/types/<name>/<version>), and a serialized instance must pass sema validate.

The package vendors its own sema snapshot, sema_snapshot/sema: every word the scada speaks, at the version it speaks, with sema's generated classes and canonical samples. sema_seed_request.yaml is the seed and scripts/regen_sema_snapshot.sh (repo root) regenerates the snapshot from a sibling sema checkout; the snapshot is committed, so a diff shows the vocabulary a scada release speaks. The snapshot is a test oracle, never shipped and never run against a broker.

The conformance sweep lives here (gwsproto_sema_conformance.py) and checks the whole package against the snapshot. From this directory:

uv run python gwsproto_sema_conformance.py

It walks every named type and reports, per type: no snapshot word, version drift against the snapshot, no snapshot class at the pinned version, shape drift (serialized field names or required set differ from the snapshot class), samples the class rejects, and re-serializations that are not byte-identical to the canonical sample; per enum, value drift; per format, examples refused or counterexamples accepted; and in reverse, every snapshot word with no twin. It exits non-zero on any real mismatch. Run it whenever types change on either side; the pytest conformance test runs it with an exact allowlist of known debt.

The named-types tests go further through tests/named_types/sema_oracle.py: every instance a test builds must decode through the snapshot codec and re-encode identically, and every payload a twin refuses the snapshot must refuse on the same axiom.

One additional mode, --cli, also pushes each clean re-dump through sema validate in a sibling sema checkout, so the canonical sema runtime is the judge rather than the vendored copy. There is no release gate: staging vocabulary is allowed on dev brokers only, and the snapshot's indexes/staging.yaml lists the staging words to check by hand before a deploy that talks to a hybrid or production broker.

Metadata

Release files for gridworks-scada-protocol 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gridworks-scada-protocol 1.3.0
File Size Uploaded Provenance Actions
gridworks_scada_protocol-1.3.0.tar.gz 134.8 kB Without provenance Details for gridworks_scada_protocol-1.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gridworks-scada-protocol 1.3.0
File Interpreter ABI Platform Actions
gridworks_scada_protocol-1.3.0-py3-none-any.whl Python 3 none any Details for gridworks_scada_protocol-1.3.0-py3-none-any.whl

Total release size: 410.1 kB

Release files / gridworks_scada_protocol-1.3.0.tar.gz

Download URL gridworks_scada_protocol-1.3.0.tar.gz
Size 134.8 kB
Tags Source
SHA-256 checksum
How to use checksums
433f7179b48e5512395f261d56849a97a38b8d1eeee3eb32ae0cd2784f12c3d8
BLAKE2b-256 checksum
How to use checksums
af207f0c5b4a3fa23c21b253d8e4023d68c32c5f4c2fbd57a9c26d36bae5b3ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.8

Release files / gridworks_scada_protocol-1.3.0-py3-none-any.whl

Download URL gridworks_scada_protocol-1.3.0-py3-none-any.whl
Size 275.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4eadb77c5397422ffbaf950e783ec12ec65a81a05625769c3e6e7315e81d7b85
BLAKE2b-256 checksum
How to use checksums
15fe52c0203f3f8bd4a866af0e2a1ce177a73df0217d2f6665037c20c671a790
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.8

Security for gridworks-scada-protocol 1.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page