sysmlpy 0.28.0__tar.gz → 0.29.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.28.0 → sysmlpy-0.29.0}/PKG-INFO +22 -22
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/README.md +21 -21
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/pyproject.toml +2 -2
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/__init__.py +1 -1
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr_visitor.py +133 -1
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/classes.py +257 -33
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/plantuml.py +148 -114
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/LICENSE +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/__main__.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/README.md +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/antlr_parser.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/definition.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/examples/attribute_values.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/examples/part_attributes.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/examples/tuples_sequences.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/formatting.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/README.md +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/LICENSE +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/README.md +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/__init__.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Base.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Links.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Actions.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Cases.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Connections.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Flows.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Items.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Parts.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Ports.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/States.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/SysML.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/library/systems/Views.sysml +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/navigate.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/project.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/semantic.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/store.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/us_customary_units.txt +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/usage.py +0 -0
- {sysmlpy-0.28.0 → sysmlpy-0.29.0}/src/sysmlpy/validator.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sysmlpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.29.0
|
|
4
4
|
Summary: SysML v2.0 Parser
|
|
5
5
|
License: MIT License
|
|
6
6
|
|
|
@@ -530,7 +530,7 @@ print(as_parametric_view(model, style="bw"))
|
|
|
530
530
|
#### Action Flow View (AFV) — `as_action_flow_view()`
|
|
531
531
|
Corresponds to SysML v2 ``ActionFlowView`` (short name ``afv``). Shows actions with their control and object flows. Auto-includes connected flow elements.
|
|
532
532
|
|
|
533
|
-

|
|
534
534
|
|
|
535
535
|
```python
|
|
536
536
|
from sysmlpy.plantuml import as_action_flow_view
|
|
@@ -550,7 +550,7 @@ print(as_interconnection_view(model, style="bw"))
|
|
|
550
550
|
#### State Transition View (STV) — `as_state_transition_view()`
|
|
551
551
|
Corresponds to SysML v2 ``StateTransitionView`` (short name ``stv``). State machine diagram with hierarchical states and transitions. Auto-includes connected transition elements.
|
|
552
552
|
|
|
553
|
-

|
|
554
554
|
|
|
555
555
|
```python
|
|
556
556
|
from sysmlpy.plantuml import as_state_transition_view
|
|
@@ -560,19 +560,17 @@ print(as_state_transition_view(model, style="bw"))
|
|
|
560
560
|
#### Tree Diagram — `as_tree_diagram()`
|
|
561
561
|
Hierarchical containment tree using nested PlantUML containers. Shows ownership hierarchy with sharp corners for definitions and rounded corners for usages.
|
|
562
562
|
|
|
563
|
-

|
|
564
564
|
|
|
565
565
|
```python
|
|
566
566
|
from sysmlpy.plantuml import as_tree_diagram
|
|
567
567
|
print(as_tree_diagram(model, style="bw"))
|
|
568
568
|
```
|
|
569
569
|
|
|
570
|
-
### Tabular View Rendering Functions
|
|
571
|
-
|
|
572
570
|
#### Element Table — `as_element_table()`
|
|
573
571
|
A simple tabular listing with columns Name, Type, Kind, and Parent.
|
|
574
572
|
|
|
575
|
-

|
|
576
574
|
|
|
577
575
|
```python
|
|
578
576
|
from sysmlpy.plantuml import as_element_table
|
|
@@ -582,7 +580,7 @@ print(as_element_table(model, style="bw"))
|
|
|
582
580
|
#### Textual Notation — `as_textual_notation()`
|
|
583
581
|
Indented text representation inside a PlantUML note, similar to the SysML v2 textual concrete syntax.
|
|
584
582
|
|
|
585
|
-

|
|
586
584
|
|
|
587
585
|
```python
|
|
588
586
|
from sysmlpy.plantuml import as_textual_notation
|
|
@@ -593,20 +591,22 @@ print(as_textual_notation(model, style="bw"))
|
|
|
593
591
|
|
|
594
592
|
Per the SysML v2 standard, ``GridView`` (short name ``grv``) presents exposed model elements and their relationships in a rectangular grid. It has three specializations, all supporting **three output formats**:
|
|
595
593
|
|
|
596
|
-
| Format | Use case |
|
|
597
|
-
|
|
598
|
-
| `"
|
|
599
|
-
| `"
|
|
600
|
-
| `"
|
|
594
|
+
| Format | Use case | Compatibility |
|
|
595
|
+
|--------|----------|---------------|
|
|
596
|
+
| `"markdown"` (default) | Standard pipe table — for GitHub, MkDocs, or Jupyter | ✅ Universal |
|
|
597
|
+
| `"html"` | Rich `<table>` with CSS classes — for web dashboards | ✅ Universal |
|
|
598
|
+
| `"plantuml"` | PlantUML table / salt matrix — embed in diagrams | ⚠️ PlantUML <1.2024.7 only |
|
|
599
|
+
|
|
600
|
+
**Note:** PlantUML 1.2024.7+ removed support for legacy table syntax. Use `"markdown"` or `"html"` output format for compatibility with all PlantUML versions.
|
|
601
601
|
|
|
602
602
|
#### Tabular View — `as_tabular_view()`
|
|
603
603
|
Extensible table with configurable columns. Default columns: Name, Type, Kind, Parent, Typed By, Specializes.
|
|
604
604
|
|
|
605
|
-
|
|
605
|
+
See [`18-tabular-view.md`](docs/plantuml-examples/18-tabular-view.md) for example output.
|
|
606
606
|
|
|
607
607
|
```python
|
|
608
608
|
from sysmlpy.plantuml import as_tabular_view
|
|
609
|
-
print(as_tabular_view(model
|
|
609
|
+
print(as_tabular_view(model)) # Default: markdown output
|
|
610
610
|
```
|
|
611
611
|
|
|
612
612
|
Custom columns and other output formats:
|
|
@@ -617,18 +617,18 @@ print(as_tabular_view(model,
|
|
|
617
617
|
columns=["Name", "Type", "Parent", "Typed By"],
|
|
618
618
|
output_format="html"))
|
|
619
619
|
|
|
620
|
-
# Markdown for documentation
|
|
620
|
+
# Markdown for documentation (default)
|
|
621
621
|
print(as_tabular_view(model, output_format="markdown"))
|
|
622
622
|
```
|
|
623
623
|
|
|
624
624
|
#### Data Value Tabular View — `as_data_value_tabular_view()`
|
|
625
625
|
Attribute-specific version showing Element, Attribute, Value, Unit, and Type columns. Uses `Attribute.get_value()` for pint.Quantity extraction.
|
|
626
626
|
|
|
627
|
-
|
|
627
|
+
See [`19-data-value-view.md`](docs/plantuml-examples/19-data-value-view.md) for example output.
|
|
628
628
|
|
|
629
629
|
```python
|
|
630
630
|
from sysmlpy.plantuml import as_data_value_tabular_view
|
|
631
|
-
print(as_data_value_tabular_view(model
|
|
631
|
+
print(as_data_value_tabular_view(model)) # Default: markdown output
|
|
632
632
|
```
|
|
633
633
|
|
|
634
634
|
#### Relationship Matrix View — `as_relationship_matrix_view()`
|
|
@@ -639,11 +639,11 @@ Pairwise element×element matrix showing relationship types:
|
|
|
639
639
|
- **G** = Specialization (generalization)
|
|
640
640
|
- **B** = Binding, **F** = Flow, **R** = Redefinition, etc.
|
|
641
641
|
|
|
642
|
-
|
|
642
|
+
See [`20-relationship-matrix.md`](docs/plantuml-examples/20-relationship-matrix.md) for example output.
|
|
643
643
|
|
|
644
644
|
```python
|
|
645
645
|
from sysmlpy.plantuml import as_relationship_matrix_view
|
|
646
|
-
print(as_relationship_matrix_view(model
|
|
646
|
+
print(as_relationship_matrix_view(model)) # Default: markdown output
|
|
647
647
|
```
|
|
648
648
|
|
|
649
649
|
Type filtering and HTML output:
|
|
@@ -660,10 +660,10 @@ All rendering functions accept `style="color"` for colored output with CSS-style
|
|
|
660
660
|
|
|
661
661
|
```python
|
|
662
662
|
from sysmlpy.plantuml import as_tabular_view
|
|
663
|
-
print(as_tabular_view(model, style="color"))
|
|
663
|
+
print(as_tabular_view(model, output_format="html", style="color"))
|
|
664
664
|
```
|
|
665
665
|
|
|
666
|
-
|
|
666
|
+
See [`21-tabular-view-color.html`](docs/plantuml-examples/21-tabular-view-color.html) for example output.
|
|
667
667
|
|
|
668
668
|
### Complete Example Gallery
|
|
669
669
|
|
|
@@ -485,7 +485,7 @@ print(as_parametric_view(model, style="bw"))
|
|
|
485
485
|
#### Action Flow View (AFV) — `as_action_flow_view()`
|
|
486
486
|
Corresponds to SysML v2 ``ActionFlowView`` (short name ``afv``). Shows actions with their control and object flows. Auto-includes connected flow elements.
|
|
487
487
|
|
|
488
|
-

|
|
489
489
|
|
|
490
490
|
```python
|
|
491
491
|
from sysmlpy.plantuml import as_action_flow_view
|
|
@@ -505,7 +505,7 @@ print(as_interconnection_view(model, style="bw"))
|
|
|
505
505
|
#### State Transition View (STV) — `as_state_transition_view()`
|
|
506
506
|
Corresponds to SysML v2 ``StateTransitionView`` (short name ``stv``). State machine diagram with hierarchical states and transitions. Auto-includes connected transition elements.
|
|
507
507
|
|
|
508
|
-

|
|
509
509
|
|
|
510
510
|
```python
|
|
511
511
|
from sysmlpy.plantuml import as_state_transition_view
|
|
@@ -515,19 +515,17 @@ print(as_state_transition_view(model, style="bw"))
|
|
|
515
515
|
#### Tree Diagram — `as_tree_diagram()`
|
|
516
516
|
Hierarchical containment tree using nested PlantUML containers. Shows ownership hierarchy with sharp corners for definitions and rounded corners for usages.
|
|
517
517
|
|
|
518
|
-

|
|
519
519
|
|
|
520
520
|
```python
|
|
521
521
|
from sysmlpy.plantuml import as_tree_diagram
|
|
522
522
|
print(as_tree_diagram(model, style="bw"))
|
|
523
523
|
```
|
|
524
524
|
|
|
525
|
-
### Tabular View Rendering Functions
|
|
526
|
-
|
|
527
525
|
#### Element Table — `as_element_table()`
|
|
528
526
|
A simple tabular listing with columns Name, Type, Kind, and Parent.
|
|
529
527
|
|
|
530
|
-

|
|
531
529
|
|
|
532
530
|
```python
|
|
533
531
|
from sysmlpy.plantuml import as_element_table
|
|
@@ -537,7 +535,7 @@ print(as_element_table(model, style="bw"))
|
|
|
537
535
|
#### Textual Notation — `as_textual_notation()`
|
|
538
536
|
Indented text representation inside a PlantUML note, similar to the SysML v2 textual concrete syntax.
|
|
539
537
|
|
|
540
|
-

|
|
541
539
|
|
|
542
540
|
```python
|
|
543
541
|
from sysmlpy.plantuml import as_textual_notation
|
|
@@ -548,20 +546,22 @@ print(as_textual_notation(model, style="bw"))
|
|
|
548
546
|
|
|
549
547
|
Per the SysML v2 standard, ``GridView`` (short name ``grv``) presents exposed model elements and their relationships in a rectangular grid. It has three specializations, all supporting **three output formats**:
|
|
550
548
|
|
|
551
|
-
| Format | Use case |
|
|
552
|
-
|
|
553
|
-
| `"
|
|
554
|
-
| `"
|
|
555
|
-
| `"
|
|
549
|
+
| Format | Use case | Compatibility |
|
|
550
|
+
|--------|----------|---------------|
|
|
551
|
+
| `"markdown"` (default) | Standard pipe table — for GitHub, MkDocs, or Jupyter | ✅ Universal |
|
|
552
|
+
| `"html"` | Rich `<table>` with CSS classes — for web dashboards | ✅ Universal |
|
|
553
|
+
| `"plantuml"` | PlantUML table / salt matrix — embed in diagrams | ⚠️ PlantUML <1.2024.7 only |
|
|
554
|
+
|
|
555
|
+
**Note:** PlantUML 1.2024.7+ removed support for legacy table syntax. Use `"markdown"` or `"html"` output format for compatibility with all PlantUML versions.
|
|
556
556
|
|
|
557
557
|
#### Tabular View — `as_tabular_view()`
|
|
558
558
|
Extensible table with configurable columns. Default columns: Name, Type, Kind, Parent, Typed By, Specializes.
|
|
559
559
|
|
|
560
|
-
|
|
560
|
+
See [`18-tabular-view.md`](docs/plantuml-examples/18-tabular-view.md) for example output.
|
|
561
561
|
|
|
562
562
|
```python
|
|
563
563
|
from sysmlpy.plantuml import as_tabular_view
|
|
564
|
-
print(as_tabular_view(model
|
|
564
|
+
print(as_tabular_view(model)) # Default: markdown output
|
|
565
565
|
```
|
|
566
566
|
|
|
567
567
|
Custom columns and other output formats:
|
|
@@ -572,18 +572,18 @@ print(as_tabular_view(model,
|
|
|
572
572
|
columns=["Name", "Type", "Parent", "Typed By"],
|
|
573
573
|
output_format="html"))
|
|
574
574
|
|
|
575
|
-
# Markdown for documentation
|
|
575
|
+
# Markdown for documentation (default)
|
|
576
576
|
print(as_tabular_view(model, output_format="markdown"))
|
|
577
577
|
```
|
|
578
578
|
|
|
579
579
|
#### Data Value Tabular View — `as_data_value_tabular_view()`
|
|
580
580
|
Attribute-specific version showing Element, Attribute, Value, Unit, and Type columns. Uses `Attribute.get_value()` for pint.Quantity extraction.
|
|
581
581
|
|
|
582
|
-
|
|
582
|
+
See [`19-data-value-view.md`](docs/plantuml-examples/19-data-value-view.md) for example output.
|
|
583
583
|
|
|
584
584
|
```python
|
|
585
585
|
from sysmlpy.plantuml import as_data_value_tabular_view
|
|
586
|
-
print(as_data_value_tabular_view(model
|
|
586
|
+
print(as_data_value_tabular_view(model)) # Default: markdown output
|
|
587
587
|
```
|
|
588
588
|
|
|
589
589
|
#### Relationship Matrix View — `as_relationship_matrix_view()`
|
|
@@ -594,11 +594,11 @@ Pairwise element×element matrix showing relationship types:
|
|
|
594
594
|
- **G** = Specialization (generalization)
|
|
595
595
|
- **B** = Binding, **F** = Flow, **R** = Redefinition, etc.
|
|
596
596
|
|
|
597
|
-
|
|
597
|
+
See [`20-relationship-matrix.md`](docs/plantuml-examples/20-relationship-matrix.md) for example output.
|
|
598
598
|
|
|
599
599
|
```python
|
|
600
600
|
from sysmlpy.plantuml import as_relationship_matrix_view
|
|
601
|
-
print(as_relationship_matrix_view(model
|
|
601
|
+
print(as_relationship_matrix_view(model)) # Default: markdown output
|
|
602
602
|
```
|
|
603
603
|
|
|
604
604
|
Type filtering and HTML output:
|
|
@@ -615,10 +615,10 @@ All rendering functions accept `style="color"` for colored output with CSS-style
|
|
|
615
615
|
|
|
616
616
|
```python
|
|
617
617
|
from sysmlpy.plantuml import as_tabular_view
|
|
618
|
-
print(as_tabular_view(model, style="color"))
|
|
618
|
+
print(as_tabular_view(model, output_format="html", style="color"))
|
|
619
619
|
```
|
|
620
620
|
|
|
621
|
-
|
|
621
|
+
See [`21-tabular-view-color.html`](docs/plantuml-examples/21-tabular-view-color.html) for example output.
|
|
622
622
|
|
|
623
623
|
### Complete Example Gallery
|
|
624
624
|
|
|
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "sysmlpy"
|
|
9
|
-
version = "0.
|
|
9
|
+
version = "0.29.0"
|
|
10
10
|
description = "SysML v2.0 Parser"
|
|
11
11
|
authors = [
|
|
12
12
|
{ name="Jon R. Fox (mycr0ft)", email="jon.fox@drfox.com" },
|
|
@@ -114,7 +114,7 @@ build_command = "pip install poetry && poetry build"
|
|
|
114
114
|
|
|
115
115
|
[tool.poetry]
|
|
116
116
|
name = "sysmlpy"
|
|
117
|
-
version = "0.
|
|
117
|
+
version = "0.29.0"
|
|
118
118
|
description = ""
|
|
119
119
|
authors = ["Jon R. Fox (mycr0ft) <jon.fox@drfox.com>"]
|
|
120
120
|
readme = "README.md"
|
|
@@ -20,7 +20,7 @@ __all__ = [
|
|
|
20
20
|
"analyze", "SemanticIssue", "SemanticAnalyzer",
|
|
21
21
|
]
|
|
22
22
|
__author__ = "Jon Fox"
|
|
23
|
-
__version__ = "0.
|
|
23
|
+
__version__ = "0.29.0"
|
|
24
24
|
|
|
25
25
|
from sysmlpy.usage import (
|
|
26
26
|
Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
|
|
@@ -245,10 +245,138 @@ def _visit_comment_dict(ctx):
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
|
|
248
|
+
def _visit_textual_representation_dict(ctx):
|
|
249
|
+
"""Visit a textualRepresentation context and return a TextualRepresentation dictionary.
|
|
250
|
+
|
|
251
|
+
Grammar: (REP identification?)? LANGUAGE DOUBLE_STRING REGULAR_COMMENT
|
|
252
|
+
"""
|
|
253
|
+
identification = None
|
|
254
|
+
if ctx.identification():
|
|
255
|
+
identification = _build_identification_dict(ctx.identification())
|
|
256
|
+
|
|
257
|
+
language = ""
|
|
258
|
+
if ctx.DOUBLE_STRING():
|
|
259
|
+
language = ctx.DOUBLE_STRING().getText().strip('"')
|
|
260
|
+
|
|
261
|
+
body = ""
|
|
262
|
+
if ctx.REGULAR_COMMENT():
|
|
263
|
+
body = ctx.REGULAR_COMMENT().getText()
|
|
264
|
+
|
|
265
|
+
return {
|
|
266
|
+
"name": "TextualRepresentation",
|
|
267
|
+
"identification": identification,
|
|
268
|
+
"language": language,
|
|
269
|
+
"body": body
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
def _visit_metadata_feature_dict(ctx):
|
|
274
|
+
"""Visit a metadataFeature context and return a MetadataFeature dictionary.
|
|
275
|
+
|
|
276
|
+
Grammar: (prefixMetadataMember)* (AT_SIGN | METADATA) metadataFeatureDeclaration (
|
|
277
|
+
ABOUT annotation ( COMMA annotation)*
|
|
278
|
+
)? metadataBody
|
|
279
|
+
"""
|
|
280
|
+
prefix_members = []
|
|
281
|
+
for pm in ctx.prefixMetadataMember():
|
|
282
|
+
prefix_members.append(_visit_prefix_metadata_member_dict(pm))
|
|
283
|
+
|
|
284
|
+
identification = None
|
|
285
|
+
owned_feature_typing = None
|
|
286
|
+
if ctx.metadataFeatureDeclaration():
|
|
287
|
+
mfd = ctx.metadataFeatureDeclaration()
|
|
288
|
+
if mfd.identification():
|
|
289
|
+
identification = _build_identification_dict(mfd.identification())
|
|
290
|
+
if mfd.ownedFeatureTyping():
|
|
291
|
+
owned_feature_typing = _visit_owned_feature_typing_dict(mfd.ownedFeatureTyping())
|
|
292
|
+
|
|
293
|
+
annotations = []
|
|
294
|
+
if ctx.ABOUT():
|
|
295
|
+
for ann_idx in range(len(ctx.annotation())):
|
|
296
|
+
ann_ctx = ctx.annotation(ann_idx)
|
|
297
|
+
if ann_ctx and ann_ctx.qualifiedName():
|
|
298
|
+
qn_text = ann_ctx.qualifiedName().getText()
|
|
299
|
+
annotations.append({
|
|
300
|
+
"name": "Annotation",
|
|
301
|
+
"annotatedElement": {
|
|
302
|
+
"name": "QualifiedName",
|
|
303
|
+
"names": qn_text.split("::")
|
|
304
|
+
}
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
body = ""
|
|
308
|
+
if ctx.metadataBody() and ctx.metadataBody().SEMI():
|
|
309
|
+
body = ";"
|
|
310
|
+
|
|
311
|
+
return {
|
|
312
|
+
"name": "MetadataFeature",
|
|
313
|
+
"prefixMetadataMember": prefix_members,
|
|
314
|
+
"identification": identification,
|
|
315
|
+
"ownedFeatureTyping": owned_feature_typing,
|
|
316
|
+
"ownedRelationship_about": annotations,
|
|
317
|
+
"body": body
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def _visit_prefix_metadata_member_dict(ctx):
|
|
322
|
+
"""Visit a prefixMetadataMember context."""
|
|
323
|
+
visibility = ""
|
|
324
|
+
direction = ""
|
|
325
|
+
|
|
326
|
+
if ctx.PRIVATE():
|
|
327
|
+
visibility = "private"
|
|
328
|
+
elif ctx.PROTECTED():
|
|
329
|
+
visibility = "protected"
|
|
330
|
+
elif ctx.PUBLIC():
|
|
331
|
+
visibility = "public"
|
|
332
|
+
|
|
333
|
+
if ctx.IN():
|
|
334
|
+
direction = "in"
|
|
335
|
+
elif ctx.OUT():
|
|
336
|
+
direction = "out"
|
|
337
|
+
elif ctx.INOUT():
|
|
338
|
+
direction = "inout"
|
|
339
|
+
|
|
340
|
+
return {
|
|
341
|
+
"name": "PrefixMetadataMember",
|
|
342
|
+
"visibility": visibility,
|
|
343
|
+
"direction": direction
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
def _visit_owned_feature_typing_dict(ctx):
|
|
348
|
+
"""Visit an ownedFeatureTyping context and return an OwnedFeatureTyping dictionary."""
|
|
349
|
+
if ctx is None:
|
|
350
|
+
return None
|
|
351
|
+
|
|
352
|
+
if hasattr(ctx, 'qualifiedName') and ctx.qualifiedName():
|
|
353
|
+
qns = ctx.qualifiedName()
|
|
354
|
+
if not isinstance(qns, list):
|
|
355
|
+
qns = [qns]
|
|
356
|
+
names = []
|
|
357
|
+
for qn in qns:
|
|
358
|
+
if qn:
|
|
359
|
+
names.append(qn.getText())
|
|
360
|
+
if names:
|
|
361
|
+
return {
|
|
362
|
+
"name": "OwnedFeatureTyping",
|
|
363
|
+
"type": {
|
|
364
|
+
"name": "FeatureType",
|
|
365
|
+
"type": {
|
|
366
|
+
"name": "QualifiedName",
|
|
367
|
+
"names": names
|
|
368
|
+
},
|
|
369
|
+
"ownedRelatedElement": []
|
|
370
|
+
},
|
|
371
|
+
"ownedRelatedElement": []
|
|
372
|
+
}
|
|
373
|
+
return None
|
|
374
|
+
|
|
375
|
+
|
|
248
376
|
def _visit_annotating_element_dict(annot_elem_ctx):
|
|
249
377
|
"""Visit an annotating element context and return an AnnotatingElement dictionary.
|
|
250
378
|
|
|
251
|
-
Dispatches to documentation
|
|
379
|
+
Dispatches to documentation, comment, textualRepresentation, or metadataFeature.
|
|
252
380
|
"""
|
|
253
381
|
if annot_elem_ctx is None:
|
|
254
382
|
return None
|
|
@@ -258,6 +386,10 @@ def _visit_annotating_element_dict(annot_elem_ctx):
|
|
|
258
386
|
inner = _visit_documentation_dict(annot_elem_ctx.documentation())
|
|
259
387
|
elif hasattr(annot_elem_ctx, 'comment') and annot_elem_ctx.comment():
|
|
260
388
|
inner = _visit_comment_dict(annot_elem_ctx.comment())
|
|
389
|
+
elif hasattr(annot_elem_ctx, 'textualRepresentation') and annot_elem_ctx.textualRepresentation():
|
|
390
|
+
inner = _visit_textual_representation_dict(annot_elem_ctx.textualRepresentation())
|
|
391
|
+
elif hasattr(annot_elem_ctx, 'metadataFeature') and annot_elem_ctx.metadataFeature():
|
|
392
|
+
inner = _visit_metadata_feature_dict(annot_elem_ctx.metadataFeature())
|
|
261
393
|
|
|
262
394
|
if inner is None:
|
|
263
395
|
return None
|