sysmlpy 0.34.1__tar.gz → 0.36.2__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 (148) hide show
  1. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/PKG-INFO +3 -1
  2. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/README.md +2 -0
  3. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/pyproject.toml +1 -1
  4. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/__init__.py +22 -1
  5. sysmlpy-0.36.2/src/sysmlpy/boxes_view.py +841 -0
  6. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/classes.py +1 -1
  7. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/plantuml.py +12 -7
  8. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/semantic.py +19 -2
  9. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/usage.py +111 -5
  10. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/LICENSE +0 -0
  11. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/__main__.py +0 -0
  12. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/README.md +0 -0
  13. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  14. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  15. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  16. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  17. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  18. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  19. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  20. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  21. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  22. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  23. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  24. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr_parser.py +0 -0
  25. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/antlr_visitor.py +0 -0
  26. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/definition.py +0 -0
  27. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/examples/attribute_values.py +0 -0
  28. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/examples/part_attributes.py +0 -0
  29. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  30. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/formatting.py +0 -0
  31. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  32. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  33. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  34. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  35. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  36. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  37. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  38. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  39. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  40. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  41. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  42. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  43. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  44. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  45. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  46. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  47. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/LICENSE +0 -0
  48. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/README.md +0 -0
  49. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/__init__.py +0 -0
  50. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  51. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  52. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  53. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  54. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  55. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  56. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  57. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  58. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  59. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  60. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  61. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  62. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  63. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  64. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  65. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  66. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  67. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  68. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  69. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  70. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  71. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  72. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  73. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  74. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  75. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  76. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  77. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  78. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  79. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  80. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  81. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  82. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  83. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  84. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  85. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  86. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  87. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  88. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  89. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  90. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  91. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  92. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  93. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  94. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  95. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  96. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  97. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  98. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  99. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  100. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  101. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  102. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  103. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  104. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  105. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  106. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  107. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  108. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  109. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  110. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  111. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  112. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  113. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  114. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  115. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  116. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  117. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  118. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  119. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  120. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  121. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  122. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  123. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  124. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  125. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  126. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  127. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  128. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  129. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  130. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  131. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  132. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  133. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Items.sysml +0 -0
  134. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  135. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  136. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  137. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  138. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  139. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/States.sysml +0 -0
  140. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  141. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  142. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  143. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/library/systems/Views.sysml +0 -0
  144. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/navigate.py +0 -0
  145. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/project.py +0 -0
  146. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/store.py +0 -0
  147. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/us_customary_units.txt +0 -0
  148. {sysmlpy-0.34.1 → sysmlpy-0.36.2}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.34.1
3
+ Version: 0.36.2
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Jon R. Fox (mycr0ft)
@@ -39,6 +39,8 @@ The project had diverged so much from sysml2py that a new name, sysmlpy, was sel
39
39
 
40
40
  ![Lines of Code Over Time](loc_history.svg)
41
41
 
42
+ **v0.36.0:** Boxes-backed state-machine visualizer — `as_state_transition_view_boxes()`, `render_state_transition_view()`, `render_state_transition_view_svg()` produce native UML `«state»` shapes, initial pseudostate, final bullseye, and orthogonal routing via the optional [`boxes`](https://github.com/mycr0ft/boxes) package. Handles `done`, guards, shorthand `accept X then Y`, dotted feature chains (`S2.S3`), composite states, `parallel` regions, entry/do/exit attributes. 19 new boxes_view tests. Also fixes the INCOSE flashlight `interface … connect … { perform …; }` parse crash in `grammar/classes.py`.
43
+
42
44
  **v0.31.0:** Documentation overhaul — all docs rewritten to showcase the modern public API. New Model Parsing and Model Navigation sections. Semantic Analysis updated with `AnalysisResult`. Grammar round-trip: 77/77 (100%). 211 core tests passing.
43
45
 
44
46
  **v0.32.4:** Fixed `Attribute.usage_dump()` calling `dump(child=True)` (returns str) when it should call `_get_definition(child="DefinitionBody")` (returns dict). Broke inline anonymous attribute usages with nested children.
@@ -14,6 +14,8 @@ The project had diverged so much from sysml2py that a new name, sysmlpy, was sel
14
14
 
15
15
  ![Lines of Code Over Time](loc_history.svg)
16
16
 
17
+ **v0.36.0:** Boxes-backed state-machine visualizer — `as_state_transition_view_boxes()`, `render_state_transition_view()`, `render_state_transition_view_svg()` produce native UML `«state»` shapes, initial pseudostate, final bullseye, and orthogonal routing via the optional [`boxes`](https://github.com/mycr0ft/boxes) package. Handles `done`, guards, shorthand `accept X then Y`, dotted feature chains (`S2.S3`), composite states, `parallel` regions, entry/do/exit attributes. 19 new boxes_view tests. Also fixes the INCOSE flashlight `interface … connect … { perform …; }` parse crash in `grammar/classes.py`.
18
+
17
19
  **v0.31.0:** Documentation overhaul — all docs rewritten to showcase the modern public API. New Model Parsing and Model Navigation sections. Semantic Analysis updated with `AnalysisResult`. Grammar round-trip: 77/77 (100%). 211 core tests passing.
18
20
 
19
21
  **v0.32.4:** Fixed `Attribute.usage_dump()` calling `dump(child=True)` (returns str) when it should call `_get_definition(child="DefinitionBody")` (returns dict). Broke inline anonymous attribute usages with nested children.
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.34.1"
9
+ version = "0.36.2"
10
10
  description = ""
11
11
  authors = [{ name = "Jon R. Fox (mycr0ft)", email = "jon.fox@drfox.com" }]
12
12
  readme = "README.md"
@@ -19,9 +19,12 @@ __all__ = [
19
19
  "as_sequence_view", "as_case_view", "as_browser_view",
20
20
  "analyze", "AnalysisResult", "SemanticIssue", "SemanticAnalyzer",
21
21
  "SysMLSyntaxError",
22
+ # boxes-backed optional renderers (require pip install -e ../boxes)
23
+ "as_state_transition_view_boxes", "render_state_transition_view",
24
+ "render_state_transition_view_svg", "boxes_view",
22
25
  ]
23
26
  __author__ = "Jon Fox"
24
- __version__ = "0.34.1"
27
+ __version__ = "0.36.2"
25
28
 
26
29
  from sysmlpy.usage import (
27
30
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -267,3 +270,21 @@ from sysmlpy.semantic import analyze, AnalysisResult, SemanticIssue, SemanticAna
267
270
 
268
271
  from sysmlpy.project import load_files, load_project, load_with_dependencies
269
272
 
273
+ # Optional boxes-backed state-machine renderer (lazy import on first use so
274
+ # `import sysmlpy` works without `boxes` installed). The first call to any of
275
+ # the functions below triggers `import sysmlpy.boxes_view`, which itself
276
+ # raises ImportError with installation instructions if `boxes` is missing.
277
+ def __getattr__(name):
278
+ if name == "boxes_view":
279
+ import sysmlpy.boxes_view as bv
280
+ globals()[name] = bv
281
+ return bv
282
+ if name in ("as_state_transition_view_boxes",
283
+ "render_state_transition_view",
284
+ "render_state_transition_view_svg"):
285
+ from sysmlpy import boxes_view as bv
286
+ fn = getattr(bv, name)
287
+ globals()[name] = fn
288
+ return fn
289
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
290
+