Released on November 13th, 2025.
This version’s Python API documentation.
With this version, we bring you a couple of significant changes, along with lots of bugfixes – huge Thank You to everyone who reports them in this forum!
-
Syside Automator is now on PyPI.org! This means that you do not need to use
--index-urlwhen installing Syside anymore, and you don’t need to be setting up anyuv.tomlorpypi.conffiles. -
Improved Python debugger: Before, when using the Python debugger you had to deal with
LazyIteratorsand it significantly slowed down the exploration of the model structure as you’d need to constantly run.collect()in the debug console to see inside of it (the first image).Starting with 0.8.2, Python debugger will now show the contents of
LazyIteratorsto you! Don’t worry,LazyIteratorsdid not go anywhere and the performance is still the same in non-debugger environments. -
Ability to evaluate quantities:
syside.Compilercan now do quantity conversion for SI units! Just addexperimental_quantities=Trueas a function parameter when runningsyside.Compiler.evaluate()orsyside.Compiler.evaluate_feature(). This will let Syside correctly evaluate expressions with mixed units (e.g.10 [kg] + 100 [g]). An example showing this out along with roll-up functionality is available in our documentation. -
Move elements between parents programmatically: Syside Automator 0.8.2 introduces new
extractAPI. Before if the users wanted to move an element from one parent to another, they would first need to delete it from the previous parent, and recreate from scratch in the new parent. This is annoying if the moved element had lots of children itself, as all that data would be lost and would need to be recreated. TheexctractAPI lets you easily transfer the element without data loss. A short example is given below, for details refer to the API reference.extracted_element = sourceParent.children.extract_element(elementToMove) _, _ = targetParent.children.append(syside.FeatureMembership, extracted_element) -
Changelog is split into smaller parts: we noticed that a lot of our changelog entries would be duplicated among Editor, Modeler, and Automator sections. Therefore, we are introducing sections called “All” for changes applicable to Editor, Modeler, and Automator, and “Authoring Tools” for changes applicable only to Editor and Modeler. Of course, there are sections for each of the three tools as well, but they contain exclusive changes to those individual tools.
-
Changes to documentation: We have slightly reworked our documentation on docs.sensmetry.com. Previously the full documentation suite (install instructions, examples, API) was versioned. We have now moved to a model where only the API is being versioned, as other parts have stabilised. Therefore, the user documentation will now live at docs.sensmetry.com/index.html rather than docs.sensmetry.com/latest/index.html, while the Automator API reference can be accessed at docs.sensmetry.com/python/latest/index.html.
-
Introduced the Labs label to documentation, labeling features that are not mature yet, but provide advanced and unique functionality. Based on user demand, the Labs features may ultimately be fully developed and released.
All
Features
- validation: Diagnose
TypeandFeatureSpecializationsemantic constraint violations due toConjugationcycles - validation: Add a warning when a
Usageis typed by other thanClassifier - validation: Add non-specification error diagnostic for
standarduser library packages
Bug Fixes
- sema: Ignore placeholders for
naming_feature - validation: Ignore placeholders for type checking
- validation: Ignore degenerate inheritance case in namespace distinguishability where a member can shadow itself
- validation: Enable
association-end-typesvalidation that was missed - sema: Fix individual definitions to always receive their kind base types in addition to
Life - fs: Fix that dotted paths were inferred to be globs and such directories not searched recursively
- printer,formatter: Fix that chained instantiated types were printed as regular
Featuresinstead of chainings - formatter: Fix that inner notes following heritage were printed at the closing bracket instead of the opening
- sema: Fix crash when reusing a cancelled worker (Forum post: 265)
- model: Fix crash when accessing an empty
StateSubactionMembership::action - interpreter: Fix that chained accesses were not evaluated in the LHS scope (Forum post: 256)
- stdlib: Fix
tonneto be 1000 kg instead of 0.001 kg - printer: Print more qualified name segments if the starting segment would resolve to a different owned member in nested namespaces (Forum post: 274)
- serde: Remove deserialization of now derived
MetadataAccessExpression::referenced_element - sema: Mark automatically inserted constructor result inheritance as implied
- serde: Fix that prefix-looking metadata features were deserialized into prefix even if there were heritage or type relationships before
- serde: Fix that multiplicity could be deserialized as an owned crossing feature
- serde: Fix that explicit
MetadataFeatureannotations were not deserialized into the metadata annotations - serde: Fix that
MembershipExposefailed to be deserialized with missing related element - parser: Fix minimal serialization of
SendActionUsagesby not mark implicit empty parameter relationships as implied - mode: Fix
annotated_elementsto return owner if owned through anAnnotation - model: Fix
EventOccurrenceUsage::event_occurrenceto return types that areOccurrenceUsagesby the specification - model: Fix
PerformActionUsage::performed_actionto return types that areActionUsageby the specification - formatter: Fix that implicit
TransitionUsagesources were printed (Forum post: 279) - interpreter: Search for better feature matches in owning types if a match was not found to simulate captures (Forum post: 288)
- printer: Fix crash when trying to print binary expressions without arguments
Miscellaneous Tasks
- osx: Rename bundle to
Syside.app - deps: Update
syside-licenseto 0.3.3
Authoring Tools
Bug Fixes
- lsp: Fix potential crash on watched file deletion
Automator
Features
- python: Add
pydevdplugin to improve debugging experience withpydevdanddebugpy - python: Add methods to extract related elements from containers and member accessors
- python: Automatically upload anonymous crash reports, add
debug.set_crash_report_uploadto change the behaviour - python: Add additional standard elements to
Stdlibthat are required for quantity expression evaluation - python: Add
experimental_quantitiesoption toCompilerto attempt evaluating scalar quantity expressions in SI units - python: Add
BasicDocument.mutexproperty to retrieve the associated mutex - python: Add
json.loadsoverload for projects accepting multiple sources to deserialize from that also resolves references
Bug Fixes
- python: Fix
ConstructorExpression.argumentsraising errors on member accesses due to it being bound to the return feature - python: Define
Valuealias at runtime - python: Fix
.castand.try_castraisingRuntimeErroron valid tuple parameters - python: Add missing
Connector.sourcesproperty to matchRelationshipinterface - python: Fix internal cast error in
Flow.payload_typesdue to badly inferredselftype
Miscellaneous Tasks
- python: Fix spurious indentation in some property docs
Modeler
Features
- cli: Add option to automatically upload crash reports
- cli: Add
--warnings-as-errorsflag tocheckto exit with a non-zero exit code if warnings were found - Add a setting to not encode remote URI on remote builds
- Rename macOS bundle from SysIDE to Syside
- Add flag for disabling the crash reporting
Bug Fixes
- Do not download Syside tools when using remote TS
- Do not encode remote urls
- Fix bug report links in extension README
- Check Java installation
- Make settings urls to work on VS Codium
Miscellaneous Tasks
- Update Syside Core to 0.8.2
- Update Syside License Checker to 0.3.3
Editor
Features
- Add configure option for
--crash-reports
Bug Fixes
- Fix bug report links in extension README

