sysmlpy 0.32.0__tar.gz → 0.32.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 (147) hide show
  1. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/PKG-INFO +4 -2
  2. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/README.md +3 -1
  3. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/pyproject.toml +1 -1
  4. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/__init__.py +1 -1
  5. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/__main__.py +24 -2
  6. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/definition.py +1 -1
  7. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/formatting.py +1 -1
  8. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/classes.py +1 -1
  9. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/usage.py +2 -2
  10. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/LICENSE +0 -0
  11. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/README.md +0 -0
  12. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  13. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  14. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  15. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  16. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  17. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  18. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  19. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  20. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  21. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  22. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  23. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr_parser.py +0 -0
  24. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/antlr_visitor.py +0 -0
  25. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/examples/attribute_values.py +0 -0
  26. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/examples/part_attributes.py +0 -0
  27. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  28. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  29. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  30. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  31. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  32. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  33. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  34. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  35. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  36. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  37. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  38. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  39. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  40. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  41. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  42. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  43. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  44. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/LICENSE +0 -0
  45. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/README.md +0 -0
  46. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/__init__.py +0 -0
  47. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  48. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  49. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  50. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  51. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  52. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  53. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  54. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  55. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  56. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  57. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  58. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  59. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  60. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  61. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  62. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  63. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  64. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  65. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  66. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  67. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  68. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  69. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  70. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  71. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  72. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  73. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  74. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  75. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  76. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  77. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  78. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  79. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  80. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  81. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  82. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  83. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  84. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  85. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  86. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  87. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  88. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  89. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  90. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  91. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  92. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  93. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  94. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  95. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  96. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  97. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  98. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  99. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  100. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  101. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  102. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  103. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  104. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  105. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  106. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  107. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  108. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  109. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  110. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  111. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  112. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  113. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  114. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  115. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  116. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  117. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  118. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  119. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  120. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  121. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  122. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  123. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  124. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  125. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  126. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  127. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  128. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  129. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  130. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Items.sysml +0 -0
  131. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  132. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  133. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  134. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  135. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  136. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/States.sysml +0 -0
  137. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  138. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  139. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  140. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/library/systems/Views.sysml +0 -0
  141. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/navigate.py +0 -0
  142. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/plantuml.py +0 -0
  143. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/project.py +0 -0
  144. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/semantic.py +0 -0
  145. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/store.py +0 -0
  146. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/us_customary_units.txt +0 -0
  147. {sysmlpy-0.32.0 → sysmlpy-0.32.2}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.32.0
3
+ Version: 0.32.2
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Jon R. Fox (mycr0ft)
@@ -41,7 +41,9 @@ The project had diverged so much from sysml2py that a new name, sysmlpy, was sel
41
41
 
42
42
  **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
43
 
44
- **v0.31.1:** Fixed `pyproject.toml` for CI compatibility removed duplicate version and invalid `allow_zero_version` from `[project]` table.
44
+ **v0.32.2:** Added `docs/TODO.md` stub (was a dangling symlink, broke mkdocs build).
45
+
46
+ **v0.32.1:** Fixed critical round-trip data loss bug — `Usage.load_from_grammar()` in `usage.py` silently dropped definition-type children (`part def`, `item def`, etc.) when mixed with usage-type children in the same body, due to an incorrect `hasattr(child, 'body')` guard. Nested structures with mixed definition/usage children now survive parse → dump → parse round-trip correctly.
45
47
 
46
48
  **v0.28.0:** Complete Gap 4 coverage — Block Definition Diagram (BDD), Internal Block Diagram (IBD), Parametric Diagram, and Package Diagram views. All 6 specialized SysML v2 view types now implemented (144 PlantUML tests). IBD shows flow/connection arrows with endpoint extraction. Parametric view extracts constraint parameters with types. Package diagram renders nested folder-style hierarchy.
47
49
 
@@ -16,7 +16,9 @@ The project had diverged so much from sysml2py that a new name, sysmlpy, was sel
16
16
 
17
17
  **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
18
 
19
- **v0.31.1:** Fixed `pyproject.toml` for CI compatibility removed duplicate version and invalid `allow_zero_version` from `[project]` table.
19
+ **v0.32.2:** Added `docs/TODO.md` stub (was a dangling symlink, broke mkdocs build).
20
+
21
+ **v0.32.1:** Fixed critical round-trip data loss bug — `Usage.load_from_grammar()` in `usage.py` silently dropped definition-type children (`part def`, `item def`, etc.) when mixed with usage-type children in the same body, due to an incorrect `hasattr(child, 'body')` guard. Nested structures with mixed definition/usage children now survive parse → dump → parse round-trip correctly.
20
22
 
21
23
  **v0.28.0:** Complete Gap 4 coverage — Block Definition Diagram (BDD), Internal Block Diagram (IBD), Parametric Diagram, and Package Diagram views. All 6 specialized SysML v2 view types now implemented (144 PlantUML tests). IBD shows flow/connection arrows with endpoint extraction. Parametric view extracts constraint parameters with types. Package diagram renders nested folder-style hierarchy.
22
24
 
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.32.0"
9
+ version = "0.32.2"
10
10
  description = ""
11
11
  authors = [{ name = "Jon R. Fox (mycr0ft)", email = "jon.fox@drfox.com" }]
12
12
  readme = "README.md"
@@ -21,7 +21,7 @@ __all__ = [
21
21
  "SysMLSyntaxError",
22
22
  ]
23
23
  __author__ = "Jon Fox"
24
- __version__ = "0.32.0"
24
+ __version__ = "0.32.2"
25
25
 
26
26
  from sysmlpy.usage import (
27
27
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -39,6 +39,16 @@ def main():
39
39
  action="store_true",
40
40
  help="Display the dictionary/JSON representation"
41
41
  )
42
+ parser.add_argument(
43
+ "-i", "--in-place",
44
+ action="store_true",
45
+ help="Format the file in-place (overwrites the input file)"
46
+ )
47
+ parser.add_argument(
48
+ "--check",
49
+ action="store_true",
50
+ help="Check if the file is already formatted; exit 1 if not"
51
+ )
42
52
 
43
53
  args = parser.parse_args()
44
54
 
@@ -65,8 +75,20 @@ def main():
65
75
  grammar_dict = load_grammar(content)
66
76
  import json
67
77
  print(json.dumps(grammar_dict, indent=2))
68
- elif args.dump:
69
- print(model.dump())
78
+ elif args.dump or args.in_place or args.check:
79
+ formatted = model.dump()
80
+ if args.check:
81
+ if formatted == content:
82
+ sys.exit(0)
83
+ else:
84
+ print(f"{file_path} would be reformatted")
85
+ sys.exit(1)
86
+ elif args.in_place:
87
+ with open(file_path, 'w') as f:
88
+ f.write(formatted)
89
+ print(f"Formatted {file_path}")
90
+ else:
91
+ print(formatted)
70
92
  else:
71
93
  # Default or --python flag: show repr()
72
94
  print(repr(model))
@@ -3,7 +3,7 @@
3
3
  """
4
4
  Created on Tue Jul 11 10:14:18 2023
5
5
 
6
- @author: christophercox
6
+ @author: mycr0ft
7
7
  """
8
8
 
9
9
  import uuid as uuidlib
@@ -3,7 +3,7 @@
3
3
  """
4
4
  Created on Wed May 31 13:26:53 2023
5
5
 
6
- @author: christophercox
6
+ @author: mycr0ft
7
7
  """
8
8
 
9
9
  from sysmlpy.grammar.classes import RootNamespace
@@ -3,7 +3,7 @@
3
3
  """
4
4
  Created on Sat Jun 3 12:37:27 2023
5
5
 
6
- @author: christophercox
6
+ @author: mycr0ft
7
7
  """
8
8
 
9
9
  import json
@@ -3,7 +3,7 @@
3
3
  """
4
4
  Created on Fri Jun 30 23:23:31 2023
5
5
 
6
- @author: christophercox
6
+ @author: mycr0ft
7
7
  """
8
8
 
9
9
 
@@ -790,7 +790,7 @@ class Usage(Searchable):
790
790
 
791
791
  for child in children:
792
792
  # Handle different child types
793
- if hasattr(child, 'definition') and hasattr(child, 'body'):
793
+ if hasattr(child, 'definition'):
794
794
  # It's a Definition (PartDefinition, ItemDefinition, etc.)
795
795
  sc = child
796
796
  elif hasattr(child, 'children'):
File without changes
File without changes