Module mbed_tools_lib.python_helpers

Helpers for python language related functions.

Expand source code
#
# Copyright (C) 2020 Arm Mbed. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
"""Helpers for python language related functions."""
import sys
from collections import namedtuple
from typing import NamedTuple, Iterable, Any, cast


def minimum_python_version(major: int, minor: int) -> bool:
    """States whether the python in use is more recent than set major,minor versions."""
    return sys.version_info.major >= major and sys.version_info.minor >= minor


def named_tuple_with_defaults(typename: str, field_names: Iterable[str], defaults: Iterable[Any]) -> NamedTuple:
    """Gets a named tuple set with default values.

    defaults field only appeared in Python 3.7.
    See https://stackoverflow.com/questions/11351032/namedtuple-and-default-values-for-optional-keyword-arguments
    """
    if minimum_python_version(3, 7):
        return namedtuple(typename=typename, field_names=field_names, defaults=defaults)  # type: ignore
    else:
        a_tuple: NamedTuple = namedtuple(typename=typename, field_names=field_names)  # type: ignore
        a_tuple.__new__.__defaults__ = tuple(defaults)  # type: ignore
        return cast(NamedTuple, a_tuple)

Functions

def minimum_python_version(major: int, minor: int) -> bool

States whether the python in use is more recent than set major,minor versions.

Expand source code
def minimum_python_version(major: int, minor: int) -> bool:
    """States whether the python in use is more recent than set major,minor versions."""
    return sys.version_info.major >= major and sys.version_info.minor >= minor
def named_tuple_with_defaults(typename: str, field_names: Iterable[str], defaults: Iterable[Any]) -> 

Gets a named tuple set with default values.

defaults field only appeared in Python 3.7. See https://stackoverflow.com/questions/11351032/namedtuple-and-default-values-for-optional-keyword-arguments

Expand source code
def named_tuple_with_defaults(typename: str, field_names: Iterable[str], defaults: Iterable[Any]) -> NamedTuple:
    """Gets a named tuple set with default values.

    defaults field only appeared in Python 3.7.
    See https://stackoverflow.com/questions/11351032/namedtuple-and-default-values-for-optional-keyword-arguments
    """
    if minimum_python_version(3, 7):
        return namedtuple(typename=typename, field_names=field_names, defaults=defaults)  # type: ignore
    else:
        a_tuple: NamedTuple = namedtuple(typename=typename, field_names=field_names)  # type: ignore
        a_tuple.__new__.__defaults__ = tuple(defaults)  # type: ignore
        return cast(NamedTuple, a_tuple)