A set of Python modules for working with AUTOSAR XML files.
The primary use case is to enable Python to generate ARXML files for import in other (commercial) AUTOSAR toolchains. It also has some support for parsing AUTOSAR XML files.
Important notes:
AUTOSAR v0.5 has been rewritten and modernized.
Key features:
The implementation tries to follow release R22-11. However, the generated ARXML validates against all versions listed below.
When calling write_documents, use the schema_version parameter to select desired version (integer with value 48-51).
Only Clasic AUTOSAR will be supported.
For currently supported XML elements, see the XML Index.
If you can't find it in the index it's not implemented.
import autosar.xml
import autosar.xml.element as ar_element
workspace = autosar.xml.Workspace()
workspace.create_package_map({"ApplicationDataTypes": "DataTypes/ApplicationDataTypes",
"DataConstrs": "DataTypes/DataConstrs"})
data_constraint = ar_element.DataConstraint.make_internal("uint8_ADT_DataConstr", 0, 255)
workspace.add_element("DataConstrs", data_constraint)
sw_data_def_props = ar_element.SwDataDefPropsConditional(data_constraint_ref=data_constraint.ref())
data_type = ar_element.ApplicationPrimitiveDataType("uint8_ADT",
category="VALUE",
sw_data_def_props=sw_data_def_props)
workspace.add_element("ApplicationDataTypes", data_type)
workspace.create_document("datatypes.arxml", packages="/DataTypes")
workspace.write_documents()
Manual install required as this version is not available on PyPI (until v0.6).
Download a compressed source package from GitHub or clone this repo to a local directory.
Start bash (Linux) or Powershell (Windows).
python -m venv .venv
On Windows run:
.\.venv\Scripts\activate
On Linux run:
source .venv/bin/activate
Once virtual environment is active run:
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools
Your current directory must be either where you unzipped the source package or your where you cloned the git repo (See preparation step above).
For standard install, run:
pip install .
For editable install, run:
pip install --editable .
The autosar.xml.Workspace class offers two slightly different APIs for creating packages and elements. The main difference between them is the usage of namespaces.
For small projects, use the simple API.
Methods in the simple API:
For for more information, see the Simple API - User Guide that demonstrates the use of this API.
The advanced API is recomended for larger projects. It requires you to write custom template classes in addition to creating namespaces.
Methods in the advanced API:
It can be quite powerful when used the right way but requires some setting up.
There's no user guide yet. See the files under examples/template for reference.
A number of methods are common for both APIs. For the advanced API you can skip most of them and instead use config files (.toml) to let the
Workspace class handle both package and document creation automatically.
Common methods:
The module autosar.xml.element contains all supported elements that you can add to a package. Most often you simply call the constructor for an object you want to create and then add it to a package.
Some elements are quite complicated to create manually. Instead of using the constructor method, some classes offers one or several convenience-methods with names
beginning with either make_ or create_. Exploring these methods is highly recomended.
List of convenience-methods:
MultiLanguageOverviewParagraph.makeComputation.make_value_tableComputation.make_rationalDataConstraint.make_physicalDataConstraint.make_internalValueSpecification.make_value_with_checkValueSpecification.make_valueConstantSpecification.make_constantModeDeclarationGroup.create_mode_declarationSenderReceiverInterface.create_data_elementSenderReceiverInterface.create_invalidation_policyNvDataInterface.create_data_elementParameterInterface.create_parameterClientServerOperation.create_argumentClientServerOperation.create_in_argumentClientServerOperation.create_inout_argumentClientServerOperation.create_out_argumentClientServerOperation.create_possible_error_refClientServerInterface.create_operationClientServerInterface.create_possible_errorModeSwitchInterface.create_mode_groupProvidePortComSpec.make_from_port_interfaceProvidePortComSpec.make_non_queued_sender_com_specProvidePortComSpec.make_from_port_interfaceRequirePortComSpec.make_non_queued_receiver_com_specAtomicSoftwareComponentType.create_internal_behaviorSwComponentType.create_p_portSwComponentType.create_r_portSwComponentType.create_pr_portCompositionSwComponentType.create_component_prototypeCompositionSwComponentType.create_connectorSwcInternalBehavior.create_background_eventSwcInternalBehavior.create_data_receive_error_eventSwcInternalBehavior.create_data_received_eventSwcInternalBehavior.create_data_send_completed_eventSwcInternalBehavior.create_data_write_completed_eventSwcInternalBehavior.create_exclusive_areaSwcInternalBehavior.create_init_eventSwcInternalBehavior.create_operation_invoked_eventSwcInternalBehavior.create_runnableSwcInternalBehavior.create_swc_mode_manager_error_eventSwcInternalBehavior.create_swc_mode_mode_switch_eventSwcInternalBehavior.create_timing_eventRunnableEntity.create_port_accessVariableAccess.make_from_portVariableAccess.make_from_port_with_argsModeAccessPointIdent.make_with_argsPackages for handling AUTOSAR XML (ARXML).
Implementation model, an intermediate model between XML and RTE generation.
RTE generators. Right now it only has a generator for the RTE type header. This part is in early stages of development and is probably not very useful.
Below is a rough roadmap of planned releases.
v0.5.0: Data types
v0.5.1: Value specifications and constants
v0.5.2: Port interfaces
v0.5.3: Components and ports
v0.5.4: SwcInternalBehavior - basics
v0.5.5 SwcInternalBehavior - advanced
v0.5.6 Add some missing elements and functions that wasn't prioritized before.
v0.5.7 Fixes and refactoring
v0.5.8 More refactoring
v0.6.0: Stable version, publish to PyPI.
v0.7.0: RTE-generator and system description
v0.8.0: Stable version, publish to PyPI.
v0.9.0: Documentation
v1.0.0: Stable version, publish to PyPI.
$ claude mcp add autosar \
-- python -m otcore.mcp_server <graph>