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.2.0.tar.gz (301.2 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.2.0-py3-none-any.whl (280.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sellib-2.2.0.tar.gz
Algorithm Hash digest
SHA256 ebad2ec286131ffe604fa9455b18ae2c85eb24534da767d0bed8e69e17fa35ce
MD5 6691b6b2099d8ed2bdd9e3dac30b038f
BLAKE2b-256 c6abc03dc34fe49c7b152c601468d787b8e0e8c63264497513f5d11aa25f9fb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for sellib-2.2.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.2.0-py3-none-any.whl.

File metadata

  • Download URL: sellib-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 280.2 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ac306911232aa93c05aae93e262a082c2bc41b5c0bd9b54c4df70c449f744106
MD5 4c2abac4c9d816db6c8e5b3076e1d399
BLAKE2b-256 5e96ed370f0052668639a89ddbfb08988dd3d3f5b20e7ae0b911a2db93fb6de6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sellib-2.2.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

This release

2.2.0 This release

2 files

2.1.0

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