sysmlpy 0.96.4__tar.gz → 0.97.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.
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/PKG-INFO +58 -1
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/README.md +56 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/pyproject.toml +3 -1
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/__init__.py +2 -2
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/__main__.py +61 -1
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr_visitor.py +30 -2
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/boxes_view.py +329 -51
- sysmlpy-0.97.0/src/sysmlpy/ci_check.py +315 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/dfa_cache.py +22 -5
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/interchange.py +67 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/LICENSE +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/README.md +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/antlr_parser.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/definition.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/diff.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/evaluator.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/examples/attribute_values.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/examples/part_attributes.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/examples/tuples_sequences.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/formatting.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/README.md +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/grammar/classes.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/ipython_magic.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLLexer.g4 +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLLexer.interp +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLLexer.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLLexer.tokens +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLParser.g4 +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLParser.interp +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLParser.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLParser.tokens +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/KerMLParserVisitor.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/README.md +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/__init__.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/kerml.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/kerml/kerml_visitor.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/LICENSE +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/README.md +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/__init__.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Base.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Links.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Actions.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Cases.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Connections.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Flows.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Items.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Parts.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Ports.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/States.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/SysML.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/library/systems/Views.sysml +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/lsp/__init__.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/lsp/__main__.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/lsp/protocol.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/lsp/server.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/lsp/stdio.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/mdtables.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/navigate.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/plantuml.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/project.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/repl.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/reqif_io.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/semantic.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/sim.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/spreadsheet.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/store.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/traceability.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/us_customary_units.txt +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/usage.py +0 -0
- {sysmlpy-0.96.4 → sysmlpy-0.97.0}/src/sysmlpy/validator.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sysmlpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.97.0
|
|
4
4
|
Summary:
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Author: Jon R. Fox (mycr0ft)
|
|
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.13
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.14
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.15
|
|
17
|
+
Provides-Extra: boxes
|
|
17
18
|
Provides-Extra: cayley
|
|
18
19
|
Provides-Extra: graph
|
|
19
20
|
Provides-Extra: jupyter
|
|
@@ -182,6 +183,7 @@ threshold or operational error, `2` = parse/load failure — so
|
|
|
182
183
|
|---------|---------|
|
|
183
184
|
| `sysmlpy parse <file>` | Parse a file and print a representation |
|
|
184
185
|
| `sysmlpy analyze <file...>` | Semantic analysis; CI-friendly exit codes |
|
|
186
|
+
| `sysmlpy ci <paths...>` | CI check: parse gate (blocking) + semantics (advisory/strict) — shared engine of the GitHub Action, GitLab template, pre-commit hooks |
|
|
185
187
|
| `sysmlpy diff <old> <new>` | Semantic model diff (text/markdown/json) |
|
|
186
188
|
| `sysmlpy view <file>` | Render a PlantUML / Markdown / HTML view |
|
|
187
189
|
| `sysmlpy format <file...>` | Pretty-print (canonicalize) SysML files (alias `fmt`) |
|
|
@@ -223,10 +225,65 @@ sysml> %quit
|
|
|
223
225
|
|
|
224
226
|
# Excel workbook of the tabular views
|
|
225
227
|
sysmlpy xlsx bill_of_materials.sysml -o bom.xlsx
|
|
228
|
+
|
|
229
|
+
# CI: check every model in a tree — parse failures block, semantics advisory
|
|
230
|
+
sysmlpy ci models
|
|
226
231
|
```
|
|
227
232
|
|
|
228
233
|
Every subcommand accepts `--help` for its own flags.
|
|
229
234
|
|
|
235
|
+
## CI Integration (GitHub Actions, GitLab, pre-commit)
|
|
236
|
+
|
|
237
|
+
`sysmlpy ci` is the one engine behind all the CI integrations — parse
|
|
238
|
+
failures always block; semantic findings are **advisory** by default
|
|
239
|
+
(known analyzer limitations on units-heavy models — see
|
|
240
|
+
`docs/ci-integration.md`), and `--semantic strict` promotes semantics to
|
|
241
|
+
blocking once your codebase is analyzer-clean.
|
|
242
|
+
|
|
243
|
+
**GitHub Actions** — this repo ships a reusable workflow; in your repo:
|
|
244
|
+
|
|
245
|
+
```yaml
|
|
246
|
+
jobs:
|
|
247
|
+
sysml-check:
|
|
248
|
+
uses: mycr0ft/sysmlpy/.github/workflows/sysml-check.yml@v0.96.4
|
|
249
|
+
with:
|
|
250
|
+
paths: models
|
|
251
|
+
semantic: advisory # off | advisory | strict
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
This repo's own pushes/PRs dogfood the same workflow
|
|
255
|
+
(`sysml-dogfood.yml` calling it with `install: source`) over the
|
|
256
|
+
bundled standard library and the showcase fixtures — the gate that
|
|
257
|
+
found the two real visitor crashes on named multiplicity bounds
|
|
258
|
+
(`[nCauses]`, `[wallNumber]`) in the bundled library.
|
|
259
|
+
|
|
260
|
+
**GitLab CI** — include the template from this repo:
|
|
261
|
+
|
|
262
|
+
```yaml
|
|
263
|
+
include:
|
|
264
|
+
- project: mycr0ft/sysmlpy
|
|
265
|
+
ref: v0.96.4
|
|
266
|
+
file: .gitlab/sysml-check.gitlab-ci.yml
|
|
267
|
+
|
|
268
|
+
sysml-check:
|
|
269
|
+
extends: .sysml-check
|
|
270
|
+
variables:
|
|
271
|
+
SYSML_PATHS: "models src"
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**pre-commit** — check at commit time:
|
|
275
|
+
|
|
276
|
+
```yaml
|
|
277
|
+
repos:
|
|
278
|
+
- repo: https://github.com/mycr0ft/sysmlpy
|
|
279
|
+
rev: v0.96.4
|
|
280
|
+
hooks:
|
|
281
|
+
- id: sysmlpy-ci # parse gate + advisory semantics
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
Full options (excludes, library path, version pinning, DFA cache for
|
|
285
|
+
faster re-runs, and the promote-to-strict path): `docs/ci-integration.md`.
|
|
286
|
+
|
|
230
287
|
## Documentation
|
|
231
288
|
|
|
232
289
|
Documentation can be found [here.](https://mycr0ft.github.io/sysmlpy/)
|
|
@@ -146,6 +146,7 @@ threshold or operational error, `2` = parse/load failure — so
|
|
|
146
146
|
|---------|---------|
|
|
147
147
|
| `sysmlpy parse <file>` | Parse a file and print a representation |
|
|
148
148
|
| `sysmlpy analyze <file...>` | Semantic analysis; CI-friendly exit codes |
|
|
149
|
+
| `sysmlpy ci <paths...>` | CI check: parse gate (blocking) + semantics (advisory/strict) — shared engine of the GitHub Action, GitLab template, pre-commit hooks |
|
|
149
150
|
| `sysmlpy diff <old> <new>` | Semantic model diff (text/markdown/json) |
|
|
150
151
|
| `sysmlpy view <file>` | Render a PlantUML / Markdown / HTML view |
|
|
151
152
|
| `sysmlpy format <file...>` | Pretty-print (canonicalize) SysML files (alias `fmt`) |
|
|
@@ -187,10 +188,65 @@ sysml> %quit
|
|
|
187
188
|
|
|
188
189
|
# Excel workbook of the tabular views
|
|
189
190
|
sysmlpy xlsx bill_of_materials.sysml -o bom.xlsx
|
|
191
|
+
|
|
192
|
+
# CI: check every model in a tree — parse failures block, semantics advisory
|
|
193
|
+
sysmlpy ci models
|
|
190
194
|
```
|
|
191
195
|
|
|
192
196
|
Every subcommand accepts `--help` for its own flags.
|
|
193
197
|
|
|
198
|
+
## CI Integration (GitHub Actions, GitLab, pre-commit)
|
|
199
|
+
|
|
200
|
+
`sysmlpy ci` is the one engine behind all the CI integrations — parse
|
|
201
|
+
failures always block; semantic findings are **advisory** by default
|
|
202
|
+
(known analyzer limitations on units-heavy models — see
|
|
203
|
+
`docs/ci-integration.md`), and `--semantic strict` promotes semantics to
|
|
204
|
+
blocking once your codebase is analyzer-clean.
|
|
205
|
+
|
|
206
|
+
**GitHub Actions** — this repo ships a reusable workflow; in your repo:
|
|
207
|
+
|
|
208
|
+
```yaml
|
|
209
|
+
jobs:
|
|
210
|
+
sysml-check:
|
|
211
|
+
uses: mycr0ft/sysmlpy/.github/workflows/sysml-check.yml@v0.96.4
|
|
212
|
+
with:
|
|
213
|
+
paths: models
|
|
214
|
+
semantic: advisory # off | advisory | strict
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
This repo's own pushes/PRs dogfood the same workflow
|
|
218
|
+
(`sysml-dogfood.yml` calling it with `install: source`) over the
|
|
219
|
+
bundled standard library and the showcase fixtures — the gate that
|
|
220
|
+
found the two real visitor crashes on named multiplicity bounds
|
|
221
|
+
(`[nCauses]`, `[wallNumber]`) in the bundled library.
|
|
222
|
+
|
|
223
|
+
**GitLab CI** — include the template from this repo:
|
|
224
|
+
|
|
225
|
+
```yaml
|
|
226
|
+
include:
|
|
227
|
+
- project: mycr0ft/sysmlpy
|
|
228
|
+
ref: v0.96.4
|
|
229
|
+
file: .gitlab/sysml-check.gitlab-ci.yml
|
|
230
|
+
|
|
231
|
+
sysml-check:
|
|
232
|
+
extends: .sysml-check
|
|
233
|
+
variables:
|
|
234
|
+
SYSML_PATHS: "models src"
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**pre-commit** — check at commit time:
|
|
238
|
+
|
|
239
|
+
```yaml
|
|
240
|
+
repos:
|
|
241
|
+
- repo: https://github.com/mycr0ft/sysmlpy
|
|
242
|
+
rev: v0.96.4
|
|
243
|
+
hooks:
|
|
244
|
+
- id: sysmlpy-ci # parse gate + advisory semantics
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Full options (excludes, library path, version pinning, DFA cache for
|
|
248
|
+
faster re-runs, and the promote-to-strict path): `docs/ci-integration.md`.
|
|
249
|
+
|
|
194
250
|
## Documentation
|
|
195
251
|
|
|
196
252
|
Documentation can be found [here.](https://mycr0ft.github.io/sysmlpy/)
|
|
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "sysmlpy"
|
|
9
|
-
version = "0.
|
|
9
|
+
version = "0.97.0"
|
|
10
10
|
description = ""
|
|
11
11
|
authors = [{ name = "Jon R. Fox (mycr0ft)", email = "jon.fox@drfox.com" }]
|
|
12
12
|
readme = "README.md"
|
|
@@ -34,6 +34,7 @@ sim = ["transitions"]
|
|
|
34
34
|
reqif = ["reqif"]
|
|
35
35
|
cayley = ["requests"]
|
|
36
36
|
jupyter = ["ipython"]
|
|
37
|
+
boxes = ["diagramboxes"]
|
|
37
38
|
|
|
38
39
|
[tool.poetry.scripts]
|
|
39
40
|
sysmlpy = "sysmlpy.__main__:main"
|
|
@@ -43,6 +44,7 @@ sysmlpy-lsp = "sysmlpy.lsp.stdio:main"
|
|
|
43
44
|
pytest = ">=8.0,<9.0"
|
|
44
45
|
|
|
45
46
|
[tool.pytest.ini_options]
|
|
47
|
+
norecursedirs = ["tests/kerml_batteries"]
|
|
46
48
|
markers = [
|
|
47
49
|
"conformance: OMG 2026-03 XPect parse conformance suite (slow; deselect with -m 'not conformance')",
|
|
48
50
|
]
|
|
@@ -20,7 +20,7 @@ __all__ = [
|
|
|
20
20
|
"as_sequence_view", "as_case_view", "as_browser_view",
|
|
21
21
|
"extract_traceability", "TraceabilityReport", "RequirementTrace",
|
|
22
22
|
"to_interchange", "from_interchange", "interchange_to_json_text",
|
|
23
|
-
"reconcile_ids",
|
|
23
|
+
"reconcile_ids", "qn_registry",
|
|
24
24
|
"reqif_import", "reqif_import_model", "reqif_export",
|
|
25
25
|
"evaluate_expression", "evaluate_calculation", "collect_values",
|
|
26
26
|
"check_constraints", "ConstraintReport", "ConstraintResult",
|
|
@@ -58,7 +58,7 @@ from sysmlpy.traceability import (
|
|
|
58
58
|
)
|
|
59
59
|
from sysmlpy.interchange import (
|
|
60
60
|
to_interchange, from_interchange, interchange_to_json_text,
|
|
61
|
-
reconcile_ids,
|
|
61
|
+
reconcile_ids, qn_registry,
|
|
62
62
|
)
|
|
63
63
|
from sysmlpy.reqif_io import (
|
|
64
64
|
reqif_import, reqif_import_model, reqif_export,
|
|
@@ -6,6 +6,7 @@ Subcommands
|
|
|
6
6
|
-----------
|
|
7
7
|
parse Parse a SysML file and print a representation (default: repr()).
|
|
8
8
|
analyze Run semantic analysis on one or more files; CI-friendly exit codes.
|
|
9
|
+
ci CI check: parse gate (blocking) + semantics (advisory/strict).
|
|
9
10
|
view Render a PlantUML / Markdown / HTML view of a model.
|
|
10
11
|
diff Semantic diff of two SysML files (review workflows).
|
|
11
12
|
format Canonicalize (pretty-print) SysML files (alias: fmt).
|
|
@@ -22,6 +23,8 @@ Legacy flat invocation (``sysmlpy FILE --dump`` etc.) is preserved for
|
|
|
22
23
|
backward compatibility and behaves exactly like ``sysmlpy parse``.
|
|
23
24
|
"""
|
|
24
25
|
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
25
28
|
import argparse
|
|
26
29
|
import inspect
|
|
27
30
|
import json
|
|
@@ -34,7 +37,7 @@ from sysmlpy import loads
|
|
|
34
37
|
# Subcommand table, also used to detect the legacy flat invocation form.
|
|
35
38
|
SUBCOMMANDS = ("parse", "analyze", "view", "trace", "export", "import",
|
|
36
39
|
"reqif-import", "reqif-export",
|
|
37
|
-
"eval", "xlsx", "sim", "diff", "format", "fmt", "repl")
|
|
40
|
+
"eval", "xlsx", "sim", "diff", "format", "fmt", "repl", "ci")
|
|
38
41
|
|
|
39
42
|
|
|
40
43
|
# ---------------------------------------------------------------------------
|
|
@@ -215,6 +218,26 @@ def cmd_analyze(args) -> int:
|
|
|
215
218
|
return 1 if errors else 0
|
|
216
219
|
|
|
217
220
|
|
|
221
|
+
# ---------------------------------------------------------------------------
|
|
222
|
+
# sysmlpy ci
|
|
223
|
+
# ---------------------------------------------------------------------------
|
|
224
|
+
|
|
225
|
+
def cmd_ci(args) -> int:
|
|
226
|
+
from sysmlpy.ci_check import run_check, format_output
|
|
227
|
+
|
|
228
|
+
semantic = args.semantic
|
|
229
|
+
if args.semantic_off:
|
|
230
|
+
semantic = "off"
|
|
231
|
+
result = run_check(
|
|
232
|
+
args.paths,
|
|
233
|
+
semantic=semantic,
|
|
234
|
+
library=args.library,
|
|
235
|
+
exclude=args.exclude or (),
|
|
236
|
+
)
|
|
237
|
+
print(format_output(result, args.format))
|
|
238
|
+
return result.exit_code
|
|
239
|
+
|
|
240
|
+
|
|
218
241
|
# ---------------------------------------------------------------------------
|
|
219
242
|
# sysmlpy view
|
|
220
243
|
# ---------------------------------------------------------------------------
|
|
@@ -844,6 +867,43 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
844
867
|
)
|
|
845
868
|
p_analyze.set_defaults(func=cmd_analyze)
|
|
846
869
|
|
|
870
|
+
# -- ci ------------------------------------------------------------------
|
|
871
|
+
p_ci = sub.add_parser(
|
|
872
|
+
"ci",
|
|
873
|
+
help="CI check: parse gate (blocking) + semantics (advisory)",
|
|
874
|
+
description="Check SysML/KerML files the way CI does: every file "
|
|
875
|
+
"must parse (blocking); semantic findings are advisory "
|
|
876
|
+
"unless --semantic strict. Exit 0 clean, 1 findings, "
|
|
877
|
+
"2 operational error.",
|
|
878
|
+
)
|
|
879
|
+
p_ci.add_argument(
|
|
880
|
+
"paths", nargs="+",
|
|
881
|
+
help="Files or directories (searched recursively) to check",
|
|
882
|
+
)
|
|
883
|
+
p_ci.add_argument(
|
|
884
|
+
"--semantic", choices=("off", "advisory", "strict"), default="advisory",
|
|
885
|
+
help="Semantic gate mode (default: advisory — findings reported, "
|
|
886
|
+
"parse failures still block). strict promotes semantics to "
|
|
887
|
+
"blocking; off skips semantic analysis entirely.",
|
|
888
|
+
)
|
|
889
|
+
p_ci.add_argument(
|
|
890
|
+
"--no-semantic", dest="semantic_off", action="store_true",
|
|
891
|
+
help="Shorthand for --semantic off",
|
|
892
|
+
)
|
|
893
|
+
p_ci.add_argument(
|
|
894
|
+
"-l", "--library",
|
|
895
|
+
help="Path to SysML v2 library files for semantic analysis",
|
|
896
|
+
)
|
|
897
|
+
p_ci.add_argument(
|
|
898
|
+
"--exclude", action="append", default=None,
|
|
899
|
+
help="Substring pattern to skip (repeatable), e.g. --exclude third_party/",
|
|
900
|
+
)
|
|
901
|
+
p_ci.add_argument(
|
|
902
|
+
"--format", choices=("text", "json"), default="text",
|
|
903
|
+
help="Output format: human-readable text (default) or JSON",
|
|
904
|
+
)
|
|
905
|
+
p_ci.set_defaults(func=cmd_ci)
|
|
906
|
+
|
|
847
907
|
# -- diff ----------------------------------------------------------------
|
|
848
908
|
p_diff = sub.add_parser(
|
|
849
909
|
"diff",
|
|
@@ -7381,7 +7381,7 @@ def _extract_multiplicity_from_ctx(om_ctx):
|
|
|
7381
7381
|
}
|
|
7382
7382
|
]
|
|
7383
7383
|
}
|
|
7384
|
-
|
|
7384
|
+
elif value_text.isdigit():
|
|
7385
7385
|
return {
|
|
7386
7386
|
"name": "MultiplicityExpressionMember",
|
|
7387
7387
|
"ownedRelatedElement": [
|
|
@@ -7390,6 +7390,20 @@ def _extract_multiplicity_from_ctx(om_ctx):
|
|
|
7390
7390
|
}
|
|
7391
7391
|
]
|
|
7392
7392
|
}
|
|
7393
|
+
else:
|
|
7394
|
+
# Named multiplicity bound (e.g. '[nCauses]'), as used in
|
|
7395
|
+
# the standard library's succession multiplicities — emit
|
|
7396
|
+
# a feature reference, not an int().
|
|
7397
|
+
return {
|
|
7398
|
+
"name": "MultiplicityExpressionMember",
|
|
7399
|
+
"ownedRelatedElement": [
|
|
7400
|
+
{"name": "MultiplicityRelatedElement", "ownedRelatedElement":
|
|
7401
|
+
{"name": "FeatureReferenceExpression", "ownedRelationship": [
|
|
7402
|
+
{"name": "FeatureReferenceMember", "memberElement": value_text}
|
|
7403
|
+
]}
|
|
7404
|
+
}
|
|
7405
|
+
]
|
|
7406
|
+
}
|
|
7393
7407
|
|
|
7394
7408
|
if len(members) == 1:
|
|
7395
7409
|
bound_dicts = [_make_bound(members[0].getText())]
|
|
@@ -7443,7 +7457,7 @@ def _extract_multiplicity_from_mp(mp_ctx):
|
|
|
7443
7457
|
}
|
|
7444
7458
|
]
|
|
7445
7459
|
}
|
|
7446
|
-
|
|
7460
|
+
elif value_text.isdigit():
|
|
7447
7461
|
return {
|
|
7448
7462
|
"name": "MultiplicityExpressionMember",
|
|
7449
7463
|
"ownedRelatedElement": [
|
|
@@ -7452,6 +7466,20 @@ def _extract_multiplicity_from_mp(mp_ctx):
|
|
|
7452
7466
|
}
|
|
7453
7467
|
]
|
|
7454
7468
|
}
|
|
7469
|
+
else:
|
|
7470
|
+
# Named multiplicity bound (e.g. '[nCauses]'), as used in
|
|
7471
|
+
# the standard library's succession multiplicities — emit
|
|
7472
|
+
# a feature reference, not an int().
|
|
7473
|
+
return {
|
|
7474
|
+
"name": "MultiplicityExpressionMember",
|
|
7475
|
+
"ownedRelatedElement": [
|
|
7476
|
+
{"name": "MultiplicityRelatedElement", "ownedRelatedElement":
|
|
7477
|
+
{"name": "FeatureReferenceExpression", "ownedRelationship": [
|
|
7478
|
+
{"name": "FeatureReferenceMember", "memberElement": value_text}
|
|
7479
|
+
]}
|
|
7480
|
+
}
|
|
7481
|
+
]
|
|
7482
|
+
}
|
|
7455
7483
|
|
|
7456
7484
|
if len(members) == 1:
|
|
7457
7485
|
bound_dicts = [_make_bound(members[0].getText())]
|