Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0a12 - 2026-04-30¶
Just some minor improvements …
Changed¶
further refinements to documentation.
cleaned up rendering of Graphviz graphs.
Removed¶
removed unused
misc.DocstringInheritanceMixin
0.1.0a11 - 2026-04-24¶
Added¶
ExtendedSerial.read_struct_iterandExtendedSerial.stream_structmethods.misc.SuggestionDictfor key lookup with typo suggestions.added optional
trial_numberparameter toBpod.runmethod.
Changed¶
replaced
NamedTupleswithmisc.SuggestionDictforBpod.inputsandBpod.outputsrefactored Sphinx documentation and API reference.
0.1.0a10 - 2026-04-16¶
Added¶
Bpod.address property — exposes the ZeroMQ address of the running instance.
Bpod.peek_data- read trial data before trial end.misc.ByteEnum- an extendedIntEnumthat caches its values as bytes.Timer fields in StateMachine now accept timedelta values in addition to floats.
bpodCLI entry point for launching a Bpod instance that can be connected to via TCP Unix Sockets.state machinecolumn added to trial data output (hash of the FSM)
Changed¶
renamed
Bpod.send_state_machinetoBpod.run.removed
Bpod.run_state_machine.switched to Polars
LazyFramefor storing trial data.replaced use of
QueuewithSimpleQueue.switched
Bpod.modulefield fromNamedTupletodict.replaced hashlib.blake2b with xxhash for state machine hashing.
cache validation and compilation of state machines.
StateMachine.hashnow returnsbytesinstead ofstr.
0.1.0a9 - 2026-04-02¶
Added¶
bpod.is_readyproperty indicating whether a compiled FSM is loaded and ready to runbpod.is_queuedproperty indicating whether an FSM is queued to run after the current onebpod.get_datafor returning trial data after a state machine run.
Changed¶
renamed
BNCinput events and output actions toTTLInandTTLOut.replaced MD5 hashing of
fsm.StateMachinewith blake2b.improved readability of
ValidationErrormessages infsm.StateMachine.state machine runs are now handled by three separate threads:
ReadThreadfor serial communication with the Bpod,EventThreadfor handling and structuring the incoming data, andSoftcodeThreadfor executing soft-codes.
Fixed¶
reorganization of finalizers for better garbage collection.
0.1.0a8 - 2026-03-04¶
Just a quick bugfix release …
Changed¶
ipc.ServiceHost: set Zeroconf to listen on all interfaces, reorderWelcomeDatafields, and improve type hints.event handler callback type hint to return
Noneinstead ofAny.refactor CI workflows.
0.1.0a7 - 2026-03-01¶
Added¶
com.find_portsfor finding serial ports that match given filter criteria.com.verify_serial_discoveryfor checking if a serial device sends an expected discovery message.convenience functions for reading and writing integers in
com.ExtendedSerial.misc.extend_packedfor extending a bytearray by multiple values of the same format.misc.DocstringInheritanceMixinfor inheriting docstrings from base classes.ipc.LocalServiceAdvertisement: local service advertisement and discoveryipc.iter_servicesandipc.ServiceIteratorfor discovering services.bpod.discover_remote_bpodfor discovering remote Bpod instances.more examples.
Changed¶
more verbose debug logging during state machine runs.
replace unmaintained
appdirsdependency withplatformdirs.switch to zero-based indexing for global counters, timers, conditions and soft-codes.
added file locking to
misc.SettingsDict.switch to using ZMQ multipart messages for communication.
renamed
ipc.DualChannelHost/ipc.DualChannelClienttoipc.ServiceHost/ipc.ServiceClient.restructured
bpodmodule into several submodules.zero-copy behavior on send path of
ipc.ServiceClientand receive path ofipc.ServiceHost.
Fixed¶
decoupled finalizers and event loops from instance references.
0.1.0a6 - 2025-10-29¶
Added¶
Initial work on cached state machine validation:
fsm.StateMachine.check
Changed¶
com.ExtendedSerialno longer supports NumPy types, integers, strings and iterables.refactoring of
com.ChunkedSerialReader
Removed¶
com.to_bytesdependency on Pandas
0.1.0a5 - 2025-09-03¶
Added¶
fsm.to_fileandfsm.from_filefor export/import of state machines.YAML import/export for state machines
Work on documentation: Finite-State Machines
Changed¶
moved state machine structure from msgspec Struct back to Pydantic Model
merged
fsm_typesmodule back intofsmrenamed parameters for
add_statemethod:state_change_conditions->transitionsandoutput_actions->actions
0.1.0a4 - 2025-08-25¶
Added¶
ipc.DualChannelHostandipc.DualChannelClientJSON import/export for state machines
example state machines
Changed¶
improved export of state machines to graphviz
improved settings management
moved state machine structure from Pydantic Model to msgspec Struct
0.1.0a3 - 2025-08-04¶
Added¶
state machine assembly
state machine thread
ZMQ communication module
basic settings management
Changed¶
switched package management from PDM to uv.
0.1.0a2 - 2025-05-07¶
Added¶
pydantic model for state machine
Changed¶
further refactoring of the code
renamed
serialmodule tocomto avoid confusion with PySerial.
0.1.0a1 - 2025-04-22¶
Changed¶
major reorganization of the existing codebase.
renamed
serial_extensionsmodule toserial.
Removed¶
removed
SerialSingletonclass.
0.1.0a0 - 2025-04-17¶
First alpha release. Nothing works.