Syside 0.8.2

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!

  1. Syside Automator is now on PyPI.org! This means that you do not need to use --index-url when installing Syside anymore, and you don’t need to be setting up any uv.toml or pypi.conf files.

  2. Improved Python debugger: Before, when using the Python debugger you had to deal with LazyIterators and 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 LazyIterators to you! Don’t worry, LazyIterators did not go anywhere and the performance is still the same in non-debugger environments.

  3. Ability to evaluate quantities: syside.Compiler can now do quantity conversion for SI units! Just add experimental_quantities=True as a function parameter when running syside.Compiler.evaluate() or syside.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.

  4. Move elements between parents programmatically: Syside Automator 0.8.2 introduces new extract API. 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. The exctract API 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)
    
  5. 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.

  6. 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.

  7. 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

:rocket: Features

  • validation: Diagnose Type and Feature Specialization semantic constraint violations due to Conjugation cycles
  • validation: Add a warning when a Usage is typed by other than Classifier
  • validation: Add non-specification error diagnostic for standard user library packages

:bug: 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-types validation 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 Features instead 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 tonne to 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 MetadataFeature annotations were not deserialized into the metadata annotations
  • serde: Fix that MembershipExpose failed to be deserialized with missing related element
  • parser: Fix minimal serialization of SendActionUsages by not mark implicit empty parameter relationships as implied
  • mode: Fix annotated_elements to return owner if owned through an Annotation
  • model: Fix EventOccurrenceUsage::event_occurrence to return types that are OccurrenceUsages by the specification
  • model: Fix PerformActionUsage::performed_action to return types that are ActionUsage by the specification
  • formatter: Fix that implicit TransitionUsage sources 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

:gear: Miscellaneous Tasks

  • osx: Rename bundle to Syside.app
  • deps: Update syside-license to 0.3.3

Authoring Tools

:bug: Bug Fixes

  • lsp: Fix potential crash on watched file deletion

Automator

:rocket: Features

  • python: Add pydevd plugin to improve debugging experience with pydevd and debugpy
  • python: Add methods to extract related elements from containers and member accessors
  • python: Automatically upload anonymous crash reports, add debug.set_crash_report_upload to change the behaviour
  • python: Add additional standard elements to Stdlib that are required for quantity expression evaluation
  • python: Add experimental_quantities option to Compiler to attempt evaluating scalar quantity expressions in SI units
  • python: Add BasicDocument.mutex property to retrieve the associated mutex
  • python: Add json.loads overload for projects accepting multiple sources to deserialize from that also resolves references

:bug: Bug Fixes

  • python: Fix ConstructorExpression.arguments raising errors on member accesses due to it being bound to the return feature
  • python: Define Value alias at runtime
  • python: Fix .cast and .try_cast raising RuntimeError on valid tuple parameters
  • python: Add missing Connector.sources property to match Relationship interface
  • python: Fix internal cast error in Flow.payload_types due to badly inferred self type

:gear: Miscellaneous Tasks

  • python: Fix spurious indentation in some property docs

Modeler

:rocket: Features

  • cli: Add option to automatically upload crash reports
  • cli: Add --warnings-as-errors flag to check to 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: 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

:gear: Miscellaneous Tasks

  • Update Syside Core to 0.8.2
  • Update Syside License Checker to 0.3.3

Editor

:rocket: Features

  • Add configure option for --crash-reports

:bug: Bug Fixes

  • Fix bug report links in extension README
2 Likes