Module mbed_targets.target

Representation of a Target.

Expand source code
#
# Copyright (C) 2020 Arm Mbed. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
"""Representation of a Target."""
from dataclasses import dataclass
from typing import FrozenSet, Dict, Optional

from mbed_targets.exceptions import TargetError
from mbed_targets._internal import target_attributes


@dataclass(frozen=True, order=True)
class Target:
    """Representation of a Target as defined in Mbed OS library's targets.json file.

    Target contains properties that define how to build Mbed applications.

    Attributes:
        labels: Sections of Mbed OS code to be included in builds for this target.
        features: Sections of Mbed OS feature code to be included in builds for this target.
        components: Sections of Mbed OS component code to be included in builds for this target.
        config: Build configuration defaults for this target.
        supported_toolchains: Toolchains that can be used to build for this target.
        default_toolchain: Default toolchain used to build for this target.
    """

    labels: FrozenSet[str]
    features: FrozenSet[str]
    components: FrozenSet[str]
    config: Dict[str, str]
    supported_toolchains: FrozenSet[str]
    supported_form_factors: FrozenSet[str]
    default_toolchain: Optional[str]
    core: str
    device_name: str
    printf_lib: str
    device_has: FrozenSet[str]
    macros: FrozenSet[str]

    @classmethod
    def by_name(cls, name: str, path_to_targets_json: str) -> "Target":
        """Construct a Target with data from Mbed OS library's targets.json file.

        Args:
            name: the name of the target defined in targets.json
            path_to_targets_json: path to a valid targets.json file

        Raises:
            TargetError: an error has occurred while creating a Target
        """
        try:
            attributes = target_attributes.get_target_attributes(path_to_targets_json, name)
        except (FileNotFoundError, target_attributes.TargetAttributesError) as e:
            raise TargetError(e) from e

        return cls(
            labels=frozenset(attributes.get("labels", set()).union(attributes.get("extra_labels", set()))),
            features=frozenset(attributes.get("features", set())),
            components=frozenset(attributes.get("components", set())),
            config=attributes.get("config"),
            supported_toolchains=frozenset(attributes.get("supported_toolchains", [])),
            supported_form_factors=frozenset(attributes.get("supported_form_factors", [])),
            default_toolchain=attributes.get("default_toolchain", None),
            core=attributes.get("core", ""),
            device_name=attributes.get("device_name", ""),
            printf_lib=attributes.get("printf_lib", ""),
            device_has=frozenset(attributes.get("device_has", set())),
            macros=frozenset(attributes.get("macros", set())),
        )

Classes

class Target (labels: FrozenSet[str], features: FrozenSet[str], components: FrozenSet[str], config: Dict[str, str], supported_toolchains: FrozenSet[str], supported_form_factors: FrozenSet[str], default_toolchain: Union[str, NoneType], core: str, device_name: str, printf_lib: str, device_has: FrozenSet[str], macros: FrozenSet[str])

Representation of a Target as defined in Mbed OS library's targets.json file.

Target contains properties that define how to build Mbed applications.

Attributes

labels
Sections of Mbed OS code to be included in builds for this target.
features
Sections of Mbed OS feature code to be included in builds for this target.
components
Sections of Mbed OS component code to be included in builds for this target.
config
Build configuration defaults for this target.
supported_toolchains
Toolchains that can be used to build for this target.
default_toolchain
Default toolchain used to build for this target.
Expand source code
class Target:
    """Representation of a Target as defined in Mbed OS library's targets.json file.

    Target contains properties that define how to build Mbed applications.

    Attributes:
        labels: Sections of Mbed OS code to be included in builds for this target.
        features: Sections of Mbed OS feature code to be included in builds for this target.
        components: Sections of Mbed OS component code to be included in builds for this target.
        config: Build configuration defaults for this target.
        supported_toolchains: Toolchains that can be used to build for this target.
        default_toolchain: Default toolchain used to build for this target.
    """

    labels: FrozenSet[str]
    features: FrozenSet[str]
    components: FrozenSet[str]
    config: Dict[str, str]
    supported_toolchains: FrozenSet[str]
    supported_form_factors: FrozenSet[str]
    default_toolchain: Optional[str]
    core: str
    device_name: str
    printf_lib: str
    device_has: FrozenSet[str]
    macros: FrozenSet[str]

    @classmethod
    def by_name(cls, name: str, path_to_targets_json: str) -> "Target":
        """Construct a Target with data from Mbed OS library's targets.json file.

        Args:
            name: the name of the target defined in targets.json
            path_to_targets_json: path to a valid targets.json file

        Raises:
            TargetError: an error has occurred while creating a Target
        """
        try:
            attributes = target_attributes.get_target_attributes(path_to_targets_json, name)
        except (FileNotFoundError, target_attributes.TargetAttributesError) as e:
            raise TargetError(e) from e

        return cls(
            labels=frozenset(attributes.get("labels", set()).union(attributes.get("extra_labels", set()))),
            features=frozenset(attributes.get("features", set())),
            components=frozenset(attributes.get("components", set())),
            config=attributes.get("config"),
            supported_toolchains=frozenset(attributes.get("supported_toolchains", [])),
            supported_form_factors=frozenset(attributes.get("supported_form_factors", [])),
            default_toolchain=attributes.get("default_toolchain", None),
            core=attributes.get("core", ""),
            device_name=attributes.get("device_name", ""),
            printf_lib=attributes.get("printf_lib", ""),
            device_has=frozenset(attributes.get("device_has", set())),
            macros=frozenset(attributes.get("macros", set())),
        )

Static methods

def by_name(name: str, path_to_targets_json: str) ‑> Target

Construct a Target with data from Mbed OS library's targets.json file.

Args

name
the name of the target defined in targets.json
path_to_targets_json
path to a valid targets.json file

Raises

TargetError
an error has occurred while creating a Target
Expand source code
@classmethod
def by_name(cls, name: str, path_to_targets_json: str) -> "Target":
    """Construct a Target with data from Mbed OS library's targets.json file.

    Args:
        name: the name of the target defined in targets.json
        path_to_targets_json: path to a valid targets.json file

    Raises:
        TargetError: an error has occurred while creating a Target
    """
    try:
        attributes = target_attributes.get_target_attributes(path_to_targets_json, name)
    except (FileNotFoundError, target_attributes.TargetAttributesError) as e:
        raise TargetError(e) from e

    return cls(
        labels=frozenset(attributes.get("labels", set()).union(attributes.get("extra_labels", set()))),
        features=frozenset(attributes.get("features", set())),
        components=frozenset(attributes.get("components", set())),
        config=attributes.get("config"),
        supported_toolchains=frozenset(attributes.get("supported_toolchains", [])),
        supported_form_factors=frozenset(attributes.get("supported_form_factors", [])),
        default_toolchain=attributes.get("default_toolchain", None),
        core=attributes.get("core", ""),
        device_name=attributes.get("device_name", ""),
        printf_lib=attributes.get("printf_lib", ""),
        device_has=frozenset(attributes.get("device_has", set())),
        macros=frozenset(attributes.get("macros", set())),
    )