sysmlpy 0.30.1__tar.gz → 0.30.2__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.30.1 → sysmlpy-0.30.2}/PKG-INFO +1 -1
  2. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/pyproject.toml +2 -2
  3. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/__init__.py +23 -2
  4. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/definition.py +8 -2
  5. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/navigate.py +22 -3
  6. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/usage.py +35 -5
  7. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/LICENSE +0 -0
  8. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/README.md +0 -0
  9. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/__main__.py +0 -0
  10. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/README.md +0 -0
  11. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
  12. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
  13. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
  14. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
  15. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
  16. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
  17. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
  18. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
  19. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  20. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  21. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  22. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr_parser.py +0 -0
  23. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/antlr_visitor.py +0 -0
  24. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/examples/attribute_values.py +0 -0
  25. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/examples/part_attributes.py +0 -0
  26. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/examples/tuples_sequences.py +0 -0
  27. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/formatting.py +0 -0
  28. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/README.md +0 -0
  29. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
  30. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
  31. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
  32. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
  33. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
  34. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
  35. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
  36. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
  37. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
  38. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
  39. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
  40. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
  41. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
  42. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
  43. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
  44. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/grammar/classes.py +0 -0
  45. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/LICENSE +0 -0
  46. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/README.md +0 -0
  47. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/__init__.py +0 -0
  48. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
  49. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
  50. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
  51. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
  52. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
  53. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
  54. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
  55. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
  56. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
  57. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
  58. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
  59. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
  60. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
  61. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
  62. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
  63. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
  64. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
  65. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
  66. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
  67. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
  68. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
  69. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
  70. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
  71. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
  72. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
  73. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
  74. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
  75. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
  76. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
  77. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
  78. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
  79. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
  80. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
  81. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
  82. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
  83. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
  84. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
  85. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Base.kerml +0 -0
  86. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
  87. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
  88. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
  89. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
  90. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
  91. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
  92. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
  93. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
  94. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
  95. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
  96. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
  97. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
  98. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Links.kerml +0 -0
  99. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
  100. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
  101. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
  102. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
  103. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
  104. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
  105. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
  106. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
  107. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
  108. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
  109. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
  110. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
  111. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
  112. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
  113. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
  114. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
  115. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
  116. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
  117. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
  118. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
  119. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
  120. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
  121. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Actions.sysml +0 -0
  122. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
  123. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
  124. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
  125. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
  126. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Cases.sysml +0 -0
  127. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Connections.sysml +0 -0
  128. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
  129. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Flows.sysml +0 -0
  130. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
  131. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Items.sysml +0 -0
  132. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
  133. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Parts.sysml +0 -0
  134. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Ports.sysml +0 -0
  135. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
  136. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
  137. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/States.sysml +0 -0
  138. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/SysML.sysml +0 -0
  139. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
  140. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
  141. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/library/systems/Views.sysml +0 -0
  142. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/plantuml.py +0 -0
  143. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/project.py +0 -0
  144. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/semantic.py +0 -0
  145. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/store.py +0 -0
  146. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/us_customary_units.txt +0 -0
  147. {sysmlpy-0.30.1 → sysmlpy-0.30.2}/src/sysmlpy/validator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sysmlpy
3
- Version: 0.30.1
3
+ Version: 0.30.2
4
4
  Summary: SysML v2.0 Parser
5
5
  License: MIT License
6
6
 
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
6
6
 
7
7
  [project]
8
8
  name = "sysmlpy"
9
- version = "0.30.1"
9
+ version = "0.30.2"
10
10
  description = "SysML v2.0 Parser"
