sysmlpy 0.32.2__tar.gz → 0.32.4__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.2 → sysmlpy-0.32.4}/PKG-INFO +5 -1
  2. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/README.md +4 -0
  3. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/pyproject.toml +1 -1
  4. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/__init__.py +1 -1
  5. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/definition.py +8 -1
  6. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/usage.py +1 -1
  7. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/LICENSE +0 -0
  8. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/__main__.py +0 -0
  9. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/README.md +0 -0
  10. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  11. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  12. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  13. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  14. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  15. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  16. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  17. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  18. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  19. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  20. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  21. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr_parser.py +0 -0
  22. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/antlr_visitor.py +0 -0
  23. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/examples/attribute_values.py +0 -0
  24. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/examples/part_attributes.py +0 -0
  25. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  26. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/formatting.py +0 -0
  27. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  28. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  29. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  30. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  31. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  32. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  33. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  34. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  35. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  36. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  37. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  38. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  39. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  40. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  41. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  42. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  43. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/grammar/classes.py +0 -0
  44. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/LICENSE +0 -0
  45. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/README.md +0 -0
  46. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/__init__.py +0 -0
  47. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  48. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  49. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  50. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  51. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  52. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  53. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  54. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  55. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  56. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  57. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  58. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  59. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  60. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  61. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  62. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  63. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  64. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  65. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  66. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  67. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  68. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  69. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  70. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  71. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  72. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  73. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  74. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  75. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  76. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  77. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  78. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  79. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  80. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  81. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  82. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  83. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  84. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  85. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  86. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  87. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  88. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  89. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  90. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  91. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  92. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  93. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  94. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  95. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  96. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  97. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  98. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  99. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  100. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  101. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  102. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  103. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  104. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  105. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  106. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  107. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  108. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  109. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  110. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  111. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  112. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  113. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  114. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  115. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  116. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  117. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  118. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  119. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  120. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  121. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  122. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  123. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  124. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  125. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  126. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  127. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  128. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  129. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  130. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Items.sysml +0 -0
  131. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  132. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  133. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  134. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  135. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  136. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/States.sysml +0 -0
  137. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  138. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  139. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  140. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/library/systems/Views.sysml +0 -0
  141. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/navigate.py +0 -0
  142. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/plantuml.py +0 -0
  143. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/project.py +0 -0
  144. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/semantic.py +0 -0
  145. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/store.py +0 -0
  146. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/us_customary_units.txt +0 -0
  147. {sysmlpy-0.32.2 → sysmlpy-0.32.4}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.32.2
3
+ Version: 0.32.4
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Jon R. Fox (mycr0ft)
@@ -41,6 +41,10 @@ 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
+
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.
47
+
44
48
  **v0.32.2:** Added `docs/TODO.md` stub (was a dangling symlink, broke mkdocs build).
45
49
 
46
50
  **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.
@@ -16,6 +16,10 @@ 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
+
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.
22
+
19
23
  **v0.32.2:** Added `docs/TODO.md` stub (was a dangling symlink, broke mkdocs build).
20
24
 
21
25
  **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.
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.32.2"
9
+ version = "0.32.4"
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.2"
24
+ __version__ = "0.32.4"
25
25
 
26
26
  from sysmlpy.usage import (
27
27
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -101,7 +101,8 @@ class Model(Searchable):
101
101
  if member.get("name") in ("Import", "AliasMember"):
102
102
  member_grammar.append(member)
103
103
  continue
104
- if member["ownedRelatedElement"]["name"] == "DefinitionElement":
104
+ elem_type = member["ownedRelatedElement"]["name"]
105
+ if elem_type == "DefinitionElement":
105
106
  de = member["ownedRelatedElement"]
106
107
  if de["ownedRelatedElement"]["name"] == "Package":
107
108
  found_package = True
@@ -110,6 +111,12 @@ class Model(Searchable):
110
111
  )
111
112
  self.children.append(p)
112
113
  member_grammar.append(p._get_definition(child="PackageBody"))
114
+ elif found_package:
115
+ member_grammar.append(member)
116
+ p.grammar.body.children.append(PackageMember(member))
117
+ elif elem_type == "UsageElement" and found_package:
118
+ member_grammar.append(member)
119
+ p.grammar.body.children.append(PackageMember(member))
113
120
 
114
121
  if not found_package:
115
122
  # Wrap bare top-level definitions in a synthetic package
@@ -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