sysmlpy 0.95.0__tar.gz → 0.96.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 (177) hide show
  1. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/PKG-INFO +38 -2
  2. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/README.md +36 -1
  3. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/pyproject.toml +1 -1
  4. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/__init__.py +1 -1
  5. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr_visitor.py +14 -0
  6. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLLexer.g4 +11 -0
  7. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLLexer.interp +482 -0
  8. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLLexer.py +751 -0
  9. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLLexer.tokens +302 -0
  10. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLParser.g4 +16 -0
  11. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLParser.interp +519 -0
  12. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLParser.py +15048 -0
  13. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLParser.tokens +305 -0
  14. sysmlpy-0.96.0/src/sysmlpy/kerml/KerMLParserVisitor.py +973 -0
  15. sysmlpy-0.96.0/src/sysmlpy/kerml/README.md +45 -0
  16. sysmlpy-0.96.0/src/sysmlpy/kerml/__init__.py +18 -0
  17. sysmlpy-0.96.0/src/sysmlpy/kerml/kerml.py +117 -0
  18. sysmlpy-0.96.0/src/sysmlpy/kerml/kerml_visitor.py +482 -0
  19. sysmlpy-0.96.0/src/sysmlpy/mdtables.py +243 -0
  20. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/plantuml.py +249 -15
  21. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/semantic.py +90 -1
  22. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/traceability.py +4 -2
  23. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/usage.py +58 -1
  24. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/LICENSE +0 -0
  25. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/__main__.py +0 -0
  26. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/README.md +0 -0
  27. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  28. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  29. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  30. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  31. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  32. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  33. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  34. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  35. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  36. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  37. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  38. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/antlr_parser.py +0 -0
  39. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/boxes_view.py +0 -0
  40. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/definition.py +0 -0
  41. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/dfa_cache.py +0 -0
  42. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/diff.py +0 -0
  43. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/evaluator.py +0 -0
  44. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/examples/attribute_values.py +0 -0
  45. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/examples/part_attributes.py +0 -0
  46. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  47. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/formatting.py +0 -0
  48. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  49. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  50. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  51. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  52. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  53. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  54. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  55. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  56. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  57. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  58. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  59. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  60. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  61. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  62. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  63. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  64. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/grammar/classes.py +0 -0
  65. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/interchange.py +0 -0
  66. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/ipython_magic.py +0 -0
  67. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/LICENSE +0 -0
  68. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/README.md +0 -0
  69. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/__init__.py +0 -0
  70. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  71. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  72. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  73. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  74. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  75. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  76. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  77. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  78. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  79. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  80. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  81. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  82. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  83. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  84. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  85. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  86. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  87. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  88. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  89. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  90. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  91. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  92. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  93. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  94. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  95. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  96. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  97. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  98. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  99. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  100. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  101. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  102. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  103. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  104. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  105. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  106. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  107. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  108. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  109. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  110. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  111. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  112. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  113. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  114. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  115. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  116. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  117. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  118. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  119. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  120. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  121. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  122. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  123. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  124. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  125. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  126. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  127. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  128. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  129. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  130. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  131. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  132. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  133. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  134. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  135. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  136. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  137. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  138. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  139. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  140. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  141. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  142. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  143. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  144. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  145. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  146. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  147. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  148. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  149. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  150. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  151. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  152. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  153. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Items.sysml +0 -0
  154. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  155. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  156. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  157. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  158. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  159. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/States.sysml +0 -0
  160. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  161. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  162. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  163. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/library/systems/Views.sysml +0 -0
  164. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/lsp/__init__.py +0 -0
  165. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/lsp/__main__.py +0 -0
  166. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/lsp/protocol.py +0 -0
  167. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/lsp/server.py +0 -0
  168. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/lsp/stdio.py +0 -0
  169. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/navigate.py +0 -0
  170. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/project.py +0 -0
  171. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/repl.py +0 -0
  172. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/reqif_io.py +0 -0
  173. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/sim.py +0 -0
  174. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/spreadsheet.py +0 -0
  175. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/store.py +0 -0
  176. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/us_customary_units.txt +0 -0
  177. {sysmlpy-0.95.0 → sysmlpy-0.96.0}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.95.0
3
+ Version: 0.96.0
4
4
  Summary:
5
5
  License-File: LICENSE
6
6
  Author: Jon R. Fox (mycr0ft)
@@ -13,6 +13,7 @@ Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Programming Language :: Python :: 3.15
16
17
  Provides-Extra: cayley
17
18
  Provides-Extra: graph
18
19
  Provides-Extra: jupyter
