Generic SysML v2 API helpers from MBSE4U
Project description
MBSE4U SysML v2 API Helpers
Generic helper functions for interacting with SysML v2 REST API. This library simplifies the process of querying projects, commits, and traversing the SysML v2 model structure.
Installation
You can install this package via pip.
pip install mbse4u-sysmlv2-helpers
Getting Started
Here is a simple example of how to connect to a server and list projects.
import mbse4u_sysmlv2_helpers as api
SERVER_URL = "http://localhost:9000"
try:
# Fetch all projects
projects = api.get_projects(SERVER_URL)
print(f"Found {len(projects)} projects.")
for p in projects:
print(f"- {p.get('name')} (ID: {p.get('@id')})")
# Get commits for the first project
commits = api.get_commits(SERVER_URL, p['@id'])
if commits:
latest_commit = commits[-1]
print(f" Latest commit: {latest_commit.get('id')}")
except Exception as e:
print(f"Error: {e}")
API Reference
Project & Commit Management
-
get_projects(server_url: str, page_size: int = 256) -> List[Dict]- Fetches and sorts projects alphabetically from the given server.
-
get_commits(server_url: str, project_id: str) -> List[Dict]- Retrieves commit history for a specific project, sorted by creation date.
-
get_commit_url(server_url: str, project_id: str, commit_id: str) -> str- Helper to construct the base URL for commit-specific queries.
Caching
load_model_cache(server_url: str, project_id: str, commit_id: str, page_size: int = 256) -> int- Loads all elements of a commit into an in-memory
ELEMENT_CACHEto speed up subsequent queries. Returns the number of elements cached.
- Loads all elements of a commit into an in-memory
Element Retrieval
-
get_element_fromAPI(query_url: str, element_id: str) -> Optional[Dict]- Fetches a single element by ID, checking the local cache first.
-
get_elements_fromAPI(query_url: str, element_ids: List[str]) -> List[Dict]- Batch retrieval of elements by a list of IDs.
-
get_elements_byDeclaredName_fromAPI(server_url: str, project_id: str, commit_id: str, name: str) -> List[Dict]- Fetches elements by their
declaredName. Includes logic to find elements that redefine a named element viaRedefinitionrelationships.
- Fetches elements by their
-
get_elements_byKind_fromAPI(server_url: str, project_id: str, commit_id: str, kind: str) -> List[Dict]- Query for all elements of a specific type (e.g.,
'PartUsage','MetadataDefinition').
- Query for all elements of a specific type (e.g.,
-
get_elements_byProperty_fromAPI(server_url: str, project_id: str, commit_id: str, property: str, value: str) -> List[Dict]- Fetches elements matching a given property/value pair. Also resolves
Redefinitionrelationships.
- Fetches elements matching a given property/value pair. Also resolves
Traversal & Structure
-
get_contained_elements(server_url, project_id, commit_id, element_id, kind, elementKind='ownedElement') -> List[Dict]- Returns children of a specific type within an element's owned collection.
-
get_recursive_owned_elements(server_url, project_id, commit_id, start_element_id, kind, max_depth=5, current_depth=0) -> List[Dict]- Recursively fetches descendants of a specific kind down to a maximum depth.
-
get_owned_usages(server_url, project_id, commit_id, owner, feature_name) -> List[Dict]- Fetches owned usages for an element from both the Usage itself and its Definition.
-
check_specialization_hierarchy(query_url, element, super_element, visited=None) -> bool- Recursively checks if an element specializes the given
super_element. Uses a visited set to prevent infinite loops.
- Recursively checks if an element specializes the given
-
find_element_by_id(aggregated_results: List[Dict], target_id: str) -> Optional[Dict]- Searches a list of elements for one matching a specific ID.
-
find_elements_specializing(server_url, project_id, commit_id, elements, super_element_name, element_kind=None) -> List[Dict]- Filters a list to only include elements that specialize a given supertype (by qualified name).
Feature & Attribute Access
-
get_feature(server_url, project_id, commit_id, owner, feature_name, feature_kind='AttributeUsage') -> Optional[Dict]- Retrieves a specific feature element (by name and kind) from an owner element, including inherited features.
-
get_feature_value(server_url, project_id, commit_id, owner, feature_name, feature_kind='AttributeUsage') -> Union[str, int, float, None]- Extracts the resolved value of a feature (attribute) from an element.
-
get_attribute_value_from_usage(query_url: str, attr_usage: Dict) -> Union[str, int, float, None]- Low-level helper to extract and resolve a value from an
AttributeUsageelement, including literal values, enum references, andFeatureChainExpression.
- Low-level helper to extract and resolve a value from an
-
getValueFromOperatorExpressionUnit(query_url: str, opExp: Dict) -> Optional[Dict]- Helper to extract the value element from an
OperatorExpression(e.g., for unit quantities).
- Helper to extract the value element from an
Metadata
-
get_metadata_ids_by_name(server_url, project_id, commit_id, metadata_shortnames: List[str]) -> Dict[str, str]- Fetches the IDs of
MetadataDefinitionelements by their short names. Returns a mapping of short name → ID.
- Fetches the IDs of
-
get_metadatausage_annotatedElement_ids(server_url, project_id, commit_id, metadefinition_dict: Dict[str, str]) -> Dict[str, List[str]]- Retrieves the IDs of elements annotated with specific metadata definitions. Returns a mapping of metadata key → list of annotated element IDs.
Element Relationships & Documentation
-
get_element_definition(server_url, project_id, commit_id, element: Dict) -> Optional[Dict]- Retrieves the
Definitionelement for a given usage element.
- Retrieves the
-
get_element_documentation(server_url, project_id, commit_id, element_id: str) -> Optional[List[str]]- Retrieves the documentation body texts for a given element.
Model Update
update_model_element(server_url, project_id, commit_id, element_id, feature_name, feature_value) -> str- Creates a new commit that updates a single feature value on a model element. Returns the new commit ID.
License
Copyright 2026 MBSE4U - Tim Weilkiens. Licensed under the Apache License, Version 2.0.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mbse4u_sysmlv2_helpers-0.1.3.tar.gz.
File metadata
- Download URL: mbse4u_sysmlv2_helpers-0.1.3.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
311abfab1f13b003bf3deec015d0be21657ec00e5d96b4a4c0b9410d004001b9
|
|
| MD5 |
505b7cfdd6588fa4cd8154c881605343
|
|
| BLAKE2b-256 |
165d9b6cd585278e01e28d3e72e0168669f8255c4a2803de1961d82a265938d0
|
Provenance
The following attestation bundles were made for mbse4u_sysmlv2_helpers-0.1.3.tar.gz:
Publisher:
python-publish.yml on MBSE4U/mbse4u_sysmlv2_helpers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mbse4u_sysmlv2_helpers-0.1.3.tar.gz -
Subject digest:
311abfab1f13b003bf3deec015d0be21657ec00e5d96b4a4c0b9410d004001b9 - Sigstore transparency entry: 1191423375
- Sigstore integration time:
-
Permalink:
MBSE4U/mbse4u_sysmlv2_helpers@e2a8cc980ef16e41950f746af0a337573a058019 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/MBSE4U
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e2a8cc980ef16e41950f746af0a337573a058019 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mbse4u_sysmlv2_helpers-0.1.3-py3-none-any.whl.
File metadata
- Download URL: mbse4u_sysmlv2_helpers-0.1.3-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c4b23ad05adc1a5b64dce62aaf032a51fa353a95dccb27b1406e34803758f8f
|
|
| MD5 |
189efb35eea8ce6b6e0591d0e7b5f530
|
|
| BLAKE2b-256 |
bec89c2e6d648b96ec85be716c130eabec76794f674c00aa7fd159ec06a289be
|
Provenance
The following attestation bundles were made for mbse4u_sysmlv2_helpers-0.1.3-py3-none-any.whl:
Publisher:
python-publish.yml on MBSE4U/mbse4u_sysmlv2_helpers
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mbse4u_sysmlv2_helpers-0.1.3-py3-none-any.whl -
Subject digest:
9c4b23ad05adc1a5b64dce62aaf032a51fa353a95dccb27b1406e34803758f8f - Sigstore transparency entry: 1191423377
- Sigstore integration time:
-
Permalink:
MBSE4U/mbse4u_sysmlv2_helpers@e2a8cc980ef16e41950f746af0a337573a058019 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/MBSE4U
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e2a8cc980ef16e41950f746af0a337573a058019 -
Trigger Event:
push
-
Statement type: