Skip to content

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 as Ranges, per current kind and conditions.
  • Rating.power_loss: the power a part dissipates, with the load in at.
  • Contact.voltage: the limiting voltage as Ranges, per current kind, like Rating.voltage. Break from 0.1.0: the field was one Range; it is now a tuple of them, and a bare Range is wrapped into a one-item tuple, so Contact(voltage=one_range) still builds but contact.voltage reads 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.vocab door with Kind, Current, Utilisation, CoilState and ConductorKind.
  • Vocab and leaf blocks: the other vocabularies of elecdef.vocab, Connection, Body, Rating and Symbol, and the elecdef.connections door with its thirteen technology-only leaves.
  • Pins and supply: the elecdef.pins door (Pin, PinRole, Side, Link, LinkKind, Marking, contact_pins) and the elecdef.supply door (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) and elecdef.computer (Computer, Port) doors.
  • PinRole.SCREEN, the last member of PinRole: the role of a cable screen pin.
  • Tables: the elecdef.tables door, generated by scripts/gen_tables.py from data/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.conductor door (Conductor) and the elecdef.cable door (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.fuse door (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.plc door (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.