sysmlpy 0.58.0__tar.gz → 0.59.0__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.58.0 → sysmlpy-0.59.0}/PKG-INFO +1 -1
  2. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/pyproject.toml +1 -1
  3. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/__init__.py +1 -1
  4. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr_visitor.py +14 -5
  5. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/classes.py +5 -4
  6. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/LICENSE +0 -0
  7. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/README.md +0 -0
  8. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/__main__.py +0 -0
  9. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/README.md +0 -0
  10. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  11. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  12. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  13. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  14. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  15. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  16. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  17. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  18. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  19. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  20. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  21. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/antlr_parser.py +0 -0
  22. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/boxes_view.py +0 -0
  23. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/definition.py +0 -0
  24. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/examples/attribute_values.py +0 -0
  25. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/examples/part_attributes.py +0 -0
  26. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  27. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/formatting.py +0 -0
  28. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  29. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  30. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  31. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  32. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  33. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  34. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  35. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  36. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  37. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  38. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  39. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  40. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  41. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  42. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  43. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  44. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/LICENSE +0 -0
  45. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/README.md +0 -0
  46. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/__init__.py +0 -0
  47. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  48. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  49. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  50. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  51. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  52. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  53. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  54. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  55. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  56. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  57. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  58. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  59. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  60. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  61. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  62. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  63. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  64. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  65. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  66. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  67. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  68. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  69. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  70. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  71. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  72. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  73. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  74. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  75. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  76. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  77. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  78. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  79. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  80. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  81. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  82. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  83. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  84. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  85. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  86. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  87. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  88. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  89. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  90. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  91. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  92. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  93. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  94. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  95. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  96. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  97. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  98. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  99. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  100. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  101. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  102. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  103. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  104. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  105. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  106. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  107. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  108. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  109. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  110. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  111. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  112. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  113. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  114. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  115. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  116. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  117. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  118. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  119. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  120. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  121. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  122. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  123. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  124. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  125. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  126. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  127. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  128. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  129. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  130. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Items.sysml +0 -0
  131. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  132. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  133. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  134. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  135. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  136. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/States.sysml +0 -0
  137. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  138. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  139. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  140. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/library/systems/Views.sysml +0 -0
  141. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/navigate.py +0 -0
  142. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/plantuml.py +0 -0
  143. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/project.py +0 -0
  144. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/semantic.py +0 -0
  145. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/store.py +0 -0
  146. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/us_customary_units.txt +0 -0
  147. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/usage.py +0 -0
  148. {sysmlpy-0.58.0 → sysmlpy-0.59.0}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.58.0
3
+ Version: 0.59.0
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Jon R. Fox (mycr0ft)
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.58.0"
9
+ version = "0.59.0"
10
10
  description = ""
11
11
  authors = [{ name = "Jon R. Fox (mycr0ft)", email = "jon.fox@drfox.com" }]
12
12
  readme = "README.md"
@@ -25,7 +25,7 @@ __all__ = [
25
25
  "render_state_transition_view_svg", "boxes_view",
26
26
  ]
27
27
  __author__ = "Jon Fox"
28
- __version__ = "0.58.0"
28
+ __version__ = "0.59.0"
29
29
 
30
30
  from sysmlpy.usage import (
31
31
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -7148,10 +7148,12 @@ def _extract_multiplicity_from_mp(mp_ctx):
7148
7148
  else:
7149
7149
  return None
7150
7150
 
7151
+ is_ordered = bool(mp_ctx.ORDERED()) if hasattr(mp_ctx, 'ORDERED') else False
7152
+ is_nonunique = bool(mp_ctx.NONUNIQUE()) if hasattr(mp_ctx, 'NONUNIQUE') else False
7151
7153
  return {
7152
7154
  "name": "MultiplicityPart",
7153
- "isOrdered": False,
7154
- "isNonunique": False,
7155
+ "isOrdered": is_ordered,
7156
+ "isNonunique": is_nonunique,
7155
7157
  "ownedRelationship": [
7156
7158
  {
7157
7159
  "name": "OwnedMultiplicity",
@@ -13597,11 +13599,18 @@ def _get_multiplicity_part(fsp_ctx):
13597
13599
  bound_dicts = [_make_bound(members[0].getText()), _make_bound(members[1].getText())]
13598
13600
  else:
13599
13601
  return None
13600
-
13602
+
13603
+ # ORDERED / NONUNIQUE indicators follow ownedMultiplicity in
13604
+ # multiplicityPart (grammar: `ownedMultiplicity ( ORDERED ( NONUNIQUE )?
13605
+ # | NONUNIQUE ( ORDERED )? )?`). Previously hardcoded False, silently
13606
+ # dropping the keywords on dump.
13607
+ is_ordered = bool(mp_ctx.ORDERED()) if hasattr(mp_ctx, 'ORDERED') else False
13608
+ is_nonunique = bool(mp_ctx.NONUNIQUE()) if hasattr(mp_ctx, 'NONUNIQUE') else False
13609
+
13601
13610
  return {
13602
13611
  "name": "MultiplicityPart",
13603
- "isOrdered": False,
13604
- "isNonunique": False,
13612
+ "isOrdered": is_ordered,
13613
+ "isNonunique": is_nonunique,
13605
13614
  "ownedRelationship": [
13606
13615
  {
13607
13616
  "name": "OwnedMultiplicity",
@@ -8380,15 +8380,16 @@ class MultiplicityPart:
8380
8380
  def dump(self):
8381
8381
  output = [child.dump() for child in self.children]
8382
8382
 
8383
- if self.isOrdered and not self.isOrdered2:
8383
+ # isOrdered/isOrdered2 are populated from the same dict field during
8384
+ # round-trip (the ANTLR dict carries a single isOrdered flag), so the
8385
+ # X OR Y logic below never fired — silently dropping the keyword on
8386
+ # `attribute x[3] ordered;`. Emit whichever flag is set (v0.59.0).
8387
+ if self.isOrdered or self.isOrdered2:
8384
8388
  output.append("ordered")
8385
8389
 
8386
8390
  if self.isNonunique or self.isNonunique2:
8387
8391
  output.append("nonunique")
8388
8392
 
8389
- if self.isOrdered2 and not self.isOrdered:
8390
- output.append("ordered")
8391
-
8392
8393
  return " ".join(output)
8393
8394
 
8394
8395
  def get_definition(self):
File without changes
File without changes
File without changes
File without changes