11
11
  authors = [
12
12
  { name="Jon R. Fox (mycr0ft)", email="jon.fox@drfox.com" },
@@ -114,7 +114,7 @@ build_command = "pip install poetry && poetry build"
114
114
 
115
115
  [tool.poetry]
116
116
  name = "sysmlpy"
117
- version = "0.30.1"
117
+ version = "0.30.2"
118
118
  description = ""
119
119
  authors = ["Jon R. Fox (mycr0ft) <jon.fox@drfox.com>"]
120
120
  readme = "README.md"
@@ -8,7 +8,7 @@ Uses the ANTLR4 parser for full SysML v2 grammar support.
8
8
  """
9
9
 
10
10
  __all__ = [
11
- "load", "loads", "load_grammar", "load_antlr", "load_grammar_antlr",
11
+ "load", "loads", "parse", "load_grammar", "load_antlr", "load_grammar_antlr",
12
12
  "load_files", "load_project", "load_with_dependencies",
13
13
  "Searchable",
14
14
  "Store", "InMemoryStore", "NetworkXStore", "KuzuStore", "CayleyStore", "create_store", "new_id",
@@ -21,7 +21,7 @@ __all__ = [
21
21
  "SysMLSyntaxError",
22
22
  ]
23
23
  __author__ = "Jon Fox"
24
- __version__ = "0.30.1"
24
+ __version__ = "0.30.2"
25
25
 
26
26
  from sysmlpy.usage import (
27
27
  Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
@@ -156,6 +156,27 @@ def loads(s: str, library=None) -> Model:
156
156
  return Model().load(s, library=library)
157
157
 
158
158
 
159
+ def parse(s: str, library=None):
160
+ """Parse SysML source, returning (model, errors) rather than raising.
161
+
162
+ Parameters
163
+ ----------
164
+ s : str
165
+ The SysML v2 source code to parse.
166
+ library : str or Path, optional
167
+ Path to SysML v2 library files for resolving imports.
168
+
169
+ Returns
170
+ -------
171
+ tuple[Model | None, list[str]]
172
+ ``(Model, [])`` on success, ``(None, [error_lines])`` on syntax error.
173
+ """
174
+ try:
175
+ return loads(s, library=library), []
176
+ except SysMLSyntaxError as e:
177
+ return None, str(e).splitlines()
178
+
179
+
159
180
  def load_grammar_antlr(fp, debug=False, library=None):
160
181
  """SysML load from file pointer using ANTLR4 parser.
161
182
 
@@ -203,7 +203,7 @@ class Model(Searchable):
203
203
  """
204
204
  return self.grammar.get_definition()
205
205
 
206
- def dump(self):
206
+ def dump(self) -> str:
207
207
  """Serialize the model to SysML v2 textual notation.
208
208
 
209
209
  Returns
@@ -300,6 +300,8 @@ class Model(Searchable):
300
300
  else:
301
301
  return child._get_child(featurechain)
302
302
 
303
+ get_child = _get_child
304
+
303
305
  # ── Convenience functions ───────────────────────────────────────────
304
306
 
305
307
  def find_all(self, type=None, name=None):
@@ -476,6 +478,8 @@ class Package(Searchable):
476
478
 
477
479
  return self
478
480
 
481
+ set_name = _set_name
482
+
479
483
  def _get_name(self):
480
484
  """Retrieve the declared name from the package grammar.
481
485
 
@@ -550,6 +554,8 @@ class Package(Searchable):
550
554
  else:
551
555
  return child._get_child(featurechain)
552
556
 
557
+ get_child = _get_child
558
+
553
559
  def _ensure_body(self):
554
560
  """Rebuild the package grammar body from current children and imports.
555
561
 
@@ -613,7 +619,7 @@ class Package(Searchable):
613
619
 
614
620
  return package
615
621
 
616
- def dump(self, child=None):
622
+ def dump(self, child=None) -> str:
617
623
  """Serialize the package to SysML v2 textual notation.
618
624
 
619
625
  Parameters
@@ -188,7 +188,7 @@ class Searchable:
188
188
  # Search methods
189
189
  # ------------------------------------------------------------------
190
190
 
191
- def find(self, name=None, *, sysml_type=None, type=None, recursive=True):
191
+ def find(self, name=None, *, sysml_type=None, type=None, recursive=True) -> "list[Searchable]":
192
192
  """Find model elements by name and/or SysML type.
193
193
 
194
194
  Parameters
@@ -262,7 +262,7 @@ class Searchable:
262
262
 
263
263
  return results
264
264
 
265
- def all(self, sysml_type, type=None, recursive=True):
265
+ def all(self, sysml_type, type=None, recursive=True) -> "list[Searchable]":
266
266
  """Return all elements of *sysml_type*, searching recursively by default.
267
267
 
268
268
  This is a convenience alias for ``find(sysml_type=sysml_type, recursive=recursive)``.
@@ -290,7 +290,7 @@ class Searchable:
290
290
  sysml_type = type
291
291
  return self.find(sysml_type=sysml_type, recursive=recursive)
292
292
 
293
- def find_one(self, name=None, *, sysml_type=None):
293
+ def find_one(self, name=None, *, sysml_type=None) -> "Searchable | None":
294
294
  """Return the single matching element, or None if not found.
295
295
 
296
296
  Raises LookupError if more than one match is found.
@@ -322,3 +322,22 @@ class Searchable:
322
322
  if isinstance(item, str):
323
323
  return any(getattr(c, 'name', None) == item for c in self.children)
324
324
  return item in self.children
325
+
326
+ # ------------------------------------------------------------------
327
+ # Jupyter HTML representation
328
+ # ------------------------------------------------------------------
329
+
330
+ def _repr_html_(self) -> str:
331
+ """Jupyter-friendly collapsible HTML tree."""
332
+ def _render(elem, depth=0):
333
+ name = getattr(elem, 'name', '?')
334
+ stype = getattr(elem, 'sysml_type', type(elem).__name__)
335
+ is_def = getattr(elem, 'is_definition', False)
336
+ badge = f'<code style="color:#888;font-size:0.8em">{stype}{"_def" if is_def else ""}</code>'
337
+ children = getattr(elem, 'children', [])
338
+ if children:
339
+ inner = ''.join(_render(c, depth + 1) for c in children)
340
+ return (f'<details open><summary>{badge} <b>{name}</b></summary>'
341
+ f'<div style="margin-left:1em">{inner}</div></details>')
342
+ return f'<div>{badge} {name}</div>'
343
+ return f'<div style="font-family:monospace">{_render(self)}</div>'
@@ -298,7 +298,7 @@ class Usage(Searchable):
298
298
 
299
299
  return package
300
300
 
301
- def dump(self, child=None):
301
+ def dump(self, child=None) -> str:
302
302
  """Serialize this element to SysML v2 textual notation.
303
303
 
304
304
  Parameters
@@ -409,6 +409,8 @@ class Usage(Searchable):
409
409
 
410
410
  return self
411
411
 
412
+ set_name = _set_name
413
+
412
414
  def _get_name(self):
413
415
  """Retrieve the declared name from the grammar element.
414
416
 
@@ -468,6 +470,8 @@ class Usage(Searchable):
468
470
  else:
469
471
  return child._get_child(featurechain)
470
472
 
473
+ get_child = _get_child
474
+
471
475
  def _set_typed_by(self, typed):
472
476
  """Set the typing relationship for this usage element.
473
477
 
@@ -531,6 +535,8 @@ class Usage(Searchable):
531
535
  raise ValueError("Typed by element was not a definition.")
532
536
  return self
533
537
 
538
+ set_typed_by = _set_typed_by
539
+
534
540
  def _set_specializes(self, *parents):
535
541
  """Set specialization (`:>`) for definitions.
536
542
 
@@ -565,6 +571,8 @@ class Usage(Searchable):
565
571
  )
566
572
  return self
567
573
 
574
+ set_specializes = _set_specializes
575
+
568
576
  def _set_subsets(self, *parents):
569
577
  """Set subsetting (`:>`) for usage elements.
570
578
 
@@ -611,6 +619,8 @@ class Usage(Searchable):
611
619
  )
612
620
  return self
613
621
 
622
+ set_subsets = _set_subsets
623
+
614
624
  def _set_redefines(self, parent):
615
625
  """Set redefinition (`:>>`) for usage elements.
616
626
 
@@ -652,6 +662,8 @@ class Usage(Searchable):
652
662
  )
653
663
  return self
654
664
 
665
+ set_redefines = _set_redefines
666
+
655
667
  def _get_grammar(self):
656
668
  """Ensure the grammar tree is up to date and return it.
657
669
 
@@ -1517,7 +1529,7 @@ class Interface(Usage):
1517
1529
  self.children = []
1518
1530
  self.typedby = None
1519
1531
  self.parent = None
1520
- self.grammar = True
1532
+ self.grammar = None
1521
1533
  self.iface_shortname = shortname
1522
1534
  self.ends = [] # list of (name, type_name, multiplicity, children)
1523
1535
  self.iface_connections = [] # list of (from_path, to_path)
@@ -1553,6 +1565,8 @@ class Interface(Usage):
1553
1565
  self._typed_by_name = typed.name if hasattr(typed, 'name') else str(typed)
1554
1566
  return self
1555
1567
 
1568
+ set_typed_by = _set_typed_by
1569
+
1556
1570
  def _set_specializes(self, *parents):
1557
1571
  """Set specialization (`:>`) for interface definitions."""
1558
1572
  self._specializes_names = [
@@ -1560,6 +1574,8 @@ class Interface(Usage):
1560
1574
  ]
1561
1575
  return self
1562
1576
 
1577
+ set_specializes = _set_specializes
1578
+
1563
1579
  def dump(self):
1564
1580
  name_str = getattr(self, 'name', "") or ""
1565
1581
  keyword = getattr(self, 'keyword', 'interface')
@@ -2190,6 +2206,8 @@ class Action(Usage):
2190
2206
  self._typed_by_name = typed.name if hasattr(typed, 'name') else str(typed)
2191
2207
  return self
2192
2208
 
2209
+ set_typed_by = _set_typed_by
2210
+
2193
2211
  def _set_specializes(self, *parents):
2194
2212
  """Set specialization (`:>`) for action definitions."""
2195
2213
  self._specializes_names = [
@@ -2197,6 +2215,8 @@ class Action(Usage):
2197
2215
  ]
2198
2216
  return self
2199
2217
 
2218
+ set_specializes = _set_specializes
2219
+
2200
2220
 
2201
2221
  class UseCase(Usage):
2202
2222
  """SysML v2 UseCase usage/definition.
