Changelog
This file holds one section per release of elecdef, newest first. Every change to the public surface gets a line under Unreleased until the release is cut.
Unreleased
0.2.0 (2026-10-23)
Rating.current: rated current asRanges, per current kind and conditions.Rating.power_loss: the power a part dissipates, with the load inat.Contact.voltage: the limiting voltage asRanges, per current kind, likeRating.voltage. Break from 0.1.0: the field was oneRange; it is now a tuple of them, and a bareRangeis wrapped into a one-item tuple, soContact(voltage=one_range)still builds butcontact.voltagereads as a tuple.
0.1.0 (2026-10-23)
- Value layer: Unit, Quantity, Range, Ranges, Role, At, pick, Pick, Issue and IssueCode, and the
elecdef.vocabdoor with Kind, Current, Utilisation, CoilState and ConductorKind. - Vocab and leaf blocks: the other vocabularies of
elecdef.vocab, Connection, Body, Rating and Symbol, and theelecdef.connectionsdoor with its thirteen technology-only leaves. - Pins and supply: the
elecdef.pinsdoor (Pin, PinRole, Side, Link, LinkKind, Marking, contact_pins) and theelecdef.supplydoor (SupplyInput). - Switching: Contact, Coil, Relay, Contactor and ContactBlock; a contact or a coil stores only the pins its author gives, and a relay, contactor or contact block numbers its contacts on every read.
- Terminal, connector, computer and device: TerminalBlock and Device at top level, and the
elecdef.terminal(Level),elecdef.connector(Connector) andelecdef.computer(Computer, Port) doors. - PinRole.SCREEN, the last member of PinRole: the role of a cable screen pin.
- Tables: the
elecdef.tablesdoor, generated byscripts/gen_tables.pyfromdata/tables/*.toml: CROSS_SECTIONS, AWG, AWG_METRIC, CORE_COLOURS, BREAKER_CURVES, BREAKER_CURRENTS, BREAKER_ICN, TRIP_TIMES, CABLE_VOLTAGES, OVERVOLTAGE_IMPULSE and E_SERIES. - Conductor and cable: the
elecdef.conductordoor (Conductor) and theelecdef.cabledoor (Cable, Core, TypeCode); a Cable computes one pin per core and an SH pin with the role SCREEN when it has a screen. - Protection: Overload, Fuse and Breaker at top level and the
elecdef.fusedoor (FuseHolder); an overload and a breaker number their auxiliaries on every read, and the fuse, fuse holder and breaker pin rows are proposed. - PSU and PLC: PowerSupply and PlcCard at top level, and the
elecdef.plcdoor (DigitalInput, DigitalOutput, AnalogIo, Channel, ChannelGroup); a power supply and a card store no pins and read them on every access. - Product and check: Product(mpn, manufacturer, block, name=None) and check(block), which reports END_ORDER, DUPLICATE_MARKING, BAD_MARKING, DANGLING_LINK and UNKNOWN_CLASS for any block, and MISSING_FIGURE for the figures a block needs only inside a Product; the top-level surface is now 28 names.
- ChannelGroup refuses a template Channel that carries a number or pins, with TypeError; the group numbers its channels.
- check reports a marking-syntax issue once per authored pin, at the block that authored it (for example
contacts[1].own_pins[0]), and DUPLICATE_MARKING once over the outermost block's full pin set. - Docs: a worked-example guide page for the relay, contactor, overload and PLC card examples.