sysmlpy 0.90.1__tar.gz → 0.91.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 (161) hide show
  1. sysmlpy-0.90.1/README.md → sysmlpy-0.91.0/PKG-INFO +81 -0
  2. sysmlpy-0.90.1/PKG-INFO → sysmlpy-0.91.0/README.md +47 -32
  3. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/pyproject.toml +3 -1
  4. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/__init__.py +1 -1
  5. sysmlpy-0.91.0/src/sysmlpy/ipython_magic.py +251 -0
  6. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/LICENSE +0 -0
  7. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/__main__.py +0 -0
  8. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/README.md +0 -0
  9. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  10. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  11. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  12. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  13. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  14. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  15. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  16. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  17. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  18. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  19. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  20. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr_parser.py +0 -0
  21. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/antlr_visitor.py +0 -0
  22. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/boxes_view.py +0 -0
  23. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/definition.py +0 -0
  24. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/dfa_cache.py +0 -0
  25. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/diff.py +0 -0
  26. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/evaluator.py +0 -0
  27. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/examples/attribute_values.py +0 -0
  28. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/examples/part_attributes.py +0 -0
  29. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  30. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/formatting.py +0 -0
  31. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  32. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  33. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  34. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  35. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  36. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  37. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  38. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  39. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  40. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  41. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  42. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  43. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  44. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  45. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  46. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  47. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/grammar/classes.py +0 -0
  48. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/interchange.py +0 -0
  49. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/LICENSE +0 -0
  50. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/README.md +0 -0
  51. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/__init__.py +0 -0
  52. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  53. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  54. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  55. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  56. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  57. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  58. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  59. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  60. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  61. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  62. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  63. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  64. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  65. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  66. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  67. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  68. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  69. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  70. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  71. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  72. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  73. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  74. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  75. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  76. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  77. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  78. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  79. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  80. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  81. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  82. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  83. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  84. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  85. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  86. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  87. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  88. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  89. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  90. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  91. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  92. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  93. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  94. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  95. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  96. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  97. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  98. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  99. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  100. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  101. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  102. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  103. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  104. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  105. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  106. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  107. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  108. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  109. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  110. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  111. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  112. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  113. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  114. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  115. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  116. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  117. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  118. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  119. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  120. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  121. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  122. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  123. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  124. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  125. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  126. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  127. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  128. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  129. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  130. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  131. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  132. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  133. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  134. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  135. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Items.sysml +0 -0
  136. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  137. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  138. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  139. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  140. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  141. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/States.sysml +0 -0
  142. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  143. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  144. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  145. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/library/systems/Views.sysml +0 -0
  146. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/lsp/__init__.py +0 -0
  147. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/lsp/__main__.py +0 -0
  148. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/lsp/protocol.py +0 -0
  149. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/lsp/server.py +0 -0
  150. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/lsp/stdio.py +0 -0
  151. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/navigate.py +0 -0
  152. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/plantuml.py +0 -0
  153. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/project.py +0 -0
  154. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/semantic.py +0 -0
  155. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/sim.py +0 -0
  156. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/spreadsheet.py +0 -0
  157. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/store.py +0 -0
  158. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/traceability.py +0 -0
  159. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/us_customary_units.txt +0 -0
  160. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/usage.py +0 -0
  161. {sysmlpy-0.90.1 → sysmlpy-0.91.0}/src/sysmlpy/validator.py +0 -0
@@ -1,3 +1,36 @@
1
+ Metadata-Version: 2.4
2
+ Name: sysmlpy
3
+ Version: 0.91.0
4
+ Summary:
5
+ License-File: LICENSE
6
+ Author: Jon R. Fox (mycr0ft)
7
+ Author-email: jon.fox@drfox.com
8
+ Requires-Python: >=3.9,<4.0
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Provides-Extra: cayley
17
+ Provides-Extra: graph
18
+ Provides-Extra: jupyter
19
+ Provides-Extra: kuzu
20
+ Provides-Extra: sim
21
+ Provides-Extra: xlsx
22
+ Requires-Dist: antlr4-python3-runtime (>=4.13)
23
+ Requires-Dist: arrow (>=1.4.0,<2.0.0)
24
+ Requires-Dist: ipython (>=8.0) ; extra == "jupyter"
25
+ Requires-Dist: kuzu (>=0.7,<0.12) ; extra == "kuzu"
26
+ Requires-Dist: networkx (>=3.0) ; extra == "graph"
27
+ Requires-Dist: openpyxl (>=3.1) ; extra == "xlsx"
28
+ Requires-Dist: pint (>=0.24)
29
+ Requires-Dist: pyyaml (>=6.0)
30
+ Requires-Dist: requests (>=2.31) ; extra == "cayley"
31
+ Requires-Dist: transitions (>=0.9,<0.10) ; extra == "sim"
32
+ Description-Content-Type: text/markdown
33
+
1
34
  # sysmlpy