@@ -136,6 +137,40 @@ and the mapping to this implementation — is in the
136
137
  [sysml-copier](https://github.com/mycr0ft/sysml-copier) template's
137
138
  `docs/sysml-magics.md`.
138
139
 
140
+ ## Interactive REPL
141
+
142
+ `sysmlpy repl [FILE ...]` is a terminal session in the same spirit: each
143
+ submission is a SysML declaration, an expression, or a `%command`, and
144
+ declarations accumulate into a session model with the same
145
+ member-granularity merge as the Jupyter magics (a re-declared member
146
+ replaces its prior definition, sibling members are kept, and a
147
+ `note:` line says so). Submissions continue onto a `...>` line while
148
+ brackets stay open; a line that is not a declaration evaluates as an
149
+ expression. Ctrl-D or `%quit` exits; `%reset` discards the session.
150
+
151
+ | Command | Purpose |
152
+ |---------|---------|
153
+ | `%list [NAME]` | Packages (with member counts), or elements matching NAME with qualified names |
154
+ | `%show NAME` | `repr()` of the first element named NAME |
155
+ | `%dump` | Round-tripped SysML text of the session model |
156
+ | `%eval EXPR` | Evaluate an expression against the session model |
157
+ | `%set NAME=VALUE` | Bind a what-if value (number / bool / string / unit) |
158
+ | `%bindings` | Show current what-if bindings |
159
+ | `%calc NAME a, b` | Invoke a calc def with positional literal arguments |
160
+ | `%check` | Check the model's constraints (pass/fail report) |
161
+ | `%values` | Collected attribute values |
162
+ | `%sim [FOCUS]` | Start a simulator session on a state machine |
163
+ | `%send TRIGGER` / `%step` / `%state` | Drive / advance / inspect that session |
164
+ | `%view NAME [KIND]` | Render a view: `gv` `pkg` `afv` `iv` `stv` `tab` `dvt` `matrix` |
165
+ | `%load PATH` / `%save PATH` | Merge a file into the session / write the session out |
166
+ | `%reset` / `%quit` | Discard everything / leave the REPL |
167
+ | `%help` | Command summary |
168
+
169
+ Files given on the command line (`sysmlpy repl model.sysml`) are loaded
170
+ into the session before the first prompt. The session core is the same
171
+ Python API surface used throughout the library, so anything you build in
172
+ a REPL session maps one-to-one onto a `ReplSession` scripted from Python.
173
+
139
174
  ## Command-Line Tools
140
175
 
141
176
  sysmlpy ships a CLI (`sysmlpy`, plus `sysmlpy-lsp` for editor support).
@@ -458,7 +493,8 @@ result = analyze(model, strict=True)
458
493
  - **Undefined symbol detection** — catches references to non-existent types, features, and packages
459
494
  - **Qualified name resolution** — `P::A` and `Outer::Inner::DeepPart` resolve through scope chains
460
495
  - **Inheritance resolution** — subsetting/redefinition references resolve through supertype chains
461
- - **Library symbol index** — scans 88 `.kerml`/`.sysml` files (~1,417 symbols) from the bundled standard library
496
+ - **KerML parser** — OMG-KEBNF-generated ANTLR4 grammar for the Kernel Modeling Language (`sysmlpy.kerml`): `parse` / `parse_file` / `parse_to_dict`; all 130 `.kerml` corpus files (OMG examples + standard libraries) parse, and the library symbol index is backed by real parses (2,986 symbols)
497
+ - **Library symbol index** — scans 94 files (36 parsed `.kerml` + 58 `.sysml`) from the bundled standard library (~2,986 symbols)
462
498
 
463
499
  ### Import Resolution
464
500
 
@@ -101,6 +101,40 @@ and the mapping to this implementation — is in the
101
101
  [sysml-copier](https://github.com/mycr0ft/sysml-copier) template's
102
102
  `docs/sysml-magics.md`.
103
103
 
104
+ ## Interactive REPL
105
+
106
+ `sysmlpy repl [FILE ...]` is a terminal session in the same spirit: each
107
+ submission is a SysML declaration, an expression, or a `%command`, and
108
+ declarations accumulate into a session model with the same
109
+ member-granularity merge as the Jupyter magics (a re-declared member
110
+ replaces its prior definition, sibling members are kept, and a
111
+ `note:` line says so). Submissions continue onto a `...>` line while
112
+ brackets stay open; a line that is not a declaration evaluates as an
113
+ expression. Ctrl-D or `%quit` exits; `%reset` discards the session.
114
+
115
+ | Command | Purpose |
116
+ |---------|---------|
117
+ | `%list [NAME]` | Packages (with member counts), or elements matching NAME with qualified names |
118
+ | `%show NAME` | `repr()` of the first element named NAME |
119
+ | `%dump` | Round-tripped SysML text of the session model |
120
+ | `%eval EXPR` | Evaluate an expression against the session model |
121
+ | `%set NAME=VALUE` | Bind a what-if value (number / bool / string / unit) |
122
+ | `%bindings` | Show current what-if bindings |
123
+ | `%calc NAME a, b` | Invoke a calc def with positional literal arguments |
124
+ | `%check` | Check the model's constraints (pass/fail report) |
125
+ | `%values` | Collected attribute values |
126
+ | `%sim [FOCUS]` | Start a simulator session on a state machine |
127
+ | `%send TRIGGER` / `%step` / `%state` | Drive / advance / inspect that session |
128
+ | `%view NAME [KIND]` | Render a view: `gv` `pkg` `afv` `iv` `stv` `tab` `dvt` `matrix` |
129
+ | `%load PATH` / `%save PATH` | Merge a file into the session / write the session out |
130
+ | `%reset` / `%quit` | Discard everything / leave the REPL |
131
+ | `%help` | Command summary |
132
+
133
+ Files given on the command line (`sysmlpy repl model.sysml`) are loaded
134
+ into the session before the first prompt. The session core is the same
135
+ Python API surface used throughout the library, so anything you build in
136
+ a REPL session maps one-to-one onto a `ReplSession` scripted from Python.
137
+
104
138
  ## Command-Line Tools
105
139
 
106
140
  sysmlpy ships a CLI (`sysmlpy`, plus `sysmlpy-lsp` for editor support).
@@ -423,7 +457,8 @@ result = analyze(model, strict=True)
423
457
  - **Undefined symbol detection** — catches references to non-existent types, features, and packages
424
458
  - **Qualified name resolution** — `P::A` and `Outer::Inner::DeepPart` resolve through scope chains
425
459
  - **Inheritance resolution** — subsetting/redefinition references resolve through supertype chains
426
- - **Library symbol index** — scans 88 `.kerml`/`.sysml` files (~1,417 symbols) from the bundled standard library
460
+ - **KerML parser** — OMG-KEBNF-generated ANTLR4 grammar for the Kernel Modeling Language (`sysmlpy.kerml`): `parse` / `parse_file` / `parse_to_dict`; all 130 `.kerml` corpus files (OMG examples + standard libraries) parse, and the library symbol index is backed by real parses (2,986 symbols)
461
+ - **Library symbol index** — scans 94 files (36 parsed `.kerml` + 58 `.sysml`) from the bundled standard library (~2,986 symbols)
427
462
 
428
463
  ### Import Resolution
429
464
 
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.95.0"
9
+ version = "0.96.0"
10
10
  description = ""
11
11
  authors = [{ name = "Jon R. Fox (mycr0ft)", email = "jon.fox@drfox.com" }]
12
12
  readme = "README.md"
@@ -35,7 +35,7 @@ __all__ = [
35
35
  "render_state_transition_view_svg", "boxes_view",
36
36
  ]
37
37
  __author__ = "Jon Fox"
38
- __version__ = "0.95.0"
38
+ __version__ = "0.96.0"
39
39
 
40
40
  from sysmlpy.usage import (
41
41
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -7321,6 +7321,20 @@ def _visit_multiplicity(mult_ctx):
7321
7321
  if mult_ctx is None:
7322
7322
  return result
7323
7323
 
7324
+ # OwnedCrossMultiplicityMember carries an OwnedCrossMultiplicity
7325
+ # wrapper (KerML OwnedCrossMultiplicity → OwnedMultiplicity); read
7326
+ # through it when present (interface ends: `connect [1] a to b`)
7327
+ if hasattr(mult_ctx, 'ownedCrossMultiplicity'):
7328
+ ocm = mult_ctx.ownedCrossMultiplicity()
7329
+ if ocm:
7330
+ om = ocm.ownedMultiplicity()
7331
+ if isinstance(om, list):
7332
+ om = om[0] if om else None
7333
+ if om:
7334
+ built = _extract_multiplicity_from_ctx(om)
7335
+ if built:
7336
+ return built
7337
+
7324
7338
  if hasattr(mult_ctx, 'ownedRelatedElement') and mult_ctx.ownedRelatedElement():
7325
7339
  related = mult_ctx.ownedRelatedElement()
7326
7340
  if isinstance(related, list):
@@ -0,0 +1,11 @@
1
+ /*
2
+ * KerML v1.0 ANTLR4 grammar (lexer).
3
+ *
4
+ * Generated from the OMG KerML textual-notation KEBNF
5
+ * (Systems-Modeling/SysML-v2-Release, bnf/KerML-textual-bnf.kebnf,
6
+ * 2026-08 checkout / Release 2026-07 edition) using the daltskin
7
+ * sysml-v2-grammar generator in KerML-only mode. MIT license, same as
8
+ * the generator upstream.
9
+ */
10
+
11
+ lexer grammar KerMLLexer;