sysmlpy 0.96.2__tar.gz → 0.96.4__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.2 → sysmlpy-0.96.4}/PKG-INFO +65 -1
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/README.md +64 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/pyproject.toml +1 -1
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/__init__.py +3 -1
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/__main__.py +29 -1
- sysmlpy-0.96.4/src/sysmlpy/interchange.py +896 -0
- sysmlpy-0.96.2/src/sysmlpy/interchange.py +0 -467
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/LICENSE +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/README.md +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2Parser.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr_parser.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/antlr_visitor.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/boxes_view.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/definition.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/dfa_cache.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/diff.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/evaluator.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/examples/attribute_values.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/examples/part_attributes.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/examples/tuples_sequences.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/formatting.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/README.md +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.g4 +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.interp +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Lexer.tokens +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.g4 +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.interp +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2Parser.tokens +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2ParserListener.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/SysMLv2ParserVisitor.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/desc.xml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/examples/camera.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/examples/toaster-system.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/examples/vehicle-model.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/antlr4/pom.xml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/grammar/classes.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/ipython_magic.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLLexer.g4 +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLLexer.interp +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLLexer.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLLexer.tokens +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLParser.g4 +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLParser.interp +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLParser.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLParser.tokens +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/KerMLParserVisitor.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/README.md +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/__init__.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/kerml.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/kerml/kerml_visitor.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/LICENSE +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/README.md +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/__init__.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Analysis/AnalysisTooling.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Analysis/SampledFunctions.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Analysis/StateSpaceRepresentation.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Analysis/TradeStudies.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Cause and Effect/CausationConnections.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Cause and Effect/CauseAndEffect.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Geometry/ShapeItems.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Geometry/SpatialItems.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Metadata/ImageMetadata.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Metadata/ModelingMetadata.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Metadata/ParametersOfInterestMetadata.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Metadata/RiskMetadata.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQ.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQAcoustics.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQAtomicNuclear.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQBase.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQCharacteristicNumbers.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQChemistryMolecular.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQCondensedMatter.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQElectromagnetism.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQInformation.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQLight.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQMechanics.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQSpaceTime.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/ISQThermodynamics.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/MeasurementRefCalculations.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/MeasurementReferences.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/Quantities.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/QuantityCalculations.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/SI.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/SIPrefixes.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/TensorCalculations.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/Time.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/USCustomaryUnits.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Quantities and Units/VectorCalculations.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Requirement Derivation/DerivationConnections.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/domain/Requirement Derivation/RequirementDerivation.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Base.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/BaseFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/BooleanFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Clocks.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/CollectionFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Collections.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/ComplexFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/ControlFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/ControlPerformances.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/DataFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/FeatureReferencingPerformances.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/IntegerFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/KerML.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Links.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Metaobjects.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/NaturalFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/NumericalFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Objects.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Observation.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/OccurrenceFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Occurrences.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Performances.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/RationalFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/RealFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/ScalarFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/ScalarValues.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/SequenceFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/SpatialFrames.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/StatePerformances.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/StringFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Transfers.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/TransitionPerformances.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/TrigFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/Triggers.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/VectorFunctions.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/kernel/VectorValues.kerml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Actions.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Allocations.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/AnalysisCases.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Attributes.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Calculations.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Cases.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Connections.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Constraints.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Flows.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Interfaces.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Items.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Metadata.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Parts.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Ports.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Requirements.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/StandardViewDefinitions.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/States.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/SysML.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/UseCases.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/VerificationCases.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/library/systems/Views.sysml +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/lsp/__init__.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/lsp/__main__.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/lsp/protocol.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/lsp/server.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/lsp/stdio.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/mdtables.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/navigate.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/plantuml.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/project.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/repl.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/reqif_io.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/semantic.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/sim.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/spreadsheet.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/store.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/traceability.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/us_customary_units.txt +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/usage.py +0 -0
- {sysmlpy-0.96.2 → sysmlpy-0.96.4}/src/sysmlpy/validator.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sysmlpy
|
|
3
|
-
Version: 0.96.
|
|
3
|
+
Version: 0.96.4
|
|
4
4
|
Summary:
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Author: Jon R. Fox (mycr0ft)
|
|
@@ -987,6 +987,70 @@ See [`docs/plantuml-examples/`](docs/plantuml-examples/) for all rendered exampl
|
|
|
987
987
|
| 15 | Relationship Matrix (GridView) | Relationship Matrix |
|
|
988
988
|
| 16 | Tabular View — Color | Tabular View (color) |
|
|
989
989
|
|
|
990
|
+
## Element Identity: Stable Interchange IDs
|
|
991
|
+
|
|
992
|
+
Element `@id`s in interchange exports follow one of two schemes, and a
|
|
993
|
+
reconciliation mechanism that follows the model across edits:
|
|
994
|
+
|
|
995
|
+
**Default — position-derived (deterministic per source text).** Every
|
|
996
|
+
`@graph` element gets `uuid5` from its tree position (parent id + key +
|
|
997
|
+
index). Same source text ⇒ byte-identical JSON in any process.
|
|
998
|
+
|
|
999
|
+
```python
|
|
1000
|
+
from sysmlpy import to_interchange
|
|
1001
|
+
document = to_interchange(model) # position-derived @ids
|
|
1002
|
+
```
|
|
1003
|
+
|
|
1004
|
+
**`stable_ids=True` — content-addressed (L2 idempotency).** Named
|
|
1005
|
+
elements hash their declared qualified-name path + metaclass type;
|
|
1006
|
+
unnamed elements hash the nearest named anchor plus the structural path
|
|
1007
|
+
from it. Inserting or reordering unrelated elements elsewhere leaves
|
|
1008
|
+
untouched ids unchanged:
|
|
1009
|
+
|
|
1010
|
+
```python
|
|
1011
|
+
document = to_interchange(model, stable_ids=True)
|
|
1012
|
+
```
|
|
1013
|
+
|
|
1014
|
+
```bash
|
|
1015
|
+
sysmlpy export model.sysml --stable-ids
|
|
1016
|
+
```
|
|
1017
|
+
|
|
1018
|
+
**`reconcile_ids` — a registry sidecar (L3 identity).** Content ids
|
|
1019
|
+
still re-mint when an *ancestor is renamed* (the qualified-name path
|
|
1020
|
+
changes) or an element moves to a different parent. To follow a model
|
|
1021
|
+
across its lifetime, keep the previous export as a **registry file**
|
|
1022
|
+
and reconcile each new export against it: every element whose
|
|
1023
|
+
(declared name, type) matches exactly one registry entry adopts the
|
|
1024
|
+
registry's id. Matching is injective — ambiguous (duplicated) keys
|
|
1025
|
+
match nothing and keep derived ids, so the document stays unique.
|
|
1026
|
+
|
|
1027
|
+
```python
|
|
1028
|
+
from pathlib import Path
|
|
1029
|
+
from sysmlpy import loads, to_interchange, interchange_to_json_text
|
|
1030
|
+
|
|
1031
|
+
registry_path = Path("model.json")
|
|
1032
|
+
document = (to_interchange(model, stable_ids=True)
|
|
1033
|
+
if not registry_path.exists() else
|
|
1034
|
+
to_interchange(model, reconcile_with=registry_path))
|
|
1035
|
+
registry_path.write_text(interchange_to_json_text(document))
|
|
1036
|
+
```
|
|
1037
|
+
|
|
1038
|
+
Or as a one-liner on the CLI — the registry file is typically also the
|
|
1039
|
+
output file, making every export a fixed point after the first:
|
|
1040
|
+
|
|
1041
|
+
```bash
|
|
1042
|
+
sysmlpy export model.sysml --reconcile-with model.json -o model.json
|
|
1043
|
+
```
|
|
1044
|
+
|
|
1045
|
+
Round-trip guarantee: `from_interchange` on a reconciled document
|
|
1046
|
+
rebuilds the live model; re-exporting it *with the reconciled document
|
|
1047
|
+
as its registry* reproduces the identical `@graph`. Elements renamed
|
|
1048
|
+
so thoroughly that no name matches fall back to fresh derived ids
|
|
1049
|
+
(becoming new registry entries on the next write). See
|
|
1050
|
+
`docs/stable-identities.md` for the full analysis and
|
|
1051
|
+
`examples/element_identity.py` for a runnable walkthrough of all
|
|
1052
|
+
identity layers.
|
|
1053
|
+
|
|
990
1054
|
## ReqIF Interchange (Requirements Interchange Format)
|
|
991
1055
|
|
|
992
1056
|
sysmlpy imports and exports **ReqIF 1.0** — the OMG requirements interchange
|
|
@@ -951,6 +951,70 @@ See [`docs/plantuml-examples/`](docs/plantuml-examples/) for all rendered exampl
|
|
|
951
951
|
| 15 | Relationship Matrix (GridView) | Relationship Matrix |
|
|
952
952
|
| 16 | Tabular View — Color | Tabular View (color) |
|
|
953
953
|
|
|
954
|
+
## Element Identity: Stable Interchange IDs
|
|
955
|
+
|
|
956
|
+
Element `@id`s in interchange exports follow one of two schemes, and a
|
|
957
|
+
reconciliation mechanism that follows the model across edits:
|
|
958
|
+
|
|
959
|
+
**Default — position-derived (deterministic per source text).** Every
|
|
960
|
+
`@graph` element gets `uuid5` from its tree position (parent id + key +
|
|
961
|
+
index). Same source text ⇒ byte-identical JSON in any process.
|
|
962
|
+
|
|
963
|
+
```python
|
|
964
|
+
from sysmlpy import to_interchange
|
|
965
|
+
document = to_interchange(model) # position-derived @ids
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
**`stable_ids=True` — content-addressed (L2 idempotency).** Named
|
|
969
|
+
elements hash their declared qualified-name path + metaclass type;
|
|
970
|
+
unnamed elements hash the nearest named anchor plus the structural path
|
|
971
|
+
from it. Inserting or reordering unrelated elements elsewhere leaves
|
|
972
|
+
untouched ids unchanged:
|
|
973
|
+
|
|
974
|
+
```python
|
|
975
|
+
document = to_interchange(model, stable_ids=True)
|
|
976
|
+
```
|
|
977
|
+
|
|
978
|
+
```bash
|
|
979
|
+
sysmlpy export model.sysml --stable-ids
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
**`reconcile_ids` — a registry sidecar (L3 identity).** Content ids
|
|
983
|
+
still re-mint when an *ancestor is renamed* (the qualified-name path
|
|
984
|
+
changes) or an element moves to a different parent. To follow a model
|
|
985
|
+
across its lifetime, keep the previous export as a **registry file**
|
|
986
|
+
and reconcile each new export against it: every element whose
|
|
987
|
+
(declared name, type) matches exactly one registry entry adopts the
|
|
988
|
+
registry's id. Matching is injective — ambiguous (duplicated) keys
|
|
989
|
+
match nothing and keep derived ids, so the document stays unique.
|
|
990
|
+
|
|
991
|
+
```python
|
|
992
|
+
from pathlib import Path
|
|
993
|
+
from sysmlpy import loads, to_interchange, interchange_to_json_text
|
|
994
|
+
|
|
995
|
+
registry_path = Path("model.json")
|
|
996
|
+
document = (to_interchange(model, stable_ids=True)
|
|
997
|
+
if not registry_path.exists() else
|
|
998
|
+
to_interchange(model, reconcile_with=registry_path))
|
|
999
|
+
registry_path.write_text(interchange_to_json_text(document))
|
|
1000
|
+
```
|
|
1001
|
+
|
|
1002
|
+
Or as a one-liner on the CLI — the registry file is typically also the
|
|
1003
|
+
output file, making every export a fixed point after the first:
|
|
1004
|
+
|
|
1005
|
+
```bash
|
|
1006
|
+
sysmlpy export model.sysml --reconcile-with model.json -o model.json
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
Round-trip guarantee: `from_interchange` on a reconciled document
|
|
1010
|
+
rebuilds the live model; re-exporting it *with the reconciled document
|
|
1011
|
+
as its registry* reproduces the identical `@graph`. Elements renamed
|
|
1012
|
+
so thoroughly that no name matches fall back to fresh derived ids
|
|
1013
|
+
(becoming new registry entries on the next write). See
|
|
1014
|
+
`docs/stable-identities.md` for the full analysis and
|
|
1015
|
+
`examples/element_identity.py` for a runnable walkthrough of all
|
|
1016
|
+
identity layers.
|
|
1017
|
+
|
|
954
1018
|
## ReqIF Interchange (Requirements Interchange Format)
|
|
955
1019
|
|
|
956
1020
|
sysmlpy imports and exports **ReqIF 1.0** — the OMG requirements interchange
|
|
@@ -20,6 +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
24
|
"reqif_import", "reqif_import_model", "reqif_export",
|
|
24
25
|
"evaluate_expression", "evaluate_calculation", "collect_values",
|
|
25
26
|
"check_constraints", "ConstraintReport", "ConstraintResult",
|
|
@@ -35,7 +36,7 @@ __all__ = [
|
|
|
35
36
|
"render_state_transition_view_svg", "boxes_view",
|
|
36
37
|
]
|
|
37
38
|
__author__ = "Jon Fox"
|
|
38
|
-
__version__ = "0.96.
|
|
39
|
+
__version__ = "0.96.4"
|
|
39
40
|
|
|
40
41
|
from sysmlpy.usage import (
|
|
41
42
|
Item, Attribute, Part, Port, Action, Reference, UseCase, Requirement, Interface, Message,
|
|
@@ -57,6 +58,7 @@ from sysmlpy.traceability import (
|
|
|
57
58
|
)
|
|
58
59
|
from sysmlpy.interchange import (
|
|
59
60
|
to_interchange, from_interchange, interchange_to_json_text,
|
|
61
|
+
reconcile_ids,
|
|
60
62
|
)
|
|
61
63
|
from sysmlpy.reqif_io import (
|
|
62
64
|
reqif_import, reqif_import_model, reqif_export,
|
|
@@ -393,8 +393,22 @@ def cmd_export(args) -> int:
|
|
|
393
393
|
print(f"Parse error: {e}", file=sys.stderr)
|
|
394
394
|
return 2
|
|
395
395
|
|
|
396
|
+
# --reconcile-with <registry>: adopt ids from the previous export
|
|
397
|
+
# (the registry file itself is typically the output path — ids stay
|
|
398
|
+
# stable from then on, even across edits that re-mint derived ids).
|
|
399
|
+
reconcile_with = None
|
|
400
|
+
if getattr(args, "reconcile_with", None):
|
|
401
|
+
reg_path = Path(args.reconcile_with)
|
|
402
|
+
if reg_path.exists():
|
|
403
|
+
reconcile_with = reg_path
|
|
404
|
+
else:
|
|
405
|
+
print(f"Registry file '{reg_path}' not found — minting fresh "
|
|
406
|
+
"stable ids (delete the flag or create the file to "
|
|
407
|
+
"reconcile).", file=sys.stderr)
|
|
408
|
+
|
|
396
409
|
try:
|
|
397
|
-
document = to_interchange(model
|
|
410
|
+
document = to_interchange(model, stable_ids=args.stable_ids,
|
|
411
|
+
reconcile_with=reconcile_with)
|
|
398
412
|
except Exception as e:
|
|
399
413
|
print(f"Error: export failed on this model: {e}", file=sys.stderr)
|
|
400
414
|
return 1
|
|
@@ -967,6 +981,20 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
967
981
|
"--compact", action="store_true",
|
|
968
982
|
help="Emit compact JSON (no indentation)",
|
|
969
983
|
)
|
|
984
|
+
p_export.add_argument(
|
|
985
|
+
"--stable-ids", action="store_true",
|
|
986
|
+
help="Content-address element @ids (L2 idempotency): ids follow "
|
|
987
|
+
"declared qualified-name paths, so inserting/reordering "
|
|
988
|
+
"unrelated elements elsewhere leaves untouched ids unchanged",
|
|
989
|
+
)
|
|
990
|
+
p_export.add_argument(
|
|
991
|
+
"--reconcile-with", metavar="REGISTRY",
|
|
992
|
+
help="Adopt element @ids from a previous export document (implies "
|
|
993
|
+
"--stable-ids); ids of name-matched elements survive edits "
|
|
994
|
+
"(L3 identity): re-export repeatedly with "
|
|
995
|
+
"'--reconcile-with model.json -o model.json' to keep ids "
|
|
996
|
+
"stable across the model's lifetime",
|
|
997
|
+
)
|
|
970
998
|
p_export.add_argument(
|
|
971
999
|
"-l", "--library",
|
|
972
1000
|
help="Path to SysML v2 library files to use for parsing",
|