sysmlpy 0.32.3__tar.gz → 0.32.5__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.3 → sysmlpy-0.32.5}/PKG-INFO +10 -1
  2. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/README.md +9 -0
  3. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/pyproject.toml +1 -1
  4. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/__init__.py +1 -1
  5. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/classes.py +3 -3
  6. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/usage.py +1 -1
  7. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/LICENSE +0 -0
  8. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/__main__.py +0 -0
  9. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/README.md +0 -0
  10. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  11. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  12. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  13. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  14. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  15. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  16. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  17. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  18. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  19. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  20. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  21. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr_parser.py +0 -0
  22. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/antlr_visitor.py +0 -0
  23. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/definition.py +0 -0
  24. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/examples/attribute_values.py +0 -0
  25. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/examples/part_attributes.py +0 -0
  26. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  27. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/formatting.py +0 -0
  28. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  29. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  30. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  31. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  32. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  33. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  34. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  35. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  36. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  37. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  38. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  39. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  40. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  41. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  42. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  43. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  44. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/LICENSE +0 -0
  45. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/README.md +0 -0
  46. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/__init__.py +0 -0
  47. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  48. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  49. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  50. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  51. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  52. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  53. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  54. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  55. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  56. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  57. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  58. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  59. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  60. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  61. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  62. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  63. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  64. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  65. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  66. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  67. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  68. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  69. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  70. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  71. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  72. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  73. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  74. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  75. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  76. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  77. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  78. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  79. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  80. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  81. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  82. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  83. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  84. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  85. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  86. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  87. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  88. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  89. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  90. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  91. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  92. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  93. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  94. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  95. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  96. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  97. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  98. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  99. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  100. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  101. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  102. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  103. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  104. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  105. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  106. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  107. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  108. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  109. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  110. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  111. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  112. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  113. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  114. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  115. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  116. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  117. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  118. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  119. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  120. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  121. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  122. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  123. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  124. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  125. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  126. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  127. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  128. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  129. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  130. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Items.sysml +0 -0
  131. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  132. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  133. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  134. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  135. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  136. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/States.sysml +0 -0
  137. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  138. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  139. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  140. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/library/systems/Views.sysml +0 -0
  141. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/navigate.py +0 -0
  142. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/plantuml.py +0 -0
  143. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/project.py +0 -0
  144. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/semantic.py +0 -0
  145. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/store.py +0 -0
  146. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/us_customary_units.txt +0 -0
  147. {sysmlpy-0.32.3 → sysmlpy-0.32.5}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.32.3
3
+ Version: 0.32.5
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Jon R. Fox (mycr0ft)
@@ -41,6 +41,8 @@ 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.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.
45
+
44
46
  **v0.32.3:** Fixed `Model.load()` silently dropping top-level elements declared after a semicolon-terminated package (e.g. `package P;\npart def Vehicle {...}`). Also handles `UsageElement` siblings.
45
47
 
46
48
  **v0.32.2:** Added `docs/TODO.md` stub (was a dangling symlink, broke mkdocs build).
@@ -801,6 +803,13 @@ See [`docs/plantuml-examples/`](docs/plantuml-examples/) for all rendered exampl
801
803
  | 20 | Relationship Matrix (GridView) | Relationship Matrix |
802
804
  | 21 | Tabular View — Color | Tabular View (color) |
803
805
 
806
+ ## Changelog
807
+
808
+ - **v0.32.5** — Fix double-space in dump output when `:>>` (redefinition) or
809
+ `: ` (typing) appears after `attribute`, `part`, or other usage keywords.
810
+ Root cause: `Redefinitions.keyword` and `TypedBy.keyword` had leading spaces
811
+ that doubled the separator in `AttributeUsage.dump()` and similar join points.
812
+
804
813
  ## Conformance
805
814
 
806
815
  **100% of 123 OMG XPect conformance tests pass** (123/123).
@@ -16,6 +16,8 @@ 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.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.
20
+
19
21
  **v0.32.3:** Fixed `Model.load()` silently dropping top-level elements declared after a semicolon-terminated package (e.g. `package P;\npart def Vehicle {...}`). Also handles `UsageElement` siblings.
20
22
 
21
23
  **v0.32.2:** Added `docs/TODO.md` stub (was a dangling symlink, broke mkdocs build).
@@ -776,6 +778,13 @@ See [`docs/plantuml-examples/`](docs/plantuml-examples/) for all rendered exampl
776
778
  | 20 | Relationship Matrix (GridView) | Relationship Matrix |
777
779
  | 21 | Tabular View — Color | Tabular View (color) |
778
780
 
781
+ ## Changelog
782
+
783
+ - **v0.32.5** — Fix double-space in dump output when `:>>` (redefinition) or
784
+ `: ` (typing) appears after `attribute`, `part`, or other usage keywords.
785
+ Root cause: `Redefinitions.keyword` and `TypedBy.keyword` had leading spaces
786
+ that doubled the separator in `AttributeUsage.dump()` and similar join points.
787
+
779
788
  ## Conformance
780
789
 
781
790
  **100% of 123 OMG XPect conformance tests pass** (123/123).
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.32.3"
9
+ version = "0.32.5"
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.3"
24
+ __version__ = "0.32.5"
25
25
 
26
26
  from sysmlpy.usage import (
27
27
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -7758,7 +7758,7 @@ class FeatureSpecializationPart:
7758
7758
  for child in self.specializations:
7759
7759
  output.append(child.dump())
7760
7760
 
7761
- return "".join(output)
7761
+ return " ".join(output)
7762
7762
 
7763
7763
  def get_definition(self):
7764
7764
  output = {
@@ -7982,7 +7982,7 @@ class FeatureSpecialization:
7982
7982
  class Redefinitions:
7983
7983
  def __init__(self, definition):
7984
7984
  if valid_definition(definition, self.__class__.__name__):
7985
- self.keyword = " :>>"
7985
+ self.keyword = ":>>"
7986
7986
  self.children = []
7987
7987
  for relationship in definition["ownedRelationship"]:
7988
7988
  self.children.append(OwnedRedefinition(relationship))
@@ -8163,7 +8163,7 @@ class Typings:
8163
8163
  class TypedBy:
8164
8164
  def __init__(self, definition):
8165
8165
  if valid_definition(definition, "TypedBy"):
8166
- self.keyword = " : "
8166
+ self.keyword = ": "
8167
8167
 
8168
8168
  self.relationships = []
8169
8169
  for relationship in definition["ownedRelationship"]:
@@ -936,7 +936,7 @@ class Attribute(Usage):
936
936
  # Add children
937
937
  body = []
938
938
  for abc in self.children:
939
- body.append(DefinitionBodyItem(abc.dump(child=True)).get_definition())
939
+ body.append(DefinitionBodyItem(abc._get_definition(child="DefinitionBody")).get_definition())
940
940
  if len(body) > 0:
941
941
  self.grammar.usage.completion.body.body = DefinitionBody(
942
942
  {"name": "DefinitionBody", "ownedRelatedElement": body}
File without changes
File without changes