2
35
  [![PyPI version](https://badge.fury.io/py/sysmlpy.svg)](https://badge.fury.io/py/sysmlpy)[![PyPI status](https://img.shields.io/pypi/status/sysmlpy.svg)](https://pypi.python.org/pypi/sysmlpy/)[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)
3
36
 
@@ -41,6 +74,7 @@ sysmlpy requires the following Python packages:
41
74
  - [kuzu](https://kuzudb.com/) — embedded graph database with disk persistence and Cypher queries (install with `pip install sysmlpy[kuzu]`)
42
75
  - [cayley](https://cayley.io/) — graph database via HTTP API, supports BoltDB/LevelDB backends (install with `pip install sysmlpy[cayley]`)
43
76
  - [PlantUML](https://plantuml.com/) **v1.2020.0+** — diagram rendering (requires Java + PlantUML JAR or [PlantUML server](https://www.plantuml.com/plantuml)). The generator uses `<style>` blocks and `skinparam` stereotype selectors introduced in v1.2020.
77
+ - [IPython](https://ipython.org/) **v8.0+** — the `%%sysml` Jupyter cell magic (install with `pip install sysmlpy[jupyter]`; see [Jupyter integration](#jupyter-integration))
44
78
 
45
79
  ## Installation
46
80
 
@@ -53,6 +87,52 @@ Multiple installation methods are supported by sysmlpy, including:
53
87
  | ![PyPI logo](https://simpleicons.org/icons/pypi.svg) | PyPI | ``python -m pip install sysmlpy[cayley]`` (with Cayley graph DB) |
54
88
  | ![GitHub logo](https://simpleicons.org/icons/github.svg) | GitHub | ``python -m pip install https://github.com/mycr0ft/sysmlpy/archive/refs/heads/main.zip`` |
55
89
 
90
+ ## Jupyter integration
91
+
92
+ With the `jupyter` extra installed (`pip install sysmlpy[jupyter]`), the
93
+ `%%sysml` cell magic lets you write SysML v2 textual notation directly in
94
+ notebook cells, parsed and accumulated into a persistent session `Model`
95
+ exposed in the notebook namespace as `model` (alias `_sysml`):
96
+
97
+ ```python
98
+ # once per notebook
99
+ %load_ext sysmlpy.ipython_magic
100
+ ```
101
+
102
+ ```sysml
103
+ %%sysml
104
+ package Vehicle {
105
+ part def Engine {
106
+ attribute fuelRate : Real;
107
+ }
108
+ part def Vehicle {
109
+ part engine : Vehicle::Engine;
110
+ }
111
+ }
112
+ ```
113
+
114
+ Re-declaring a package merges at *package-member* granularity: elements
115
+ with the same `name` and `sysml_type` replace prior definitions; sibling
116
+ members are preserved. Line magics mirror the OMG Pilot Implementation
117
+ Jupyter kernel's command set:
118
+
119
+ | Magic | Purpose |
120
+ |-------|---------|
121
+ | `%sysml_reset` | Discard the session model |
122
+ | `%sysml_list [NAME]` | List packages, or find elements by exact declared name |
123
+ | `%sysml_show NAME [--json]` | `dump()` of the AST rooted at a named element |
124
+ | `%sysml_viz NAME... [--view V]` | PlantUML view (general\|interconnection\|action\|package\|tree) |
125
+
126
+ Cell options: `%%sysml --reset` (fresh model), `--file PATH` (parse from a
127
+ file; use `-` as the cell body), `--show` (print the round-tripped model).
128
+ Parse errors report to stderr with line/column and never discard the
129
+ session model. The full magic-command reference — the complete set of the
130
+ official [OMG Pilot Implementation Jupyter
131
+ kernel](https://github.com/Systems-Modeling/SysML-v2-Pilot-Implementation/tree/master/org.omg.sysml.jupyter.kernel)
132
+ and the mapping to this implementation — is in the
133
+ [sysml-copier](https://github.com/mycr0ft/sysml-copier) template's
134
+ `docs/sysml-magics.md`.
135
+
56
136
  ## Command-Line Tools
57
137
 
58
138
  sysmlpy ships a CLI (`sysmlpy`, plus `sysmlpy-lsp` for editor support).
@@ -797,3 +877,4 @@ Two companion tools for the SysML v2 community, created by the same author:
797
877
 
798
878
  ## License
799
879
  sysmlpy is released under the MIT license, hence allowing commercial use of the library.
880
+
@@ -1,34 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: sysmlpy
3
- Version: 0.90.1
4
- Summary:
5
- License-File: LICENSE
6
- Author: Jon R. Fox (mycr0ft)
7
- Author-email: jon.fox@drfox.com
8
- Requires-Python: >=3.9,<4.0
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.9
11
- Classifier: Programming Language :: Python :: 3.10
12
- Classifier: Programming Language :: Python :: 3.11
13
- Classifier: Programming Language :: Python :: 3.12
14
- Classifier: Programming Language :: Python :: 3.13
15
- Classifier: Programming Language :: Python :: 3.14
16
- Provides-Extra: cayley
17
- Provides-Extra: graph
18
- Provides-Extra: kuzu
19
- Provides-Extra: sim
20
- Provides-Extra: xlsx
21
- Requires-Dist: antlr4-python3-runtime (>=4.13)
22
- Requires-Dist: arrow (>=1.4.0,<2.0.0)
23
- Requires-Dist: kuzu (>=0.7,<0.12) ; extra == "kuzu"
24
- Requires-Dist: networkx (>=3.0) ; extra == "graph"
25
- Requires-Dist: openpyxl (>=3.1) ; extra == "xlsx"
26
- Requires-Dist: pint (>=0.24)
27
- Requires-Dist: pyyaml (>=6.0)
28
- Requires-Dist: requests (>=2.31) ; extra == "cayley"
29
- Requires-Dist: transitions (>=0.9,<0.10) ; extra == "sim"
30
- Description-Content-Type: text/markdown
31
-
32
1
  # sysmlpy
33
2
  [![PyPI version](https://badge.fury.io/py/sysmlpy.svg)](https://badge.fury.io/py/sysmlpy)[![PyPI status](https://img.shields.io/pypi/status/sysmlpy.svg)](https://pypi.python.org/pypi/sysmlpy/)[![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/)
34
3
 
@@ -72,6 +41,7 @@ sysmlpy requires the following Python packages:
72
41
  - [kuzu](https://kuzudb.com/) — embedded graph database with disk persistence and Cypher queries (install with `pip install sysmlpy[kuzu]`)
73
42
  - [cayley](https://cayley.io/) — graph database via HTTP API, supports BoltDB/LevelDB backends (install with `pip install sysmlpy[cayley]`)
74
43
  - [PlantUML](https://plantuml.com/) **v1.2020.0+** — diagram rendering (requires Java + PlantUML JAR or [PlantUML server](https://www.plantuml.com/plantuml)). The generator uses `<style>` blocks and `skinparam` stereotype selectors introduced in v1.2020.
44
+ - [IPython](https://ipython.org/) **v8.0+** — the `%%sysml` Jupyter cell magic (install with `pip install sysmlpy[jupyter]`; see [Jupyter integration](#jupyter-integration))
75
45
 
76
46
  ## Installation
77
47
 
@@ -84,6 +54,52 @@ Multiple installation methods are supported by sysmlpy, including:
84
54
  | ![PyPI logo](https://simpleicons.org/icons/pypi.svg) | PyPI | ``python -m pip install sysmlpy[cayley]`` (with Cayley graph DB) |
85
55
  | ![GitHub logo](https://simpleicons.org/icons/github.svg) | GitHub | ``python -m pip install https://github.com/mycr0ft/sysmlpy/archive/refs/heads/main.zip`` |
86
56
 
57
+ ## Jupyter integration
58
+
59
+ With the `jupyter` extra installed (`pip install sysmlpy[jupyter]`), the
60
+ `%%sysml` cell magic lets you write SysML v2 textual notation directly in
61
+ notebook cells, parsed and accumulated into a persistent session `Model`
62
+ exposed in the notebook namespace as `model` (alias `_sysml`):
63
+
64
+ ```python
65
+ # once per notebook
66
+ %load_ext sysmlpy.ipython_magic
67
+ ```
68
+
69
+ ```sysml
70
+ %%sysml
71
+ package Vehicle {
72
+ part def Engine {
73
+ attribute fuelRate : Real;
74
+ }
75
+ part def Vehicle {
76
+ part engine : Vehicle::Engine;
77
+ }
78
+ }
79
+ ```
80
+
81
+ Re-declaring a package merges at *package-member* granularity: elements
82
+ with the same `name` and `sysml_type` replace prior definitions; sibling
83
+ members are preserved. Line magics mirror the OMG Pilot Implementation
84
+ Jupyter kernel's command set:
85
+
86
+ | Magic | Purpose |
87
+ |-------|---------|
88
+ | `%sysml_reset` | Discard the session model |
89
+ | `%sysml_list [NAME]` | List packages, or find elements by exact declared name |
90
+ | `%sysml_show NAME [--json]` | `dump()` of the AST rooted at a named element |
91
+ | `%sysml_viz NAME... [--view V]` | PlantUML view (general\|interconnection\|action\|package\|tree) |
92
+
93
+ Cell options: `%%sysml --reset` (fresh model), `--file PATH` (parse from a
94
+ file; use `-` as the cell body), `--show` (print the round-tripped model).
95
+ Parse errors report to stderr with line/column and never discard the
96
+ session model. The full magic-command reference — the complete set of the
97
+ official [OMG Pilot Implementation Jupyter
98
+ kernel](https://github.com/Systems-Modeling/SysML-v2-Pilot-Implementation/tree/master/org.omg.sysml.jupyter.kernel)
99
+ and the mapping to this implementation — is in the
100
+ [sysml-copier](https://github.com/mycr0ft/sysml-copier) template's
101
+ `docs/sysml-magics.md`.
102
+
87
103
  ## Command-Line Tools
88
104
 
89
105
  sysmlpy ships a CLI (`sysmlpy`, plus `sysmlpy-lsp` for editor support).
@@ -828,4 +844,3 @@ Two companion tools for the SysML v2 community, created by the same author:
828
844
 
829
845
  ## License
830
846
  sysmlpy is released under the MIT license, hence allowing commercial use of the library.
831
-
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.90.1"
9
+ version = "0.91.0"
10
10
  description = ""
11
11
  authors = [{ name = "Jon R. Fox (mycr0ft)", email = "jon.fox@drfox.com" }]
12
12
  readme = "README.md"
@@ -23,6 +23,7 @@ openpyxl = { version = ">=3.1", optional = true }
23
23
  arrow = "^1.4.0"
24
24
  transitions = {version = "^0.9", optional = true}
25
25
  requests = { version = ">=2.31", optional = true }
26
+ ipython = { version = ">=8.0", optional = true }
26
27
 
27
28
  [tool.poetry.extras]
28
29
  graph = ["networkx"]
@@ -30,6 +31,7 @@ kuzu = ["kuzu"]
30
31
  xlsx = ["openpyxl"]
31
32
  sim = ["transitions"]
32
33
  cayley = ["requests"]
34
+ jupyter = ["ipython"]
33
35
 
34
36
  [tool.poetry.scripts]
35
37
  sysmlpy = "sysmlpy.__main__:main"
@@ -34,7 +34,7 @@ __all__ = [
34
34
  "render_state_transition_view_svg", "boxes_view",
35
35
  ]
36
36
  __author__ = "Jon Fox"
37
- __version__ = "0.90.1"
37
+ __version__ = "0.91.0"
38
38
 
39
39
  from sysmlpy.usage import (
40
40
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -0,0 +1,251 @@
1
+ """%%sysml cell magic: parse and accumulate SysML v2 models in IPython/Jupyter.
2
+
3
+ Load once per notebook:
4
+
5
+ %load_ext sysmlpy.ipython_magic
6
+
7
+ Then write SysML v2 textual notation in `%%sysml` cells:
8
+
9
+ %%sysml
10
+ package Vehicle {
11
+ part def Engine {
12
+ attribute fuelRate : Real;
13
+ }
14
+ part def Vehicle {
15
+ part engine : Vehicle::Engine;
16
+ }
17
+ }
18
+
19
+ The parsed model accumulates across cells into a persistent `Model` exposed in
20
+ the notebook namespace as `model` (alias `_sysml`). Re-declaring a package
21
+ merges at package-member granularity: a re-declared element (matched by name +
22
+ sysml_type) replaces the prior definition; other members are preserved.
23
+
24
+ Line magics (analogues of the OMG Pilot Implementation kernel commands —
25
+ see docs/sysml-magics.md in sysml-copier or the module docstrings):
26
+
27
+ %sysml_reset discard the session model
28
+ %sysml_list [NAME] list packages, or find elements by exact name
29
+ %sysml_show NAME [--json] print the AST rooted at a named element
30
+ %sysml_viz NAME [--view V] PlantUML view of a named element
31
+
32
+ Requires the `jupyter` extra: pip install sysmlpy[jupyter]
33
+ """
34
+ from __future__ import annotations
35
+
36
+ from pathlib import Path
37
+
38
+ from IPython.core.magic import Magics, cell_magic, line_magic, magics_class
39
+ from IPython.core.magic_arguments import (
40
+ argument,
41
+ magic_arguments,
42
+ parse_argstring,
43
+ )
44
+
45
+
46
+ @magics_class
47
+ class SysMLMagics(Magics):
48
+ def __init__(self, shell):
49
+ super().__init__(shell)
50
+ self.model = None # persistent session Model
51
+
52
+ # -- helpers -----------------------------------------------------------
53
+ def _publish(self):
54
+ """(Re-)bind the session model into the user namespace."""
55
+ self.shell.push({"model": self.model, "_sysml": self.model})
56
+
57
+ def _analyze(self, model, source: str) -> list[str]:
58
+ """Best-effort semantic diagnostics (analyzer API may vary)."""
59
+ out: list[str] = []
60
+ try:
61
+ from sysmlpy import SemanticAnalyzer
62
+
63
+ result = SemanticAnalyzer(model).analyze(source)
64
+ for issue in getattr(result, "issues", []) or []:
65
+ out.append(f"[semantic] [{issue.code}] {issue.message}")
66
+ except Exception:
67
+ pass
68
+ return out
69
+
70
+ def _merge(self, model) -> int:
71
+ """Merge freshly parsed packages into the session model.
72
+
73
+ Member-granularity merge: within a package of the same name, a
74
+ re-declared element (matched by name+sysml_type) replaces the prior
75
+ definition; other members are preserved. New packages are appended.
76
+ Returns the number of replaced members.
77
+ """
78
+ if self.model is None:
79
+ self.model = model
80
+ return 0
81
+ replaced = 0
82
+ for pkg in getattr(model, "packages", []):
83
+ existing_pkg = next(
84
+ (c for c in self.model.children
85
+ if getattr(c, "name", None) == pkg.name),
86
+ None,
87
+ )
88
+ if existing_pkg is None:
89
+ self.model.children.append(pkg)
90
+ continue
91
+ for member in getattr(pkg, "children", []):
92
+ key = (getattr(member, "name", None),
93
+ getattr(member, "sysml_type", None))
94
+ children = existing_pkg.children
95
+ for i, old in enumerate(children):
96
+ if (getattr(old, "name", None),
97
+ getattr(old, "sysml_type", None)) == key:
98
+ children[i] = member
99
+ replaced += 1
100
+ break
101
+ else:
102
+ children.append(member)
103
+ return replaced
104
+
105
+ # -- the cell magic ----------------------------------------------------
106
+ @magic_arguments()
107
+ @argument("--reset", action="store_true", help="discard the session model first")
108
+ @argument("--file", default=None, metavar="PATH",
109
+ help="parse SysML from PATH instead of the cell body (use '-' as the body)")
110
+ @argument("--show", action="store_true",
111
+ help="print the round-tripped model text after merge")
112
+ @cell_magic
113
+ def sysml(self, line: str, cell: str):
114
+ """Parse a cell of SysML v2 textual notation into the session model."""
115
+ import sys
116
+
117
+ args = parse_argstring(self.sysml, line)
118
+
119
+ if args.reset:
120
+ self.model = None
121
+
122
+ if args.file:
123
+ source = Path(args.file).read_text(encoding="utf-8")
124
+ else:
125
+ source = cell
126
+
127
+ from sysmlpy import parse
128
+
129
+ model, errors = parse(source)
130
+ if errors:
131
+ for e in errors:
132
+ print(f"[parse] {e}", file=sys.stderr)
133
+ return None
134
+
135
+ replaced = self._merge(model)
136
+ for w in self._analyze(model, source):
137
+ print(w, file=sys.stderr)
138
+ self._publish()
139
+
140
+ if args.show:
141
+ print(str(self.model))
142
+ total = len(getattr(self.model, "packages", []))
143
+ note = f", {replaced} redefined" if replaced else ""
144
+ print(f"sysml: model updated — {total} package(s) loaded{note}")
145
+ return None
146
+
147
+ # -- line magics (OMG kernel command analogues) ------------------------
148
+ @line_magic
149
+ def sysml_reset(self, line: str = ""):
150
+ """%sysml_reset — discard the persistent SysML session model."""
151
+ self.model = None
152
+ self.shell.user_ns.pop("model", None)
153
+ self.shell.user_ns.pop("_sysml", None)
154
+ print("sysml: session model discarded")
155
+
156
+ @line_magic
157
+ def sysml_list(self, line: str = ""):
158
+ """%sysml_list [NAME] — list packages, or find elements by exact name.
159
+
160
+ Without an argument, lists top-level packages. With a name, lists all
161
+ elements whose declared name matches exactly (any depth). Use
162
+ model.find(sysml_type=...) from Python for richer queries.
163
+ """
164
+ if self.model is None:
165
+ print("sysml: no model loaded — run a %%sysml cell first")
166
+ return None
167
+ name = line.strip() or None
168
+ if name is None:
169
+ for pkg in getattr(self.model, "packages", []):
170
+ print(pkg.name)
171
+ return None
172
+ results = self.model.find(name)
173
+ if not results:
174
+ print(f"sysml: no elements named {name!r}")
175
+ for r in results:
176
+ print(f"{r.sysml_type:14} {r.name}")
177
+ return None
178
+
179
+ @magic_arguments()
180
+ @argument("--json", action="store_true",
181
+ help="JSON representation (dump() output piped through json when possible)")
182
+ @argument("name", help="element name (exact declared name)")
183
+ @line_magic
184
+ def sysml_show(self, line: str):
185
+ """%sysml_show NAME [--json] — print the AST rooted at a named element."""
186
+ import json as _json
187
+
188
+ args = parse_argstring(self.sysml_show, line)
189
+ if self.model is None:
190
+ print("sysml: no model loaded — run a %%sysml cell first")
191
+ return None
192
+ results = self.model.find(args.name)
193
+ if not results:
194
+ print(f"sysml: no elements named {args.name!r}")
195
+ return None
196
+ for r in results:
197
+ text = r.dump() if hasattr(r, "dump") else str(r)
198
+ if args.json:
199
+ try:
200
+ parsed = _json.loads(text)
201
+ print(_json.dumps(parsed, indent=2))
202
+ except (_json.JSONDecodeError, TypeError):
203
+ print(text)
204
+ else:
205
+ print(text)
206
+ return None
207
+
208
+ @magic_arguments()
209
+ @argument("--view", default="general", metavar="VIEW",
210
+ help="general|interconnection|action|package|tree")
211
+ @argument("names", nargs="+", help="element name(s) to visualize")
212
+ @line_magic
213
+ def sysml_viz(self, line: str):
214
+ """%sysml_viz NAME [--view VIEW] — PlantUML view of a named element."""
215
+ args = parse_argstring(self.sysml_viz, line)
216
+ if self.model is None:
217
+ print("sysml: no model loaded — run a %%sysml cell first")
218
+ return None
219
+
220
+ from sysmlpy import plantuml as pl
221
+
222
+ views = {
223
+ "general": pl.as_general_view,
224
+ "interconnection": pl.as_interconnection_view,
225
+ "action": pl.as_action_flow_view,
226
+ "package": pl.as_package_view,
227
+ "tree": pl.as_tree_diagram,
228
+ }
229
+ view = args.view.lower()
230
+ func = views.get(view)
231
+ if func is None:
232
+ print(f"sysml: unknown view {args.view!r}; "
233
+ f"one of {', '.join(views)}")
234
+ return None
235
+ for name in args.names:
236
+ results = self.model.find(name)
237
+ if not results:
238
+ print(f"sysml: no elements named {name!r}")
239
+ continue
240
+ for r in results:
241
+ try:
242
+ print(func(r, style="bw"))
243
+ except Exception as e:
244
+ print(f"sysml: could not render {name!r}: {e}")
245
+ return None
246
+
247
+
248
+ def load_ipython_extension(ipython):
249
+ magics = SysMLMagics(ipython)
250
+ ipython.register_magics(magics)
251
+ ipython.user_ns.setdefault("_sysml_magics", magics)
File without changes
File without changes
File without changes
File without changes
File without changes