Source code for dffml.util.config.inspect

import inspect
from typing import Callable, Optional, Dict, Tuple, Type

from ...base import field, make_config


def inspect_params(cls: Callable):
    parameters = inspect.signature(cls).parameters
    args = {}

    for param_name, param in parameters.items():
        args[param_name] = (
            param.annotation,
            field(
                param_name,
                default=param.default
                if param.default is not inspect.Parameter.empty
                else None,
            ),
        )

    return args


[docs]def make_config_inspect( name: str, cls: Type, properties: Optional[Dict[str, Tuple[Type, field]]] = None, ): """ Given a class or function, read its docstring and ``__init__`` parameters to generate a config class with properties containing the correct types, and default values. """ if properties is None: properties = {} properties.update(inspect_params(cls)) return make_config( name, [tuple([key] + list(value)) for key, value in properties.items()] )