0.12.x → 0.13.x¶
This release removed the auto-registration registry machinery (a Python-API break), renamed
several interface/deployment classes, and introduced the experimental App model and the
vendor-neutral NM layer. The structured FLYNC-... error-ID scheme began here.
Breaking — Python API¶
Registry / instances machinery removed¶
The auto-registration base classes and global registry were deleted: UniqueName,
DictInstances, NamedDictInstances, ListInstances, NamedListInstances,
Registry, get_registry. Any importer breaks:
from flync.core.base_models import Registry, get_registry # ImportError in 0.13
Uniqueness that was previously enforced via the registry is now enforced by explicit
validate_list_items_unique(...) validators (see under Breaking — YAML). No error ID — a
plain ImportError.
ControllerInterface split (breaking import)¶
The former Ethernet-config class ControllerInterface was renamed ``EthernetInterfaceConfig``,
and a new minimal base class ``ControllerInterface`` (single name field) was created
in flync_4_ecu/controller_interface.py.
# ImportError in 0.13:
from flync.model.flync_4_ecu.controller import ControllerInterface
# Correct:
from flync.model.flync_4_ecu import ControllerInterface # now the MINIMAL base
from flync.model.flync_4_ecu.controller import EthernetInterfaceConfig # the old config class
YAML is unchanged: ethernet_interfaces[].interface_config{...} has the same shape.
Public class renames (Python imports)¶
0.12 name |
0.13 name |
|---|---|
|
|
|
|
|
|
|
|
|
|
YAML discriminators (node_type: master/slave, protocol) are unchanged.
PDUSender / PDUReceiver relocated¶
These moved out of flync_4_signal/frame.py into the new flync_4_signal/pdu_deployment.py
(re-exported from the package __init__):
from flync.model.flync_4_signal.frame import PDUSender # ImportError in 0.13
from flync.model.flync_4_signal.pdu_deployment import PDUSender # correct
Semantic change: pdu_ref may now point to any PDU declared under
communication.channels (workspace-validated by validate_pdu_deployment_refs) rather
than only a ContainerPDU. An unresolved ref raises FLYNC-SIG-MAJ-REF-....
SOMEIPServiceDeployment.service stays an int (breaking for code)¶
In 0.12 a field_validator replaced the integer service with the resolved
SOMEIPServiceInterface object; in 0.13 the field keeps the raw int service id and the
resolved object is a PrivateAttr _service_ref bound later:
deployment.service # int (id) in 0.13; calling .service.name raises AttributeError
resolve_reference(deployment, "service").name # new public helper (flync.core.annotations.reference)
YAML is unaffected; only Python consumers of the resolved attribute are affected. The CLI was updated accordingly.
Breaking — YAML schema¶
New stricter top-level uniqueness validators¶
FLYNCModel added validate_unique_ecu_names and validate_unique_port_names: ECU
names and all ECU port names across the workspace must now be globally unique. Reusing a
port name across two ECUs now fails:
ID:
FLYNC-<MODULE>-MAJ-UNIQ-009(fromvalidate_list_items_unique)
Additive (0.13.x)¶
New root field ``FLYNCModel.apps`` — optional
List[App], emitted as folderapps/. When set it warns ``FLYNC-GEN-WARN-LIFE-188`` (“Apps are currently experimental!”). App refs validated against known SOME/IP services (``FLYNC-GEN-MAJ-REF-186``) and controllerapp_bindings(``FLYNC-CMN-MAJ-REF-187``). Additive.New ``flync_4_app`` package:
App(name implied from file name,service_consumer_refs/service_provider_refs),ServiceConsumerReference/ServiceProviderReference,AppBindings.New NM layer
flync_4_nm/state_management.py:StateManagementGroup,StateMembershipRef, timing classes. New optionalstate_membershipsfield onController/ECU/CANBus/LINBusand newFLYNCCommunicationConfig.state_management.TCAM features (
switch.py):FrameMaskbyte-pattern match,FrameFilter.ethertype(newEthertypeenum), TCAM rulevehicle_state/vehicle_state_mask; port-scoped terminal actions now default to all ports. Loosening (previously-invalid configs now valid);match_filterandframe_maskbecame mutually exclusive (exactly one required).FLYNCCommunicationConfig.tcp_profilesmade optional (loosening).New
Ethertypedatatype incore.datatypes.New CLI:
flync errorsgroup (get-next-number,validate-catalogue,generate-catalog) andflync debug; error tables now display theIDcolumn.