Skip to main content

SELlib

Read and write the file formats an SEL protective relay project is made of — the ones AcSELerator QuickSet produces.

Nothing here talks to a relay, opens a socket, or knows what a web request is.

Renamed. This library was published as selfiles for 1.x. From 2.0.0 it is SELlib, and the import moved with it — import sellib, not import selfiles. Nothing else changed in 2.0.0; the major is the rename. The selfiles distribution has been removed from PyPI, so there is no version of it left to install: import selfiles does not resolve to anything, and a requirements file naming it will fail rather than quietly install something older.

import sellib
from sellib.rdb import process_upload
from sellib.dnp_map import parse, discover

sellib.configure(user_data_dir="~/.pacct/data", cache_dir="/var/cache/rdb")

info = process_upload(open("substation.rdb", "rb").read(), "substation.rdb")
for relay in info.relays:
    print(relay.name, relay.model, relay.ip)
module what it reads
sellib.rdb, .rdb_cache the RDB (an OLE compound database): relays, models, addresses, extracted into a content-addressed cache
sellib.settings SET_*.TXT relay settings
sellib.dnp_map SET_D<n>.TXT, the DNP3 point map
sellib.gle QuickSet logic diagrams — parse, and render a page to SVG
sellib.selogic SELOGIC equations: parse, compare by equivalence, normalise settings
sellib.models per-model registries: block conventions, and valid Relay Word names
sellib.scl IEC 61850 SCL/SCD: IEDs, GOOSE, VLANs, ExtRefs, functional constraints, SEL sAddr
sellib.match cross-match an RDB's relays against an SCD's IEDs
sellib.dnp_profile SEL DNP3 device profile bundles

The one contract to know about

sellib.dnp_map guarantees parse(b).serialize() == b, byte for byte, for every SET_D in the reference corpus. These bytes go back into a protection relay: a settings file that round-trips imperfectly is a relay that behaves in a way nobody asked for. The 0x1C field separator lives inside the line, before the CRLF, and is preserved literally, along with each model's own index padding (BI_1 on a 411L, BI_00 on a 751).

Writing a Compound File back out — needed whenever an edit grows a stream — is cfbwrite, a separate library.

Data

The per-model registries ship with the package. configure(user_data_dir=...) adds an overlay searched first, per model, so a host can add a relay model at runtime without shipping a new release and without repeating the rest.

Install

pip install sellib

Python 3.10+. Extracted from PAC CT, where all of it is exercised against a real substation corpus.

Licence

AGPL-3.0-or-later — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sellib-2.1.0.tar.gz (297.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sellib-2.1.0-py3-none-any.whl (278.8 kB view details)

Uploaded Python 3

File details

Details for the file sellib-2.1.0.tar.gz.

File metadata

  • Download URL: sellib-2.1.0.tar.gz
  • Upload date:
  • Size: 297.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sellib-2.1.0.tar.gz
Algorithm Hash digest
SHA256 a64fbee217aff5ed19d1eb63fc69f54018a6747d84437fd7484650def8236d02
MD5 f27d620164ec44571e7a9943d61194c3
BLAKE2b-256 006b1d8062188dec2805bbb7d8198a408f219d7a4f49d8d2ce37b0c2c16aba9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sellib-2.1.0.tar.gz:

Publisher: release.yml on GuilhermeMarini/sellib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sellib-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: sellib-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 278.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sellib-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4344b22528f82e4c8fb8667842ebab351eab32b9e37acf474c3d52309e3da3bd
MD5 b51db6da0a8a33f9a6f67167b9fe4331
BLAKE2b-256 1abe12880a134dc10a1592b2bdca7ea6761be3a01a0bf99bbac9d439ac8fcd00

See more details on using hashes here.

Provenance

The following attestation bundles were made for sellib-2.1.0-py3-none-any.whl:

Publisher: release.yml on GuilhermeMarini/sellib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

3.0.1

2 files

3.0.0

2 files

2.2.1

2 files

2.2.0

2 files

This release

2.1.0 This release

2 files

2.0.0

2 files

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