Skip to main content

Core library for C/C++ software product line engineering.

Project description

Yanga Core

CI Status Test coverage percentage

uv Ruff pypeline pre-commit

PyPI Version Supported Python versions License


Source Code: https://github.com/yanga-project/yanga-core


Core library for C/C++ software product line (SPL) engineering. Works with any build system.

Yanga Core provides data models, configuration loading, pipeline steps, and commands that build system integrations (like Yanga for CMake) use to:

  • Define platforms, variants, and components for a product line
  • Run build pipeline steps (KConfig generation, dependency installation, static analysis, ...)
  • Generate HTML reports (CppCheck, Sphinx docs, coverage)

Key Concepts

  • Platform — build target with generators and build types (Debug, Release, ...)
  • Variant — product configuration that picks which components to build for a platform
  • Component — source code unit with sources, tests, docs, and include directories
  • ExecutionContext — holds the active variant, platform, components, and shared data registry
  • Pipeline Step — one step in the build pipeline (e.g. KConfig generation, dependency installation)

Installation

Requires Python 3.10+.

pip install yanga-core

Usage

yanga-core is a library, not a standalone CLI. Applications import its modules and compose them. See Yanga for a CMake-based application using yanga-core.

from yanga_core.domain.config import PlatformConfig, VariantConfig
from yanga_core.domain.components import Component
from yanga_core.domain.execution_context import ExecutionContext, UserRequest, UserRequestScope
from yanga_core.domain.project_slurper import ProjectSlurper

Core Modules

Module Description
yanga_core.domain Config models, components, execution context, artifacts
yanga_core.commands Commands for running steps, reports, compile commands, CppCheck, HTML fixes
yanga_core.steps Pipeline steps for pypeline (KConfig, dependency install, reports)
yanga_core.docs Sphinx doc generation helpers

Contributing

Setup

# Clone the repository
git clone https://github.com/yanga-project/yanga-core.git
cd yanga-core

# Install dependencies (using uv)
uv sync

Running Tests

The project uses pypeline-runner for automation:

# Run full pipeline (lint + tests)
pypeline run

# Run only linting
pypeline run --step PreCommit

# Run only tests with a specific Python version
pypeline run --step CreateVEnv --step PyTest --single --input python_version=3.13

Code Quality

Credits

Copier

This package was created with Copier and the browniebroke/pypackage-template project template.

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

yanga_core-0.0.0.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yanga_core-0.0.0-py3-none-any.whl (42.3 kB view details)

Uploaded Python 3

File details

Details for the file yanga_core-0.0.0.tar.gz.

File metadata

  • Download URL: yanga_core-0.0.0.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yanga_core-0.0.0.tar.gz
Algorithm Hash digest
SHA256 180f67f2a19f003c9b603ace02bfbf166347987ecc2dce86b25f8ad4b76f5fd0
MD5 6b37ff7b42518c048e22f10c9681188e
BLAKE2b-256 2c582bbe072865ccfa32d297d8cf619addd185410b5f1a19a2869858ffc16b59

See more details on using hashes here.

Provenance

The following attestation bundles were made for yanga_core-0.0.0.tar.gz:

Publisher: ci.yml on yanga-project/yanga-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yanga_core-0.0.0-py3-none-any.whl.

File metadata

  • Download URL: yanga_core-0.0.0-py3-none-any.whl
  • Upload date:
  • Size: 42.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for yanga_core-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b799398c8f7f159abe5e20cf6232405dd9fa458f28633db2f76f13e82ff7166a
MD5 ba0cd78de93eb6978aef4d92d3843518
BLAKE2b-256 85770fa8c7d989f7493c66476a911fef5b497981933bb37e7ef151c7dd3cc555

See more details on using hashes here.

Provenance

The following attestation bundles were made for yanga_core-0.0.0-py3-none-any.whl:

Publisher: ci.yml on yanga-project/yanga-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page