sysmlpy 0.97.0__tar.gz → 0.97.1__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.
Files changed (178) hide show
  1. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/PKG-INFO +10 -1
  2. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/README.md +9 -0
  3. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/pyproject.toml +1 -1
  4. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/__init__.py +1 -1
  5. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/boxes_view.py +133 -43
  6. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/LICENSE +0 -0
  7. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/__main__.py +0 -0
  8. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/README.md +0 -0
  9. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  10. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  11. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  12. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  13. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  14. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  15. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  16. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  17. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  18. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  19. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  20. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr_parser.py +0 -0
  21. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/antlr_visitor.py +0 -0
  22. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/ci_check.py +0 -0
  23. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/definition.py +0 -0
  24. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/dfa_cache.py +0 -0
  25. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/diff.py +0 -0
  26. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/evaluator.py +0 -0
  27. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/examples/attribute_values.py +0 -0
  28. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/examples/part_attributes.py +0 -0
  29. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  30. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/formatting.py +0 -0
  31. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  32. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  33. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  34. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  35. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  36. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  37. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  38. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  39. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  40. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  41. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  42. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  43. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  44. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  45. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  46. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  47. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/grammar/classes.py +0 -0
  48. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/interchange.py +0 -0
  49. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/ipython_magic.py +0 -0
  50. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLLexer.g4 +0 -0
  51. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLLexer.interp +0 -0
  52. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLLexer.py +0 -0
  53. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLLexer.tokens +0 -0
  54. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLParser.g4 +0 -0
  55. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLParser.interp +0 -0
  56. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLParser.py +0 -0
  57. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLParser.tokens +0 -0
  58. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/KerMLParserVisitor.py +0 -0
  59. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/README.md +0 -0
  60. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/__init__.py +0 -0
  61. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/kerml.py +0 -0
  62. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/kerml/kerml_visitor.py +0 -0
  63. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/LICENSE +0 -0
  64. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/README.md +0 -0
  65. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/__init__.py +0 -0
  66. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  67. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  68. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  69. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  70. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  71. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  72. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  73. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  74. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  75. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  76. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  77. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  78. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  79. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  80. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  81. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  82. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  83. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  84. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  85. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  86. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  87. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  88. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  89. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  90. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  91. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  92. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  93. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  94. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  95. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  96. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  97. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  98. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  99. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  100. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  101. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  102. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  103. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  104. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  105. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  106. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  107. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  108. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  109. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  110. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  111. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  112. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  113. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  114. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  115. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  116. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  117. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  118. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  119. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  120. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  121. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  122. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  123. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  124. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  125. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  126. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  127. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  128. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  129. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  130. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  131. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  132. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  133. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  134. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  135. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  136. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  137. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  138. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  139. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  140. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  141. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  142. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  143. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  144. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  145. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  146. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  147. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  148. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  149. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Items.sysml +0 -0
  150. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  151. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  152. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  153. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  154. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  155. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/States.sysml +0 -0
  156. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  157. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  158. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  159. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/library/systems/Views.sysml +0 -0
  160. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/lsp/__init__.py +0 -0
  161. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/lsp/__main__.py +0 -0
  162. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/lsp/protocol.py +0 -0
  163. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/lsp/server.py +0 -0
  164. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/lsp/stdio.py +0 -0
  165. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/mdtables.py +0 -0
  166. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/navigate.py +0 -0
  167. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/plantuml.py +0 -0
  168. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/project.py +0 -0
  169. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/repl.py +0 -0
  170. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/reqif_io.py +0 -0
  171. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/semantic.py +0 -0
  172. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/sim.py +0 -0
  173. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/spreadsheet.py +0 -0
  174. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/store.py +0 -0
  175. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/traceability.py +0 -0
  176. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/us_customary_units.txt +0 -0
  177. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/usage.py +0 -0
  178. {sysmlpy-0.97.0 → sysmlpy-0.97.1}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.97.0