@@ -2215,7 +2235,7 @@ class UseCase(Usage):
2215
2235
  self.grammar = UseCaseDefinition()
2216
2236
  self.grammar.declaration.identification.declaredName = name if name else None
2217
2237
  else:
2218
- self.grammar = True
2238
+ self.grammar = None
2219
2239
 
2220
2240
  self.is_definition = definition
2221
2241
  self.name = name if name else str(uuidlib.uuid4())
@@ -2310,6 +2330,8 @@ class UseCase(Usage):
2310
2330
  self._typed_by_name = typed.name if hasattr(typed, 'name') else str(typed)
2311
2331
  return self
2312
2332
 
2333
+ set_typed_by = _set_typed_by
2334
+
2313
2335
  def _set_specializes(self, *parents):
2314
2336
  """Set specialization (`:>`) for use case definitions."""
2315
2337
  self._specializes_names = [
@@ -2317,6 +2339,8 @@ class UseCase(Usage):
2317
2339
  ]
2318
2340
  return self
2319
2341
 
2342
+ set_specializes = _set_specializes
2343
+
2320
2344
  def dump(self):
2321
2345
  name_str = getattr(self, 'name', "") or ""
2322
2346
  keyword = getattr(self, 'keyword', 'use case')
@@ -2409,7 +2433,7 @@ class Requirement(Usage):
2409
2433
  if self.grammar.declaration is not None and hasattr(self.grammar.declaration, 'identification'):
2410
2434
  self.grammar.declaration.identification.declaredName = name if name else None
2411
2435
  else:
2412
- self.grammar = True
2436
+ self.grammar = None
2413
2437
 
2414
2438
  self.is_definition = definition
2415
2439
  self.name = name if name else str(uuidlib.uuid4())
@@ -2522,6 +2546,8 @@ class Requirement(Usage):
2522
2546
  self._typed_by_name = typed.name if hasattr(typed, 'name') else str(typed)
2523
2547
  return self
2524
2548
 
2549
+ set_typed_by = _set_typed_by
2550
+
2525
2551
  def _set_specializes(self, *parents):
2526
2552
  """Set specialization (`:>`) for requirement definitions."""
2527
2553
  self._specializes_names = [
@@ -2529,6 +2555,8 @@ class Requirement(Usage):
2529
2555
  ]
2530
2556
  return self
2531
2557
 
2558
+ set_specializes = _set_specializes
2559
+
2532
2560
  def dump(self):
2533
2561
  name_str = getattr(self, 'name', "") or ""
2534
2562
  keyword = getattr(self, 'keyword', 'requirement')
@@ -2653,7 +2681,7 @@ class Message(Usage):
2653
2681
  self.children = []
2654
2682
  self.typedby = None
2655
2683
  self.parent = None
2656
- self.grammar = True
2684
+ self.grammar = None
2657
2685
  self.from_port = from_port
2658
2686
  self.to_port = to_port
2659
2687
  self.of_type = of_type
@@ -3804,6 +3832,8 @@ class Reference(Usage):
3804
3832
  """Alias for set_type for consistency with other classes."""
3805
3833
  return self.set_type(type_obj)
3806
3834
 
3835
+ set_typed_by = _set_typed_by
3836
+
3807
3837
  def dump(self):
3808
3838
  name_str = getattr(self, 'name', "") or ""
3809
3839
  type_str = ""
File without changes
File without changes
File without changes