コード例 #1
0
def make_config_tensorflow(
    name: str,
    cls: Type,
    properties: Optional[Dict[str, Tuple[Type, field]]] = None,
):
    """
    Given a tensorflow class, 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 = {}
    doc_params = tensorflow_docstring_args(cls)
    properties.update(doc_params)

    return make_config(
        name, [tuple([key] + list(value)) for key, value in properties.items()]
    )
コード例 #2
0
ファイル: config.py プロジェクト: tinubaby/dffml
def make_pytorch_config(
    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_pytorch_params(cls))

    return make_config(
        name,
        [tuple([key] + list(value)) for key, value in properties.items()])
コード例 #3
0
def mkscikit_config_cls(
    name: str,
    cls: Type,
    properties: Optional[Dict[str, Tuple[Type, field]]] = None,
):
    """
    Given a scikit class, 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 = {}

    parameters = inspect.signature(cls).parameters
    docstring = inspect.getdoc(cls)

    docparams = {}

    # Parse parameters and their datatypes from docstring
    last_param_name = None
    for line in docstring.split("\n"):
        if not ":" in line:
            continue
        param_name, dtypes = line.split(":", maxsplit=1)
        param_name = param_name.strip()
        dtypes = dtypes.strip()
        if not param_name in parameters or param_name in docparams:
            continue
        docparams[param_name] = dtypes
        last_param_name = param_name

    # Ensure all required parameters are present in docstring
    for param_name, param in parameters.items():
        if param_name in ["args", "kwargs"]:
            continue
        if not param_name in docparams:
            raise ParameterNotInDocString(
                f"{param_name} for {cls.__qualname__}")
        properties[param_name] = scikit_doc_to_field(docparams[param_name],
                                                     param)

    return make_config(
        name,
        [tuple([key] + list(value)) for key, value in properties.items()])
コード例 #4
0
    dffml_cls_ctx = type(
        name + "ScorerContext",
        (parentContext, ),
        {},
    )

    dffml_cls = type(
        name + "Scorer",
        (parentScorer, ),
        {
            "CONTEXT":
            dffml_cls_ctx,
            "CONFIG":
            make_config(
                name + "Config",
                [
                    tuple([key] + list(value))
                    for key, value in properties.items()
                ],
            ),
            "SCIKIT_SCORER":
            functools.partial(method),
        },
    )
    # Add the ENTRY_POINT_ORIG_LABEL
    dffml_cls = entrypoint(entrypoint_name)(dffml_cls)

    setattr(sys.modules[__name__], dffml_cls_ctx.__qualname__, dffml_cls_ctx)
    setattr(sys.modules[__name__], dffml_cls.__qualname__, dffml_cls)