3
+ Version: 0.97.1
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Jon R. Fox (mycr0ft)
@@ -886,6 +886,15 @@ from sysmlpy.boxes_view import (
886
886
  print(render_interconnection_view_boxes(model))
887
887
  ```
888
888
 
889
+ Action-flow boxes render **v2-native glyphs** (v0.97.1, matching the
890
+ Intro deck's Action Flow example): action usages/definitions as
891
+ 45-degree chamfered **octagons** with their stereotype line, and the
892
+ v2 **solid start diamond** for succession starts —
893
+ `succession s1 first start then b;` (a named succession statement
894
+ whose first or then end names `start`/`done`/`terminate`) binds the
895
+ control primitive like the `first start;` body-item form. Duplicate
896
+ flow/succession edges from wrapper re-collection are deduped.
897
+
889
898
  ```
890
899
  ⡰⠊⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠲⡀ ⡰⠊⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠲⡀
891
900
  ⡇ «part» ⡇ ⡇ «part» ⡇
@@ -849,6 +849,15 @@ from sysmlpy.boxes_view import (
849
849
  print(render_interconnection_view_boxes(model))
850
850
  ```
851
851
 
852
+ Action-flow boxes render **v2-native glyphs** (v0.97.1, matching the
853
+ Intro deck's Action Flow example): action usages/definitions as
854
+ 45-degree chamfered **octagons** with their stereotype line, and the
855
+ v2 **solid start diamond** for succession starts —
856
+ `succession s1 first start then b;` (a named succession statement
857
+ whose first or then end names `start`/`done`/`terminate`) binds the
858
+ control primitive like the `first start;` body-item form. Duplicate
859
+ flow/succession edges from wrapper re-collection are deduped.
860
+
852
861
  ```
853
862
  ⡰⠊⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠲⡀ ⡰⠊⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠲⡀
854
863
  ⡇ «part» ⡇ ⡇ «part» ⡇
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.97.0"
9
+ version = "0.97.1"
10
10
  description = ""
11
11
  authors = [{ name = "Jon R. Fox (mycr0ft)", email = "jon.fox@drfox.com" }]
12
12
  readme = "README.md"
@@ -36,7 +36,7 @@ __all__ = [
36
36
  "render_state_transition_view_svg", "boxes_view",
37
37
  ]
38
38
  __author__ = "Jon Fox"
39
- __version__ = "0.96.4"
39
+ __version__ = "0.97.1"
40
40
 
41
41
  from sysmlpy.usage import (
42
42
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -1790,7 +1790,40 @@ def as_action_flow_view_boxes(
1790
1790
  return container, param[-1]
1791
1791
  return None, None
1792
1792
 
1793
+ # the same grammar body is reachable through more than one semantic
1794
+ # element (a package contains the def whose body holds the flow) —
1795
+ # keep the FIRST collection of each grammar object; the later,
1796
+ # tighter scan otherwise duplicates every flow/succession edge
1797
+ _seen_fg = set()
1798
+ flows2 = []
1799
+ for fgo, fname, fco in flows:
1800
+ if id(fgo) in _seen_fg:
1801
+ continue
1802
+ _seen_fg.add(id(fgo))
1803
+ flows2.append((fgo, fname, fco))
1804
+ flows = flows2
1805
+ _seen_sg = set()
1806
+ succ2 = []
1807
+ for so, sname, sco in successions:
1808
+ if id(so) in _seen_sg:
1809
+ continue
1810
+ _seen_sg.add(id(so))
1811
+ succ2.append((so, sname, sco))
1812
+ successions = succ2
1813
+
1793
1814
  resolved = [] # (from_elem, from_port, to_elem, to_port, label[, dashed])
1815
+ succession_ref_edges = [] # chain-ref pairs w/ a keyword control end
1816
+ _drawn_edges = set()
1817
+
1818
+ def _edge_once(src, dst, label, **kw):
1819
+ # semantic wrappers re-create grammar objects, so the same
1820
+ # statement can be collected twice under different ids — dedupe
1821
+ # on the drawn pair's content
1822
+ key = (id(src), id(dst), label)
1823
+ if key in _drawn_edges:
1824
+ return
1825
+ _drawn_edges.add(key)
1826
+ d.add_edge(src, dst, label=label, **kw)
1794
1827
  for fgo, fname, container in flows:
1795
1828
  ends = _afv_flow_grammar_ends(fgo)
1796
1829
  if not ends or ends[0] is None or ends[1] is None:
@@ -1820,6 +1853,36 @@ def as_action_flow_view_boxes(
1820
1853
  ends = _afv_succession_ends(so)
1821
1854
  if len(ends) < 2:
1822
1855
  continue
1856
+ # v2: an end naming the start/done/terminate keyword binds a
1857
+ # control node (the deck's providePower: 'succession s1 first
1858
+ # start then trigger1' — solid start diamond). Such ends emit
1859
+ # through the chain-ref path (section 6), with the keyword
1860
+ # resolved to the same primitive the control-chain pass uses.
1861
+ KW = {"start": ("initial",), "initial": ("initial",),
1862
+ "done": ("final",), "terminate": ("final",)}
1863
+ kw_refs = []
1864
+ plain_ends = []
1865
+ kw_present = False
1866
+ for seg in ends[:2]:
1867
+ leaf = (seg[-1] if seg else None)
1868
+ if leaf in KW:
1869
+ kw_refs.append(KW[leaf])
1870
+ kw_present = True
1871
+ else:
1872
+ plain_ends.append(seg)
1873
+ label = None if _afv_uuid_like(sname) else sname
1874
+ if kw_present:
1875
+ if len(kw_refs) == 1 and len(plain_ends) == 1:
1876
+ (fe, _fport) = _resolve_end(plain_ends[0], None, container)
1877
+ if fe is None:
1878
+ continue
1879
+ if container is not None and fe is container:
1880
+ continue
1881
+ succession_ref_edges.append(
1882
+ (kw_refs[0], ("action", fe), None))
1883
+ elif len(kw_refs) == 2:
1884
+ succession_ref_edges.append((kw_refs[0], kw_refs[1], None))
1885
+ continue
1823
1886
  ends_resolved = []
1824
1887
  for owner in ends[:2]:
1825
1888
  ends_resolved.append(_resolve_end(owner, None, container))
@@ -1828,7 +1891,6 @@ def as_action_flow_view_boxes(
1828
1891
  continue
1829
1892
  if container is not None and (fe is container or te is container):
1830
1893
  continue
1831
- label = None if _afv_uuid_like(sname) else sname
1832
1894
  resolved.append((fe, fport, te, tport, label, True))
1833
1895
 
1834
1896
  # ---- 3b. which definitions need a box ------------------------------
@@ -1879,7 +1941,7 @@ def as_action_flow_view_boxes(
1879
1941
  name = getattr(el, "name", None) or "action"
1880
1942
  nodes[id(el)] = d.add_node(
1881
1943
  name, stereotypes=_stereo(el, is_def),
1882
- attributes=[], rounded=True, parent=parent_node)
1944
+ attributes=[], chamfer=8, rounded=True, parent=parent_node)
1883
1945
  for pname, direction in _params(el, is_def):
1884
1946
  side = "left" if direction == "in" else "right"
1885
1947
  nodes[id(el)].add_port(pname, side=side, label_inside=True)
@@ -1947,21 +2009,21 @@ def as_action_flow_view_boxes(
1947
2009
  _draw(el, bool(getattr(el, "is_definition", False)))
1948
2010
  src = nodes.get(id(fe))
1949
2011
  dst = nodes.get(id(te))
1950
- if src is None or dst is None:
2012
+ if src is None or dst is None or src is dst:
1951
2013
  continue
1952
2014
  sp = _port(src, fport, True)
1953
2015
  tp = _port(dst, tport, False)
1954
- kw = {"label": label}
2016
+ kw = {}
1955
2017
  if dashed:
1956
2018
  kw["line_style"] = DASHED
1957
2019
  if sp is not None and tp is not None:
1958
- d.add_edge(src, dst, source_port=sp, target_port=tp, **kw)
2020
+ _edge_once(src, dst, label, source_port=sp, target_port=tp, **kw)
1959
2021
  else:
1960
- d.add_edge(src, dst, **kw)
2022
+ _edge_once(src, dst, label, **kw)
1961
2023
 
1962
2024
  # ---- 6. control nodes (initial/final/decide/merge/fork/join) ---------
1963
2025
  # Chains are extracted from action grammar bodies by the shared
1964
- # plantuml extractor. Boxes map: `first start` -> filled start dot,
2026
+ # plantuml extractor. Boxes map: start -> solid v2 start diamond,
1965
2027
  # done/terminate targets -> done bullseye, decide/merge -> diamonds,
1966
2028
  # fork/join -> synchronization bars. Chain edges render as dashed
1967
2029
  # successions with guard conditions as labels.
@@ -1970,52 +2032,80 @@ def as_action_flow_view_boxes(
1970
2032
  chains = _extract_control_chains(model)
1971
2033
  except Exception:
1972
2034
  chains = []
2035
+
2036
+ def _ctrl_box(ref, owner_node=None):
2037
+ # Chain-scoped node identity: one initial/final per chain,
2038
+ # control nodes keyed by their grammar object.
2039
+ if ref == ('initial',):
2040
+ key = ('initial', 'owner%s' % id(owner_node))
2041
+ if key not in ctrl_boxes:
2042
+ # the v2 start node is a solid diamond (the deck's
2043
+ # providePower/p58 start notation, validated 10/10)
2044
+ ctrl_boxes[key] = d.action_start(parent=owner_node)
2045
+ return ctrl_boxes[key]
2046
+ if ref == ('final',):
2047
+ key = ('final', 'owner%s' % id(owner_node))
2048
+ if key not in ctrl_boxes:
2049
+ ctrl_boxes[key] = d.add_done('', parent=owner_node)
2050
+ return ctrl_boxes[key]
2051
+ kind = ref[0]
2052
+ if kind == 'control':
2053
+ key = ('control', id(ref[1]))
2054
+ if key not in ctrl_boxes:
2055
+ kw = getattr(ref[1], 'keyword', None)
2056
+ nm = getattr(ref[1], 'declared_name', None) or ''
2057
+ if kw == 'decide':
2058
+ ctrl_boxes[key] = d.add_decision(nm, parent=owner_node)
2059
+ elif kw == 'merge':
2060
+ ctrl_boxes[key] = d.add_merge(nm, parent=owner_node)
2061
+ elif kw == 'fork':
2062
+ ctrl_boxes[key] = d.add_fork(name=nm, parent=owner_node)
2063
+ else: # join
2064
+ ctrl_boxes[key] = d.add_join(name=nm, parent=owner_node)
2065
+ return ctrl_boxes[key]
2066
+ if kind == 'action':
2067
+ return nodes.get(id(ref[1]))
2068
+ return None
2069
+
1973
2070
  for owner, c_nodes, c_edges, _seen in chains:
1974
2071
  owner_node = nodes.get(id(owner))
1975
2072
  if owner_node is None:
1976
2073
  continue # owning action not drawn (pruned / unrendered)
1977
2074
 
1978
- def _ctrl_box(ref):
1979
- # Chain-scoped node identity: one initial/final per chain,
1980
- # control nodes keyed by their grammar object.
1981
- if ref == ('initial',):
1982
- key = ('initial',)
1983
- if key not in ctrl_boxes:
1984
- ctrl_boxes[key] = d.add_start('', parent=owner_node)
1985
- return ctrl_boxes[key]
1986
- if ref == ('final',):
1987
- key = ('final',)
1988
- if key not in ctrl_boxes:
1989
- ctrl_boxes[key] = d.add_done('', parent=owner_node)
1990
- return ctrl_boxes[key]
1991
- kind = ref[0]
1992
- if kind == 'control':
1993
- key = ('control', id(ref[1]))
1994
- if key not in ctrl_boxes:
1995
- kw = getattr(ref[1], 'keyword', None)
1996
- nm = getattr(ref[1], 'declared_name', None) or ''
1997
- if kw == 'decide':
1998
- ctrl_boxes[key] = d.add_decision(nm, parent=owner_node)
1999
- elif kw == 'merge':
2000
- ctrl_boxes[key] = d.add_merge(nm, parent=owner_node)
2001
- elif kw == 'fork':
2002
- ctrl_boxes[key] = d.add_fork(name=nm, parent=owner_node)
2003
- else: # join
2004
- ctrl_boxes[key] = d.add_join(name=nm, parent=owner_node)
2005
- return ctrl_boxes[key]
2006
- if kind == 'action':
2007
- return nodes.get(id(ref[1]))
2008
- return None
2009
-
2010
2075
  for src_ref, dst_ref, label in c_edges:
2011
- src = _ctrl_box(src_ref)
2012
- dst = _ctrl_box(dst_ref)
2076
+ src = _ctrl_box(src_ref, owner_node)
2077
+ dst = _ctrl_box(dst_ref, owner_node)
2013
2078
  if src is None or dst is None or src is dst:
2014
2079
  continue
2015
2080
  if keep_ids is not None and id(owner) not in keep_ids:
2016
2081
  continue
2017
- d.add_edge(src, dst, line_style=DASHED, label=label,
2018
- target_style=OPEN)
2082
+ _edge_once(src, dst, label, line_style=DASHED, target_style=OPEN)
2083
+
2084
+ # successions naming a control keyword end (start/done/terminate)
2085
+ # bind the same primitives through their refs — STANDALONE: the
2086
+ # chains extract legitimately returns [] for models with only
2087
+ # named succession statements, and the ref-pairs still bind. The
2088
+ # control primitive parents to the anchor action's owner box.
2089
+ def _ref_owner(ref):
2090
+ if ref and ref[0] == 'action':
2091
+ par = getattr(ref[1], 'parent', None)
2092
+ if par is not None and id(par) in nodes:
2093
+ return nodes[id(par)]
2094
+ return None
2095
+
2096
+ for src_ref, dst_ref, label in succession_ref_edges:
2097
+ if keep_ids is not None:
2098
+ anchor = (dst_ref[1] if dst_ref[0] == 'action' else None)
2099
+ if anchor is None:
2100
+ anchor = (src_ref[1] if src_ref[0] == 'action' else None)
2101
+ if anchor is None or id(anchor) not in keep_ids:
2102
+ continue
2103
+ owner_par = _ref_owner(src_ref) or _ref_owner(dst_ref)
2104
+ src = _ctrl_box(src_ref, owner_par)
2105
+ dst = _ctrl_box(dst_ref, owner_par)
2106
+ if src is None or dst is None or src is dst:
2107
+ continue
2108
+ _edge_once(src, dst, label, line_style=DASHED, target_style=OPEN)
2019
2109
 
2020
2110
  return d
2021
2111
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes