Version History
This page contains notable changes that affect the API with more details than provided by the changelogs.
v0.9.1
Added
resolve_duplicate_namestoreqif.ImportOptions. Setting this toTruewill append__<6 characters of id>to the ReqIF objects that have duplicated names. On export to ReqIF, Syside will detect these modifications and automatically strip them.
v0.9.0
Added
LazyImportsIteratorthat provides an opt-in method to evaluate import filters on imported members viaLazyImportsIterator.with_import_filter. There is also a convenience evaluatorCompilerFilter.def filtered( element: Namespace, compiler: Compiler, lib: Stdlib | None = None ) -> list[Membership]: filter = CompilerFilter(compiler=compiler, lib=lib or Environment.get_default().lib) return element.memberships.with_import_filter(filter).collect()
Added
SerializationOptions.filterthat allows evaluating import filters during serialization with a given evaluator. Note that this adds overhead through filter expression evaluation, and expressions may be evaluated multiple times with the same arguments.Changed
__main__to invoke the native CLI. All commands work the same as if using native CLI, however there is non-negligible Python startup cost compared to the native executable.interactivecommand has not changed. Standard output can be captured via contextlib.redirect_stdout and friends.Moved and refactored
FormatOptionstoconf.FormatOptions. The structure is mostly incompatible with previous versions, but matches the structure used insyside.toml, and should be easier to navigate.BoundMetaclass.metaclassis now optional. This makes reflection and metadata classification work without passing standard library cache toCompiler.evaluateand friends.Marked
BaseModelandModelasfrozento satisfy type checkers.Added missing
ForLoopActionUsage.seq_member.Extended
Compiler.evaluateto work on calculations and constraints as invocations without explicit arguments. Requirement evaluation implemented asconjunction(assumed constraints) implies conjunction(required constraints + nested requirements)
Split scalar values off of
ValueintoScalar. This just propagates the internal behaviour to the type system, namely that returnedlistswere never staggered.Added
complexevaluation to interpreter, and toScalar.Added fractions.Fraction evaluation to interpreter, and to
Scalar. Integer division now returns a rational number which is exact as long as numerator and denominator fit into 64 bit signed integer (2^63..2^63-1).Added
ReqIFimport and export functionality. The main use case is to use it as a CLI throughsyside reqif --help,python -m syside reqif --helporpython -m syside.reqif. Requires Syside Automator to be installed with an optional[reqif]extra, e.g.pip install syside[reqif].
v0.8.5
Added
Compiler.evaluate_filterto evaluate filter expressions on selected elements. This assumes that filter expressions operator on the element metadata rather than the element itself.Compilernow evaluates supported user defined functions.Compilernow evaluates metamodel reflection.Added
Sema.resolveoverload that acceptsSequence[Document]instead. The first overload will be deprecated and removed in future versions to reduce chances of deadlocking.Simplified builtin standard function lookup to allow calling standard operator functions explicitly, and support type-overloaded standard functions.
Implemented most missing scalar and sequence functions from the
Kernel Function Library. They also support optional and named arguments.
v0.8.4
Extended visualization to handle more cases and render more details.
Added
Stdlib.update.Added
NamePreferenceandReferencePrinterto customize how synthetic references are printed.
v0.8.3
Added a very early implementation for model visualization,
experimental.viz. This can generate DOT output throughexperimental.viz.dot.
v0.8.2
Added methods to extract related elements without clearing their subtrees:
While these methods will return the extracted element as an orphan which allows it to be reparented, they still do not allow the element to be moved to another document.
Added
experimental_quantitiesoption toCompiler.evaluateandCompiler.evaluate_feature.Added
pydevdplugin for custom debugger visualizers which greatly improves debugging experience by eagerly evaluatingLazyIteratorand hiding internal methods. More visualizers to come in future releases.Added automatic crash upload which is enabled by default. While this will allow us to receive and act upon crashes faster, it can be disabled with
debug.set_crash_report_upload(False).Labs Added
json.loadsoverload for project loading that will attempt to resolve references similarly toload_model.
v0.8.1
Added missing
environmentarguments topreview.open_modelandpreview.open_model_unlocked. This allows existing models to be used as dependencies.
v0.8.0
Version v0.8.0 updates SysML support including changes from:
Most notable changes:
Removed implicit
SubjectMembershipsandObjectiveMembershipsfromrequirementsandcases.Feature.is_constantreplacesFeature.is_read_only.Added
Feature.is_variable.Added
ConstructorExpressionswhich replaceInvocationExpressionsthat invoke non-Step, non-Behaviortypes. While the syntax is similar with former needing anewkeyword prefix, parse trees are different:attribute x = Type(2);
Namespace [0, 0] - [1, 0] children: OwningMembership [0, 0] - [0, 22] target: AttributeUsage [0, 0] - [0, 22] attribute [0, 0] - [0, 9] declared_name: NAME [0, 10] - [0, 11] value: FeatureValue [0, 12] - [0, 21] = [0, 12] - [0, 13] target: InvocationExpression [0, 14] - [0, 21] children: Membership [0, 14] - [0, 18] target: TypeReference [0, 14] - [0, 18] parts: NAME [0, 14] - [0, 18] ( [0, 18] - [0, 19] children: ParameterMembership [0, 19] - [0, 20] target: Feature [0, 19] - [0, 20] value: FeatureValue [0, 19] - [0, 20] target: LiteralInteger [0, 19] - [0, 20] literal: DECIMAL_VALUE [0, 19] - [0, 20] ) [0, 20] - [0, 21] ; [0, 21] - [0, 22]attribute x = new Type(2);
Namespace [0, 0] - [1, 0] children: OwningMembership [0, 0] - [0, 26] target: AttributeUsage [0, 0] - [0, 26] attribute [0, 0] - [0, 9] declaredName: NAME [0, 10] - [0, 11] value: FeatureValue [0, 12] - [0, 25] = [0, 12] - [0, 13] target: ConstructorExpression [0, 14] - [0, 25] new [0, 14] - [0, 17] children: Membership [0, 18] - [0, 22] target: TypeReference [0, 18] - [0, 22] parts: NAME [0, 18] - [0, 22] children: ReturnParameterMembership [0, 22] - [0, 25] target: Feature [0, 22] - [0, 25] ( [0, 22] - [0, 23] children: ParameterMembership [0, 23] - [0, 24] target: Feature [0, 23] - [0, 24] value: FeatureValue [0, 23] - [0, 24] target: LiteralInteger [0, 23] - [0, 24] literal: DECIMAL_VALUE [0, 23] - [0, 24] ) [0, 24] - [0, 25] ; [0, 25] - [0, 26]Note that the type constructed by
ConstructorExpressionis now amemberinNamespace.children, and arguments are parsed into areturnFeature.Renamed some classes, and related
snaked_casedattribute names:ItemFeaturerenamed toPayloadFeature,item_featuretopayload_feature.ItemFlowrenamed toFlow,item_flowtoflow.FlowConnectionUsageandFlowConnectionDefinitionrenamed toFlowUsageandFlowDefinitionrespectively,flow_connectiontoflow.
Removed
FeaturingandLifeClasstypes - these were not representable in textual syntax anyway, butFeatureMembershipandTypeFeaturinglost inherited members fromFeaturing.MetadataAccessExpression.set_referenced_elementwas fixed in the specification to be referenced throughMembership, available throughMetadataAccessExpression.referenced_element.Added
Element.path, and extended deterministic element ID generation to user models. However, also note:Element.pathdoes not yet work for elements withoutqualified_namedue to performance concerns. This should be fixed in a future release.User element ID generation may be changed in a future version if we can improve performance.
Added previously missed standard attributes:
Element.alias_ids(currently a view into an empty container only)
Other non-model changes include:
Increased default
PrinterConfig.line_widthto 100 from 80 to matchrustfmtand produce fewer line breaks, this works better with modern monitors.Improved deserialization to defer unresolved references without
@uriinstead of emitting an error. Unresolved owned elements still emit errors.
v0.7.2
v0.6.4
Added
print_referencesoption to print references withsexp
v0.6.3
Added constructor methods
from_...toDocumentSegment
v0.6.0
Initial public release.