sysmlpy 0.87.0__tar.gz → 0.88.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/PKG-INFO +1 -1
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/pyproject.toml +1 -1
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/__init__.py +1 -1
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr_visitor.py +116 -14
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/definition.py +44 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/classes.py +28 -10
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/usage.py +8 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/LICENSE +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/README.md +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/__main__.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/README.md +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr_parser.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/boxes_view.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/dfa_cache.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/diff.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/evaluator.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/examples/attribute_values.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/examples/part_attributes.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/examples/tuples_sequences.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/formatting.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/README.md +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/interchange.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/LICENSE +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/README.md +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/__init__.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Base.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Links.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Actions.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Cases.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Connections.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Flows.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Items.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Parts.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Ports.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/States.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/SysML.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/systems/Views.sysml +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/lsp/__init__.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/lsp/__main__.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/lsp/protocol.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/lsp/server.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/lsp/stdio.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/navigate.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/plantuml.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/project.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/semantic.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/sim.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/spreadsheet.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/store.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/traceability.py +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/us_customary_units.txt +0 -0
- {sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/validator.py +0 -0
|
@@ -34,7 +34,7 @@ __all__ = [
|
|
|
34
34
|
"render_state_transition_view_svg", "boxes_view",
|
|
35
35
|
]
|
|
36
36
|
__author__ = "Jon Fox"
|
|
37
|
-
__version__ = "0.
|
|
37
|
+
__version__ = "0.88.0"
|
|
38
38
|
|
|
39
39
|
from sysmlpy.usage import (
|
|
40
40
|
Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
|
|
@@ -2492,14 +2492,15 @@ def _make_satisfy_requirement_usage_dict(sru_ctx, prefix=None):
|
|
|
2492
2492
|
}
|
|
2493
2493
|
}
|
|
2494
2494
|
|
|
2495
|
-
# Extract valuePart
|
|
2495
|
+
# Extract valuePart (``satisfy s1 : R = 3;``)
|
|
2496
|
+
# valuePart : featureValue ; featureValue : (EQ | COLON_EQ |
|
|
2497
|
+
# DEFAULT …) ownedExpression — use the shared extractor, which
|
|
2498
|
+
# handles the featureValue wrapper and the EQ/COLON_EQ/DEFAULT
|
|
2499
|
+
# flags (v0.88.0 — previously read vp.ownedExpression() directly,
|
|
2500
|
+
# which is one level too high, so the value was dropped).
|
|
2496
2501
|
valuepart = None
|
|
2497
2502
|
if hasattr(sru_ctx, 'valuePart') and sru_ctx.valuePart():
|
|
2498
|
-
|
|
2499
|
-
if hasattr(vp, 'ownedExpression') and vp.ownedExpression():
|
|
2500
|
-
expr = _visit_owned_expression(vp.ownedExpression())
|
|
2501
|
-
if expr:
|
|
2502
|
-
valuepart = {"name": "ValuePart", "ownedRelationship": expr}
|
|
2503
|
+
valuepart = _visit_value_part(sru_ctx.valuePart())
|
|
2503
2504
|
|
|
2504
2505
|
# Extract satisfactionSubjectMember (after 'by')
|
|
2505
2506
|
ssm = None
|
|
@@ -5566,6 +5567,8 @@ def _visit_payload_feature(ctx):
|
|
|
5566
5567
|
PayloadFeature class expects:
|
|
5567
5568
|
identification, valuepart, multiplicity1, multiplicity2, ownedRelationship (OwnedFeatureTyping), pfsp
|
|
5568
5569
|
For 'accept VehicleStartSignal': ownedRelationship contains the type name.
|
|
5570
|
+
For 'accept msg : M': identification + pfsp (v0.88.0 — previously
|
|
5571
|
+
hardcoded to None, so the member's name and typing were dropped).
|
|
5569
5572
|
"""
|
|
5570
5573
|
if ctx is None:
|
|
5571
5574
|
return None
|
|
@@ -5598,14 +5601,49 @@ def _visit_payload_feature(ctx):
|
|
|
5598
5601
|
}
|
|
5599
5602
|
}
|
|
5600
5603
|
|
|
5604
|
+
# identification (``accept msg : M`` — first grammar alternative:
|
|
5605
|
+
# ``identification payloadFeatureSpecializationPart valuePart?``)
|
|
5606
|
+
identification = None
|
|
5607
|
+
if hasattr(ctx, 'identification') and ctx.identification():
|
|
5608
|
+
ident = ctx.identification()
|
|
5609
|
+
if ident:
|
|
5610
|
+
name_list = ident.name() if hasattr(ident, 'name') else None
|
|
5611
|
+
if name_list and isinstance(name_list, list):
|
|
5612
|
+
if len(name_list) == 2:
|
|
5613
|
+
shortname = name_list[0].getText()
|
|
5614
|
+
name = name_list[1].getText()
|
|
5615
|
+
elif len(name_list) == 1:
|
|
5616
|
+
name_text = name_list[0].getText()
|
|
5617
|
+
name = name_text
|
|
5618
|
+
shortname = None
|
|
5619
|
+
else:
|
|
5620
|
+
name = None
|
|
5621
|
+
shortname = None
|
|
5622
|
+
identification = {
|
|
5623
|
+
"name": "Identification",
|
|
5624
|
+
"declaredShortName": shortname,
|
|
5625
|
+
"declaredName": name
|
|
5626
|
+
}
|
|
5627
|
+
|
|
5628
|
+
# pfsp (the ``: M[1]`` specializations after the name)
|
|
5629
|
+
pfsp = None
|
|
5630
|
+
if hasattr(ctx, 'payloadFeatureSpecializationPart') and ctx.payloadFeatureSpecializationPart():
|
|
5631
|
+
pfsp = _build_pfsp_from_ctx(ctx.payloadFeatureSpecializationPart())
|
|
5632
|
+
|
|
5633
|
+
# valuePart (``accept msg = 3`` — ``identification valuePart``
|
|
5634
|
+
# alternative)
|
|
5635
|
+
valuepart = None
|
|
5636
|
+
if hasattr(ctx, 'valuePart') and ctx.valuePart():
|
|
5637
|
+
valuepart = _visit_value_part(ctx.valuePart())
|
|
5638
|
+
|
|
5601
5639
|
return {
|
|
5602
5640
|
"name": "PayloadFeature",
|
|
5603
|
-
"identification":
|
|
5604
|
-
"valuepart":
|
|
5641
|
+
"identification": identification,
|
|
5642
|
+
"valuepart": valuepart,
|
|
5605
5643
|
"multiplicity1": None,
|
|
5606
5644
|
"multiplicity2": None,
|
|
5607
5645
|
"ownedRelationship": owned_rel,
|
|
5608
|
-
"pfsp":
|
|
5646
|
+
"pfsp": pfsp
|
|
5609
5647
|
}
|
|
5610
5648
|
|
|
5611
5649
|
|
|
@@ -10008,6 +10046,21 @@ def _visit_definition_body_item_dict(item_ctx, is_interface=False):
|
|
|
10008
10046
|
inner_element = None
|
|
10009
10047
|
wrapper = None
|
|
10010
10048
|
|
|
10049
|
+
# Check for importRule first (first grammar alternative).
|
|
10050
|
+
# Imports are legal in every body — usage bodies included
|
|
10051
|
+
# (``part p1 { private import Q::*; }``). Reuse the package-body
|
|
10052
|
+
# Import dict shape and wrap it directly as the body item's
|
|
10053
|
+
# relationship (DefinitionBodyItem dispatches on item["name"],
|
|
10054
|
+
# same convention as RootNamespace) — previously silently
|
|
10055
|
+
# dropped (v0.88.0).
|
|
10056
|
+
if hasattr(item_ctx, 'importRule') and item_ctx.importRule():
|
|
10057
|
+
import_dict = _visit_import_rule_dict(item_ctx.importRule())
|
|
10058
|
+
if import_dict is not None:
|
|
10059
|
+
return {
|
|
10060
|
+
"name": "InterfaceBodyItem" if is_interface else "DefinitionBodyItem",
|
|
10061
|
+
"ownedRelationship": [import_dict],
|
|
10062
|
+
}
|
|
10063
|
+
|
|
10011
10064
|
# Check for occurrenceUsageElement (part, item, port, action, etc.)
|
|
10012
10065
|
if hasattr(item_ctx, 'occurrenceUsageElement') and item_ctx.occurrenceUsageElement():
|
|
10013
10066
|
occ_elem = item_ctx.occurrenceUsageElement()
|
|
@@ -14168,6 +14221,24 @@ def _build_full_specialization_from_ud(ud):
|
|
|
14168
14221
|
if not specs and multiplicity is None:
|
|
14169
14222
|
return None
|
|
14170
14223
|
|
|
14224
|
+
specialization_list = _feature_specialization_dicts(specs)
|
|
14225
|
+
|
|
14226
|
+
return {
|
|
14227
|
+
"name": "FeatureSpecializationPart",
|
|
14228
|
+
"specialization": specialization_list,
|
|
14229
|
+
"multiplicity": multiplicity,
|
|
14230
|
+
"specialization2": [],
|
|
14231
|
+
"multiplicity2": None,
|
|
14232
|
+
}
|
|
14233
|
+
|
|
14234
|
+
|
|
14235
|
+
def _feature_specialization_dicts(specs):
|
|
14236
|
+
"""Build FeatureSpecialization dicts from featureSpecialization ctxs.
|
|
14237
|
+
|
|
14238
|
+
Shared core for the FeatureSpecializationPart (usages) and
|
|
14239
|
+
PayloadFeatureSpecializationPart (payload features, e.g. accept
|
|
14240
|
+
members) builders. Handles typings, redefinitions, subsettings and
|
|
14241
|
+
references."""
|
|
14171
14242
|
specialization_list = []
|
|
14172
14243
|
|
|
14173
14244
|
for spec in specs:
|
|
@@ -14292,12 +14363,43 @@ def _build_full_specialization_from_ud(ud):
|
|
|
14292
14363
|
}
|
|
14293
14364
|
})
|
|
14294
14365
|
|
|
14366
|
+
return specialization_list
|
|
14367
|
+
|
|
14368
|
+
|
|
14369
|
+
def _build_pfsp_from_ctx(psp_ctx):
|
|
14370
|
+
"""Build a PayloadFeatureSpecializationPart dict from a
|
|
14371
|
+
payloadFeatureSpecializationPart context.
|
|
14372
|
+
|
|
14373
|
+
Grammar: ``featureSpecialization+ multiplicityPart?
|
|
14374
|
+
featureSpecialization* | multiplicityPart featureSpecialization+``.
|
|
14375
|
+
Used by payload features (e.g. ``accept msg : M[1]``) — v0.88.0,
|
|
14376
|
+
previously hardcoded to None so the member's typing was dropped.
|
|
14377
|
+
"""
|
|
14378
|
+
if psp_ctx is None:
|
|
14379
|
+
return None
|
|
14380
|
+
|
|
14381
|
+
first_group = []
|
|
14382
|
+
second_group = []
|
|
14383
|
+
seen_multiplicity = False
|
|
14384
|
+
for child in psp_ctx.children or []:
|
|
14385
|
+
child_name = type(child).__name__
|
|
14386
|
+
if child_name == 'MultiplicityPartContext':
|
|
14387
|
+
seen_multiplicity = True
|
|
14388
|
+
elif child_name == 'FeatureSpecializationContext':
|
|
14389
|
+
(second_group if seen_multiplicity else first_group).append(child)
|
|
14390
|
+
|
|
14391
|
+
specs = first_group + second_group
|
|
14392
|
+
specialization_list = _feature_specialization_dicts(specs)
|
|
14393
|
+
mp = _get_multiplicity_part(psp_ctx)
|
|
14394
|
+
|
|
14395
|
+
if not specialization_list and mp is None:
|
|
14396
|
+
return None
|
|
14397
|
+
|
|
14295
14398
|
return {
|
|
14296
|
-
"name": "
|
|
14297
|
-
"
|
|
14298
|
-
"
|
|
14299
|
-
"
|
|
14300
|
-
"multiplicity2": None,
|
|
14399
|
+
"name": "PayloadFeatureSpecializationPart",
|
|
14400
|
+
"ownedRelationship": _feature_specialization_dicts(first_group),
|
|
14401
|
+
"ownedRelationship2": _feature_specialization_dicts(second_group),
|
|
14402
|
+
"mp": mp,
|
|
14301
14403
|
}
|
|
14302
14404
|
|
|
14303
14405
|
|
|
@@ -970,6 +970,26 @@ class Package(Searchable):
|
|
|
970
970
|
"""
|
|
971
971
|
return list(self._imports)
|
|
972
972
|
|
|
973
|
+
def _add_metadata_child(self, mf):
|
|
974
|
+
"""Surface a MetadataFeature grammar object as a Metadata child.
|
|
975
|
+
|
|
976
|
+
Package-level ``metadata m1 : MD;`` members parse into a
|
|
977
|
+
MetadataFeature (the ``@``-annotation form) which the public-API
|
|
978
|
+
tree previously dropped (v0.88.0)."""
|
|
979
|
+
md_obj = Metadata()
|
|
980
|
+
md_obj.grammar = mf
|
|
981
|
+
ident = getattr(mf, 'identification', None)
|
|
982
|
+
declared = getattr(ident, 'declaredName', None)
|
|
983
|
+
if declared:
|
|
984
|
+
md_obj.name = declared
|
|
985
|
+
typing = getattr(mf, 'typing', None)
|
|
986
|
+
qn = getattr(getattr(getattr(typing, 'type', None), 'type', None), 'names', None)
|
|
987
|
+
if qn:
|
|
988
|
+
md_obj._typed_by_name = '::'.join(qn)
|
|
989
|
+
md_obj.parent = self
|
|
990
|
+
self.children.append(md_obj)
|
|
991
|
+
return md_obj
|
|
992
|
+
|
|
973
993
|
def load_from_grammar(self, grammar):
|
|
974
994
|
"""Load package structure from a parsed grammar object.
|
|
975
995
|
|
|
@@ -1295,6 +1315,30 @@ class Package(Searchable):
|
|
|
1295
1315
|
m.name = feat_decl.identification.declaredName
|
|
1296
1316
|
m.parent = self
|
|
1297
1317
|
self.children.append(m)
|
|
1318
|
+
elif inner_class == "AnnotatingElement":
|
|
1319
|
+
# v0.88.0: a package-level ``metadata m1 : MD;`` member
|
|
1320
|
+
# parses as DefinitionElement -> AnnotatingElement ->
|
|
1321
|
+
# MetadataFeature (the ``@``-annotation form). Surface it
|
|
1322
|
+
# as a navigable Metadata public-API object — previously
|
|
1323
|
+
# it was silently skipped and find('m1') failed. The
|
|
1324
|
+
# dump path already round-trips it through the grammar
|
|
1325
|
+
# tree, so this is purely API-side. Other annotating
|
|
1326
|
+
# elements (Documentation, CommentSysML,
|
|
1327
|
+
# TextualRepresentation) keep their existing handling.
|
|
1328
|
+
mf = getattr(inner_element, 'children', None)
|
|
1329
|
+
if mf is not None and mf.__class__.__name__ == "MetadataFeature":
|
|
1330
|
+
self._add_metadata_child(mf)
|
|
1331
|
+
else:
|
|
1332
|
+
print(f"[Package.load_from_grammar] Unknown class: {inner_class} - skipping") # pragma: no cover
|
|
1333
|
+
elif inner_class == "NonOccurrenceUsageElement":
|
|
1334
|
+
# v0.88.0: the rebuilt shape after _ensure_body wraps a
|
|
1335
|
+
# MetadataFeature the same way attribute usages are
|
|
1336
|
+
# wrapped — surface it like the AnnotatingElement form.
|
|
1337
|
+
mf = getattr(inner_element, 'children', None)
|
|
1338
|
+
if mf is not None and mf.__class__.__name__ == "MetadataFeature":
|
|
1339
|
+
self._add_metadata_child(mf)
|
|
1340
|
+
else:
|
|
1341
|
+
print(f"[Package.load_from_grammar] Unknown class: {inner_class} - skipping") # pragma: no cover
|
|
1298
1342
|
elif inner_class == "RenderingDefinition":
|
|
1299
1343
|
r = Rendering()
|
|
1300
1344
|
r.grammar = inner_element
|
|
@@ -5098,6 +5098,12 @@ class DefinitionBodyItem:
|
|
|
5098
5098
|
self.children.append(NonOccurrenceUsageMember(item))
|
|
5099
5099
|
elif item["name"] == "DefinitionMember":
|
|
5100
5100
|
self.children.append(DefinitionMember(item))
|
|
5101
|
+
elif item["name"] == "Import":
|
|
5102
|
+
# Imports are legal in usage bodies too
|
|
5103
|
+
# (``part p1 { private import Q::*; }``) —
|
|
5104
|
+
# same dict shape as package-body imports
|
|
5105
|
+
# (v0.88.0).
|
|
5106
|
+
self.children.append(Import(item))
|
|
5101
5107
|
else:
|
|
5102
5108
|
print(f"DefinitionBodyItem: unknown relationship {definition}") # pragma: no cover
|
|
5103
5109
|
|
|
@@ -5255,6 +5261,13 @@ class NonOccurrenceUsageElement:
|
|
|
5255
5261
|
self.children = CalculationUsage(definition["ownedRelatedElement"])
|
|
5256
5262
|
elif name == "MetadataUsage":
|
|
5257
5263
|
self.children = MetadataUsage(definition["ownedRelatedElement"])
|
|
5264
|
+
elif name == "MetadataFeature":
|
|
5265
|
+
# v0.88.0: a Metadata public-API child re-serializes its
|
|
5266
|
+
# MetadataFeature grammar through NonOccurrenceUsageElement
|
|
5267
|
+
# (the _NonOccurrenceUsage wrapping) — accept it here so
|
|
5268
|
+
# the rebuild round-trips instead of crashing on
|
|
5269
|
+
# children=None.
|
|
5270
|
+
self.children = MetadataFeature(definition["ownedRelatedElement"])
|
|
5258
5271
|
elif name == "EndFeatureUsage":
|
|
5259
5272
|
self.children = EndFeatureUsage(definition["ownedRelatedElement"])
|
|
5260
5273
|
elif name == "AssertConstraintUsage":
|
|
@@ -7318,17 +7331,22 @@ class PayloadFeatureSpecializationPart:
|
|
|
7318
7331
|
if self.mp is None:
|
|
7319
7332
|
for child in self.children:
|
|
7320
7333
|
output.append(child.dump())
|
|
7334
|
+
elif len(self.children) == 0:
|
|
7335
|
+
# multiplicityPart featureSpecialization+ alternative —
|
|
7336
|
+
# multiplicity genuinely comes first (``[1] : M``).
|
|
7337
|
+
output.append(self.mp.dump())
|
|
7338
|
+
for child in self.children2:
|
|
7339
|
+
output.append(child.dump())
|
|
7321
7340
|
else:
|
|
7322
|
-
|
|
7323
|
-
|
|
7324
|
-
|
|
7325
|
-
|
|
7326
|
-
|
|
7327
|
-
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
|
|
7331
|
-
output.append(child.dump())
|
|
7341
|
+
# featureSpecialization+ multiplicityPart? featureSpecialization*
|
|
7342
|
+
# — natural source order (``: M[1]``). The previous
|
|
7343
|
+
# mp-first rendering produced ``[1] : M`` for the first
|
|
7344
|
+
# alternative, which does not re-parse (v0.88.0).
|
|
7345
|
+
for child in self.children:
|
|
7346
|
+
output.append(child.dump())
|
|
7347
|
+
output.append(self.mp.dump())
|
|
7348
|
+
for child in self.children2:
|
|
7349
|
+
output.append(child.dump())
|
|
7332
7350
|
return "".join(output)
|
|
7333
7351
|
|
|
7334
7352
|
def get_definition(self):
|
|
@@ -1098,6 +1098,14 @@ class Usage(Searchable):
|
|
|
1098
1098
|
a.grammar = inner
|
|
1099
1099
|
a.parent = self
|
|
1100
1100
|
self.children.append(a)
|
|
1101
|
+
elif inner.__class__.__name__ == "RenderingUsage":
|
|
1102
|
+
# v0.88.0: nested ``rendering r2 : E;`` inside a
|
|
1103
|
+
# part/item body was dumped (via the grammar
|
|
1104
|
+
# tree) but never surfaced as a public-API
|
|
1105
|
+
# Rendering child.
|
|
1106
|
+
r = Rendering().load_from_grammar(inner)
|
|
1107
|
+
r.parent = self
|
|
1108
|
+
self.children.append(r)
|
|
1101
1109
|
elif inner.__class__.__name__ == "PortionUsage":
|
|
1102
1110
|
c = Part().load_from_grammar(inner)
|
|
1103
1111
|
c.parent = self
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp
RENAMED
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py
RENAMED
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml
RENAMED
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml
RENAMED
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml
RENAMED
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml
RENAMED
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml
RENAMED
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysmlpy-0.87.0 → sysmlpy-0.88.0}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|