Package Structure

Forge is distributed as a set of focused Python packages. Each package has a single responsibility and is versioned and released independently. This page explains the package categories, what each one contains, and how they depend on each other.

Package Categories

Foundation

fsp-config-foundation is the base package that every other Forge package depends on. It provides:

  • Data model base classes

  • Facade base classes

  • Import and export tooling

  • Validation framework

  • Plugin system

Data Model Packages

One package per Configurable Unit. Each data model package defines the configuration schemas for one Configurable Unit using the base classes from fsp-config-foundation. It contains:

  • datamodel.py — the ConfigUnitDataModel subclass that aggregates all pillars.

  • api.py / implementation.py / runtime.py — API, implementation, and runtime configuration pillars.

  • validation_rules.py — the rules that validate the data model.

Dependencies: fsp-config-foundation

Integration Component Package

The Integration Component is the deliverable unit, so Forge provides one package per Integration Component (for example, ves-socom). This package contains the main interaction points for the user: facades for the Configurable Units of the Integration Component, validation rules at the cross-ConfigUnit level, and tools such as converters and exporters. A configuration domain is an abstract grouping by functional area and has no package of its own; a single domain can span several Integration Component packages.

The package contents are organized in the following modules. All of them depend on fsp-config-foundation and the data model packages of the Integration Component.

Facade Modules

The facade modules wrap the Configurable Unit data models with a higher-level API. They are the primary entry point for users who configure the Integration Component in Python. Each facade module provides:

  • One facade class per Configurable Unit (for example, ComDaemon, UserApp).

  • Factory methods and constructors with sensible defaults.

Converter Modules

Converter modules translate external file formats (such as ARXML or Franca IDL) into Forge Python objects or JSON files. Each converter provides a Python API for use directly in your own code, and is also packaged as a command line interface (CLI) tool for convenient use in CI pipelines. They are used for migrating existing configurations rather than for day-to-day configuration authoring.

Exporter Modules

An exporter translates an in-memory data model back into another format for use by downstream tools.

Validation Module

Contains the rules to validate the configuration across multiple Configurable Units of the same Integration Component.

Dependency Overview

The dependencies form a single chain, where each package depends on the one to its right:

Integration Component package  ->  Data Model packages  ->  fsp-config-foundation

Choosing What to Install

Install only the packages you need:

  • Reading or writing JSON configuration without Python data models: no package needed; use the JSON Schema files directly.

  • Working with configuration in Python: install the Integration Component package you want to configure (for example, ves-socom). The package pulls in all required packages as transitive dependencies. To configure a domain that spans several Integration Components, install each Integration Component package you need.